Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues MQTT Plugin

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

  • knxms
    antwortet
    Problem mit: MOSQUITTO und MQTT auf verschiedenen Rechnern

    Hallo!
    Laufen MQTT und MOSQUITTO auf demselben Rechner - funktioniert alles einwandfrei. Mosquitto-Log mit drei connections:
    1625485070: Config loaded from /etc/mosquitto/mosquitto.conf.
    1625485070: Opening ipv4 listen socket on port 1883.
    1625485070: Opening ipv6 listen socket on port 1883.
    1625485077: New connection from 127.0.0.1 on port 1883.
    1625485077: New client connected from 127.0.0.1 as HomeServer-on-OMV.MQTT-module (c1, k60).
    1625485078: New connection from 192.168.2.8 on port 1883.
    1625485078: New client connected from 192.168.2.8 as shellyplug-s-B5845A (c1, k60).
    1625485158: New connection from 192.168.2.9 on port 1883.
    1625485158: New client connected from 192.168.2.9 as DVES_A7452B (c1, k30, u'DVES_USER')
    ...
    Läuft MOSQUITTO auf einem anderen Rechner als MQTT (im selben lokalen Netzwerk), funktioniert die Kommunikation nur ganz kurz (mit MQTT). Auszug aus dem Mosquitto-Log:
    1625497675: Opening ipv4 listen socket on port 1883.
    1625497675: Opening ipv6 listen socket on port 1883.
    1625497676: New connection from 192.168.2.16 on port 1883.
    1625497676: New client connected from 192.168.2.16 as HomeServer-on-OMV.MQTT-module (c1, k60).
    1625497705: Socket error on client HomeServer-on-OMV.MQTT-module, disconnecting.
    1625497724: New connection from 192.168.2.16 on port 1883
    ...
    Hierauf folgen keine neuen Verbindungsaufbauten. Die zwei weiteren Clients (1x Shelly-Plug, 1x Tasmota) tauchen gar nicht auf.

    Das Log-Level in Smarthome habe ich bereits auf DEBUG (für MQTT) gesetzt; die Forumssuche habe ich auch schon benmüht: beides ohne Erfolg.

    Aus den Web-IFs (Shelly, Tasmota) lassen sich dann auch die Devices nicht mehr aufrufen. Die Links haben dann nur noch den Inhalt "http".

    Muss ich an der Konfig noch was drehen? Oder wo liegt das Problem.....

    -------------------------------------------------------------
    System-Info:
    2021-07-05 18:06:07 WARNING lib.smarthome.main -------------------- Init SmartHomeNG 1.8.1.master (84873f74) --------------------
    2021-07-05 18:06:07 WARNING lib.smarthome.main Running in Python interpreter 'v3.7.3 final', from directory /usr/local/smarthome
    2021-07-05 18:06:08 WARNING lib.smarthome.main - on Linux-4.19.0-17-amd64-x86_64-with-debian-10.10 (pid=5242)
    2021-07-05 18:06:08 WARNING lib.smarthome.main - Nutze Feiertage für Land 'DE', Provinz 'None', 1 benutzerdefinierte(r) Feiertag(e) definiert
    2021-07-05 18:06:12 WARNING lib.item.item Item System_Item.RAM_Auslastung: problem evaluating 'sh.System_Item.RAM.Used()/sh.System_Item.RAM.Total()*100.0': division by zero
    2021-07-05 18:06:12 WARNING lib.smarthome.main -------------------- SmartHomeNG initialization finished --------------------

    Einen Kommentar schreiben:


  • jaykay
    antwortet
    Irgendwie sieht das eingefügte immer bescheiden aus. Ich habe mal das smarthome & MQTT log zusammen kopiert und angehängt. Das Problem tritt zur Zeit immer Nachts um 2 Uhr auf. Dann gibt es ein connection timeout im Mosquitto log und nach dem reconnect von smarthome kommen die Werte nicht mehr an.

    Angehängte Dateien

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Kannst Du das Logging bei so konfigurieren, wie es seit einigen Versionen bei SmartHomeNG Standard ist und hier als [ CODE ] einfügen? So ist das ziemlich unleserlich.

    Dann könntest Du den Loglevel für modules.mqtt auf INFO anheben und anschließend auch den Loglevel für plugins.mqtt. Das Details-Log sollte Dir dann einige Infos mehr geben. (und damit vielleicht auch einen Hinweis, wieso der paho_client ein disconntect vom Broker bekommt.

    P.S.: Ich bin übrigens produktiv noch auf mosquitto v1.4.10, weil ich bei einem Upgrade des Brokers eine buggy Version erwischt hatte und nach dem Downgrade bisher keinen neuen Upgrade Versuch gemacht habe.


    Einen Kommentar schreiben:


  • jaykay
    antwortet
    Irgendwie habe ich jetzt das Problem das das Modul/Plugin nach eine gewissen Zeit die Verbindung verliert und dann die Items nicht mehr aktualisiert werden.
    Ich habe mal ein Debug log für MQTT angehängt. Parallel habe ich einen MQTT Explorer Fenster auf das sieht die Daten ankommen.
    Der reconnect scheint irgendwie nicht sauber zu funktionieren..


    1625097118: Saving in-memory database to /var/lib/mosquitto/mosquitto.db.
    1625097732: Client smarthome.MQTT-module has exceeded timeout, disconnecting.
    1625097732: Socket error on client smarthome.MQTT-module, disconnecting.
    1625097762: New connection from 127.0.0.1 on port 1883.
    1625097762: New client connected from 127.0.0.1 as smarthome.MQTT-module (c1, k60).



    2021-07-01 02:02:39 CEST INFO __init__ modules.mqtt.paho_client _callback_to_plugin: Using topic 'ems-esp/mixer_data_hc2', payload '{'type': 'hc', 'flowTemp': 26.1, 'flowSetTemp': 5, 'pumpStatus': 'off', 'valveStatus': -100}' (type dict) for callback to plugin 'mqtt-13' <bound method MqttPlugin._on_mqtt_message of <plugins.mqtt.Mqtt2 object at 0x7f0215501780>> -- (__init__.py:_callback_to_plugin:528)
    2021-07-01 02:02:39 CEST INFO __init__ modules.mqtt.paho_client Disconnection returned result '1' -- (__init__.py:_on_disconnect:731)
    2021-07-01 02:02:42 CEST INFO __init__ modules.mqtt.paho_client Connection returned result 'Connection Accepted.' (userdata=None) -- (__init__.py:_on_connect:705)
    2021-07-01 02:02:43 CEST INFO __init__ modules.mqtt.paho_client Connected to broker 'mosquitto version 1.5.7' at address 127.0.0.1:1883 -- (__init__.py:_log_brokerinfo:301)
    2021-07-01 08:00:00 CEST INFO __init__ plugins.uzsu.uzsu_Rolladen.DG.Bad.Links.Schaltuhr Update item: Rolladen.DG.Bad.Links.pos, item has been changed outside this plugin -- (__init__.py:update_item:216)

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von jaykay Beitrag anzeigen
    Mir war/ist nicht ganz klar was Du mit " ... alte Version des mqtt Plugins (die als 'deprecated' gekennzeichnet ist) ..
    Sorry für die Verwirrung. Die alte Version des Plugins (aus SmartHomeNG v1.6.x) war in SmartHomeNG als mqtt1 enthalten und als deprecated gekennzeichnet. Ich hatte nicht daran gedacht, dass mqtt1 in SmartHomeNG v1.8 retired wurde. Um das zu nutzen, müsstest Du das mqtt1 Plugin aus SmartHomeNG v1.7.2 nehmen. Das alte Plugin hatte den MQTT Stack im Plugin, so dass mehrere Broker konfiguriert werden konnten (einer je Instance). Das ist aber nicht notwendig, es sei denn Du musst mehrere Broker ansprechen.

    Es reicht, wenn Du das das MQTT Modul konfigurierst und das aktuelle mqtt Plugin nimmst und (wie bei Dir in v1.6) davon mehrere Instances konfigurierst.
    Zuletzt geändert von Msinn; 29.06.2021, 20:59.

    Einen Kommentar schreiben:


  • jaykay
    antwortet
    Habe ich wohl ungeschickt zu viele Informationen verwurschtelt. Sind zwei getrennte Topics...

    - Anzahl der Broker ist (jetzt) klar. Ich nutze einen externen Broker (eu.thethings.network) für LoraWAN. War schnell mit Multiinstanz eingerichtet und die Doku für die MQTT Bridge war vor 2-3 Jahren nicht so ergiebig. Habe eine Beispiel für die mosquitto.conf gefunden und muss es nur mal testen. --> geklärt


    - Mir war/ist nicht ganz klar was Du mit " ... alte Version des mqtt Plugins (die als 'deprecated' gekennzeichnet ist) ..." meinst.
    Ich nutze gerade die Version 1.8.2. Wenn ich das richtige verstehe oder die Fehlermeldung richtig deute nutzt das MQTT Plugin das neue MQTT Modul.
    Zumindest startet das Plugin ohne das aktive Modul nicht. Meine Config habe ich mal angehängt.

    Um die MQTT Topics IN/OUT mit einem Item zu verknüpfen braucht es eine eigenes Plugin (Tasmota, etc.) oder das MQTT plugin.
    Ich nutze zur Zeit nur das MQTT Plugin. Wenn das wegfallen würde (weil 'deprecated') müsste ich mr dafür was einfallen lassen.



    HTML-Code:
    SmartHomeNG Version:              1.8.2.master (0f462a1e)   in   /usr/local/smarthome           (heads/master)
    SmartHomeNG Plugins Version: 1.8.2.master (9afce4cd)   in   /usr/local/smarthome/plugins           (tags/v1.8.2)

    HTML-Code:
    %YAML 1.1
    ---
    # etc/module.yaml
    http:
         module_name: http
         starturl: admin
    
    admin:
         module_name: admin
    
    websocket:
         module_name: websocket
         # ip: 0.0.0.0
         # port: 2424
         # tls_port: 2425
         # use_tls: True
         # tls_cert: shng.cer
         # tls_key: shng.key
    
    mqtt:
         module_name: mqtt
         broker_monitoring: true
    plugin.yaml
    HTML-Code:
    ...
    mqtt_local:
        plugin_name: mqtt
        broker_monitoring: true
    ...
    HTML-Code:
    Mqtt:
        miflora:
          Schlafzimmer:
             type: dict
             mqtt_topic_in: 'miflora/Schlafzimmer'
             visu_acl: ro
             webservices_set:
                 - miflora
                 - knxweb
             webservices_data: full
             on_change:
                - .moisture = value['moisture']
                - .light = value['light']
                - .temperatur = value['temperature']
                - .battery = value['battery']
                - .conductivity = value['conductivity']
    
    
             moisture:
                 type: num
                 database@mysqldb: init
                 enforce_updates : true
    
             ....

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Nein wieso?

    Du bräuchtest nur mehrere Instanzen wenn Du mehrere Broker einsetzt, was nur in extrem umfangreichen Installationen (hunderte bis tausende von MQTT Devices, Verteilung über WAN Verbindungen, …) sinnvoll ist. Wozu willst Du denn mehrer Broker nutzen? Für die von Dir beschriebenen Komponenten brauchst Du erstmal nur einem Broker.

    Einen Kommentar schreiben:


  • jaykay
    antwortet
    Ich nutze das sehr häufig: zigbee2mqtt, vlx2mqtt, octoprint, Loran, EMS-ESP, Miflora, etc.
    Wenn ich das richtig verstehe, bräuchte man jetzt jeweils eigene Plugins die dann das MQTT Modul nutzen....
    Die Zentralisierung des MQTT Handlings kann ich verstehen. Es ist nur schade das das sehr generische und flexible MQTT Plugin entfallen soll.

    Einen Kommentar schreiben:


  • jaykay
    antwortet
    Danke für die schnelle Antwort, dann weiß ich wo ich jetzt suchen muss ;-)

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Das Modul ersetzt ja nicht das Plugin, sondern zentralisiert nur das MQTT Handling, damit mehrere Plugins (mqtt, shelly, tasmota) das eigentliche MQTT Protokoll nutzen können. Da MQTT Devices normalerweise nur mit einem MQTT Broker sprechen (können), ist das auch im MQTT Modul entsprechende implementiert. Normalerweise konfiguriert man bei Einsatz mehrerer Broker die Broker so, dass sie sich miteinander verbinden und bei Bedarf die MQTT Messages an den anderen Broker weiter geben.


    Wenn Du bisher mehrere Instanzen des mqtt Plugins konfiguriert hast und die Broker nicht so konfigurieren willst, dass sie sich miteinander unterhalten, kannst Du auch wie bisher die alte Version des mqtt Plugins (die als 'deprecated' gekennzeichnet ist) mit mehreren Instanzen nutzen, und auf den Einsatz des MMQTT Moduls verzichten. Das alte mqtt Plugin wird jedoch nicht mehr weiter entwickelt. Es wird dort also auch in Zukunft keine Unterstützung für die MQTT Protokoll Version 5 geben.

    Einen Kommentar schreiben:


  • jaykay
    antwortet
    Hallo,

    ich bin gerade dabei mein System von 1.6.1 auf die 1.8.1 umzubauen.
    Zur Zeit nutze ich zwei MQTT Broker. Einen lokalen und den von TTN für Loran.
    Beim MQTT plugin habe ich das mit verschiedenen Instanzen gemacht.

    mqtt_topic_in@ttn: '/...'
    mqtt_topic_in@local: '/...'

    Wie ist das beim MQTT Modul? Gibt es da noch eine Multiinstanz Möglichkeit?

    Im Quelltext des Moduls habe ich nur diesen. Hinweis gefunden:
    PHP-Code:

    # ONLY used for multiinstance handling of plugins?
    # # needed because self.set_attr_value() can only set but not add attributes
    # self.at_instance_name = self.get_instance_name()
    # if self.at_instance_name != '':
    # self.at_instance_name = '@' + self.at_instance_name 

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Hallo,

    ich suche nach einer Möglichkeit ein topic ohne payload zu publishen. (Das löste bei dem Device das publishen eines Statusmeldung aus)
    So wie ich den die Doku bzw Code verstehe, ist das nicht implemtiert. Ist das richtig?

    Danke für die Rückmeldung.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    leider nicht

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Ist das der richtige Thread?
    Natürlich nicht.

    Kannst Du es in den Tasmota Support Thread verschieben?
    DANKE

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Ist das der richtige Thread?

    Einen Kommentar schreiben:

Lädt...
X