Станция создает сервер, который по определенному порту ждет сообщения вида:
Header
Data
Где Header:
- Public
- Model
А Data
- Payload
- Signature
Public
- уникальный идентификатор датчика. Формируется на этапе прошивки
Model
- идентификатор структуры данных, кодек
Payload
- полезные данные от датчика
Signature
получается от подписания signing_key
ключем поля payload
по спецификации pynacl Ed25519
В агенте sensors-connectivity есть список ACL, который должен содержать Public
известного датчика. После получения новых данных проверяются что Public
находится в ACL.
После разбора формируется следующая структура:
Measurement:
model: int
payload: dict
timestamp: int # unix timestatmp
sensor_id: int # hash(Public)
Для формирования сообщения Робономики создается следующий формируется словарь:
{sensor_id: {“model”: “sds011”,"timestamp":timestamp,“measure”: payload, ...}
Модуль Datalog копит историю: buffer = set(M1, M2, ..., MN)
, где M1, M2, ..., MN
- измерения Measurement.
Для публикации в substrate формируется json файл за установленный период:
{sensor_id: {“model”: “sds011”,"timestamp":timestamp,“measure”: payload, ...}