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

Metadata

Release files for sensors_connectivity 1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sensors_connectivity 1.7
File Size Uploaded
sensors_connectivity-1.7.tar.gz 28.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sensors_connectivity 1.7
File Interpreter ABI Platform
sensors_connectivity-1.7-py3-none-any.whl Python 3 none any Details

Total release size: 76.3 kB

Release files / sensors_connectivity-1.7.tar.gz

Download URL sensors_connectivity-1.7.tar.gz
Size 28.1 kB
Tags Source
SHA-256 checksum
How to use checksums
5869cdbaf501fcc30edd72c353e334334d5c6671498d04e1efe50048761a7bef
BLAKE2b-256 checksum
How to use checksums
c876607aede27d91923dc7268f995898ee2af94c9d36a3c6888bbf8e20890545
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.10.20 Linux/6.17.0-1015-azure

Release files / sensors_connectivity-1.7-py3-none-any.whl

Download URL sensors_connectivity-1.7-py3-none-any.whl
Size 48.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8ec23d99a632b40f6f6b5ff86f7e1e57206aa99dccb8085cb00e02c013e4d842
BLAKE2b-256 checksum
How to use checksums
5447ead7b438f1498f68eea01cafb573d4ae880fc455647bc70272c5475e286d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.10.20 Linux/6.17.0-1015-azure

Release history Release notifications | RSS feed

This release

1.7 This release

2 release files

1.6.9

2 release files

1.6.8

2 release files

1.6.7

2 release files

1.6.6

2 release files

1.6.5

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page