Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues MQTT Plugin

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

  • Onkelandy
    antwortet
    Hab jetzt für das neue Image alles neu aufgesetzt und siehe da. es klappt. *uff*

    Wenn keine Verbindung aufgebaut werden kann, kommt allerdings folgender Fehlerschwall:
    Code:
    2017-12-19  15:08:06 INFO     Main         Loading '/usr/local/smarthome/plugins/mqtt/plugin.yaml' to 'OrderedDict'
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': Metadata paramlist = '['host', 'port', 'qos', 'last_will_topic', 'last_will_payload', 'birth_topic', 'birth_payload', 'publish_items', 'items_topic_prefix', 'user', 'password', 'acl']'
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': value not found in plugin configuration file for parameter 'port' -> using default value '1883' instead
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': value not found in plugin configuration file for parameter 'qos' -> using default value '1' instead
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': value not found in plugin configuration file for parameter 'last_will_topic' -> using default value '' instead
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': value not found in plugin configuration file for parameter 'last_will_payload' -> using default value '' instead
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': value not found in plugin configuration file for parameter 'birth_topic' -> using default value '' instead
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': value not found in plugin configuration file for parameter 'birth_payload' -> using default value '' instead
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': value not found in plugin configuration file for parameter 'publish_items' -> using default value 'False' instead
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': value not found in plugin configuration file for parameter 'items_topic_prefix' -> using default value 'devices/shng' instead
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': value not found in plugin configuration file for parameter 'user' -> using default value '' instead
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': value not found in plugin configuration file for parameter 'password' -> using default value '' instead
    2017-12-19  15:08:06 INFO     Main         plugin 'mqtt': value not found in plugin configuration file for parameter 'acl' -> using default value 'none' instead
    2017-12-19  15:08:06 INFO     Main         Connecting to broker. Starting mqtt client 'SmartHomeNG'
    2017-12-19  15:08:06 ERROR    Main         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 382, 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 111, in __init__
        plugin_thread = PluginWrapper(smarthome, plugin, classname, classpath, args, instance, self.meta)
      File "/usr/local/smarthome/lib/plugin.py", line 413, 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 176, in __init__
        self.ConnectToBroker()
      File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 384, 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 113, in emit
        self._log.add([timestamp, record.threadName, record.levelname, record.message])
    AttributeError: 'LogRecord' object has no attribute 'message'

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Ist bei beiden PLUGIN_VERSION = "1.3c.4"
    Auch nach dem Reboot kein Receiving

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Bist Du Dir sicher, dass nicht auf einem der PIs noch das Plugin in der Version 1.3.3 läuft?

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hm, komisch... Ich hab es erst mit dem neuesten Release getestet, da ich nun das network plugin auf mqtt umstellen will, was den Austausch an Item-Werten zwischen zwei SmarthomeNG Instanzen anlangt.

    Problem ist wie gesagt, dass die Werte zwar bei beiden Instanzen gepublisht werden, aber beim Subscriber nicht upgedatet. Es kommt nichts ins Log und der Wert ändert sich dort nicht. Bei mosquitto selbst habe ich keine Änderungen an der Config vorgenommen. Sonderbar. Ich boote jetzt beide Geräte nochmals neu und melde mich dann nochmals.

    An der oben beschriebenen Config kannst du aber auch keinen Fehler erkennen, ja?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Das subscriben (wie als Problem oben beschriebenk ist gefixt. Das haben User bereits bestätigt. Kannst Du Dein Problem genauer beschreiben?

    Da sich mit dem Release nichts gegenüber dem develop geändert hat: Hattest Du das Problem auch schon auf Develop bemerkt?
    Zuletzt geändert von Msinn; 18.12.2017, 01:34.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Ich habe mit der neuen Version 1.4 auf 2 Raspis leider das gleiche Problem wie oben beschrieben..das subscriben funktioniert nicht.
    Mosquitto Version 1.4.10
    MQTT Plugin: 1.3c.4
    SmarthomeNG: 1.4 master bzw. 1.4a.ebcf3d29.develop

    Empfänger/Subscriber-Raspi:
    Item:
    Code:
                Aussen:
                    name: Temperatur aussen
                    visu_acl: ro
                    type: num
                    database@nas: 'init'
                    influxdb: 'yes'
                    mqtt_topic_in: WP/Status/Temperatur/Aussen
    Log:
    Code:
    2017-12-18  00:23:50 INFO     plugins.mqtt Connecting to broker. Starting mqtt client 'SmartHome'
    2017-12-18  00:23:50 INFO     lib.plugin   Initialized plugin 'mqtt' from from section 'mqtt'
    2017-12-18  00:26:02 INFO     plugins.mqtt Listening on topic 'WP/Status/Temperatur/Aussen' for item 'WP.Status.Temperatur.Aussen'
    2017-12-18  00:27:11 INFO     plugins.mqtt Connection returned result 'Connection Accepted.'
    Sender-Raspi:
    Item:
    Code:
                Aussen:
                    name: Temperatur aussen
                    visu_acl: r
                    type: num
                    database@nas: init
                    DuW_WP_register: 202
                    #nw: 'yes'
                    #send_nw: 10.0.0.150
                    mqtt_topic_init: WP/Status/Temperatur/Aussen
                    mqtt_retain: 'True'
    Log beim Ändern eines Werts:
    Code:
    2017-12-18  00:30:09 INFO     plugins.mqtt Item 'WP.Status.Temperatur.Aussen': Publishing topic 'WP/Status/Temperatur/Aussen', payload '0.3', QoS '1', retain 'True'
    Keinerlei Reaktion vom Empfänger. Mittels mosquitto-client aber schon:
    Code:
    mosquitto_sub -h localhost -t WP/Status/Temperatur/Aussen
    0.3
    Gleiches Spiel in die andere Richtung. mosquitto_sub funktioniert, SmarthomeNG bekommt aber nichts mit, obwohl subscribed. Ob out oder init scheint dabei egal zu sein...
    Zuletzt geändert von Onkelandy; 18.12.2017, 00:47.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Sisamiwe Du solltest vieleicht auf SmartHomeNG v1.4 weitertesten

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Ich habe bei mir die 1.4.14 laufen.

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Genau so geht es mir auch.
    Ich habe zwar viel gesucht, aber keine echte Lösung gefunden.
    Ich glaube, dass bei Stretch standardmäßig mosquitto 1.4.10 dabei ist. Aktuell ist 1.4.12 mit Websockets und 1.4.14 ohne Websockets.
    Werden die Websockets benötigt?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Welche Version von mosquito hast Du denn laufen? Ich habe mich damals etwas schwer getan, da die von mir genutzte Distribution für den Pi nur eine relativ alte Version enthielt.

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Msinn
    Danke für die schnelle Rückmeldung.

    Ich glaube, dass meine mosquitto Installation irgendeinen Fehler hat. Ich arbeite mit Debian Stretch auf einen RPI3.
    Hier kam es bei der Installation von Mosquitto zu einigen Schwierigkeiten. Der Broker Service läuft

    [root@SmartHomeNGTEST ~]# 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 Sun 2017-12-17 17:57:35 CET; 3min 26s ago
    Docs: man:systemd-sysv-generator(8)
    Process: 2271 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCESS)
    Process: 2281 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)
    CGroup: /system.slice/mosquitto.service

    Dez 17 17:57:35 SmartHomeNGTEST systemd[1]: Starting LSB: mosquitto MQTT v3.1 message broker...
    Dez 17 17:57:35 SmartHomeNGTEST mosquitto[2281]: Starting network daemon:: mosquitto.
    Dez 17 17:57:35 SmartHomeNGTEST systemd[1]: Started LSB: mosquitto MQTT v3.1 message broker.
    aber irgendwie, wenn ich testen will kommt:
    [root@SmartHomeNGTEST ~]# mosquitto_sub -h localhost -v -t test
    Ungültiger Maschinenbefehl
    Hast Du eine Idee?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Aus der Fehlermeldung kann ich leider nichts schließen, da sie ziemlich grundsätzliche Fehler schmeisst, die nicht unbedingt etwas mit dem MQTT Plugin zu tun haben.

    Evtl. liegt der eigentlich auslösende Fehler schon davor. Was für Meldungen hast Du im Log zwischen Start und dieser Fehlermeldung?

    Du müsstest auch schon genau beschreiben was Du getan hast:
    - Wie sieht Deine plugin.yaml aus?
    - Wie ist der MQTT Broker konfiguriert?
    - Auf welchs Wiki Beschreibung referenzierst Du?
    - Wie hast Du die Änderungen eingebaut (und welche genau)?
    Zuletzt geändert von Msinn; 17.12.2017, 17:05.

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Hallo,

    ich habe das Plugin wie im Wiki beschrieben eingebunden.
    Trotzdem erscheint im Log die Fehlermeldung:
    2017-12-17 16:25:11 ERROR Main Plugin mqtt exception: 'LogRecord' object has no attribute 'message'
    Traceback (most recent call last):
    File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 371, 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 90, in __init__
    plugin_thread = PluginWrapper(smarthome, plugin, classname, classpath, args, instance)
    File "/usr/local/smarthome/lib/plugin.py", line 144, in __init__
    exec("self.plugin.__init__(smarthome{0}{1})".forma t("," if len(arglist) else "", argstring))
    File "<string>", line 1, in <module>
    File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 171, in __init__
    self.ConnectToBroker()
    File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 373, in ConnectToBroker
    self.logger.error('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 120, in emit
    self._log.add([timestamp, record.threadName, record.levelname, record.message])
    AttributeError: 'LogRecord' object has no attribute 'message'
    smarthomeNG 1.3 Hotfix2
    MTTQ Plugin 1.3.3 mit den eingebauten Änderungen zu 1.3.4

    Kann jemand helfen?

    Einen Kommentar schreiben:


  • bytesmith
    antwortet
    Hi Zusammen,

    das Problem mit dem connecting and nicht subscriben habe ich auch local da der connect async ist und oft erst kurz nach dem parse items ausgelöst wird. Dadurch subscribed das Plugin bei mir nie, es sei denn ich workarounde den code wie zum Biespiel hier beschrieben. Was aber immer noch eine Race Condition ist und damit nicht wirklich eine Lösung sondern immer noch Glücksache.

    Insgesamt würde ich aber das Plugin umschreiben und ein subscriben auch erst nach dem connect machen. Dann wäre auch eine wiederanlauf Fähigkeit gegeben falls der Broker zwischendrin mal weg war. Im Moment wird zwar reconnected aber nicht noch mal subscribed. Also eher nutzlos.

    Wie wäre es also eine zentrale subscribing methode welche jeweils erst beim erfolgreichen connect/Reconnect aufgerufen wird ? Re-Connect wäre gelöst und auch langsameres connecting auf den Broker wäre kein Problem mehr ! Das gleiche gilt hier übrigens auch für das logic handling.
    Zuletzt geändert von bytesmith; 22.11.2017, 14:12.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Ok, ich habe einen Hotfix eingecheckt. Die v.1.3.4 des MQTT Plugins st jetzt auf Develop.

    Einen Kommentar schreiben:

Lädt...
X