Nutella Peanut-Butter Marshmallow

    pareto-anywhere

    1.9.2 • Public • Published

    Pareto Anywhere

    Pareto Anywhere enables context-aware physical spaces. Pareto Anywhere is continuously-evolving open source middleware that transforms ambient data into hyperlocal context: a real-time stream of who/what is where/how.

    Configured as a lightweight Node.js package, this pareto-anywhere package installs quickly, and easily runs edge, local or cloud, on anything from a Raspberry Pi to a personal computer or server. The bundled web apps, APIs and Elastic Stack integration offer a friendly and comprehensive introduction to context-aware physical spaces. And, thanks to a modular, open architecture, Pareto Anywhere can easily be customised for scale and/or functionality.

    Pareto Anywhere logo

    Installation guides

    Install Pareto Anywhere by following a step-by-step tutorial on our reelyActive Developers site:

    Quick start

    Alternatively, install the pareto-anywhere package globally as follows:

    npm install -g pareto-anywhere
    

    Then run from the command line as follows:

    pareto-anywhere
    

    Browse to localhost:3001 to see Pareto Anywhere running and browse the web apps and APIs.

    Dev install

    Alternatively, clone the repo and submodules as follows:

    git clone --recurse-submodules https://github.com/reelyactive/pareto-anywhere.git
    

    Then, from the pareto-anywhere folder, install the dependencies and run:

    cd pareto-anywhere
    npm install
    npm start
    

    Browse to localhost:3001 to see Pareto Anywhere running and browse the web apps and APIs.

    What is Pareto Anywhere?

    Pareto Anywhere is middleware that makes any physical space context-aware for any application by processing the real-time wireless ambient data stream collected from any infrastructure. This pareto-anywhere package is a convenient, lightweight and novice-friendly configuration of Pareto Anywhere which itself is highly modular and scalable.

    pareto-anywhere components

    Pareto Anywhere is the collection of various open source software modules by reelyActive which are hosted in their own individual repositories, specifically:

    Software module Role
    barnowl Technology-agnostic middleware for RFID, RTLS and M2M
    barnacles Efficient data aggregator/distributor for RFID, RTLS and M2M
    barterer Real-time location & sensor data API
    chickadee Contextual associations store and API
    chimps Spatial dynamics processor
    advlib Library for wireless advertising packet decoding
    sniffypedia Index for implicit URI assocation

    The experimental web app version of Pareto Anywhere which runs entirely in-browser is maintained in the gh-pages branch of this repository (see below).

    Where's the ambient data?

    This pareto-anywhere package listens for data streams from the following sources:

    • UDP raddec packets on port 50001 (ex: from an Owl-in-One)
    • UDP reel packets on port 50000
    • UDP Huawei packets on port 50010
    • HTTP POST to the /minew route (ex: from a Minew G1) (G1 firmware v4.x required since Pareto Anywhere v1.7)
    • HTTP POST to the /impinj route
    • WebSocket connection on the /aruba route (ex: from an Aruba AP)
    • STOMP over WebSockets from a RF Controls RFC OS instance running on the same machine (with default credentials)

    If a local Bluetooth radio is available, barnowl-hci can be installed and run with the command npm run forwarder to forward the data to Pareto Anywhere.

    Pareto Anywhere is infrastructure-agnostic and supports simultaneous data streams from a heterogeneous mix of sources.

    Collect and analyse the data with the Elastic Stack

    This pareto-anywhere package writes its real-time stream of data to an Elasticsearch database, if installed and running, so that it may in turn be analysed in Kibana.

    • pareto-anywhere v1.8 and above expect an Elasticsearch 8.x instance, offering nominal backwards-compatiblility with 7.x
    • pareto-anywhere v1.7 and below require an Elasticsearch 7.x instance

    If an Elasticsearch database is running locally at http://localhost:9200, data storage should be automatic, with the data available for analysis at http://localhost:5601 if Kibana is also running locally.

    To instead have pareto-anywhere store data in a remote Elasticsearch database, first set the environment variable ELASTICSEARCH_NODE to the corresponding URL, including the corresponding username and password, for example:

    https://username:password@server.com:9243
    

    Elasticsearch and Kibana are not required to enjoy the real-time functionality of Pareto Anywhere. Instead, they add extensive, user-friendly data analysis functionality as described in our Kibana tutorials.

    Build and run with Docker

    For users who prefer deployment using containers, first build the Docker image from the root folder of this repository:

    docker build -t pareto-anywhere:core .
    

    Then start the container:

    docker run -d \
    -p 3001:3001/tcp \
    -p 50000:5000/udp \
    -p 50001:50001/udp \
    --restart unless-stopped \
    --name pareto-anywhere \
    pareto-anywhere:core
    

    Browse to localhost:3001 to see Pareto Anywhere running and browse the APIs.

    Run Pareto Anywhere, Elastisearch and Kibana with Docker-Compose

    For users who prefer deployment using containers, Deploy Elasticsearch, Kibana and Pareto Anywhere from the root folder of this repository:

    docker-compose up -d
    

    Browse to localhost:3001 to see Pareto Anywhere running and browse the APIs. Browse to localhost:5601 to see Kibana dashboard running. Browse to localhost:9200 to see Elasticsearch running and browse the APIs.

    Developer Notes

    The pareto-anywhere codebase includes Pareto Apps as a git submodule (in the web/apps folder). To update to the latest Pareto Apps run:

    git submodule update --remote
    

    If developing Pareto Apps from within this repository, changes can be pushed to the Pareto Apps origin (pareto-anywhere-develop branch) by the usual means, from the web/apps folder:

    cd web/apps
    git checkout pareto-anywhere-develop
    ...update files...
    git add [...]
    git commit -m "Description of update"
    git push origin pareto-anywhere-develop
    

    Pareto Anywhere Web App

    The experimental Web Bluetooth Scanning feature, introduced to the Chrome browser in late 2019, enables an experimental web app version of Pareto Anywhere hosted here, with code in the gh-pages branch.

    Project History

    Pareto Anywhere is in active development, evolving the hlc-server code base (first created in 2014) which it is intended to supersede. It is therefore normal for documentation to refer to hlc-server as a pseudonym of Pareto Anywhere.

    pareto-anywhere v1.5.0 adopts chickadee v1.4.0 which migrates to ESMapDB from NeDB. If upgrading from a previous version, any stored associations will need to be recreated.

    Contributing

    Discover how to contribute to this open source project which upholds a standard code of conduct.

    Security

    Consult our security policy for best practices using this open source software and to report vulnerabilities.

    Known Vulnerabilities

    License

    MIT License

    Copyright (c) 2020-2022 reelyActive

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    Install

    npm i pareto-anywhere

    DownloadsWeekly Downloads

    93

    Version

    1.9.2

    License

    MIT

    Unpacked Size

    4.14 MB

    Total Files

    84

    Last publish

    Collaborators

    • reelyactive