Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues MQTT Plugin

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

  • Msinn
    antwortet
    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?

    Einen Kommentar schreiben:


  • jonsson
    antwortet
    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.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    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.

    Einen Kommentar schreiben:


  • jonsson
    antwortet
    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

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    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?

    Einen Kommentar schreiben:


  • jonsson
    antwortet
    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.

    Einen Kommentar schreiben:


  • KHome
    antwortet
    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

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    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.

    Einen Kommentar schreiben:


  • element
    antwortet
    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 .......

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

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

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    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)

    Einen Kommentar schreiben:


  • henfri
    antwortet
    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



    Einen Kommentar schreiben:


  • Msinn
    antwortet
    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.

    Einen Kommentar schreiben:


  • henfri
    antwortet
    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

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Klar ist das unabhängig vom mqtt 5.0. Ich habe nur keine Lust (und Zeit) das Plugin 2 mal anzupacken und umzubauen.

    Einen Kommentar schreiben:

Lädt...
X