legge info da squeow

boyska b40c8c3a10 importante cambio di nome 1 year ago
.gitignore 46e4b5c21d readme 1 year ago
README.md 46e4b5c21d readme 1 year ago
decoder.py 9a613ed898 initial commit 1 year ago
read.py b40c8c3a10 importante cambio di nome 1 year ago
webserver.py e53de91d25 time since last seen 1 year ago

README.md

About

Receive monitoring data from a [squeow]() AM transmitter.

read.py will (using decoder.py) connect to a serial port, print values to stdout, and send values to a webserver

webserver.py is such a webserver. It provides an authenticated API for receiving values (most likely by read.py) and an unauthenticated API to get values.

Howto

Dependencies

apt install python3-fastapi python3-serial python3-requests

Run

./read.py -v --baudrate 115200 --wait --device /dev/pts/17 --http-endpoint http://127.0.0.1:8000 --http-auth-file password.txt
uvicorn webserver:app

Serial protocol

Goals

receive-only

if you only want to receive data, you shouldn't need to ask for data. This makes it possible to connect a serial port to multiple receivers!

machine and human-readable

this software will parse messages, but even if you don't have it around, you should be able to read messages just opening minicom.

High level description

Messages are started by the 0x01 ascii character (SOH start of heading) and ended by 0x0A ("\n", NL, new line). A messages needs to be entirely ascii.

There are two types of messages:

  • log messages
  • dump messages

Dump messages

Example: DMP freq=1234567 temp1=78 temp2=50 alm_temp=0 ros=4095 alm_ros=1

DMP is just a prefix to indicate the kind of message. Follows a space-separated sequence of key-values. A value is any string (including numbers, but no spaces). Please only use lowercase letters, numbers, and underscore ([a-z0-9_]). Values can only be integral positive numbers. Booleans don't have any specific form of support.

It is allowed to send dump messages which only inform the receiver about a part of the state, and not all of it. It's the receiver's responsibility to keep track of the whole state, and updating it whenever a new dump message arrives.

Log messages

Examples :

LOG I starting
LOG E overcurrent protection

LOG is just a prefix. Then a space Then a single capital letter indicating the severity of the message. Then a space. Whatever follows is the actual message

This makes it possible for debug messages to be sent.