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

    Und wie sieht der Subscribe String im MQTT Explorer aus?

    Es sollte bot/# oder nur # sein.
    Wenn es bot/edomi/# ist, dann siehst du die Topics des Publish Clients nicht.

    Kommentar


      Zitat von jonofe Beitrag anzeigen
      Und wie sieht der Subscribe String im MQTT Explorer aus?
      Ich habe da nichts eingestellt nur die Anmeldedaten eingegeben und fertig.
      Der Rest ist Standart

      mqtt.PNG

      Kommentar


        Guten Abend, ich konnte den Fehler mit Hilfe eines bekannten finden und beseitigen.

        Das Problem lag einfach nur daran, dass das die Zeit zwischen "connect" und "publish" zu kurz ist.

        PHP-Code:
        $client->connect($server$port);
        $client->loop(100);
        $client->loop(100);
        $client->loop(100);
        $client->publish($topic$payload$qos$retain);
        $client->loop(100);
        $client->loop(100);
        $client->loop(100);
        $client->disconnect(); 
        Wir haben das dann aus dem LBS 19001051 zusammengebaut und jetzt funktioniert das:

        PHP-Code:
         $mid 0;

        // onConnect
        $client->onConnect(function () use ($client$topic$payload$qos$retain) {
        global 
        $mid;
        $mid $client->publish($topic$payload$qos$retain);
        });

        // onPublish
        $client->onPublish(function ($publishedId) use ($client) {
        global 
        $mid;
        if (
        $publishedId == $mid) {
        $client->disconnect();
        }
        });

        $client->connect($server$port);
        $client->loopForever();


        Später haben wir dann auch festgestellt das es reicht einfach "$client->loop(100);" mehrermal einzufügen um den Baustein zum laufen zu bekommen.

        Gibt es einen Grund warum das bei den beiden Publish Bausteinen unterschiedlich gelöst wurde?

        Als Anmerkung noch: Der Mqtt Broker ist im Internet und deshalb vielleicht langsamer zu erreichen.

        Gruß Hardi
        Zuletzt geändert von elkomaster91; 17.08.2021, 21:47.

        Kommentar


          @jonofe Vielen Dank für deine schnelle Hilfestellung

          Kommentar


            Zitat von elkomaster91 Beitrag anzeigen
            Gibt es einen Grund warum das bei den beiden Publish Bausteinen unterschiedlich gelöst wurde?
            Das Publishing Konzept des Publish Servers wurde erst vor kurzem umgestellt und der Publish Client hat seitdem noch kein Update erfahren und vermutlich auch bislang in allen Situationen funktioniert.
            Ich werde dies aber dann in Kürze anpassen, damit es sowohl konsistent als auch mit "langsameren" Brokern funktional ist. Danke nochmal für den Hinweis.

            Kommentar


              Zitat von jonofe Beitrag anzeigen
              Ich werde dies aber dann in Kürze anpassen, damit es sowohl konsistent als auch mit "langsameren" Brokern funktional ist. Danke nochmal für den Hinweis.
              Gerne, aber der Dank gehört dir für den sehr guten Baustein

              Kommentar


                Hallo zusammen,

                Danke für diese tollen Logikbausteine. Ich versuche gerade vergebens den MQTT Publish Server ans Laufen zu bringen. Ich denke, dass ich mich ordentlich an die Installationsanweisung gehalten habe, aber wenn ich eines von Linux gelernt habe, dann dass eine Installationsroutine aus dem Internet niemals auf Anhieb funktioniert. Mosquito habe ich auf einem anderen System installiert. Dort kann ich mir Nachrichten schicken und auch ein Tasmota Client liefert Werte. Ich kann mittels MQTT Explorer auch von meiner Windows Maschine den Topicbaum abfragen. Nun zu Edomi. Ich habe lediglich den Publish Server am Laufen und würde nun erwarten, dass er mir die KOs rübersendet ... macht er aber nicht. Das Debug Log sagt folgendes:

                Code:
                 [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
                 	 		[TR]
                 			[TD="colspan: 5"]{EDOMI,CUSTOMLOG_MQTT_Publish_Server-LBS19001051.htm,19.08.2021,20:52:15,518834,9998}[/TD]
                 		[/TR]
                 		[TR]
                 			[TD]Zeitstempel[/TD]
                 			[TD]ms[/TD]
                 			[TD]PID[/TD]
                 			[TD]LogLevel[/TD]
                 			[TD]Meldung[/TD]
                 		[/TR]
                 		[TR]
                 			[TD]2021-08-19 20:52:15[/TD]
                 			[TD]518799[/TD]
                 			[TD]9998[/TD]
                 			[TD]debug[/TD]
                 			[TD]LBS19001051 [v1.4]: QUERY: CREATE PROCEDURE mqtt_publish(typ INT(10), ga VARCHAR(1000), name VARCHAR(1000), value VARCHAR(11000)) BEGIN DECLARE cmd VARCHAR(1000); DECLARE result INT(10); DECLARE logresult INT(10); SET cmd = CONCAT('/usr/bin/bash -c "/usr/bin/php /usr/local/edomi/www/data/liveproject/lbs/EXE19001051.php ',typ,' ',ga,' \'',name,'\' \'',value,'\' & "'); SET result = sys_exec(cmd); END (1294)[/TD]
                 		[/TR]
                 		[TR]
                 			[TD]2021-08-19 20:52:15[/TD]
                 			[TD]525070[/TD]
                 			[TD]9998[/TD]
                 			[TD]debug[/TD]
                 			[TD]LBS19001051 [v1.4]: Query: SELECT ga,name FROM edomiLive.ko WHERE text LIKE "%MPUB%" (1294)[/TD]
                 		[/TR]
                 		[TR]
                 			[TD]2021-08-19 20:52:15[/TD]
                 			[TD]525741[/TD]
                 			[TD]9998[/TD]
                 			[TD]debug[/TD]
                 			[TD]LBS19001051 [v1.4]: Query-Result: (1294)[/TD]
                 		[/TR]
                 		[TR]
                 			[TD]2021-08-19 20:52:15[/TD]
                 			[TD]525768[/TD]
                 			[TD]9998[/TD]
                 			[TD]debug[/TD]
                 			[TD]LBS19001051 [v1.4]: ================ ARRAY/OBJECT START ================[/TD]
                 		[/TR]
                 		[TR]
                 			[TD]2021-08-19 20:52:15[/TD]
                 			[TD]525789[/TD]
                 			[TD]9998[/TD]
                 			[TD]debug[/TD]
                 			[TD]LBS19001051 [v1.4]: [][/TD]
                 		[/TR]
                 		[TR]
                 			[TD]2021-08-19 20:52:15[/TD]
                 			[TD]525800[/TD]
                 			[TD]9998[/TD]
                 			[TD]debug[/TD]
                 			[TD]LBS19001051 [v1.4]: ================ ARRAY/OBJECT END ================[/TD]
                 		[/TR]
                 	 [/TABLE]

                Für mich sieht das so aus, dass er diverse Objekte findet, diese aber nicht weiterleitet. Ich habe keine Idee warum, daher eine kleine Bitte um Hilfe.

                Danke und Gruß
                Björn

                Kommentar


                  Logs bitte immer als Plain Text in CODE Tags posten, HTML ist extrem schlecht lesbar.
                  Sieht für mich so aus, als hättest du E15=1 gesetzt. Dann werden nur die iKOs/GAs gepublished, bei denen du den String "MPUB" im Kommentarfeld eingetragen hast.

                  Am besten folgendes machen:
                  1. E15=0
                  2. Projekt neu aktivieren
                  3. Prüfen, ob es dann funktioiniert
                  Falls es nicht funktioniert, folgendes hier posten:
                  1. Screenshot Publish Server in Liveansicht
                  2. Log Publish Server (plain-text)
                  3. Log MQTT Broker (plain-text)

                  Kommentar


                    Hallo jonofe,

                    danke für deine Hilfe. Gerade beim Zusammenkopieren habe ich den Fehler gefunden. Ich habe zwei MQTT Broker auf verschiedenen Maschinen am laufen ... und ich habe natürlich die falsche IP angegeben Sorry für die Umstände - es funktioniert perfekt!

                    Danke und Gruß
                    Björn

                    Kommentar


                      Hallo
                      nachdem auf meinem Testrechner (CentOS7 und Edomi 2.03) Publish-(v.0.8) und Subscribe (V0.10) - Clients genau das getan haben sie sollten (zu Testzwecken Lichter aus- und einschalten), kopiere ich die Datensicherung des Testrechners zurück auf die Produkivmaschine. Während auf der Testmaschiene alles prima läuft, bekomme ich auf der Produktivmaschiene laufende "Lookup errors" zum Mosquitto. Ich weiß mir keinen Rat. Die Installationsschritte( beschrieben beim Publish Server) habe ich nochmals durch geführt.


                      Hat jemand einen Tipp?

                      Kommentar


                        Besteht die Möglichkeit einen der LBS (insb. Client) auch ohne CentOS 7 / PHP7 zu nutzen? Bis zu einer bestimmten Version war das offenbar möglich.
                        Durch die Abhängigkeit von anderen (nur CentOS 6) LBS kommt ein "einfacher" Wechsel des Systems leider nicht in Frage.
                        Gruß -mfd-
                        KNX-UF-IconSet since 2011

                        Kommentar


                          Welche LBS sind denn noch CenOS6 only?

                          Kommentar


                            Zitat von vento66 Beitrag anzeigen
                            Welche LBS sind denn noch CenOS6 only?
                            Ich bilde mir ein, dass bspw. wintermute das für die Logitech Squeeze Bausteine (und seine weiteren LBS) irgendwo unmissverständlich zum Ausdruck gebracht hat.
                            Bei LBS 19000680 ist es auch nicht so richtig klar.
                            Gruß -mfd-
                            KNX-UF-IconSet since 2011

                            Kommentar


                              Zu meinem Post von gestern (#730) möchte ich ein paar ergänzende Details liefern:

                              Unbenannt.JPGUnbenannt1.JPG
                              Der Edomi-Fehler-Log zeigt:
                              Code:
                              2021-08-23 18:54:27 160267 ? 22415 Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001053.php | Fehlercode: 0 | Zeile: 60 | Lookup error.
                              2021-08-23 18:54:47 395278 ? 22631 Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001053.php | Fehlercode: 0 | Zeile: 60 | Lookup error.
                              Der Log des Publish-Client zeigt:
                              Code:
                              2021-08-23 18:54:26 922225 7376 debug LBS19001053 [v0.8]: Publish: | - edomi/OST/OG_Bad|1 (634)
                              2021-08-23 18:54:27 051590 22415 debug EXE19001053 [v0.8]: MQTT Publish Client started (634)
                              2021-08-23 18:54:27 155597 22415 debug EXE19001053 [v0.8]: Publishing topic: edomi/OST/OG_Bad with payload: 1 and qos: 1 and retain: 1 (634)
                              2021-08-23 18:54:47 173248 7376 debug LBS19001053 [v0.8]: Publish: | - edomi/OST/OG_Buero|1 (634)
                              2021-08-23 18:54:47 285847 22631 debug EXE19001053 [v0.8]: MQTT Publish Client started (634)
                              Der Log des Subscribe_client zeigt:
                              Code:
                              2021-08-23 18:51:16 757462 7431 debug EXE19001054 [v0.10]: Connection to MQTT Broker failed (635)
                              2021-08-23 18:51:16 759318 7431 debug EXE19001054 [v0.10]: Exception caught: Lookup error. (635)
                              2021-08-23 18:51:16 763014 7431 debug EXE19001054 [v0.10]: Exception caught: The client is not currently connected. (635)
                              2021-08-23 18:51:19 769155 7431 debug EXE19001054 [v0.10]: Connection to MQTT Broker failed (635)
                              2021-08-23 18:51:19 770764 7431 debug EXE19001054 [v0.10]: Exception caught: Lookup error. (635)
                              2021-08-23 18:51:19 774260 7431 debug EXE19001054 [v0.10]: Exception caught: The client is not currently connected. (635)
                              Und der Mosquitto-Log auf einem Raspi zeigt:
                              Code:
                              2021-08-23T18:15:35: Client mqtt-explorer-29521eb3 disconnected.
                              2021-08-23T18:28:53: Client EDOMI_MQTT_Subscribe_Client_635-6123c8a632dc8 disconnected.
                              2021-08-23T18:39:34: Client mqtt-explorer-2af2c3be disconnected.
                              2021-08-23T18:39:38: New connection from 192.168.178.56:54525 on port 1883.
                              2021-08-23T18:39:38: New client connected from 192.168.178.56:54525 as mqtt-explorer-2af2c3be (p2, c1, k60, u'edomi').
                              2021-08-23T18:41:01: Client mqtt-explorer-2af2c3be disconnected.
                              2021-08-23T18:43:04: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.
                              In dem Terminal-Bild wird auch das Dilemma deutlich (links der Produktiv-Rechner, rechts der Testrechner):
                              Unbenannt6.JPG
                              Ich weiß mir keinen Rat.

                              Besten Dank für's Mitdenken.

                              Kommentar


                                Ich vermute die DNS Auflösung funktioniert auf deinem Produktivserver nicht (richtig). Erkann "mymqttbroker" nicht in eine IP Adresse übersetzen.
                                Ist das der Broker, der auf dem Testrechner läuft? Falls ja, dann mal mit der IP versuchen. Wie machst du denn die DNS Auflösung in deinem internen Netz.
                                Falls du keinen DNS Service hast und trotzdem den Namen statt der IP verwenden willst, dann musst du einen entsprechenden Eintrag in der /etc/hosts deines Produktivservers hinzufügen. Sowas wie

                                Code:
                                <IP deines Brokers>   mymqttbroker

                                Kommentar

                                Lädt...
                                X