Robonomics package to read data from sensors and publish to different output channels
Project description
Sensors Connectivity
A Python service that acts as the data aggregation layer in the Robonomics decentralized sensors network. It receives signed sensor measurements, validates them, and distributes data through two channels: real-time IPFS pubsub for the Robonomics dApp and batched datalogs to the Robonomics parachain.
Architecture Overview
Sensors Connectivity is the provider node in the decentralized sensors network:
- Receives signed measurements from Altruist devices via HTTP POST (port 8001 by default)
- Also accepts data from other sensor types: EnvironmentalBox, MobileLab, LoRa sensors
- Publishes real-time data via IPFS pubsub for the Robonomics dApp
- Batches sensor data, pins to IPFS, and writes the hash as a datalog to the Robonomics parachain
Altruist / Other sensors
|
v HTTP POST (port 8001)
Sensors Connectivity Provider
|- Validate: ED25519 signature + RWS subscription (Kusama/Polkadot)
|- Real-time: IPFS pubsub -> Robonomics dApp
|- Batch: collect -> pin to IPFS (local/Pinata/Crust) -> datalog to chain
'- Network priority: Kusama (with RWS) -> Kusama -> Polkadot
How It Works
Validation. Each incoming message is verified: ED25519 signature check, then RWS (Robonomics Web Services) subscription lookup on both Kusama and Polkadot parachains. Sensor types are routed via sensors_fabric.py based on payload fields.
IPFS publishing. Validated data is published in real-time to IPFS pubsub topic airalab.lighthouse.5.robonomics.eth. Batched data is pinned through up to 4 gateways (local IPFS, Pinata, Crust, Temporal) managed by pinning_manager.py.
Datalog to chain. Pinned IPFS hashes are written as datalogs to the Robonomics parachain with a network cascade: Kusama with active subscription first, then Kusama without, then Polkadot as fallback.
Pre-requirements
IPFS daemon with pubsub enabled and Python 3.10+.
Install IPFS (Linux):
wget https://dist.ipfs.io/go-ipfs/v0.8.0/go-ipfs_v0.8.0_linux-amd64.tar.gz
tar -xzf go-ipfs_v0.8.0_linux-amd64.tar.gz
cd go-ipfs
sudo bash install.sh
ipfs init
Installation
From PyPi
pip3 install py-sr25519-bindings
pip3 install sensors-connectivity
From Source
Requires Poetry:
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
Clone and install:
git clone https://github.com/airalab/sensors-connectivity
cd sensors-connectivity
poetry install
Configuration
Configuration guide: https://robonomics.academy/en/learn/sensors-connectivity-course/sensors-connectivity-config-options/
When building from source, make a copy of default.json and fill it using the guide above.
Logging uses console and file handlers by default. The logging template is in connectivity/config/logging_template.py. Default log path: ~/.logs. See the Python logging docs for other handler options.
Launch
Start the IPFS daemon first:
ipfs daemon --enable-pubsub-experiment
Then run the service:
# PyPi install
sensors_connectivity "path/to/your/config/file"
# From source
poetry run sensors_connectivity "path/to/your/config/file"
Logs appear in your terminal (if console handler is set) and in ~/.logs.
Development
Test the module with an HTTP station:
poetry run test_mobile_lab
poetry run test_environmental_box
More details in the /docs directory.
Comprehensive guide on the Decentralized Sensors Network concept: https://robonomics.academy/en/learn/sensors-connectivity-course/overview/
Sensor preparation instructions: https://robonomics.academy/en/learn/sensors-connectivity-course/setting-up-and-connecting-sensors/
Troubleshooting
Python.h: No such file or directory
Install header files and static libraries for python-dev:
sudo apt install python3-dev
Note:
python3-devdoes not cover all versions. The service needs at least Python 3.10, so you may need:sudo apt install python3.10-dev. See examples for other package managers.
Python versions mismatch
If poetry install fails with a SolverProblemError about Python version incompatibility, specify the version for Poetry:
poetry env use python3.10.9
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sensors_connectivity-1.7.tar.gz.
File metadata
- Download URL: sensors_connectivity-1.7.tar.gz
- Upload date:
- Size: 28.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.10.20 Linux/6.17.0-1015-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5869cdbaf501fcc30edd72c353e334334d5c6671498d04e1efe50048761a7bef
|
|
| MD5 |
400c323e1df8e9e4c727aeb28449457d
|
|
| BLAKE2b-256 |
c876607aede27d91923dc7268f995898ee2af94c9d36a3c6888bbf8e20890545
|
File details
Details for the file sensors_connectivity-1.7-py3-none-any.whl.
File metadata
- Download URL: sensors_connectivity-1.7-py3-none-any.whl
- Upload date:
- Size: 48.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.10.20 Linux/6.17.0-1015-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ec23d99a632b40f6f6b5ff86f7e1e57206aa99dccb8085cb00e02c013e4d842
|
|
| MD5 |
d282b2a81be845cdfd7b50b3583255f8
|
|
| BLAKE2b-256 |
5447ead7b438f1498f68eea01cafb573d4ae880fc455647bc70272c5475e286d
|