Ankündigung

Einklappen
Keine Ankündigung bisher.

MQTT API Server und MQTT Clients - LBS19001051 - LBS19001054

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    CentOS7
    Wenn du Daten von anderen Systemen via MQTT in EDOMI übernehmen willst, dann ist der Subscribe Client der richtige LBS

    Kommentar


      Ok danke und so vorgehen wie im lbs beschrieben mit der Installation. CentOs 7.6 oder 7.7 oder ...
      oder geht jede Version von der 7 ner Version

      Kommentar


        Code:
        [root@edomi ~]# rpm -q centos-release
        [COLOR=#FF0000]centos-release-7-7.1908.0.el7.centos.x86_64[/COLOR]
        LBS gemäß Hilfe installieren. Sollte dann funktionieren. Wenn nicht, einfach hier melden.

        Kommentar


          Danke

          Kommentar


            Zitat von jonofe Beitrag anzeigen
            Code:
            [COLOR=#FF0000]centos-release-7-7.1908.0.el7.centos.x86_64[/COLOR]
            Intressant.

            Das Image das Geert auf Edomi.de verlinkt gibt folgendes aus:
            Code:
            [root@edomi ~]# rpm -q centos-release
            centos-release-7-6.1810.2.el7.centos.x86_64
            Ist damit auch mein Fehler aus Post #412 zu erklären?
            Gruß
            Lapheus

            Kommentar


              jonofe,

              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?

              Gruß

              Kommentar


                Zitat von BadWicky Beitrag anzeigen
                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.

                Zitat von BadWicky Beitrag anzeigen
                Muss ich jetzt bei jedem Sensor Wert der bei beim MQTT Subscribe Client ankommt, diesen in das Subscribe Feld mit deinem jeweiligen Namen eintragen?
                Zitat von BadWicky Beitrag anzeigen
                oder gibt es eine andere Möglichkeit?
                Du könntest einfach den MQTT Parser LBS verwenden (19001207). Der ist genau dafür gemacht.
                Zuletzt geändert von jonofe; 16.12.2019, 13:49.

                Kommentar


                  jonofe,

                  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?

                  Kannst Du mir vielleicht ein paar Tipps geben.

                  Guß



                  Angehängte Dateien

                  Kommentar


                    Zitat von BadWicky Beitrag anzeigen
                    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.

                    Kommentar


                      jonofe

                      Vielen Dank für Deine Hilfe!!,

                      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 #?


                      Gruß

                      Kommentar


                        Zitat von BadWicky Beitrag anzeigen
                        1. Subscribe Client
                        p4d2mqtt/sensor/# die Raute steht für alle Werte die auf den Client rein kommen?
                        Genau. Alle Werte und Multi-Level (siehe unten)

                        Zitat von BadWicky Beitrag anzeigen
                        für was steht das +
                        + 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.
                        Mehr Details dazu hier: https://blog.doubleslash.de/mqtt-fuer-dummies/

                        Kommentar


                          jonofe
                          Dankeschön!!

                          Kommentar


                            Nanosonde

                            Zitat von Nanosonde Beitrag anzeigen
                            ich wollte Euch nur kurz den neuen LBS "MQTT Topic Parser" vorstellen: https://service.knx-user-forum.de/?c...ad&id=19001078
                            Ich bekomme bei Version 0.2 des LBS häufig folgende Fehler:
                            2019-12-16 20:10:45 698487 ? 26849 Datei: /usr/local/edomi/www/data/liveproject/lbs/LBS19001078.php | Fehlercode: 8 | Zeile: 52 | Undefined offset: 2 ERROR
                            2019-12-16 20:10:45 698676 ? 26849 Datei: /usr/local/edomi/www/data/liveproject/lbs/LBS19001078.php | Fehlercode: 8 | Zeile: 63 | Undefined offset: 2 ERROR
                            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.

                            Kommentar


                              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

                              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
                              Irgend eine Idee?
                              Gruß Hartwig

                              Kommentar


                                Sieht für mich danach aus, als wäre das epel Repo nicht richtig installiert.
                                Das php72-php-devel kannst du mal mit php-devel ersetzen.

                                Kommentar

                                Lädt...
                                X