Skip to content

Instantly share code, notes, and snippets.

@Vourhey
Last active May 14, 2020 12:50
Show Gist options
  • Save Vourhey/760dd8b623621c8259dab651f7c1bfa7 to your computer and use it in GitHub Desktop.
Save Vourhey/760dd8b623621c8259dab651f7c1bfa7 to your computer and use it in GitHub Desktop.

TCPStation

Станция создает сервер, который по определенному порту ждет сообщения вида:

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, ...}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment