Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues MQTT Plugin

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

    an und für sich habe ich wirklich versucht alles zu lesen. Also, mqtt als modul aktivieren und parametrieren, ebenso mqtt als plugin aktivieren, hier aber keine Parametrierung mehr notwendig. Dann sollte es auch mit zigbee2mqtt funktionieren?
    Leider bekomme ich aktuell keine publications mehr, somit kann ich es gerade nicht testen

    Kommentar


      Zitat von jonsson Beitrag anzeigen
      an und für sich habe ich wirklich versucht alles zu lesen.
      Dann überraschen mich Deine Fragen
      Zitat von jonsson Beitrag anzeigen
      ... aber wie gehe ich mit dem neuen MQTT im core um?
      - warum gibt es weiterhin den /plugin/mqtt Ordner?
      Denn der Im Release Thread verlinkte Blog Artikel beschreibt das schon ziemlich ausführlich.

      Dann hättest Du das auch nicht so konfiguriert:

      Zitat von jonsson Beitrag anzeigen
      MQTT config (module ist aktiviert, plugins mqtt und mqtt1 sind NICHT aktiviert)
      ohne das mqtt Plugin ist niemand da, der auf irgendwelche Topics lauscht.

      Das mqtt1 Plugin ist das alte Plugin, welches nicht die mqtt Unterstützung im Core nutzt. Das wird mit SmartHomeNG v1.8 retired. Deshalb ist es auch (wie die Admin GUI anzeigt) als deprecated gekennzeichnet.


      Zu zigbee2mqtt kann ich nichts sagen. Die Software kenne ich nicht.
      Das klingt aber wie eine Umsetzung ZigBee zu MQTT und umgekehrt. Diese Software würde dann ja gar nicht direkt mit SmartHomeNG sprechen, sondern mit dem MQTT Broker den Du betreibst.
      Zuletzt geändert von Msinn; 07.05.2020, 14:46.
      Viele Grüße
      Martin

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

      Kommentar


        Msinn danke für die ausführliche Antwort. Ich habe ja dann nach deinem Input noch einmal gelesen und dann eben mitgenommen, dass modul und plugin zu verwenden sind - alles gut beschrieben!

        ja, zigbee2mqtt ist ein gateway für den CC2531 zigbee USB Dongle, die spricht den MQTT broker an, und aktuell habe ich nur 1 zigbee Gerät, das mir über diesen gateway MQTT publications generiert bzw. generieren sollte, da es momentan wo hakt.

        Kommentar


          Also der Reihe nach schauen,
          • Was zeigt Dir denn ein Tool MQTT.fx oder MQTT Explorer? Kommt die Info vom zigbee Device im Broker an und wird von ihm weiterverbreitet? Welche Payload hat die Message?
          • Was zeigt Dir das Web Interface des mqtt Plugins an (Broker Info: Anzahl Subscriptions, ...; mqtt Items: )
          • Was zeigt Dir die Admin GUI in den Item Details zu dem Item an bei dem Du (Änderungsinformationen: Letztes Update, Zeit seit dem letzten Update, Update durch, ...)
          • Ändert sich etwas wenn Du das Item statt vom Typ dict auf den Typ str änderst?
          Viele Grüße
          Martin

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

          Kommentar


            dict->str von {} auf {"battery":86,"voltage":2975,"temperature":28.77," humidity":30.36,"pressure":970.4,"linkquality":131 }
            subitems funktionieren so natürlich nicht mehr.
            sind die fehlenden Anführungszeichen der values das Problem?

            Kommentar


              Kannst Du mal testen ob es funktioniert (mit item als type dict) wenn Du Deine SmartHomeNG Installation umkonfigurierst: Das mqtt Plugin auskommentieren und das mqtt1 Plugin (das alte) vollständig konfigurieren (mit broker, etc.)?

              Das was da als String kommt sieht erstmal ok aus. Die values ohne Quotes sind halt numerisce values. Hätten sie Quotes wären es Strings. Das sollte nicht das Problem sein.
              Viele Grüße
              Martin

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

              Kommentar


                Mit mqtt1 funktioniert die Befüllung des dict items korrekt:
                2020-05-08 12_00_34-Shngadmin.png

                Was nicht funktioniert sind die subitems, dabei bin ich nach deiner Anleitung vom Blog vorgegangen:

                2020-05-08 12_01_08-Shngadmin.png

                Code:
                # zigbee.yaml
                test:[INDENT]hilfs_item:[/INDENT][INDENT=2]type: dict[/INDENT][INDENT=2]mqtt_topic_in: zigbee2mqtt/0x00158d0002f2f19d[/INDENT][INDENT=2]on_change:[/INDENT][INDENT=2]  - ..wsd1_temp = value['temperature'][/INDENT][INDENT=2]  - ..wsd1_feucht = value['humidity'][/INDENT][INDENT=2]  - ..wsd1_druck = value['pressure'][/INDENT][INDENT=2]  - ..wsd1_batterie = value['battery'][/INDENT][INDENT=2]  - ..wsd1_batteriespannung = value['voltage'][/INDENT][INDENT=2]  - ..wsd1_linkquality = value['linkquality'][/INDENT][INDENT=2]enforce_updates: 'true'[/INDENT][INDENT]wsd1_temp:[/INDENT][INDENT=2]type: str[/INDENT][INDENT=2]enforce_updates: 'true'[/INDENT][INDENT]wsd1_feucht:[/INDENT][INDENT=2]type: str[/INDENT][INDENT]wsd1_druck:[/INDENT][INDENT=2]type: str[/INDENT][INDENT]wsd1_batterie:[/INDENT][INDENT=2]type: str[/INDENT][INDENT]wsd1_batteriespannung:[/INDENT][INDENT=2]type: str[/INDENT][INDENT]wsd1_linkquality:[/INDENT][INDENT=2]type: str [/INDENT]















                Kommentar


                  Zu den Subitems: Aus einem Grund den ich im Moment noch nicht kenne, wird der Pseudowert "value" nicht so verarbeitet, dass man ihn als dict ansprechen kann.

                  Wenn Du das Item als normales Item ansprichst, also als sh.test.hilfs_item(), funktioniert das, also:

                  Code:
                  test:
                      hilfs_item:
                          type: dict
                          mqtt_topic_in: zigbee2mqtt/0x00158d0002f2f19d
                          on_change:
                            - ..wsd1_temp = sh.test.hilfs_item()['temperature']
                            - ..wsd1_feucht = sh.test.hilfs_item()['humidity']
                            - ..wsd1_druck = sh.test.hilfs_item()['pressure']
                            - ..wsd1_batterie = sh.test.hilfs_item()['battery']
                            - ..wsd1_batteriespannung = sh.test.hilfs_item()['voltage']
                            - ..wsd1_linkquality = sh.test.hilfs_item()['linkquality']
                  oder flexibler mit relativer Adressierung:
                  Code:
                  test:
                      hilfs_item:
                          type: dict
                          mqtt_topic_in: zigbee2mqtt/0x00158d0002f2f19d
                          on_change:
                            - ..wsd1_temp = sh..()['temperature']
                            - ..wsd1_feucht = sh..()['humidity']
                            - ..wsd1_druck = sh..()['pressure']
                            - ..wsd1_batterie = sh..()['battery']
                            - ..wsd1_batteriespannung = sh..()['voltage']
                            - ..wsd1_linkquality = sh..()['linkquality']

                  Oder Du nutzt den im Blog beschriebenen alternativen Weg:
                  Code:
                  # zigbee.yaml
                  test:
                      hilfs_item:
                          type: dict
                          mqtt_topic_in: zigbee2mqtt/0x00158d0002f2f19d
                  
                      wsd1_temp:
                          type: str
                          eval: str(sh...var_dict()['temperature'])
                          eval_trigger: ..var_dict
                  
                      wsd1_feucht:
                          type: str
                          eval: str(sh...var_dict()['humidity'])
                          eval_trigger: ..var_dict
                  
                      wsd1_druck:
                          type: str
                          eval: str(sh...var_dict()['pressure'])
                          eval_trigger: ..var_dict
                  
                      wsd1_batterie:
                          type: str
                          eval: str(sh...var_dict()['battery'])
                          eval_trigger: ..var_dict
                  
                      wsd1_batteriespannung:
                          type: str
                          eval: str(sh...var_dict()['voltage'])
                          eval_trigger: ..var_dict
                  
                      wsd1_linkquality:
                          type: str
                          eval: str(sh...var_dict()['linkquality'])
                          eval_trigger: ..var_dict
                  Warum das Befüllen eines Items vom Typ dict in der neuen Version (module mqtt) nicht funktioniert muss ich mir in Ruhe anschauen.
                  Zuletzt geändert von Msinn; 08.05.2020, 12:52.
                  Viele Grüße
                  Martin

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

                  Kommentar


                    Hi,

                    habe jetzt alle 4 Varianten durchprobiert, bei keiner funktioniert die Aktualisierung der subitems.

                    Kann es mit dem Zeichensatz zusammenhängen (Auszug aus Itembaum):
                    on_change test1.wsd1_temp = sh.test.hilfs_item()['temperature'] | test1.wsd1_feucht = sh.test.hilfs_item()['humidity'] | test1.wsd1_druck = sh.test.hilfs_item()['pressure'] | test1.wsd1_batterie = sh.test.hilfs_item()['battery'] | test1.wsd1_batteriespannung = sh.test.hilfs_item()['voltage'] | test1.wsd1_linkquality = sh.test.hilfs_item()['linkquality']

                    Kommentar


                      Nein, eigentlich nicht. Das wird nur durch das "escapen" der Anführungsstriche etwas seltsam dargestellt. Das ist aber nur ein Anzeige Thema.

                      Ich hatte gestern getestet, dass die Beschreibung von mir funktioniert. Ich habe dazu folgende Items eingerichtet (mit Variationen in der Zuweisung und zum Test den Wert von voltage als string im dict:
                      Code:
                      test:
                          dict2:
                              var_dict:
                                  type: dict
                                  value: "{'battery': 80, 'voltage': '2965', 'temperature': 25.39}"
                                  on_change:
                                      - test.dict2.var_bat = str(sh.test.dict2.var_dict()['battery'])
                                      - ..var_volt = str(sh..()['voltage'])
                                      - ..var_temp = str(value['temperature'])
                      
                              var_bat:
                                  type: num
                      
                              var_volt:
                                  type: str
                      
                              var_temp:
                                  type: str
                      
                              var_bat2:
                                  eval: str(sh...var_dict()['battery'])
                                  eval_trigger: ..var_dict
                                  type: str
                      
                              var_volt2:
                                  eval: sh.test.dict2.var_dict()['voltage']
                                  eval_trigger: test.dict2.var_dict
                                  type: str
                      
                              var_temp2:
                                  eval: sh.test.dict2.var_dict()['temperature']
                                  eval_trigger: test.dict2.var_dict
                                  type: num
                      Über value im Item var_dict wird ein initialer Wert gesetzt. Nach dem starten von SmartHomeNG passiert folgendes:
                      • Bei den Items, die über on_change befüllt werden, passiert erstmal nichts, da die Initialisierung kein Change im Sinne von on_change ist.
                      • Die Items, die über eval/eval_trigger gefüllt werden, werden sofort aktualisiert (Beachte bitte, dass die numerischen Werte explizit in einen String gewandelt werden. Dann funktioniert das auch über value.

                      Wenn Du jetzt in der Admin GUI den Wert von var_dict änderst (z.B. den Wert von battery auf 81 änderst), werden sofort var_bat, var_volt und var_temp aktualisiert.

                      (Bitte beim Ändern des Wertes darauf achten, anschließend außerhalb des Eingabefeldes zu klicken, damit die Eingabe abgeschlossen wird, RETURN drücken tut das nicht).

                      Vollziehe das bitte bei Dir nach. Ich kann beim befüllen der Subitems keinerlei Problem feststellen/nachvollziehen.
                      Viele Grüße
                      Martin

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

                      Kommentar


                        Ich habe inzwischen auch das Einlesen von json Payloads über das mqtt Modul und das neue Plugin nachgestellt. Ich kann auch nicht nachvollziehen, dass ein Problem gibt.

                        Ich habe folgendes Item vom Typ dict definiert:
                        Code:
                        test:
                            mqtt2:
                                test_dict_subscribe:
                                    name: Test input from the broker with json payload
                                    type: dict
                                    mqtt_topic_in: 'test_mqtt/dict_sub'
                        Dann habe ich folgendes MQTT Telegram mit Hilfe des Tools MQTT Explorer gesendet:
                        Capto_Capture 2020-05-10_10-29-55_AM.jpg

                        Anschließend sieht das Item in SmartHomeNG folgendermaßen aus:
                        Capto_Capture 2020-05-10_10-32-12_AM.jpg

                        Aus meiner Sicht funktioniert alles wie es soll.
                        Viele Grüße
                        Martin

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

                        Kommentar


                          Hallo Martin,

                          einen Fehler habe ich bereits gefunden (aus Post #143)

                          Code:
                              [B]hilfs_item:[/B]
                                  type: dict
                                  mqtt_topic_in: zigbee2mqtt/0x00158d0002f2f19d
                          
                              wsd1_temp:
                                  type: str
                                  eval: str(sh...[B]var_dict[/B]()['temperature'])
                                  eval_trigger: ..[B]var_dict[/B]
                          kann natürlich nicht funktionieren. dachte zuerst var_dict() wäre eine methode, aber das ist ja das item selbst.

                          Somit ist noch plugin mqtt1 vs. module mqtt dict einlesen offen, das sehe ich mir bei nächster Gelegenheit an.

                          Danke einstweilen!

                          Kommentar


                            noch einmal geprüft, jetzt geht es auch mit dem Modul!!

                            ich denke dass ich nur das Modul "mqtt" aktiv hatte, nicht aber auch das Plugin "mqtt"

                            Kommentar


                              Hallo,

                              kurze Frage zum parametrieren von bool_values.
                              Meine Shelly Geräte erwarten false und true .
                              Wie muss ich das eingeben:
                              ['false','true'] oder
                              'false','true'
                              funktioniert so nicht.

                              Gruß Danny
                              mqtt.png

                              Kommentar


                                Für true und false musst Du eingentlich nichts angeben. Das musst Du nur angeben, wenn Deine Devices z.B. 'On' und 'Off' oder 'Wahr' und 'Falsch'] als Strings senden/erwarten und Du die Werte in ein Item vom Typ Bool einlesen willst.

                                Ich habe für bool_values nichts eingegeben und meine Shelly Devices funktionieren mit dem Shelly Plugin anstandslos.
                                Viele Grüße
                                Martin

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

                                Kommentar

                                Lädt...
                                X