Metadata-Version: 2.3
Name: sensors_connectivity
Version: 1.6.9
Summary: Robonomics package to read data from sensors and publish to different output channels
License: BSD 3-Clause License
Author: Vadim Manaenko
Author-email: vadim.razorq@gmail.com
Requires-Python: >=3.10,<4.0
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: IPFS-Toolkit (>=0.4.4,<0.5.0)
Requires-Dist: crust-interface-patara (>=0.1.1,<0.2.0)
Requires-Dist: ipfshttpclient (==0.8.0a2)
Requires-Dist: netifaces (>=0.11.0,<0.12.0)
Requires-Dist: paho-mqtt (>=1.6.1,<2.0.0)
Requires-Dist: pinatapy-vourhey (>=0.1.3,<0.2.0)
Requires-Dist: prometheus-client (>=0.13.1,<0.14.0)
Requires-Dist: py-sr25519-bindings (>=0.2.0,<0.3.0)
Requires-Dist: pynacl (>=1.5.0,<2.0.0)
Requires-Dist: pyserial (>=3.5,<4.0)
Requires-Dist: pyyaml (>=6.0,<7.0)
Requires-Dist: requests (>=2.27.1,<3.0.0)
Requires-Dist: robonomics-interface (>=1.6.0,<2.0.0)
Requires-Dist: sentry_sdk (==2.8.0)
Project-URL: Repository, https://github.com/airalab/sensors-connectivity
Description-Content-Type: text/markdown

# Sensors Connectivity Module for Decentralized Sensors Network

The module for launching your own server instance for receiving data from Altruist Civil Station and further processing.

## Available Guides

We have created a comprehensive guide that explains the concept of the Decentralized Sensors Network and the Sensors Connectivity module. The guide is available at Robonomics Academy:

https://robonomics.academy/en/learn/sensors-connectivity-course/overview/


## Pre-requirements

The IPFS daemon should be installed to build this package. Assuming you are working on 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
```

You also need at least Python 3.10.0 to run this project.

## Sensor Preparation

To prepare a sensor to work with the package, follow the instructions on [Robonomics Academy](https://robonomics.academy/en/learn/sensors-connectivity-course/setting-up-and-connecting-sensors/).


## Installation as PyPi package

Run the following commands:

```
pip3 install py-sr25519-bindings
pip3 install sensors-connectivity
```

### Configuration

At Robonomics Academy, you can find an article on setting up the proper configuration for your instance:

https://robonomics.academy/en/learn/sensors-connectivity-course/sensors-connectivity-config-options/


### Launch

First, launch IPFS daemon:

```
ipfs daemon --enable-pubsub-experiment
```

After the configuration and log files are set, you can run the service in another terminal:

```
sensors_connectivity "path/to/your/config/file"
```

You will see logs in your terminal and in `~/.logs`.

## Build from Source

To build a Python package from source, [Poetry](https://python-poetry.org/docs/#osx--linux--bashonwindows-install-instructions) should also be installed. Assuming you are working on Linux:

```
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
```

Get the package and install dependencies:

```
git clone https://github.com/airalab/sensors-connectivity
cd sensors-connectivity
poetry install
```

### Configuration

At Robonomics Academy, you can find an article on setting up the proper configuration for your instance:

https://robonomics.academy/en/learn/sensors-connectivity-course/sensors-connectivity-config-options/

Make a copy of `default.json` and fill it using the description from the article.

You can also set a logging file. The default file for logs is `logging.py`, which uses the `console` and `file` handlers by default. Pay attention to the `file` handler.

The template is stored in `connectivity/config/logging_template.py`. You can specify the path (`filename`) where your logs will be stored (do not forget to create this directory if it doesn't exist). The default path for logs is `~/.logs`. You can find other handlers in the [Logging facility module](https://docs.python.org/3.8/library/logging.html) for Python.


### Launch

First, launch the IPFS daemon:

```
ipfs daemon --enable-pubsub-experiment
```
After the configuration and log files are set, you can run the service in another terminal:

```
poetry run sensors_connectivity "path/to/your/config/file"  
```

If your log file is set with the `console` handler, you will be able to see logs in your terminal.

### Development

To test the module with an HTTP station, use:

```
poetry run test_mobile_lab
test_environmental_box
```

For more information about development, check the `/docs` directory:

https://github.com/airalab/sensors-connectivity/tree/master/docs

### Troubleshooting

**Python.h: No such file or directory:**:

If, during the execution of the `poetry install` command, you encounter this error, you need to install the header files and static libraries for `python-dev`. Use your package manager for installation. For example, with `apt`, you need to run:

```
sudo apt install python3-dev
```
> **Note**: `python3-dev` does not cover all versions for Python 3. The service needs at least Python 3.10, for that you may need to specify the version: `sudo apt install python3.10-dev`.

[Here](https://stackoverflow.com/a/21530768) you can find examples for other package managers.

**Python versions mismatch:**

If, during the execution of the `poetry install` command, you encounter a `SolverProblemError`, which states `The current project's Python requirement (3.6.9) is not compatible with some of the required packages' Python requirement:..`, even though you have a newer version of Python (e.g., Python 3.10.9), you may need to specify the Python version for Poetry:

```
poetry env use python3.10.9
```

