Skip to main content

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-dev does 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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sensors_connectivity-1.7.tar.gz (28.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sensors_connectivity-1.7-py3-none-any.whl (48.2 kB view details)

Uploaded Python 3

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

Hashes for sensors_connectivity-1.7.tar.gz
Algorithm Hash digest
SHA256 5869cdbaf501fcc30edd72c353e334334d5c6671498d04e1efe50048761a7bef
MD5 400c323e1df8e9e4c727aeb28449457d
BLAKE2b-256 c876607aede27d91923dc7268f995898ee2af94c9d36a3c6888bbf8e20890545

See more details on using hashes here.

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

Hashes for sensors_connectivity-1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 8ec23d99a632b40f6f6b5ff86f7e1e57206aa99dccb8085cb00e02c013e4d842
MD5 d282b2a81be845cdfd7b50b3583255f8
BLAKE2b-256 5447ead7b438f1498f68eea01cafb573d4ae880fc455647bc70272c5475e286d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.7 This release

2 files

1.6.9

2 files

1.6.8

2 files

1.6.7

2 files

1.6.6

2 files

1.6.5

2 files

1.6.4

2 files

1.6.3

2 files

1.6.2

2 files

1.6.1

2 files

1.6.0

2 files

1.5.4

2 files

1.5.3

2 files

1.5.2

2 files

1.5.1

2 files

1.5.0

2 files

1.4.2

2 files

1.4.1

2 files

1.4.0

2 files

1.3.3

2 files

1.3.2

2 files

1.3.1

2 files

1.3.0

2 files

1.2.1

2 files

1.2.0

2 files

1.1.0

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page