OH3 Arduino: Daten per UDP
-
- Beiträge: 12
- Registriert: 3. Apr 2022 20:29
OH3 Arduino: Daten per UDP
Hallo!
Als Newbie in dem Bereich - gestattet eine "blöde" Frage die ich auch nach Google und Konsorten nicht lösen konnte.
Ich möchte per UDP Temperaturen (Zahlen) an OH schicken. (Tradition, das alte System (Arduino--> Influxdb) machte es auch so)
- OH und als UDP Server die SmartHomeJ TCP/UDP Binding installiert
- den UDP Receicver definiert (IP,Port) und einen "Channel" angelegt (hier "tcpudp:receiver:541ea0497b:aussentemp_vd")
Wo ich auf dem Schlauch stehe - wie ist der String den der Arduino in das udp Telegramm senden muß?
Vielen Dank!
Wastl
Als Newbie in dem Bereich - gestattet eine "blöde" Frage die ich auch nach Google und Konsorten nicht lösen konnte.
Ich möchte per UDP Temperaturen (Zahlen) an OH schicken. (Tradition, das alte System (Arduino--> Influxdb) machte es auch so)
- OH und als UDP Server die SmartHomeJ TCP/UDP Binding installiert
- den UDP Receicver definiert (IP,Port) und einen "Channel" angelegt (hier "tcpudp:receiver:541ea0497b:aussentemp_vd")
Wo ich auf dem Schlauch stehe - wie ist der String den der Arduino in das udp Telegramm senden muß?
Vielen Dank!
Wastl
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH3 Arduino: Daten per UDP
Herzlich willkommen im Forum!
Das TCP/UDP Binding ist ja noch gar nicht offiziell mit dabei
Grundsätzlich läuft die Kommunikation über Ports, das heißt, Du gibst im Thing an, auf welchem Port das Binding lauschen soll.
Achtung, es gibt zwei verschiedene Thing "Sorten", um auf Befehle von außerhalb zu reagieren, brauchst Du vermutlich receiver. https://github.com/smarthomej/addons/tr ... ing.tcpudp verrät mehr über die Konfiguration.
localAddress im Thing ist gewöhnlich 0.0.0.0 für "auf allen Schnittstellen hören". Über den addressFilter kann der Zugriff auf eine bestimmte IP-Adresse oder einen bestimmten IP-Adressbereich eingegrenzt werden, hier kommt dann gewöhnlich die IP der Gegenstelle hinein. Der Host sendet meist auf variablen Ports (abgehend) aber an einen fixen Port. der Fixe Port gehört wieder zum Thing, der variable Port gehört zum Channel und wird direkt im addressFilter mit angegeben.
über den receiver-string bekommst Du exakt das, was Du per UDP an openHAB sendest. Was Du sendest, musst Du selbst wissen
du könntest z.B. 5.4 für 5,4°C senden, dann sollte es möglich sein, den Channel vom Typ receiver-string mit einem Number Item zu koppeln. das funktioniert natürlich nur, wenn auch wirklich immer ein String kommt, der ein gültiges Number Objekt darstellt, also im Format [[+|-]][0-9]*[.[0-9]*] also optional Vorzeichen, bei Fehlen wird + verwendet, dann eine beliebige Anzahl arabische Ziffern, optional gefolgt von einem Punkt als Dezimaltrenner, gefolgt von einer beliebigen Anzahl arabischer Ziffern. Weitere Zeichen (z.B. Leerzeichen oder auch eine Einheit wie °C) sind nicht zulässig.
Das TCP/UDP Binding ist ja noch gar nicht offiziell mit dabei

Achtung, es gibt zwei verschiedene Thing "Sorten", um auf Befehle von außerhalb zu reagieren, brauchst Du vermutlich receiver. https://github.com/smarthomej/addons/tr ... ing.tcpudp verrät mehr über die Konfiguration.
localAddress im Thing ist gewöhnlich 0.0.0.0 für "auf allen Schnittstellen hören". Über den addressFilter kann der Zugriff auf eine bestimmte IP-Adresse oder einen bestimmten IP-Adressbereich eingegrenzt werden, hier kommt dann gewöhnlich die IP der Gegenstelle hinein. Der Host sendet meist auf variablen Ports (abgehend) aber an einen fixen Port. der Fixe Port gehört wieder zum Thing, der variable Port gehört zum Channel und wird direkt im addressFilter mit angegeben.
über den receiver-string bekommst Du exakt das, was Du per UDP an openHAB sendest. Was Du sendest, musst Du selbst wissen

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 12
- Registriert: 3. Apr 2022 20:29
Re: OH3 Arduino: Daten per UDP
Hallo!
Danke für die Antwort.
Heißt: ich gebe ein Schlüsselwort + Wert als udp Telegramm ab und muß dann in OH anhand des Schlüsselwortes entscheiden welches Item/Channel gemeint ist und dann den Wert dort hineinschreiben?
Also nach dem Motto "wenn udp Telegramm angekommen dann ein script abarbeiten.." ??
In Influxdb (wenn man den udp-Filter dort verwendet) war dieses Entschlüsseln schon hart codiert - da mußte man sich dem Syntax im Arduino anpassen.
Gruß - Wastl
Danke für die Antwort.
Heißt: ich gebe ein Schlüsselwort + Wert als udp Telegramm ab und muß dann in OH anhand des Schlüsselwortes entscheiden welches Item/Channel gemeint ist und dann den Wert dort hineinschreiben?
Also nach dem Motto "wenn udp Telegramm angekommen dann ein script abarbeiten.." ??
In Influxdb (wenn man den udp-Filter dort verwendet) war dieses Entschlüsseln schon hart codiert - da mußte man sich dem Syntax im Arduino anpassen.
Gruß - Wastl
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH3 Arduino: Daten per UDP
Du hast nicht erwähnt, dass Du mehrere verschiedene Werte sendest 
Ja, dann wäre es das einfachste, die Werte als JSON zu schicken. also z.B. so:
Alles, was nicht rein numerisch ist, muss in Anführungszeichen gesetzt werden. Wenn Du die Daten so überträgst, kannst Du für die beiden Werte temp und hum zwei Number Items mit dem Channel receive-string koppeln. Beim Anlegen der Items (geht aber auch noch nachträglich) legst Du ein Profile vom Typ JSONPATH an. Falls dieser Typ im Profile nicht auftaucht, hast Du die JSONPATH Transformation noch nicht installiert. 
Als Wert trägst Du einfach $.temp bzw. $.hum ein und erhältst ausschließlich den entsprechenden Zahlenwert.

Ja, dann wäre es das einfachste, die Werte als JSON zu schicken. also z.B. so:
Code: Alles auswählen
{"temp": 22.0, "hum": 47, "name": "Knoten 1"}

Als Wert trägst Du einfach $.temp bzw. $.hum ein und erhältst ausschließlich den entsprechenden Zahlenwert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 12
- Registriert: 3. Apr 2022 20:29
Re: OH3 Arduino: Daten per UDP
Guten Morgen!
Also, eigentlich senden mehrere Arduino jeweils mehrere Daten für (jeweils) verschiedene Ort und Eigenschaften..
Idee: alles in ein Dummy-Item einlesen und dann umkopieren wobei ein Schlüsselwort im Dummy das Ziel definiert - am einfachsten (?) vielleicht den Namen des Items in OH angeben.
Danke für das Mitdenken und Helfen!
Wastl
Also, eigentlich senden mehrere Arduino jeweils mehrere Daten für (jeweils) verschiedene Ort und Eigenschaften..
Idee: alles in ein Dummy-Item einlesen und dann umkopieren wobei ein Schlüsselwort im Dummy das Ziel definiert - am einfachsten (?) vielleicht den Namen des Items in OH angeben.
Danke für das Mitdenken und Helfen!
Wastl
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH3 Arduino: Daten per UDP
Das ist kritisch. Was passiert, wenn zwei Arduinos im Abstand einer Millisekunde ihre Meldung absetzen? Hint: es wird schief gehen.
Stattdessen legst Du pro Device ein Thing an, mit einem Channel, in dem das JSON Objekt landet und pro Wert ein Item. Das Item wird mit dem Channel gekoppelt und im Profile der Verbindung wird das passende JSONPATH Statement hinterlegt.
Du könntest im Arduino auch die mqtt Library verwenden, dann kannst Du Dir das Rumgeturne mit UDP sparen.
Gesendet von iPad mit Tapatalk
Stattdessen legst Du pro Device ein Thing an, mit einem Channel, in dem das JSON Objekt landet und pro Wert ein Item. Das Item wird mit dem Channel gekoppelt und im Profile der Verbindung wird das passende JSONPATH Statement hinterlegt.
Du könntest im Arduino auch die mqtt Library verwenden, dann kannst Du Dir das Rumgeturne mit UDP sparen.
Gesendet von iPad mit Tapatalk
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 12
- Registriert: 3. Apr 2022 20:29
Re: OH3 Arduino: Daten per UDP
Danke für die Details - das sind neue Konzepte für mich
zu udp - ja ist old fashioned..
aber: wenn mal ein Wert wegen Kollision weg ist dann stört das ja nicht wirklich.
Ich nutze die für Werte über die Zeit und nicht Steuerungen. (kontrolle hydraulischer Abgleich und so)
Bei "ein Wert alle 5 Minuten" sind Kollisionen auch selten.
zu udp - ja ist old fashioned..
aber: wenn mal ein Wert wegen Kollision weg ist dann stört das ja nicht wirklich.
Ich nutze die für Werte über die Zeit und nicht Steuerungen. (kontrolle hydraulischer Abgleich und so)
Bei "ein Wert alle 5 Minuten" sind Kollisionen auch selten.
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH3 Arduino: Daten per UDP
Dennoch gibt es keinerlei Grund, das so zu machen.
Zwinge openHAB nicht Deinen Willen auf, sondern nutze openHAB so, wie es gedacht ist.
Lege einfach pro Arduino ein Thing an. Alternativ kannst Du auch pro Arduino einen Channel anlegen und jeweils über den addressFilter die einzelnen Arduinos auseinander halten. Du brauchst dafür keine einzige Zeile Code, nur die Konfiguration der Things/Channel/Items (die Items brauchst Du so oder so).
Zwinge openHAB nicht Deinen Willen auf, sondern nutze openHAB so, wie es gedacht ist.
Lege einfach pro Arduino ein Thing an. Alternativ kannst Du auch pro Arduino einen Channel anlegen und jeweils über den addressFilter die einzelnen Arduinos auseinander halten. Du brauchst dafür keine einzige Zeile Code, nur die Konfiguration der Things/Channel/Items (die Items brauchst Du so oder so).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 12
- Registriert: 3. Apr 2022 20:29
Re: OH3 Arduino: Daten per UDP
Hi!
Ich versuche gerade meine MQTT Binding zu Laufen zu bekommen - komme nicht auf Mosquitto..
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused
Ein Esp8266 mit Pubsubclient hat ähnliche Probleme - kann keine Verbindung zum Raspberry aufbauen - zu MQTT Brokern im Netz aber wohl.
Frustriert!
Mosquitto läuft!
Ich versuche gerade meine MQTT Binding zu Laufen zu bekommen - komme nicht auf Mosquitto..
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused
Ein Esp8266 mit Pubsubclient hat ähnliche Probleme - kann keine Verbindung zum Raspberry aufbauen - zu MQTT Brokern im Netz aber wohl.
Frustriert!
Mosquitto läuft!
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH3 Arduino: Daten per UDP
Zugriff auf mosquitto per externem Client geht (also z.B. MQTT Explorer oder mqtt.fx)?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet