Python Dash7 ALP library
Project description
DASH7 Python Support
A collection of Python modules, supporting the DASH7 Alliance Protocol in general, and Sub-IoT in particular.
Introduction
This repository contains a collection of Python modules that can help when working with the Dash7 Alliance Wireless Sensor and Actuator Network Protocol.
Usage
For Aloxy
Add this to your `~/.rye/config.toml`:
```toml
[[sources]]
name = "pyd7a"
url = "https://gitlab.com/api/v4/projects/aloxy%2Fpyd7a/packages/pypi/simple"
username = "__token__"
password = "<your_personal_access_token>"
```
Just pip install pyd7a
, but we do recommend Rye
You can also manually clone this repo:
git clone https://github.com/Sub-IoT/pyd7a.git
cd pyd7a
rye sync --no-lock
Modules
ALP Parser
A parser/generator for Application Layer Protocol commands. From the specification:
ALP is the D7A Data Elements API. It is a generic API, optimized for usage with the D7A Session Protocol. It can be encapsulated in any other communication protocol. ALP defines a standard method to manage the Data Elements by the Application. Any application action, data exchange method or protocol is mapped into manipulation of D7A Data Elements and their properties by means of ALP Commands.
DLL Parser
A parser for D7AP frames as transmitted over the air.
Sub-Iot Serial console interface parser
A parser for frames used by the serial console interface by Sub-IoT-Stack nodes
Sub-IoT Modem interface
Allows to use a serial connected Sub-IoT-Stack node as a modem. By sending ALP commands you can access the node's filesystem, or use the node's DASH7 interface to access the filesystem of nodes in the network.
Examples
Can be found in 'examples' and 'tools' directories.
Gateway_hass
A gateway script for connecting a dash7 gateway to a running Home Assistant instance using MQTT.
Contributing
PyD7A uses Rye for dependency management.
Setting up Rye
Please refer to the Rye installation instructions.
You can also use [mise](https://mise.jdx.dev/)
mise plugin add rye https://github.com/Azuki-bar/asdf-rye.git
mise install rye
mise use rye
RYE_INSTALL_OPTION=--yes RYE_TOOLCHAIN=/usr/bin/python rye
Followed by:
source "$HOME/.rye/env"
Optionally add this your shell's profile
# bash
echo 'source "$HOME/.rye/env"' >> ~/.bashrc
# zsh
echo 'source "$HOME/.rye/env"' >> ~/.zprofile
Now, install the dependencies defined in pyproject.toml
rye sync
For more information, refer to the Rye guide
You can verify that the installation succeeded by running the unit tests:
rye test
If all tests ran without any errors, you're good to go.
Setting up your environment
PyD7A employs Ruff for code linting and formatting.
VSCode
The IDE of choice is VSCode. It has direct support for virtualenvs and an official
extension for Ruff.
In .vscode/settings.json
, you fill find that autoformatting is done on save.
.vscode/extensions.json
has a list of recommended extensions, but also one
that is known to be problematic.
Pre-commit hooks
We also employ some pre-commit hooks to detect issues early on.
rye run pre-commit install
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.