Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues MQTT Plugin

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

  • Msinn
    antwortet
    Was soll die ip Adresse 192.168.178.60 in der mosquitto config? Die hat da nichts verloren!

    Damit sagst Du dem Broker, er soll auf der ip Adresse lauschen. Da der Rchner auf dem der Broker läuft kein Netzwerk Interface mit der ip Adresse hat, kann er nicht starten.

    Einen Kommentar schreiben:


  • SMarcus
    antwortet
    Jein... Vielleicht erstmal kurz nochmal die Architektur um Missverständnisse zu vermeiden.

    192.168.178.44:
    - SmarthomeNG
    - Mosquitto MQTT Broker

    192.168.178.60:
    - Landroid Bridge (mit MQTT Interface)

    Dshalb hatte ich in der plugin.yaml zuerst 'host: localhost', dann Deinen Vorschlag umgesetzt statt local host die IP-Adresse (192.168.178.44) einzugeben. Dabei hat sein ein Tippfehler eingeschlichen (192.168.168.44), beide Rechner sind im gleichen Subnetz.

    Also kurz den Tippfehler korrigiert (Sorry für die Verwirrung!) - aber die Fehlermeldung bleibt der gleiche. Das wars also nicht, die Verwendung der IP-Adresse statt 'localhost' hat den Fehler nicht behoben.

    Bin mir nicht wirklich sicher ob es an SHNG liegt. Ich hab grad mal die Ausgabe von "sudo service mosquitto status" mit der SHNG Installationsanleitung in der Doku verglichen. Sieht ähnlich, aber doch etwas anders aus:
    Unbenannt.JPG

    'exited' vs. 'active' - und eine Zeile fehlt ganz? Hab ich evtl bei der Mosquitto Installation was falsch gemacht?

    Gruss
    Marcus

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Die Fehlermeldung wundert mich nicht im geringsten. Dein Mosquitto Broker ist auf IP Adresse 192.168.178.60 konfiguriert. Dem shNG Plugin hast Du aber "befohlen" einen Broker auf IP Adresse 192.168.168.44 zu kontaktieren. Da beide IP Adressen in unterschiedlichen Subnetzen liegen, müsste da schon ein Router dazwischen sein, sonst findet shNG (bzw. das betribessystem) keine Route zum Host.

    Einen Kommentar schreiben:


  • SMarcus
    antwortet
    Die Fehlermeldung ist geringfügig anders:
    Code:
    2018-09-21  22:49:37 INFO     plugins.mqtt      Connecting to broker '192.168.168.44:1883'. Starting mqtt client 'smarthome'
    2018-09-21  22:49:37 ERROR    lib.plugin        Plugin 'mqtt' from section 'mqtt' exception: 'LogRecord' object has no attribute 'message'
    Traceback (most recent call last):
      File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 419, in ConnectToBroker
        self._client.connect(self.broker_ip, self.broker_port, 60)
      File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 768, in connect
        return self.reconnect()
      File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 895, in reconnect
        sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
      File "/usr/lib/python3.5/socket.py", line 712, in create_connection
        raise err
      File "/usr/lib/python3.5/socket.py", line 703, in create_connection
        sock.connect(sa)
    [MARKIEREN]OSError: [Errno 113] Keine Route zum Zielrechner[/MARKIEREN]
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/plugin.py", line 129, in __init__
        plugin_thread = PluginWrapper(smarthome, plugin, classname, classpath, args, instance, self.meta, self._gtrans)
      File "/usr/local/smarthome/lib/plugin.py", line 567, in __init__
        exec("self.plugin.__init__(smarthome{0}{1})".format("," if len(arglist) else "", argstring))
      File "<string>", line 1, in <module>
      File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 168, in __init__
        self.ConnectToBroker()
      File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 421, in ConnectToBroker
        self.logger.error(self.get_loginstance()+'Connection error:', e)
      File "/usr/lib/python3.5/logging/__init__.py", line 1309, in error
        self._log(ERROR, msg, args, **kwargs)
      File "/usr/lib/python3.5/logging/__init__.py", line 1416, in _log
        self.handle(record)
      File "/usr/lib/python3.5/logging/__init__.py", line 1426, in handle
        self.callHandlers(record)
      File "/usr/lib/python3.5/logging/__init__.py", line 1488, in callHandlers
        hdlr.handle(record)
      File "/usr/lib/python3.5/logging/__init__.py", line 856, in handle
        self.emit(record)
      File "/usr/local/smarthome/bin/smarthome.py", line 132, in emit
        self._log.add([timestamp, record.threadName, record.levelname, record.message])
    AttributeError: 'LogRecord' object has no attribute 'message'
    Meine plugin.yaml:
    Code:
    mqtt:
        class_name: Mqtt
        class_path: plugins.mqtt
        host: 192.168.168.44
        # host: localhost or 127.0.0.1
        port: 1883
        qos: 0
        # last_will_topic: 'shng/$online'
        # last_will_payload: False
        # birth_topic: 'shng/$online'
        # birth_payload: True
    
        # user: None                 # username (or None)
        # password: None             # password (or None)
        # hashed_password: 1245a9633edf47b7091f37c4d294b5be5a9936c81 ...    
        # === The following parameters are not yet implemented:
        # publish_items: no          # NEW: publish using item-path
        # items_topic_prefix: 'shng' # NEW: prefix for publishing items     
        # acl: pub                   # NEW: access control (none, pub, sub, pubsub)
        # tls: None                  # use TLS version (v1 or None)
        # ca_certs: '/etc/...'       # path to the Certificate Authority certificate files
    die Mosquitto Config:
    Code:
    pid_file /var/run/mosquitto.pid
    log_dest file /var/log/mosquitto/mosquitto.log
    # include_dir /etc/mosquitto/conf.d
    
    listener 1883 # 192.168.178.60
    persistence true
    persistence_location /var/lib/mosquitto/
    persistence_file mosquitto.db
    # remote_username <your user name>
    # remote_password <your password>
    log_dest syslog
    log_dest stdout
    log_dest topic
    log_type error
    log_type warning
    log_type notice
    log_type information
    connection_messages true
    log_timestamp true
    allow_anonymous true
    password_file /etc/mosquitto/pwfile
    und vielleicht auch mal der MQTT Broker Service Status:
    Code:
    smarthome@smarthome:~$ sudo systemctl status mosquitto.service
    ● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
       Loaded: loaded (/etc/init.d/mosquitto; generated; vendor preset: enabled)
       Active: active (exited) since Fri 2018-09-21 22:49:28 CEST; 5min ago
         Docs: man:systemd-sysv-generator(8)
      Process: 388 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)
        Tasks: 0 (limit: 4915)
       CGroup: /system.slice/mosquitto.service
    
    Sep 21 22:49:28 smarthome systemd[1]: Starting LSB: mosquitto MQTT v3.1 message broker...
    Sep 21 22:49:28 smarthome mosquitto[388]: Starting network daemon:: mosquitto.
    Sep 21 22:49:28 smarthome systemd[1]: Started LSB: mosquitto MQTT v3.1 message broker.
    smarthome@smarthome:~$


    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Benutz in der Konfiguration des Plugins mal die ip Adresse bzw. den dns Namen des Rechners statt localhost (127.0.0.1).

    Ansonsten poste mal Deine vollständige Konfiguration des Plugins und des Brokers. Bei mir laufen shNG und der Mosquitto Broker einträchtig auf dem selben Debian System.

    Einen Kommentar schreiben:


  • SMarcus
    antwortet
    Ich bin grade dabei meinen RasiGrasi "Landroid Workx" über das MQTT-Plugin mittels der weweave/landroid-bridge und dem Mosquitto Broker in SHNG einzubinden.
    Die Bridge scheint zu laufen (zumindest das Webinterface)
    Der MQTT Broker meldet:
    Code:
    1536421560: New client connected from 127.0.0.1 as smarthome (c1, k60).
    1536421777: Socket error on client smarthome, disconnecting.
    Im Log von SHNG finde ich folgende Fehlermeldung:
    Code:
    2018-09-21  21:37:30 INFO     plugins.mqtt      Connecting to broker '127.0.0.1:1883'. Starting mqtt client 'smarthome'
    2018-09-21  21:37:30 ERROR    lib.plugin        Plugin 'mqtt' from section 'mqtt' exception: 'LogRecord' object has no attribute 'message'
    Traceback (most recent call last):
      File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 419, in ConnectToBroker
        self._client.connect(self.broker_ip, self.broker_port, 60)
      File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 768, in connect
        return self.reconnect()
      File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 895, in reconnect
        sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
      File "/usr/lib/python3.5/socket.py", line 712, in create_connection
        raise err
      File "/usr/lib/python3.5/socket.py", line 703, in create_connection
        sock.connect(sa)
    ConnectionRefusedError: [Errno 111] Verbindungsaufbau abgelehnt
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/plugin.py", line 129, in __init__
        plugin_thread = PluginWrapper(smarthome, plugin, classname, classpath, args, instance, self.meta, self._gtrans)
      File "/usr/local/smarthome/lib/plugin.py", line 567, in __init__
        exec("self.plugin.__init__(smarthome{0}{1})".format("," if len(arglist) else "", argstring))
      File "<string>", line 1, in <module>
      File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 168, in __init__
        self.ConnectToBroker()
      File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 421, in ConnectToBroker
        self.logger.error(self.get_loginstance()+'Connection error:', e)
      File "/usr/lib/python3.5/logging/__init__.py", line 1309, in error
        self._log(ERROR, msg, args, **kwargs)
      File "/usr/lib/python3.5/logging/__init__.py", line 1416, in _log
        self.handle(record)
      File "/usr/lib/python3.5/logging/__init__.py", line 1426, in handle
        self.callHandlers(record)
      File "/usr/lib/python3.5/logging/__init__.py", line 1488, in callHandlers
        hdlr.handle(record)
      File "/usr/lib/python3.5/logging/__init__.py", line 856, in handle
        self.emit(record)
      File "/usr/local/smarthome/bin/smarthome.py", line 132, in emit
        self._log.add([timestamp, record.threadName, record.levelname, record.message])
    AttributeError: 'LogRecord' object has no attribute 'message'

    Ich habe SHNG und Plugin Version 1.5.1.master auf Linux Debian. Der Broker läuft auf dem selben System, nur die Bridge auf einem separaten Raspberry.

    Bin nicht so der MQTT Profi (mein erstes MQTT Projekt, hoffentlich nicht mein letztes), aber kann das ein Kompatibilitätsproblem zwischen dem MQTT Broker und SHNG sein?

    Gruss
    Marcus

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Läuft auch im Master 1.5 prima. Danke
    Zuletzt geändert von Onkelandy; 10.07.2018, 06:35. Grund: war Blödsinn vorhin

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    mode Im Develop Branch findest Du die Version 1.4.6 des Plugins. es gibt 3 Änderungen:
    • Re-Subscribe für Topics, wenn der Broker nach einem Neustart Re-Connected
    • Re-Publish für Topics mit Init-Eigenschaft, wenn der Broker nach einem Neustart Re-Connected
    • Verbessertes Handling wenn das Login des Clients beim Broker fehlschlägt (Fehler bei Username/Password)
    gib mal Feedback, ob das für dich passt.

    Einen Kommentar schreiben:


  • mode
    antwortet
    Eine Möglichkeit wäre natürlich auch dieses Verhalten konfigurierbar zu machen... Aber du denkst dir bestimmt was smartes aus

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Schaue ich mir mal an.

    Dazu werde ich mich noch etwas tiefer in MQTT versenken und nachlesen, wie die Schaffer des Protokolls sich den Umgang damit denken (nicht das wir mit einem anderen Broker oder einer neueren Version dann Probleme kriegen).

    Einen Kommentar schreiben:


  • mode
    antwortet
    mosquitto version 1.4.10 (build date Mon, 26 Jun 2017 09:31:02 +0100)
    mosquitto is an MQTT v3.1 broker.

    Könnte das Plugin nach dem "connection returned" die subscriptions noch einmal durchführen?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Der Broker hat durch den Neustart vergessen, welche Subscriptions es zu welchen Topics gab. Daher sendet er keine Informationen mehr an die bisherigen Subscriber aus. Ich bin mir nicht sicher wie die verschiedenen Broker damit umgehen und ob man beim Broker etwas konfigurieren kann.

    Welchen Broker setzt Du ein?

    Einen Kommentar schreiben:


  • mode
    antwortet
    Hi,

    ich nutze das neue MQTT Plugin mit Begeisterung. Bin auf dem aktuellen Master Branch und habe ein Problem festgestellt.

    Wenn ich den Broker neustarte, erscheint folgendes im Log:
    Code:
    2018-05-11  00:20:53 INFO     paho_mqtt    Connection returned result 'Connection Accepted.'
    Danach werden aber die Items nicht mehr durch MQTT upgedated. Es scheint so, als ob die subscription durch den reconnect verloren geht.

    VG

    Mode

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Hallo,

    ich möchte meinen RGBWW Dimmer (H801) mit der ESPurna Firmware via MQTT integrieren.
    Die MQTT Messages sind hier beschrieben. Die Werte werden als Payload gesendet.

    Meine items sehen so aus:
    Code:
    %YAML 1.1
    ---
    Dimmer:
        One:
            Switch:
                type: num
                mqtt_topic_init: Dimmer/relay/0/set
                mqtt_topic_in: Dimmer/relay/0
            Brightness:
                type: num
                mqtt_topic_init: Dimmer/brightness/set
                mqtt_topic_in: Dimmer/brightness
            CCT:
                type: num
                mqtt_topic_init: Dimmer/hsv/set
                mqtt_topic_in: Dimmer/hsv
            HSV:
                type: str
                mqtt_topic_init: Dimmer/hsv/set
                mqtt_topic_in: Dimmer/hsv


    Msinn
    Hier könnte ich nochmal Deine Unterstützung gebrauchen.

    Wie kann es es erreichen, dass SUB und PUB auf ein Item passieren, ohne das das zur Endlosschleife wird?
    Bei der obigen Konfiguration empfange ich die Rückmeldung (SUB), die dann gleich wieder gesendet (als PUB) wird. Somit entsteht eine Endlosschleife. Ich bin immer noch auf der Suche nach einer Möglichkeit, beides auf ein Item zu bekommen, so wie bei knx_listen und knx_send. Hier gibt es keine Schleife.

    Danke.

    Michael
    Zuletzt geändert von Sisamiwe; 02.05.2018, 19:53. Grund: Bessere Beschreibung

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    ja, über ein Zusatz-Item meinte ich. Aber so elegant hätte ich es nicht geschafft.

    Gruß,
    Hendrik

    Einen Kommentar schreiben:

Lädt...
X