Ob das mit Blockly einfach zu bewerkstelligen ist? Nun ja. Meine Erfahrung mit Blockly ist, dass man einen extrem begrenzten Befehlssatz hat und durch das ständige Schachteln von Anweisungen nach kürzester Zeit nicht mehr erkennbar ist, wie der Code funktioniert.
Ich bin kein Experte, was die Programmierung von solchen Routinen betrifft, aber so ins Blaue wäre es etwas wie (Pseudo-Code):
Code: Alles auswählen
int i = 0
get data as string
for each char in data
i++
if i > 1 and i < 7 temp = temp + char
if i > 6 and i < 9 sos = sos + char
if i > 8 and i < 11 sow = sow + char
if i > 10 and i < 13 soo = soo + char
if i > 13 and i < 17 light = light + char
if i > 16 and i < 21 wind = wind + char
if i == 13 daem = if(char = "J") "ON" else "OFF"
if i == 21 rain = if(char = "J") "ON" else "OFF"
next
fTemp = val(temp)
also es werden die Daten geholt (dafür wird es eine Funktion brauchen, die das erledigt). Anschließend werden die Daten zeichenweise eingelesen und von Stelle x - y in eine lokale Variable geschrieben (Zerlegen des Streams in einzelne Daten).
Anschließend wird die Temperatur als vorzeichenbehafteter Wert in eine echte Zahl umgewandelt.
Danach kommt es nur noch darauf an, wie man die Daten bereitstellen will. Als JSON würde man einfach eine passende Zeichenkette erzeugen.
Code: Alles auswählen
json = '{"temperature":"' + fTemp.toString + '","southdir":"' + sos + '","westdir":"' + sow + '","eastdir":"' + soo + '","dusk":"' + daem + '","rain":"' + rain + '","light":"' + light + '","wind":"' + wind + '"}'
Und schon kann man dieses JSON Objekt über mqtt in ein Topic schreiben (paho-mqtt wäre eine Bibliothek für python).
Vermutlich gibt es elegantere Verfahren, sie führen aber zum gleichen Ergebnis, so man denn JSON und mqtt verwenden möchte, man erhält ein JSON Objekt, in dem alle relevanten Daten mit eindeutiger Bezeichnung abrufbar sind.
Code: Alles auswählen
{
"temperature": "12.3",
"southdir": "3",
"westdir": "55",
"eastdir": "1",
"dusk": "OFF",
"rain": "OFF",
"light": "999",
"wind": "1.2"
}
In openHAB nutzt man dann mqtt um das JSON abzuholen und in einen String Channel zu speichern. Der String Channel wird mit diversen Items gekoppelt (Number und Switch). Dabei werden wird das jeweilige Datum über das Profile JSONPATH ausgewählt. In den einzelnen Items landen also die Einzelwerte.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet