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

    Wildcards an E2 sind nur # oder + (siehe Hilfe)
    An E2 müsstest du zigbee2mqtt/# eintragen
    und an E6 FB2
    Dann sollte an A6 auch der Payload auftauchen, der jetzt an A2 steht. Diesen kannst du dann auf den JSON Extractor geben.

    Warum hast du 1, 0, 1, 2, 3 an den Eingängen E6-E10 angelegt?

    Kommentar


      Ich dachte wegen der Fehlermeldung zum Testen.

      Kommentar


        Danke für die Hilfe, jetzt geht es, ja lesen müsste man halt können..

        Kommentar


          Ich werde noch mal schauen, ob ich den Fehler nachstellen kann, denn selbst bei deiner Konfiguration sollte da kein Fehler kommen.

          Kommentar


            Hallo Andre,
            wenn ich am JSON Extractor {"battery":100,"voltage":3025,"contact":false,"lin kquality":160} an E1 anlege, an E2 = contact dann erscheint am Ausgang A2 nichts, erwartet hätte ich den String false.
            Wenn {"battery":100,"voltage":3025,"contact":true,"link quality":128} ankommt so wird der Ausgang A2 = 1
            Am Ausgang A1 erscheint in beiden Fällen -1
            Kannst du mir bitte weiterhelfen.
            VG
            Hartmut

            Kommentar


              Die Erklärung ist einfach, denn true und false sind in diesem Fall keine Strings sondern boolsche Werte in PHP. Wenn man diese ausgibt wie es bei EDOMI gemacht wird, dann ist false quasi leer und true ist 1. Du kannst also einfach einen Vergleicher an A2 hängen: Wenn 1 dann 1 sonst 0. Alternativ kannst du auch die Strings true bzw. false draus machen. Warum genau der Status -1 ist, weiß ich gerade auch nicht, schaue ich mir noch mal an und werde den Status auch in der Hilfe noch mal genauer dokumentieren. Funktional stimmt aber die Ausgabe des LBS an A2.

              Kommentar


                Da noch ein kleiner Fehler bei der Ausgabe von A1 enthalten war, gibt es nun eine neue Version 0.2, welche nun auch als neues Feature die boolschen Werte true und false automatisch in String umwandelt.

                Kommentar


                  Danke, funktioniert wie gewünscht.

                  Kommentar


                    Aktuell versuche ich an Daten aus der "AEG-Cloud", für unsere Waschmaschine, zu kommen.
                    Eine Messung mit Wireshark hat ergeben, dass die Waschmaschine direkt nach dem Einschalten auf Port 8883 zu einem Host im Internet kommuniziert.
                    Dies sollte MQTT mit TLS sein und somit bin ich hier gelandet.
                    Leider nutzt der Anbieter auf der Server-Seite ein selbst signiertes Zertifikat und publiziert auch nicht die CA-Kette in dem Zertifikat, sodass aktuell scheinbar die Verbindung schon aufgrund von TLS-Fehlern nicht aufgebaut werden kann.
                    In der Dokumentation des Mosquitto-Client ist beschrieben, dass man das Verhalten bzgl. der Zertifikate bei der Nutzung von TLS beinflussen kann, dies bekomme ich aber leider nicht hin.

                    Im LBS 19001054 auf meinem EDOMI-System habe ich den Abschnitt // initialize Mosquitto-PHP wie folgt abgeändert:

                    PHP-Code:
                                            // initialize Mosquitto-PHP
                                            
                    $client = new Mosquitto\Client('EDOMI MQTT Subscribe Client (' $id ')');
                                            if (
                    $tls)
                                                
                    $client->setTlsCertificates($caPath);
                                            
                    $client->setCredentials($user$password);
                                            
                    $client->setTlsInsecure(TRUE);
                                            
                    $client->setTlsOptions(SSL_VERIFY_NONENULLNULL);
                                            
                    $client->connect($server$port);
                                            
                    $client->onConnect('connect');
                                            
                    $client->onMessage('message');
                                            
                    $client->loop(100);
                                            
                    $client->loop(100);
                                            
                    $client->loop(100);
                                            break; 
                    In der Dokumentation des Mosquitto-Client ist beschrieben, dass bei setTlsOptions die Option "Mosquitto\\Client::SSL_VERIFY_NONE" genutzt werden kann, um die Überprüfung des Zertifikates zu deaktivieren.
                    Wenn ich dies genauso definiere oder auch nur "SSL_VERIFY_NONE" angebe, tauchte im Log diese Meldung auf:

                    Code:
                    Exception caught: Mosquitto\Client::setTlsOptions() expects parameter 1 to be long, string given (3773)
                    Da es eine Konstante ist, müsste man es doch ohne Anführungszeichen angeben, oder?
                    Ohne Anführungszeichen tauch das dann aber im Fehler-Log auf:

                    Code:
                    Use of undefined constant SSL_VERIFY_NONE - assumed 'SSL_VERIFY_NONE'

                    Die Verbindung wird dann vermutl. weiterhin aufgrund des Zertifikatsfehlers nicht aufgebaut:

                    Code:
                    Exception caught: The connection was refused. (3773)
                    Könnte mir da jemand Unterstützung geben?
                    Danke vorab!

                    Kommentar


                      Da es keine globale sondern eine Konstante im Klassenkontext ist, sollte es so funktionieren:

                      PHP-Code:
                      $client->setTlsOptions(Mosquitto\Client::SSL_VERIFY_NONE); 

                      Ich verwende dies so beim Worx-Landroid LBS. Worx macht es übrigens so, dass Username/Password nur für eine HTTPS API verwendet werden. Darüber muss man dann ein Client Zertifikat abholen, welches man zur MQTT Authentifizierung verwendet. Wenn dies bei AEG auch so ist, dann wird es ohne Kenntnis der API zum Download des Zertifikats schwierig.

                      Kommentar


                        Danke für den Tip, eine Beschreibung für eine API habe ich leider bisher nicht gefunden.
                        Ich muss noch die Kommunikation vom Smartphone mit der App "My AEG Care" in Richtung der AEG-Clound aufzeichnen, da wird man dann ja vielleicht so etwas beobachten können...

                        Kommentar


                          Hi,

                          wollte heute mal anfangen mich in Mqtt und Node-red etc. einzuarbeiten. Mosquitto und Node-red laufen auch bereits.

                          Jetzt wollte ich anfangen die Bausteine in Edomi zu testen, leider schmiert mir Edomi bei der Projektaktivierung ab mit Fatalerror und LBS19001054.

                          Ich hab aber keine Ahnung was an dem Baustein falsch konfiguriert sein sollte. IP ist richtig, User und PW stimmen und Topic /Test gibt es auch und ich kann darauf Payloads senden.

                          Anbei ein paar Screenshots. Vielleicht kann mir jemand helfen wo mein Fehler ist. Ist alles neu und ich fang gerade erst an mit Mqtt.

                          Am Debug in Node-red kann man auch sehen, dass die Verbindung steht die Payloads ankommen.

                          Danke schonmal

                          Angehängte Dateien

                          Kommentar


                            Mal in die Hilfe geschaut?
                            As this LBS needs some external libraries, it is necessary to run an installation script, which comes with this LBS: (install.sh in the attached ZIP File)


                            yum -y install php-process git gcc make mysql-devel
                            cd /tmp
                            git clone https://github.com/jonofe/lib_mysqludf_sys
                            cd lib_mysqludf_sys/
                            ./install.sh
                            cd /tmp
                            rm -rf lib_mysqludf_sys/
                            git clone https://github.com/jonofe/Mosquitto-PHP
                            cd Mosquitto-PHP
                            cp home_oojah_mqtt.repo /etc/yum.repos.d/
                            yum -y install libmosquitto1 libmosquitto-devel mosquitto-clients
                            phpize
                            ./configure --with-mosquitto=/usr/lib64
                            make
                            make install
                            cd /tmp
                            rm -rf Mosquitto-PHP
                            echo "extension=mosquitto.so" > /etc/php.d/mosquitto.ini
                            Ich denke da fehlt etwas bei Dir.

                            Kommentar


                              Hi Micha,

                              dickes Merci. Ich war gestern zu Später Stunde echt komplett blind.

                              Ich hab das darunter einfach nimmer gelesen sondern nur die Erklärung vom LBS

                              Sorry Jungs und danke!

                              Kommentar


                                Hallo,

                                Ich wollte gerne mein Robonect von meinem Gardena Robbi auch über MQTT einbinden. Den Worx LBS von dir habe ich schon Erfolgreich am laufen. Muss ich für die anderen MQTT Bausteine Mosquitto nochmal installieren bzw. was ändern oder reicht die Installation die ich für den Worx Baustein gemacht habe? Ist schon ein MQTT Benutzer und Passwort in der alten Installation mit drin?

                                Gruß Michael

                                Kommentar

                                Lädt...
                                X