Max M. schrieb:
Εrnst B. schrieb:
Ein kleiner Dienst der die gewünschten Funktionen per z.B. HTTP oder
MQTT bereit stellt braucht nur ein paar Zeilen Code, oder ließe sich
auch ohne Code Clicki-Bunti in node-red zusammenstöpseln.
Hast du hier ein bsp? Nach welchem standart? einfach JSON-RPC?
Im Anhang findest Du eine kleine Beispielimplementierung in Go(lang), die ein kleines statisches Binary erzeugt -- 5 MB ohne Kompression mit upx(1) und nur 2,1 MB mit. Die Kompression kannst Du im Makefile abschalten, wenn Du magst, ansonsten müssen natürlich die Datenstrukturen "MeasurementData" (main.go(23)), "CalibrationData" (main.go(34)) und die SQL-Queries (Zeilen 45, 72 und 73 in main.go) an Deine Anforderungen angepaßt werden, außerdem natürlich der URL zur PostgreSQL-Datenbank (main.go(15)), mit curl sieht das dann etwa so aus:
1 |
$ curl 'http://localhost:3000/calibration/5'
|
2 |
{"value1":5,"value2":5.5}
|
Das Programm bekommt die Datenbank-ID eines Geräts per GET-Requests auf den Endpunkt "/calibration/<DB-ID>" und gibt die Daten des Geräts dann via JSON zurück. Das kann man natürlich beliebig abwandeln und zum Beispiel die IP-Adresse des Geräts als Schlüssel benutzen -- ein UNIQUE-Constraint auf der Datenbankspalte ist natürlich sinnvoll.
Unter dem URL "/measurement/" nimmt das Programm POST-Requests mit einem Body im JSON-Format entgegen, in curl sieht das etwa so aus:
1 |
curl -XPOST 'http://localhost:3000/measurement/' \
|
2 |
-d '{"sensor1": 1, "sensor2": 2, "sensor3": 3.3}'
|
Wenn hier ein HTTP 200 Ok zurückgegeben wird, konnten die Daten fehlerfrei dekodiert und der Datenbank übergeben werden, ansonsten hat die Response in diesem Fall einen leeren Body.
Ach so: die Namen der Felder in den Datenstrukturen müssen mit einem Großbuchstaben beginnen, sonst klappt das De- und Enkodieren nicht. Viel Vergnügen und Erfolg! :-)