Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit MQTT bei Upgrade von SmarthomeNG 1.6.1 auf 1.7.1

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

    Probleme mit MQTT bei Upgrade von SmarthomeNG 1.6.1 auf 1.7.1

    Hallo zusammen,

    ich habe von 1.6.1 auf 1.7.1 ein Upgrade gemacht. Bis dato kommunizierten zwei SHNG per WLAN mittels MQTT-Plugin problemlos miteinander.

    Konfiguration vorher:
    Smarthome 1 unter IP 192.168.99.21 (Mosquitto-Broker und MQTT-Client vom SmarthomeNG) mit Version 1.6.1
    Smarthome 2 unter IP 192.168.99.22 (MQTT-Client vom SmarthomeNG) mit Version 1.6.1
    Lief tadellos.

    aktuelle Konfiguration:
    Smarthome 1 unter IP 192.168.99.21 (Mosquitto-Broker und MQTT-Client vom SmarthomeNG) mit Version 1.7.1
    Smarthome 2 unter IP 192.168.99.22 (MQTT-Client vom SmarthomeNG) mit Version 1.6.1 / ist noch die alte
    Resultat: Der Broker läuft, der Client von der 192.168.99.22 schreibt die Werte in den Broker, aber beim Client mit der 192.168.99.21 kommen diese nicht an.

    Irgendwie läuft der Client nach dem Wechsel zur Version 1.7.1 nicht mehr.
    Folgendes steht im LOG:
    2020-05-23 15:01:31 WARNING __main__ -------------------- Init SmartHomeNG 1.7.1.master (cf2f7d85) --------------------
    2020-05-23 15:01:31 WARNING __main__ Running in Python interpreter 'v3.7.3 final' (pid=951) on linux platform
    2020-05-23 15:01:31 WARNING lib.shtime Nutze Feiertage für Land 'DE', Provinz 'None', State '', 1 benutzerdefinierte Feiertagsdefinition(en) definiert
    2020-05-23 15:01:32 WARNING lib.plugin Plugin 'backend' (section 'BackendServer') is deprecated. Consider to use a replacement instead
    2020-05-23 15:01:33 ERROR lib.plugin Plugin 'mqtt' class name 'Mqtt' defined in metadata, but not found in plugin code
    2020-05-23 15:01:33 ERROR lib.plugin Plugin 'mqtt' initialization failed, plugin not loaded
    2020-05-23 15:01:33 WARNING lib.item load_itemdefinitions(): For testing the joined item structs are saved to /usr/local/smarthome/etc/structs_joined.yaml
    Schalte ich den MQTT als Plugin aus (was man nun ja laut Anleitung auch gar nicht mehr benötigt, fehlen die ERROR-Einträge, aber es ändert sich sonst nichts.

    Folgende Konfiguration liegt hinter dem MQTT-Modul in der Konfiguration:
    Unbenannt.JPG

    Ich hatte auch am Anfang den broker_host auf 127.0.0.1 liegen,weil er ja ohnehin auf dem gleichen Rechner läuft. Das ändert nichts.

    Interessant ist, dass der MQTT-Client 192.168.99.22 des MQTT-Plugin im Webinterface folgendes zeigt:
    Unbenannt1.JPG

    Er erkennt 2 aktive Clients.

    Warum kommen die Daten vom Broker nicht zum Client, obwohl er auf dem gleichen Rechner läuft?
    Wie kann man das eingrenzen?

    Gruß Torsten
    Zuletzt geändert von Msinn; 23.05.2020, 21:31.

    #2
    Die Doku unter www.SmartHomeNG.de hast Du gelesen, wie unter SmartHomeNG Release v1.7.1 geschrieben?

    Kommentar


      #3
      Die Kommunikation kann nicht funktionieren, da das MQTT Plugin nicht geladen wird (wie in Deinem Log Auszug steht:

      Code:
      2020-05-23 15:01:33 ERROR lib.plugin Plugin 'mqtt' class name 'Mqtt' defined in metadata, but not found in plugin code
      2020-05-23 15:01:33 ERROR lib.plugin Plugin 'mqtt' initialization failed, plugin not loaded
      Zitat von tsb2001 Beitrag anzeigen
      Schalte ich den MQTT als Plugin aus (was man nun ja laut Anleitung auch gar nicht mehr benötigt
      Wo hast Du denn gelesen, dass man kein MQTT Plugin mehr braucht?????

      Wie Sieht denn Dein MQTT Abschnitt in etc/plugin.yaml aus?
      Viele Grüße
      Martin

      There is no cloud. It's only someone else's computer.

      Kommentar


        #4
        bmx Yep, seit heute morgen 11 Uhr nix mehr anderes gemacht. Bevor ich hier irgendjemanden nerve, suche ich erst mal selbst.
        Aber bisher ohne Ergebnis.

        Kommentar


          #5
          Zitat von Msinn Beitrag anzeigen
          Die Kommunikation kann nicht funktionieren, da das MQTT Plugin nicht geladen wird (wie in Deinem Log Auszug steht:

          Code:
          2020-05-23 15:01:33 ERROR lib.plugin Plugin 'mqtt' class name 'Mqtt' defined in metadata, but not found in plugin code
          2020-05-23 15:01:33 ERROR lib.plugin Plugin 'mqtt' initialization failed, plugin not loaded

          Wo hast Du denn gelesen, dass man kein MQTT Plugin mehr braucht?????

          Wie Sieht denn Dein MQTT Abschnitt in etc/plugin.yaml aus?
          Das interpretiere ich aus der Anleitung heraus; da steht bei mir folgendes:
          Unbenannt2.JPG
          Sorry, aber das suggeriert mit, dass das Plugin nicht mehr benötigt wird, sondern als ladbares Modul im Core zu finden ist...

          An der etc/plugin.yaml hat sich nichts geändert. Da steht immer noch (wie auch in der Version 1.6.1 lauffähig):
          Code:
          mqtt:
              host: 192.168.99.21
              class_path: plugins.mqtt
              class_name: Mqtt

          Kommentar


            #6
            Ja, das heisst, das das Protokoll selber als ladbares Modul implementiert ist um durch Plugins und Logiken genutzt zu werden. Das man keine Plugins mehr braucht steht da nicht.

            Deine Konfig kann nicht funktionieren. Benutze doch einfach die aktuelle Möglichkeit Plugins zu konfigurieren. Dann musst Du nicht Wissen wie die Python Klasse heisst:

            Code:
            mqtt:
                plugin_name: mqtt
            Die host Angabe macht beim Plugin keinen Sinn mehr, da die Konfiguration des MQTT Stacks im Modul (etc/module.yaml) erfolgt.
            Viele Grüße
            Martin

            There is no cloud. It's only someone else's computer.

            Kommentar


              #7
              Genial; es funktioniert.
              Das ist halt seit Jahren gewachsen; und da wurde das irgendwann mal so aufgerufen und hat bis zum Update immer geklappt.

              Tausend Dank, du hast mich gerettet!

              Schönes Wochenende!

              Gruß Torsten

              PS: Vielleicht sollte man die Anleitung dahingehend ein wenig anders umschreiben, dass das Plugin immer noch Bestand hat und zwingend erforderlich ist. In allem was ich dazu gelesen habe, war ich mir sicher, das MQTT fester Bestandteil im Kern ist und sonst dazu gar nichts mehr (Plugin) benötigt wird. Ich finde das arg missverständlich.

              Kommentar


                #8
                Hallo Torsten,

                was ist an der Formulierung
                Konfiguration des MQTT Plugins

                Die Funktionalität, die das MQTT Plugin zur Verfügung stellte, gibt es weiterhin. Das MQTT Plugin ist entsprechend angepasst worden und nutzt zur Kommunikation jetzt die MQTT Unterstützung des Core. Das Plugin hat jedoch keine Parameter mehr, die konfiguriert werden müssten. Die Item Attribute (mqtt_topic, mqtt_topic_in, mqtt_topic_out, etc.) sind unverändert erhalten geblieben.
                missverständlich bzw. zu verbessern?
                Viele Grüße
                Martin

                There is no cloud. It's only someone else's computer.

                Kommentar


                  #9
                  Ich lese "... in SmarthomeNG wurde mit v1.7 die Unterstützung des MQTT Protokolls in den Core verlagert. Die Implementierung erfolgt als ladbares Modul. BISHER WAR DIE UNTERSTÜTZUNG ALS PLUGIN IMPLEMENTIERT."

                  Dann lese ich weiter: "Die Funktionalität, die das MQTT-Plugin zur Verfügung stellte, gibt es weiterhin." Das suggerierte mir, dass es nur noch die Funktionalität gibt, aber nicht mehr im Plugin; da steht ja "stellte" (Vergangenheit).

                  Danach kommt der Hinweis, dass das Plugin angepasst worden ist, was mich dann total verwirrt hat.

                  Ich, der sich (wie auch viele hier) nur mit rudimentären Linux- und Python-Kenntnissen herumschlägt, weil mein Hauptberuf nun mal Elektrotechnikermeister ist, tut sich mit solchen Dingen halt schwer. Für mich ist es eine private Bastelei aus Spaß an der Freude; ohne jegliche Unterstützung eines Freundes oder Bekannten, dessen Welt sich rein (oder überwiegend) um die EDV dreht. Überhaupt kenne ich gar keinen Linux/Python-Nerd, der mir eventuelle Hilfestellungen geben könnte. Da ist der ein- oder andere Microsoft-Guru dabei; aber die kapitulieren bei solchen Dingen sofort.
                  Also kann ich mich immer nur an Strohhalme klammern, die ich im Netz oder in mittlerweile erworbenen Büchern finde. Da gehen auch sporadisch schon einmal Tage bei drauf, in denen irgendwann der Erfolgsmoment eintritt, welcher wiederum eine Euphorie hervorruft und überhaupt die Motivation bereitstellt, das Thema weiter zu verfolgen.

                  Das geschieht aber meistens in minimalistischen Schritten. Beispiel: ich habe heute um 11 Uhr mit dem Update der beiden SmarthomeNGs von 1.6.1 auf 1.7.1 begonnen und bin grade mit beiden fertig geworden. Also 7 Stunden, um 2 Upgrades einzuspielen. Das ist das, wo jemand mit Erfahrung vermutlich nach einer halben Stunde wieder in den Garten gegangen wäre.

                  Daher danke ich dir nochmals extrem für die geleistete Hilfe und überhaupt für das von euch auf die Beine gestellte Projekt!

                  Auf die Lösung wäre ich heute selbst vermutlich nicht mehr gekommen. Für mich als dummer Elektriker hab mich halt an die zwei Strohalme mit dem "Bisher ... als Plugin" und "stellte" geklammert und damit war das für mich Vergangenheit mit der Aussage: Das Plugin wird nicht mehr gebraucht und kann weg.

                  Trotzdem war selbst das ja nicht das Problem...

                  Viele Grüße und nochmals Danke!

                  Torsten

                  Kommentar


                    #10
                    Genau um die Verwirrung aufzulösen gibt es einen bebilderten Blog Artikel, auf den bmxp hingewiesen hat. Auf diesen Artikel wird auch in den Release Threads zur v1.7 und v1.7.1 hier im Forum verlinkt. Siehe: https://www.smarthomeng.de/neuerunge...arthomeng-v1-7

                    Du hattest bmxp geantwortet, dass Du diesen Artikel gelesen hättest. Um den Artikel zu verbessern, wäre es nett wenn Du mir schildern könntest an welcher Stelle dieser Artikel verwirrend geschrieben ist.

                    Dein Kommentar klingt, als hättest Du nur den ersten Absatz des Blog Artikels gelesen. Das Zitat ist doch aus dem Artikel oder?
                    Viele Grüße
                    Martin

                    There is no cloud. It's only someone else's computer.

                    Kommentar


                      #11
                      Auslösend für mich war auf dieser Seite folgendes:
                      • MQTT-Protokoll ist in den Core verlagert
                      • Die Implementierung erfolgt als ladbares Modul
                      • Bisher war die Unterstützung als Plugin implementiert
                      • Plugins können das MQTT-Protokoll nutzen
                      Nach den letzten zwei Punkt war für mich klar; das Plugin braucht man nicht mehr. Zunächst dieses Wörtchen "bisher"; und dann auch noch die Aussage, das jedes Plugin nun MQTT nutzen kann. Wenn ich mich nicht extrem irre, war das bis dato ausgeschlossen, weil beliebige Plugins nicht unmittelbar auf das bisherige MQTT-Plugin zugreifen konnten (allerhöchstens über Items).


                      Dann kam für mich folgendes:
                      • Die Konfiguration wird entweder per grafischer Oberfläche oder in etc/module.yaml erfolgen
                      OK! Ich konfiguriere das nun in der grafischen Oberfläche, und gebe dem System damit sämtliche Informationen mit, die es braucht. Wenn es da schon alles weiß, dann ist die Plugin-Konfiguration hinfällig.

                      Ganz unten dann findet sich der Hinweis, dass es die Funktionalität vom Plugin weiter gibt. Was ist denn dann noch die Funktionalität? Für mich war das nur noch das Web-Interface; konfiguriert werden muss da nichts mehr, denn das ist alles im Core versteckt, aber gebraucht wird das offensichtlich nicht mehr; denn die Attribute finden sich im Item wieder.

                      Mein Vorschlag, damit es auch die dummen wie ich verstehen (ihr betrachtet das aus der Sicht des Entwicklers; und da sind diese Dinge eine Selbstverständlichkeit):

                      "In SmartHomeNG wurde mit v1.7 die Unterstützung des MQTT Protokolls in den Core verlagert und setzt sich nun aus zwei Komponenten zusammen:
                      • das ladbare Modul; implementiert im Core und damit nutzbar für Logiken und weitere Plugins
                      • das MQTT-Plugin (siehe unten).
                      Diese Änderung bringt neue Funktionalitäten mit sich:
                      ..."

                      Spätestens dann sollte jemandem wie mir auffallen, dass das eine ohne das andere nicht funktioniert.

                      Gruß Torsten


                      Kommentar


                        #12
                        Torsten, danke für Dein Feedback. Das weiter oben ist auch nicht bös gemeint aber gerade von alten Hasen stellen wir immer mal wieder fest, das die Doku nicht oder nur halb gelesen wird. Insofern dient meine Frage rein zur Abklärung, ob die geänderte Sachlage bekannt ist.
                        Viel Spaß weiterhin und einen etwas höheren Wirkungsgrad als heute ...

                        Kommentar


                          #13
                          Klar, habe ich auch nicht so aufgefasst.
                          Der Wirkungsgrad ist nieeee höher. Aber ich arbeite dran...

                          Kommentar


                            #14
                            Hallo Torsten,

                            danke für das Feedback. ist der Artikel https://www.smarthomeng.de/neuerunge...arthomeng-v1-7 aus Deiner Sicht jetzt verständlicher?
                            Viele Grüße
                            Martin

                            There is no cloud. It's only someone else's computer.

                            Kommentar


                              #15
                              Perfekt!
                              Der Hinweis im oberen Bereich, dass es ein neues MQTT-Plugin gibt, was die Protokollunterstützung vom Core nutzt und unten die MQTT-Konfig als Beispiel für das Plugin lässt für mich keine Fragen mehr offen!

                              So ist das plausibel!

                              Danke und viele Grüße!

                              Torsten

                              Kommentar

                              Lädt...
                              X