Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues MQTT Plugin

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

    Bisher ist da noch gar nichts rumgekommen. Ich habe einige Punkte für das MQTT Plugin. Ich wollte das mit der Anpassung des Plugins für MQTT 5.0 machen. Allerdings zieht sich das Release des v5.0 kompatiblen paho-mqtt Packages.
    Viele Grüße
    Martin

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

    Kommentar


      Zitat von henfri Beitrag anzeigen
      Ich will gerade eine SonOff Steckdose per MQTT einbinden
      Sie braucht statt 1 und 0 per MQTT ON und OFF
      Hallo,
      ich habe auch diverse SONOFF eingebunden und nutze die Tasmota FW und MQTT. Ich mach das ohne Hilfitems so:
      Code:
      sonoff:
          sonoff_b1:
              type: str
              mqtt_topic_in: SONOFF_B1/tele/LWT
              telegram_message: 'sonoff_b1: [VALUE]!'
              switch:
                  type: bool
                  mqtt_topic_out: SONOFF_B1/cmnd/POWER
              switch_num:
                  name: 0-off, 1-on, 2-toggle
                  type: num
                  mqtt_topic_out: SONOFF_B1/cmnd/POWER
                  uzsu:
                      type: dict
                      uzsu_item: ..
                      cache: yes
                      trigger:
                          type: bool
                          on_update: "... = value if (sh....uzsu.planned()['value'] != value) and (sh....uzsu.activate() == True) else None"
      
              power:
                  type: str
                  mqtt_topic_in: SONOFF_B1/stat/POWER
                  cache: yes
                  on_update: sonoff.sonoff_b1.switch = value == "ON"
              sensor:
                  type: dict
                  mqtt_topic_in: SONOFF_B1/tele/SENSOR
                  cache: yes
                  #{"time":"2018-08-18t16:51:02","ds18b20":{"temperature":26.1},"tempunit":"C"}
                  temp:
                      type: num
                      eval: sh...()['DS18B20']['Temperature']
                      eval_trigger: ..
                  unit:
                      type: str
                      eval: sh...()['TempUnit']
                      eval_trigger: ..
              status:
                  type: dict
                  mqtt_topic_in: SONOFF_B1/tele/STATE
                  cache: yes
                  #SONOFF_B1/tele/STATE = {"Time":"2019-08-05T21:25:48","Uptime":"3T01:20:20","Heap":16,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"POWER":"ON","Wifi":{"AP":1,"SSId":"WLAN-Access","BSSId":"CC:CE:1E:C4:EF:11","Channel":1,"RSSI":72,"LinkCount":2,"Downtime":"0T00:00:09"}}
                  loadave:
                      type: num
                      eval: sh...()['LoadAvg']
                      eval_trigger: ..
                  power:
                      type: str
                      eval: sh...()['POWER']
                      eval_trigger: ..
                      on_change:
                        - sonoff.sonoff_b1.switch = value == "ON"
                  ssid:
                      type: str
                      eval: sh...()['Wifi']['SSId']
                      eval_trigger: ..
                  valid:
                      type: bool
                      name: SONOFF sendet noch
                      eval: (value != '$$!!%%')
                      eval_trigger: ..
                      autotimer: 600 = $$!!%%
      Du musst glaube ich die englische FW nutzen, mit der deutschen geht es glaube ich nicht so.

      Michael

      Kommentar


        Hallo,
        folgendes in der Konsole von tasmota und die Steckdose nutzt 1 / 0 statt ON / OFF.
        Dann kannst Du das Hilfsitem sparen. :-)

        Code:
        StateText1 0
        StateText2 1
        siehe
        HTML-Code:
        https://github.com/arendst/Tasmota/wiki/Commands#how-to-use-commands
        Gruß
        kla.b
        Zuletzt geändert von klab; 18.11.2019, 13:28.

        Kommentar


          Hallo,

          @sisamiwe
          Das kommt davon, wenn man die Dokumentation liest. Da steht On und Off. Dabei kann sie auch 1 und 0
          klab und zwar auch ohne die zwei Kommandos!
          Danke für den Hinweis.

          Dennoch bleibe ich dabei, dass mein Vorschlag sinnvoll ist...

          Zitat von Msinn Beitrag anzeigen
          Bisher ist da noch gar nichts rumgekommen. Ich habe einige Punkte für das MQTT Plugin. Ich wollte das mit der Anpassung des Plugins für MQTT 5.0 machen. Allerdings zieht sich das Release des v5.0 kompatiblen paho-mqtt Packages.
          und doch ganz unabhängig von MQTT 5.0...

          Gruß,
          Hendrik

          Kommentar


            Klar ist das unabhängig vom mqtt 5.0. Ich habe nur keine Lust (und Zeit) das Plugin 2 mal anzupacken und umzubauen.
            Viele Grüße
            Martin

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

            Kommentar


              Hallo,

              aber für das, was ich vorgeschlagen habe musst du doch gar nix umbauen. Ich habe doch sogar schon den entsprechenden Code gepostet - oder übersehe ich was?

              Gruß,
              Hendrik

              Kommentar


                Für das was Du hier ansprichst, muss nicht viel geändert werden. Die Liste dessen was für das MQTT Plugin ansteht ist aber in Gänze ziemlich lang und wie ich bereits schrieb, habe ich weder Lust noch Zeit das MQTT Plugin mehrfach anzufassen.

                Die MQTT 5 fähige Version des paho-mqtt Packages war eigentlich schon vor rund einem halben Jahr erwartet worden. Bevor das nicht released ist, fange ich nicht mit dem Umbau an.

                Der Umbau sieht vor, dass eigentliche MQTT Protokoll in den Core zu verlagern, so dass Plugins es nutzen können. Dann kann man entweder ein generisches MQTT Plugin nutzen (welches die Funktionalität des Bisherigen Plugins bereit stellt) oder ein Plugin schreiben, welches direkt auf das IoT Device zugeschnitten ist und MQTT einfach zur Kommunikation nutzen.
                Viele Grüße
                Martin

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

                Kommentar


                  Hallo,

                  dann machen wir lieber hier weiter:

                  Zitat von Msinn Beitrag anzeigen
                  Was ist das mqtt2 Plugin? Ich kenne nur mqtt und mqtt1.
                  Das Plugin meldet sich so:
                  Code:
                  2020-04-18 18:13:48 DEBUG Main PluginWrapper __init__: Section mqtt, classname Mqtt2, classpath plugins.mqtt
                  2020-04-18 18:13:48 DEBUG Main Plugin 'Mqtt2': args = '{'plugin_name': "'Mqtt'"}'
                  2020-04-18 18:13:48 INFO Main Module http: Registering webinterface 'mqtt' of plugin 'mqtt' from pluginclass 'Mqtt2' instance ''
                  2020-04-18 18:13:48 INFO Main self._applications['mqtt'] = {'Mount': '/mqtt', 'Pluginclass': 'Mqtt2', 'Webifname': 'mqtt', 'Pluginname': 'mqtt', 'Instance': '', 'Conf': {'/': {'tools.staticdir.root': '/usr/local/smarthome/plugins/mqtt/webif', 'tools.auth_basic.on': False, 'tools.auth_basic.realm': 'shng_http_webif', 'tools.auth_basic.checkpassword': <bound method Http.validate_password of <modules.http.Http object at 0x7f8d25cb6470>>}, '/static': {'tools.staticdir.on': True, 'tools.staticdir.dir': 'static'}, '/gstatic': {'tools.staticdir.on': True, 'tools.staticdir.dir': '/usr/local/smarthome/modules/http/webif/gstatic'}}, 'Description': 'Webinterface mqtt of plugin mqtt'}
                  2020-04-18 18:13:48 DEBUG Main Plugins: Loaded plugin 'mqtt' (class 'Mqtt2') v2.0.0: MQTT Plugin, welches das MQTT Module von SmartHomeNG zur Kommunikation nutzt.
                  2020-04-18 20:13:54 ERROR Haustechnik.Hintertuer.Schloss.Action_out Item Haustechnik.Hintertuer.Schloss.Action_out: problem running <bound method Mqtt2.update_item of <plugins.mqtt.Mqtt2 object at 0x7f8d00088dd8>>: 'Mqtt2' object has no attribute 'alive'

                  Das Modul habe ich so aber nicht genannt
                  Code:
                  mqtt:
                    module_name: mqtt
                    broker_host: 192.168.177.3
                    broker_monitoring: true
                  Und das plugin auch nicht
                  Code:
                  mqtt:
                    plugin_name: Mqtt
                  Ich gehe mal davon aus, Du meinst mqtt.
                  Bist Du Dir sicher, dass Deine Installation eine saubere v1.7.x ist?
                  Ja.

                  Der Fehler
                  Code:
                  File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 214, in update_item
                  if self.alive and caller != self.get_shortname():
                  kann bei normalem Betrieb nicht auftreten, da die run-Methode des Plugins
                  Code:
                  def run(self):
                  """
                  Run method for the plugin
                  """
                  self.logger.debug("Run method called")
                  
                  self.alive = True
                  
                  # start subscription to all topics
                  self.start_subscriptions()
                  den Wert alive initialisiert.
                  Ja, das habe ich auch gesehen.

                  Versuchst Du von irgendwo her ein Update auf das Item zu machen, bevor die Initialisierung von SmartHomeNG abgeschlossen ist?
                  Ich wüsste nicht wie. Das kann höchstens intern durch Items, die getriggert werden passieren. Bewusst/manuell mache ich das nicht.

                  Aber wäre es nicht sinnvoll in init() self.alive auf False zu setzen?

                  Gruß,
                  Hendrik



                  Kommentar


                    Das könnte man andenken. Du kannst Das bei Dir ja mal machen. Ich würde das, falls es bei Dir hilft dann allerdings genereller angehen und für alle Plugins lösen (entweder in der SmartPlugin Klasse oder in lib.plugin)
                    Viele Grüße
                    Martin

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

                    Kommentar


                      Hallo,

                      ich habe das ausprobiert.
                      Bisher sehe ich einen positiven (kein Fehler mehr) aber keine negativen Effekte.

                      Gruß,
                      Hendrik

                      Kommentar


                        Zitat von Msinn Beitrag anzeigen
                        Was ist das mqtt2 Plugin? Ich kenne nur mqtt und mqtt1.
                        ich hab gestern auf 1.7.1 aktualisiert und hatte das Problem das mqtt nicht startete.
                        Mein erster Fehler war, das aufgrund der Implementierung von mqtt in den Core ich dachte es liefe jetzt ohne plugin. Weit gefehlt, die Einsicht kam über Nacht.
                        Dann hatte ich eine Fehlermeldung bzgl classname bei mqtt und milight. Milight musste nur Großgeschrieben werden, beim mqtt- plugin steht jedoch in der pugin.yaml der
                        "classname: Mqtt2"

                        in der etc/plugin.yaml steht jetzt

                        mqtt:
                        class_name: Mqtt2
                        class_path: plugins.mqtt
                        #host: '127.0.0.1'
                        und es läuft .......

                        Kommentar


                          Wenn Du den Hinweis im Thread zum Release und den verlinkten Blog Artikel zu MQTT gelesen hättest, hättest Du Dir die Nacht ersparen können.

                          Zum Zitat: Ja es gibt kein Plugin namens mqtt2 - oder jast Du unter plugins ein Verzeichnis dieses Namnes gefunden?

                          Btw.: Die Konfiguration über class_path und class_name ist veraltet. Du kannst einfach plugin_name nehmen. Für MQTT:

                          Code:
                          mqtt:
                              plugin_name: mqtt
                          Dann musst Du Dich nicht um den Namen der Klasse und die Groß-/Kleinschreibung des Klassennamens kümmern. Die Admin GUI verwendet auch plugin_name zur Konfiguration.
                          Zuletzt geändert von Msinn; 24.04.2020, 23:02.
                          Viele Grüße
                          Martin

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

                          Kommentar


                            Zitat von henfri Beitrag anzeigen
                            Q: Versuchst Du von irgendwo her ein Update auf das Item zu machen, bevor die Initialisierung von SmartHomeNG abgeschlossen ist?
                            A: Ich wüsste nicht wie. Das kann höchstens intern durch Items, die getriggert werden passieren. Bewusst/manuell mache ich das nicht.
                            Meine Beobachtung: Ich habe das Verhalten auch bei mir gesehen. Allerdings nur für Items, die über Eval von anderen Items getriggert werden.
                            Ein sehr spezieller Fall, da dies im späteren Verlauf (wenn die Init-Phase abgeschlossen wurde) nicht mehr gesehen habe.

                            Stört mich persönlich nicht, könnte jedoch für andere User verwirrend sein.
                            Msinn : Vielen Dank für die Updates auf 1.7

                            Kommentar


                              ich hoffe ihr nehmt mir die Frage nicht übel, aber wie gehe ich mit dem neuen MQTT im core um?
                              - warum gibt es weiterhin den /plugin/mqtt Ordner?
                              - muss ich wenn ich zigbee2mqtt laufen habe noch etwas anderes konfigurieren?
                              Problem: Die Items werden nicht geschrieben/aktualisiert, weder das hilfs_item mit der kompletten payload noch die 2 anderen.

                              Items hätte ich wie folgt konfiguriert:

                              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]wsd1_temp:[/INDENT][INDENT=2]type: str[/INDENT][INDENT]wsd1_feucht:[/INDENT][INDENT=2]type: str[/INDENT]
                              MQTT config (module ist aktiviert, plugins mqtt und mqtt1 sind NICHT aktiviert):
                              2020-05-06 22_08_11-Shngadmin.png

                              Verbindung zum MQTT broker steht:
                              Code:
                              [smarthome@SmartHomeNG ~]$ sudo systemctl status mosquitto.service
                              ● mosquitto.service - Mosquitto MQTT v3.1/v3.1.1 Broker
                              Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
                              Active: active (running) since Wed 2020-05-06 22:23:33 CEST; 1min 55s ago
                              Docs: man:mosquitto.conf(5)
                              man:mosquitto(8)
                              Main PID: 603 (mosquitto)
                              Tasks: 1 (limit: 4915)
                              Memory: 1.3M
                              CGroup: /system.slice/mosquitto.service
                              └─603 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
                              
                              Mai 06 22:23:32 SmartHomeNG systemd[1]: Starting Mosquitto MQTT v3.1/v3.1.1 Broker...
                              Mai 06 22:23:33 SmartHomeNG systemd[1]: Started Mosquitto MQTT v3.1/v3.1.1 Broker.
                              Mai 06 22:23:38 SmartHomeNG mosquitto[603]: New connection from 127.0.0.1 on port 1883.
                              Mai 06 22:23:38 SmartHomeNG mosquitto[603]: New client connected from 127.0.0.1 as SmartHomeNG.MQTT-module (c1, k60).
                              und publications wären vorhanden:
                              Code:
                              [smarthome@SmartHomeNG ~]$ sudo systemctl status zigbee2mqtt.service
                              
                              
                              ● zigbee2mqtt.service - zigbee2mqtt
                              Loaded: loaded (/etc/systemd/system/zigbee2mqtt.service; disabled; vendor preset: enabled)
                              Active: active (running) since Wed 2020-05-06 22:01:19 CEST; 30s ago
                              Main PID: 12462 (npm)
                              Tasks: 23 (limit: 4915)
                              Memory: 41.1M
                              CGroup: /system.slice/zigbee2mqtt.service
                              ├─12462 npm
                              ├─12473 sh -c node index.js
                              └─12474 node index.js
                              
                              Mai 06 22:01:23 SmartHomeNG npm[12462]: zigbee2mqtt:info 2020-05-06 22:01:23: 0x00158d0002f2f19d (0x00158d0002f2f19d): WSDCGQ11LM - Xiaomi Aqara temp
                              Mai 06 22:01:23 SmartHomeNG npm[12462]: zigbee2mqtt:warn 2020-05-06 22:01:23: `permit_join` set to `true` in configuration.yaml.
                              Mai 06 22:01:23 SmartHomeNG npm[12462]: zigbee2mqtt:warn 2020-05-06 22:01:23: Allowing new devices to join.
                              Mai 06 22:01:23 SmartHomeNG npm[12462]: zigbee2mqtt:warn 2020-05-06 22:01:23: Set `permit_join` to `false` once you joined all devices.
                              Mai 06 22:01:23 SmartHomeNG npm[12462]: zigbee2mqtt:info 2020-05-06 22:01:23: Zigbee: allowing new devices to join.
                              Mai 06 22:01:23 SmartHomeNG npm[12462]: zigbee2mqtt:info 2020-05-06 22:01:23: Connecting to MQTT server at mqtt://localhost
                              Mai 06 22:01:23 SmartHomeNG npm[12462]: zigbee2mqtt:info 2020-05-06 22:01:23: Connected to MQTT server
                              Mai 06 22:01:23 SmartHomeNG npm[12462]: zigbee2mqtt:info 2020-05-06 22:01:23: MQTT publish: topic 'zigbee2mqtt/bridge/state', payload 'online'
                              Mai 06 22:01:23 SmartHomeNG npm[12462]: zigbee2mqtt:info 2020-05-06 22:01:23: MQTT publish: topic 'zigbee2mqtt/0x00158d0002f2f19d', payload '{"batter
                              Mai 06 22:01:24 SmartHomeNG npm[12462]: zigbee2mqtt:info 2020-05-06 22:01:24: MQTT publish: topic 'zigbee2mqtt/bridge/config', payload '{"version":"1
                              Zuletzt geändert von jonsson; 06.05.2020, 21:27.

                              Kommentar


                                Zitat von jonsson Beitrag anzeigen
                                ich hoffe ihr nehmt mir die Frage nicht übel, aber wie gehe ich mit dem neuen MQTT im core um?
                                Den Absatz
                                Zitat von Msinn Beitrag anzeigen
                                Was ist beim Update zu beachten?
                                Die Unterstützung des MQTT Protokolls ist in den Core umgezogen. Dadurch kann das Protokoll auch aus Logiken und mehreren Plugins genutzt werden. Dadurch ändert sich die Konfiguration. Ausführliche Informationen zu den Änderungen und zur Konfiguration finden sich auf www.smarthomeNG.de
                                im Thread zu Release hast Du nicht gelesen, oder?
                                Viele Grüße
                                Martin

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

                                Kommentar

                                Lädt...
                                X