Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
MQTT API Server und MQTT Clients - LBS19001051 - LBS19001054
bin jetzt gestern endlich soweit gekommen das der Subscribe Client funktioniert und mir die Sensorwerte der Heizung sendet.
Mein Problem wenn ich # im Subscribe Client eintrage, kommen alle Sensorwerte die gesendet werden nacheinander, dies bringt mir jedoch nichts wenn ich die Werte in der edomi Oberfläche einzeln dargestellt haben möchte.
Muss ich jetzt bei jedem Sensor Wert der bei beim MQTT Subscribe Client ankommt, diesen in das Subscribe Feld mit deinem jeweiligen Namen eintragen?
Dies würde dann im Umkehrschluss bedeuten, dass ich für jeden Sensorwerte einen eigenen Subscribe Client benötige, oder gibt es eine andere Möglichkeit?
kommen alle Sensorwerte die gesendet werden nacheinander, dies bringt mir jedoch nichts
Würde es denn etwas bringen, wenn sie alle zusammen kommen würden? Nein, geht ja auch nicht, da die Sensoren ja dann, senden, wenn sie neue Daten haben. Das ist halt der Sinn von MQTT.
ich habe keine Ahnung wie ich das in meinem Anwendungsfall realisieren soll.
Ich habe dir mal zur Verdeutlichung einen Screenshot beigefügt bei dem ein Teil der Sensorwerte ersichtlich ist die geliefert werden.
Weiter habe ich Dir mal meine versuch ebenfalls in einem Screenshot beigefügt, hier habe ich mal zwei Subscribe Client verwendet und bei jedem client unter E9 dann die Sensorwerte eingetragen.
Unten auf dem Screensoht habe ich mal den Praser eingefügt, keine Ahnung wo und wie ich da was einstellen muss.
Ach ja was ich Dich noch fragen wollte wie bekomme ich da am Ausgang A2 des Subscribe Client einen sauberen Dezimalwert raus?
ich habe keine Ahnung wie ich das in meinem Anwendungsfall realisieren soll.
Am besten so wie in der Hilfe meines LBS beschrieben. Mit dem Subscribe Client auf p4d2mqtt/sensor/# subscriben
A6 vom Subscribe Client mit E1 vom MQTT Parser verwenden. (per iKO)
E2 des MQTT Parsers auf p4d2mqtt/sensor/+/state setzen.
E6 des MQTT Parsers z.B. auf: Betriebsstunden_0x62
E7-E10 auf weitere Sensornamen
An A4-A8 kommen dann die Payloads der enstprechenden Sensoren (E6-E10) raus.
Da dies JSON Datenstrukturen sind, musst du diese auf einen JSON Extractor LBS geben, d.h. auf E1 des 19001208 LBS.
An E2 gibst du dann das Feld des JSON ein, welches du haben willst. Wenn ich das aufgeklappte JSON deines Screenshots richtig interpretiere, muss du nur value auf E2 geben. Dann sollte an A2 der richtige Dezimalwert des Sensor erscheinen.
Du benötigst aber auf jeden Fall einen JSON Extractor ja Sensor.
D.h. Insgesamt:
- einen Subscribe Client
- für je 5 Sensoren einen MQTT Parser
- einen JSON Extractor je Sensor.
Hat gefruchtet und es funktioniert fürs erste alles einwandfrei.
Zum Verständnis, weil ich es ja auch verstehen will.
1. Subscribe Client
p4d2mqtt/sensor/# die Raute steht für alle Werte die auf den Client rein kommen?
2. Praser
p4d2mqtt/sensor/+/state für was steht das + (für mein Verständnis steht das + ebenfalls für alle Werte die vom Client kommen richtig?)
wieso hier + und nicht #?
+ ist das MQTT Symbol für Single-Level Wildcard
# ist das MQTT Symbol für Multi-Level Wildcard
Es existiert auch ein Mechanismus, mit dem sich das Ordnersystem der Topics gruppieren lässt: sogenannte Single-Level-Wildcards(+) und Multi-Level-Wildcards(#)
Die Single-level-Wildcard (+) ersetzt ein Element eines Topics durch eine Wildcard, sprich: Ein Subscriber zum topic „5OG/+/Temperatursensor/Temperatur“ würde alle Nachrichten erhalten, die den drei angegebenen Leveln entsprechen, ungeachtet der Wildcard. Nachrichten zu beispielsweise „5OG/Zimmer2/Temperatursensor/Temperatur“ oder „5OG/Flur/Temperatursensor/Temperatur“ würden jetzt empfangen werden.
Die Multi-level-Wildcard (#) ersetzt die ganze folgende Baumstruktur. Eine Subscription zum Topic „5OG/#“ würde absolut alle Nachrichten empfangen, die mit „5OG/“ beginnen, auch z.Bsp „5OG/Flur/Tischkicker/Schummelmodul/Status“
Wildcards lassen sich beliebig kombinieren, beispielsweise „+/+/Temperatursensor/#“ für alle Temperatursensor-Daten aus allen Stöcken und Zimmern.
Müsste man beim Zugriff über den Index von subtopics_filter vielleicht prüfen wie groß das array ist, damit es keinen ungültigen Zugriff gibt?
Gleiches gilt auch für den 19001079.
Danke und Gruß
Hardy
Zuletzt geändert von harry7922; 19.12.2019, 21:24.
Nachdem ich nach einen crash den alten MQTT Client unter Centos 6.5 nicht mehr zu laufen bekam, habe ich Heute Centos 7.7.1908 installiert und dann nach der Anleitung im aktuell MQTT Client die addons zu installieren
yum -y install epel-release php-process git gcc make lief durch
yum -y install mosquitto mosquitto-devel php72-php-devel
Failed to set locale, defaulting to C
Extra Packages for Enterprise Linux 8 - x86_64 865 kB/s | 4.3 MB 00:05
Last metadata expiration check: 0:00:07 ago on Fri Dec 20 16:28:45 2019.
No match for argument: mosquitto
No match for argument: mosquitto-devel
No match for argument: php72-php-devel
Error: Unable to find a match
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar