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

    Guten Morgen

    Der Baustein MQTT Subscribe Server funktioniert prima. Vielen Dank dafür!
    Meine Situation sieht so aus:


    -Sonos2mqtt habe ich als Docker auf der Synology laufen.
    -Prefix: sonos/edomi/set/internal

    Folgende mit MSUB markierte IKO werden problemlos befüllt:

    connected
    RINCON_542A1BF5A78001400

    Nicht befüllt werden folgende IKO:

    status/esszimmer/avtransport
    status/esszimmer/volume

    Wahrscheinlich liegt es an den Slashes.
    Was kann ich tun?

    Kommentar


      Warum verwendest du / in iKO Namen?
      Das geht mit MQTT Topics ganz sicher schief.

      Ich glaube der Ansatz ist falsch. Um ein externes System per MQTT an EDOMI anzubinden solltest du einen Subscribe Client LBS verwenden.

      Der Subscribe-Client-LBS subscribed dann auf sonos/# und dann schreibst du die ankommenden Werte in deine EDOMI iKOs, denen du dann beliebige Namen geben kannst. Das machst du dann, in dem du einen MQTT Topic Parser 30-fach LBS (19002322) an mit E1 and den Ausgang A6 des Subscribe Client hängst.

      Kommentar


        Zitat von jonofe Beitrag anzeigen
        Hier noch mal die Installationsanleitung für den Mosquitto MQTT Broker auf dem EDOMI Server. Dies setzt voraus, dass die Installation der LBS auf dem EDOMI Server bereits gemäß Anleitung im LBS erfolgt ist. Nur dann kann folgende Installation erfolgreich ablaufen:

        Code:
        yum -y install mosquitto
        mkdir /var/log/mosquitto
        chown mosquitto:mosquitto /var/log/mosquitto
        Hier mein /etc/mosquitto/mosquitto.conf Konfigurationsfile:

        Code:
        pid_file /var/run/mosquitto.pid
        log_dest file /var/log/mosquitto/mosquitto.log
        listener 1883
        persistence true
        persistence_location /var/lib/mosquitto/
        persistence_file mosquitto.db
        log_dest syslog
        log_dest stdout
        log_dest topic
        log_type all
        connection_messages true
        log_timestamp true
        allow_anonymous false
        password_file /etc/mosquitto/pwfile
        Danach kann mit

        Code:
        mosquitto_passwd -c /etc/mosquitto/pwfile edomi
        ein Passwort für den User 'edomi' angelegt werden und Mosquitto neu gestartett werden:

        Code:
        /etc/init.d/mosquitto restart
        Jetzt ist der Mosquitto Broker einsatzfähig und man kann die LBS entsprechend konfigurieren mit IP (IP des Mosquitto Servers), Port (1883), User (edomi), Password (wie gerade festgelegt).

        In EDOMI kann MQTT nun wie folgt konfiguriert werden:

        Screenshot from 2017-05-20 20-37-15.png
        Zunächst sollte der Subscribe und Publish Server ausreichen (die oberen beiden LBS).

        Publish Server:
        E1: 1
        E2: Broker IP: <EDOMI IP>
        E3: Broker Port: 1883
        E4: Broker User: edomi
        E5: Broker Password: <so wie oben gewählt>
        E6: Plain Filter: <leer>
        E7: RegExp Filter: <leer>
        E8: Structure: both
        E9: QoS: 1
        E10: Retain: 1
        E11: Loglevel: 8

        Subscribe Server:
        E1-E7: wie beim Publish Server
        E8: QoS: 1
        E9: Retain: 1
        E10: Loglevel: 8

        QoS/Retain sind nur für die Last Will & Testament Message (edomi/status), welche vom Broker an alle subscribten Clients gesendet wird, wenn die Verbindung zum Subscribe Server LBS abreißt.

        Dann Projekt neu aktivieren und schon sollte im Logfile des Mosquitto Brokers eine Menge los sein:

        Code:
        tail -f /var/log/mosquitto/mosquitto.log
        Des weiteren kann der Empfang von MQTT wie folgt getestetet werden. Auf dem EDOMI Server folgenden Befehl ausführen:

        Code:
        mosquitto_pub -h <IP-Mosquitto-Server> -u edomi -P <password> -t edomi/set/knx/[COLOR=#0000CD][B]x-y-z[/B][/COLOR] -m [COLOR=#0000CD][B]###[/B][/COLOR]
        x-y-z steht für eine KNX GA und ### für einen Wert der dieser GA zugeordnet werden soll.
        Hallo,
        bräuchte mal etwas Hilfe....Hab die MQTT LBS wie in den Hilfetexten geschrieben Installiert.
        Dann nach obiger Anleitung den Broker auf dem Edomi-Server (NUC) installiert.
        Der Publish Server LBS scheint sich zwar zu verbinden aber bekomme im Log einen Eintrag vom Exec Teil mit

        You don't have permission to access /data/log/CUSTOMLOG_MQTT_Publish_Server-EXEC.log on this server.
        Der Subscribe Server LBS will sich nicht verbinden und es kommt im Log die Meldung

        EXE19001052 [v1.2]: Exception caught: The client is not currently connected. (1275)
        Wie bekomm ich das zum laufen?

        Kommentar


          Zitat von jonofe Beitrag anzeigen
          Ich glaube der Ansatz ist falsch.
          Vielen Dank für die Hinweise. Läuft jetzt.

          Kommentar


            Hallo ich habe den MQTT Publish Server hier laufen und bekomme egal welches log level ich einstelle anscheinend den maximalen output den es gibt. Dies führte dazu (weil ich nicht darauf geachtet habe) das ich eine 30gb logdatei hatte welche das gesamtsystem zum erliegen gebracht hat. (Ja lief wohl eine weile so..)

            Im Verzeichnis
            /usr/local/edomi/www/data/log
            wird die Datei CUSTOMLOG_MQTT_Publish_Server-EXEC.log erstellt und bei egal welchem log Level mit solchem Inhalt gefüllt:
            Code:
            Publishing finished
            DISCONNECTING
            DISCONNECTED
            Match: edomi/status/internal/Systemzeit
            Connected!
            Publishing edomi/status/internal/Systemzeit
            Publishing edomi/status/internal/5
            Publishing finished
            Publishing finished
            DISCONNECTING
            DISCONNECTED
            und das für jedes iKO und KO.

            Sobald ich den Baustein deaktiviere wird nichts mehr in die Datei geschrieben.

            Bei den übrigen MQTT Bausteinen passiert dies nicht (alle Loglevel=1)

            Hat noch jemand dieses Problem?

            Kommentar


              Zitat von dirkie Beitrag anzeigen
              Hat noch jemand dieses Problem?
              Aktuell ist das logging des Skripts, welches nicht vom LBS sondern aus der Datenbank (stored procedure) aufgerufen wird, nicht konfigurierbar.
              Wenn du das abschalten möchtest, dann kannst du derzeit nur im Source Code die Zeile in der function logging() auskommentieren.

              Oder alternativ regelmäßig das Logfile löschen, z.B. wöchentlich über den "wöchentlichen" Trigger und einen EXEC Befehl.

              Kommentar


                Danke für die Erklärung. Habe den zweiten Vorschlag umgesetzt.

                Kommentar


                  Edit:
                  Ich ziehe die Frage zurück:
                  > /usr/local/edomi/www/data/liveproject/lbs/EXE19001054.php | Fehlercode: 8 | Zeile: 254 | Undefined offset: 9
                  bedeutet, dass ich beim LOgging eine falsche Nummer eingetragen hatte. Sorry.
                  Zuletzt geändert von givemeone; 18.09.2022, 23:49.

                  Kommentar


                    Zitat von starwarsfan Beitrag anzeigen
                    Wenn Template von mir, warum hast Du dann nochmals das MQTT-Zeugs installiert? Das ist im Template alles schon drin...
                    Hi,
                    ich habe vor ein paar Wochen mit deinem Container gestartet und wollte mich nun mal an das Thema MQTT wagen.
                    Allerdings finde ich bei meiner Installation keinerlei MQTT Logikmodule. Wo sollten diese aufgelistet sein? Unter den eigenen Logikbausteinen? Die Suche ergibt auch keine Treffer. Auch die anderen von dir eigentlich hinzugefügten LBS kann ich nicht entdecken.

                    Kommentar


                      Hi

                      Zitat von jolt19 Beitrag anzeigen
                      Auch die anderen von dir eigentlich hinzugefügten LBS kann ich nicht entdecken.
                      Das hast Du falsch verstanden. Hier steht das folgende:

                      • Es ist eine ganze Reihe zusätzlicher Pakete für Userland-LBS'e bereits vorab installiert. Namentlich für die folgenden Bausteine:
                        • Telegram-LBS (19000303 / 19000304)
                        • Mailer-LBS (19000587)
                        • Philips HUE Bridge (19000195)
                        • MQTT Publish Server (19001051)
                        • AlexaControl LBS (19000809)
                        • MikroTik-LBS (19001059)
                      In anderen Worten: All das, was für diese Bausteine auf dem Host-System gemacht werden muss, ist bereits vorhanden. Die Bausteine an und für sich musst Du schon noch installieren.
                      Kind regards,
                      Yves

                      Kommentar


                        Ah, verstanden.
                        Habe nun die MQTT LBS installiert und stehe vor der nächsten Herausforderungen:

                        Mosquitto läuft auf einem eigenen Proxmox Container und es ist auch schon was los auf dem Teil, mein Saugrobotor auf dem Valetudo läuft schickt schon fleißig was:
                        Bildschirmfoto 2022-10-17 um 20.12.32.png


                        In der Edomi Logik hakt es leider noch:
                        Bildschirmfoto 2022-10-17 um 20.14.37.png


                        Wenn ich es richtig deute, ist der Subscribe Client ja erfolgreich mit Mosquitto verbunden, empfängt aber weiter keine Nachrichten.
                        Kann doch eigentlich nur an E9 liegen? Dort steht nur "valetudo". Kein /valetudo oder /valetudo/# weil mir das scheinbar immer wieder rausgelöscht wird.

                        Kommentar


                          Zitat von jolt19 Beitrag anzeigen
                          Kann doch eigentlich nur an E9 liegen? Dort steht nur "valetudo". Kein /valetudo oder /valetudo/# weil mir das scheinbar immer wieder rausgelöscht wird.
                          Da muss valetudo/# stehen.
                          Keinen führenden Slash bei MQTT!

                          Kommentar


                            Danke für den Hinweis, läuft jetzt. Damit empfange ich ja jetzt alle Nachrichten mit dem Topic valetudo/#.

                            Eine Frage als Edomi Anfänger hätte ich noch. Mit welchen Logikbausteinen kann ich mir jetzt die verschiedenen "subtopics" filtern um sie auf KOs zu legen? Wenn ich z.B. den Status (fährt, docked etc.) auf einem Glastaster anzeigen will benötige ich ja A8 vom Topic
                            Code:
                            valetduo/l10pro/StatusStateAttribute/status
                            .
                            Analog dazu für alle anderen Subtopics die ich anzeigen oder in weiterer Logik verarbeiten will. Wie organsiere ich das am geschicktesten?

                            Und wie mache ich es mit weiteren MQTT Geräten, z.B. Wärmepumpe via NibePI? 1x den Subscribe Client pro physischem Gerät?

                            Kommentar


                              Zitat von jolt19 Beitrag anzeigen
                              Mit welchen Logikbausteinen kann ich mir jetzt die verschiedenen "subtopics" filtern um sie auf KOs zu legen?

                              Das macht man mit MQTT Parser LBS
                              5-fach: LBS 19001207
                              30-fach: LBS 19002322

                              Zitat von jolt19 Beitrag anzeigen
                              Und wie mache ich es mit weiteren MQTT Geräten, z.B. Wärmepumpe via NibePI? 1x den Subscribe Client pro physischem Gerät?
                              Ja, würde ich so machen.

                              Man könnte alternativ auch auf # subscriben und würde alles bekommen, aber dadurch auch vermutlich viel, was man gar nicht will und nur Leistung kostet. Daher eher ein subscribe client je Gerät (Präfix).

                              Kommentar


                                Ein paar Tage später habe ich die nächsten Anfängerfragen

                                Und zwar möchte ich nun, getriggert über einen Button der Visu oder einen KNX Taster gerne ein Topic und dazugeörige Payload an den Broker publishen.
                                Mittels Publish Topics und Publish Client LBS kommt bei Mosquitto auch was an. Aber alle konfigurierten Payloads.

                                Was mir noch nicht klar ist, wie kann ich das senden eines Topics/Payloads initieren. Start könnte bei mir z.B. ein KO sein, dass per Taster auf einen spezifischen Wert gesetzt wird.
                                Bildschirmfoto 2022-11-01 um 20.54.55.png

                                Und noch eine allgemeine Edomi Anfängerfrage.
                                Wie "übersetzte" ich den Wert eines KOs in einen String, bzw. hier in ein Payload. z.B. KO=1 --> Payload = START, KO=2 --> Payload = PAUSE etc.?

                                Kommentar

                                Lädt...
                                X