Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues MQTT Plugin

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

  • felix86
    antwortet
    Hi Msinn,

    das sieht deutlich besser aus:
    Code:
    2017-08-18  08:30:29 INFO     Main         MQTT: Connecting to broker. Starting mqtt client 'HAL9000'
    2017-08-18  08:30:29 INFO     Main         MQTT: parsing item: wlan_thermo.kanal1
    2017-08-18  08:30:29 INFO     Main         MQTT: Listening on topic 'WLanThermo/NANO-82e3d9/status/temp1' for item 'wlan_thermo.kanal1'
    2017-08-18  08:30:29 INFO     Main         MQTT: parsing item: wlan_thermo.test
    2017-08-18  08:30:29 INFO     Main         MQTT: Listening on topic 'test' for item 'wlan_thermo.test'
    2017-08-18  08:30:29 INFO     Thread-6     MQTT: Connection returned result 'Connection Accepted.' 
    2017-08-18  08:30:29 WARNING  Thread-6     MQTT: Connected to broker 'mosquitto version 1.4.8' at address 192.168.178.2:1883
    2017-08-18  08:30:58 INFO     Thread-6     MQTT: Received topic 'WLanThermo/NANO-82e3d9/status/temp1', payload '23.2' (type num), QoS '0', retain '0' for item 'wlan_thermo.kanal1'
    2017-08-18  08:31:28 INFO     Thread-6     MQTT: Received topic 'WLanThermo/NANO-82e3d9/status/temp1', payload '23.2' (type num), QoS '0', retain '0' for item 'wlan_thermo.kanal1'
    2017-08-18  08:31:58 INFO     Thread-6     MQTT: Received topic 'WLanThermo/NANO-82e3d9/status/temp1', payload '23.2' (type num), QoS '0', retain '0' for item 'wlan_thermo.kanal1'
    Das Item wird nun immer mit der aktuellen Temperatur geschrieben. Danke!

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Hi,

    bei Deinem Loglevel (Info) müsste eigentlich nach der Zeile
    Code:
     
     2017-08-17  21:58:26 INFO     Main         MQTT: parsing item: wlan_thermo.kanal1
    eine Zeile
    Code:
     
     2017-08-17  21:58:26 INFO     Main         MQTT: Listening on topic 'WLanThermo/NANO-82e3d9/status/temp1' for item 'wlan_thermo.kanal1'  
     [FONT=Arial][/FONT]
    stehen...

    Ich habe eine Idee: Evtl. antwortet Dein mosquitto etwas langsam.

    Das Plugin ist so geschrieben, dass es die Subscriptions beim parsen der Items absetzt. (Aber nur, wenn der Broker den Connect bereits bestätigt hat).

    Kannst Du im Plugin (in der __init__.py) zum Test mal folgende Änderung vornehmen und mir schreiben was sich verändert:

    Ändere Zeile 243
    Code:
                if self._connected:
    mal auf
    Code:
                if self._connected or True:

    Einen Kommentar schreiben:


  • felix86
    antwortet
    Hallo Zusammen,

    ich versuche auch gerade das MQTT Plugin ans laufen zu bekommen, aber irgendwo hakt es :/

    plugin.conf
    Code:
    [mqtt]
        class_name = Mqtt
        class_path = plugins.mqtt
        host = 192.168.178.2
    item
    Code:
    [wlan_thermo]
            [[kanal1]]
                    name = Kanal1
                    type = num
                    mqtt_topic_in = WLanThermo/NANO-82e3d9/status/temp1
    
            [[test]]
                    name = Test
                    type = foo
                    mqtt_topic_in = test
    Ich habe ein WLAN Thermometer welches per MQTT die Werte schicken kann. Dies funktioniert soweit auch:
    Code:
    mosquitto_sub -h localhost -t WLanThermo/NANO-82e3d9/status/temp1
    24.5
    24.4
    24.5
    24.4
    24.4
    24.5
    Im Topic Test habe ich auch mal Nachrichten geschickt und mittels mosquitto_sub auch empfangen.

    Im mosquitto Log kann ich auch erkennen, dass sich das Plugin verbindet.

    Im SmarthomeNG Log steht bzgl. MQTT
    Code:
    2017-08-17  21:58:26 INFO     Main         MQTT: Connecting to broker. Starting mqtt client 'HAL9000'
    2017-08-17  21:58:26 INFO     Main         MQTT: parsing item: wlan_thermo.kanal1
    2017-08-17  21:58:26 INFO     Main         MQTT: parsing item: wlan_thermo.test
    2017-08-17  21:58:26 INFO     Thread-15    MQTT: Connection returned result 'Connection Accepted.' 
    2017-08-17  21:58:26 WARNING  Thread-15    MQTT: Connected to broker 'mosquitto version 1.4.8' at address 192.168.178.2:1883
    SmarthomeNG ist selber gerade frisch auf Version 1.3

    Hat vll jemand einen Tipp für mich?

    Einen Kommentar schreiben:


  • kaiwerner
    antwortet
    Zitat von Msinn Beitrag anzeigen

    ...
    - Bei Punkt Eins liegst Du falsch. Der Connect wird durch self.ConnectToBroker() in der __init__ Routine ausgeführt, also vor dem parsen. (sonst würde das Plugin keine messages abonnieren)
    Ja Du hast recht! Erst __init__ da parse_item.

    mhh...
    Mir war aber beim Testen genau das passiert, also es wurden keine Messages abonniert.

    Kann es sein das der Verbindungsaufbau etwas zu lange gedauert hat?

    Verständnisfrage:
    Warum fragst Du das "connected" beim parsen der items ab?

    MfG

    Einen Kommentar schreiben:


  • pino
    antwortet
    Problem gefunden, Broker ( mosquitto ) hatte ihn von git ... gezogen weil ich alles auf dem neusten haben wolte.
    Habe jetzt über apt neu install gemacht und den anderen gelöscht, dazu aber meine plugin.conf und das alte mqtt plugin, jetzt ist alles bei mqtt wieder gut.
    Danke für die mühe und die analyse
    mfg

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von kaiwerner Beitrag anzeigen
    Hallo Msinn,

    ich hab es mal getestet.
    2 Sachen:
    - in parse_item (Zeile 239) steht if self._connected: connect wird aber erst nach dem parsen ausgeführt also werden die items nicht überwacht.
    - wenn in der plugin.yaml "last_will_topic" und "birth_topic" nicht gesetzt sind, knallt es
    kaiwerner :
    - Bei Punkt Zwei (leerem last_will_topic) hast Du recht. Den Fix pushe ich nachher (pino : Das beseitigt dann Dein Problem)
    - Bei Punkt Eins liegst Du falsch. Der Connect wird durch self.ConnectToBroker() in der __init__ Routine ausgeführt, also vor dem parsen. (sonst würde das Plugin keine messages abonnieren)


    Einen Kommentar schreiben:


  • pino
    antwortet
    habe die lange fassung und die kurze probiert,
    unterscheiden sich nur in der fehlermeldung
    (kurze) anbei und die lange von der README Orgiginal nur halt meine ip

    [mqtt]
    class_name = Mqtt
    class_path = plugins.mqtt
    host = 192.168.x.x
    port = 1883

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Wie sieht denn der entsprechende Abschnitt Deiner etc/plugin.conf aus?

    Einen Kommentar schreiben:


  • pino
    antwortet
    durch die ganze Aktion bin ich zurzeit noch mit der (" conf ") unterwegs, habe aber auch schon die (" yaml") getestet.
    Wie geschrieben habe ich schon versucht eine lösung zu finden, unteranderem auch schon über die alte mqtt geschichte , sprich ich hatte eine Sicherung die ich zurück gespielt habe und auch die sache mit (" last_will_topic" und "birth_topic" ). "also Fragen über fragen" und keine Lösung
    mfg

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Wie sieht denn Deine Konfiguration des Plugins in der etc/plugin.yaml aus?

    Einen Kommentar schreiben:


  • pino
    antwortet
    hallo,
    es kostet mich wieder Nerven.
    so sieht die Fehlermeldung aus, jetzt komm mir bitte keiner und Schreibt siehe oben bei
    kaiwerner

    habe alles durch mit den Änderungen.

    2017-06-30 13:26:19 ERROR Main Plugin mqtt exception: string index out of range
    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 142, in __init__
    if last_will_topic [-1] == '/':
    IndexError: string index out of range


    habe smarthome 1.3.ec1de2b und visu 2.8.

    zum anderen hatte mein System neu gemacht ( Net install minimal ) anleitung ist auch soweit OK, musste nur feststellen das einiges nicht instaliert wurde oder eine alte version.
    ( python3-dateutil
    python3-psutil
    python3-cherrypy3
    python3-jinja2 )

    Wer alsö alles mit Python ( pip3 ) akt. möchte ( sollte ) hier ein Beispiel was geht.
    sudo pip3 freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U

    mfg

    Einen Kommentar schreiben:


  • kaiwerner
    antwortet
    Zitat von ratzi82 Beitrag anzeigen
    ...
    kaiwerner

    Möchtest du nicht einen Pull Request für deine bugfixes aufmachen?
    ....
    Fur das Prasen:
    https://github.com/smarthomeNG/plugins/pull/60

    lastwill ist bei mir definiert, aus dem Grund habe ich da nichts geändert. Das war mir nur beim testen aufgefallen.

    Grüße

    Einen Kommentar schreiben:


  • ratzi82
    antwortet
    Msinn

    Danke für das überarbeitete Plugin, steht schon auf meiner Todo-Liste.

    kaiwerner

    Möchtest du nicht einen Pull Request für deine bugfixes aufmachen?

    Gruß,
    Henning

    Einen Kommentar schreiben:


  • kaiwerner
    antwortet
    Hallo Msinn,

    ich hab es mal getestet.
    2 Sachen:
    - in parse_item (Zeile 239) steht if self._connected: connect wird aber erst nach dem parsen ausgeführt also werden die items nicht überwacht.
    - wenn in der plugin.yaml "last_will_topic" und "birth_topic" nicht gesetzt sind, knallt es
    Code:
    ERROR    lib.plugin   Plugin mqtt exception: string index out of range
    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})".format("," if len(arglist) else "", argstring))
      File "<string>", line 1, in <module>
      File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 142, in __init__
        if last_will_topic [-1] == '/':
    IndexError: string index out of range
    Ich habe es mal bei mir angepasst - läuft!

    Danke

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Das "Auftauchen" von Items hat nichts mit Plugins zu tun. Plugins werden von SmartHomeNG vollständig eingelesen bevor das erste Plugin initialisiert wird.

    Wenn Items im Backend oder im CLI nicht auftauchen liegt bei Dir vermutlich ein Fehler in der entsprechenden Item Konfigurationsdatei (.conf oder .yaml) vor. Falls Du bereits .yaml Konfigurationsdateien verwendest, ist die Chance groß, dass Du in der smarthome.log einen direkten Hinweis auf die fehlerhafte Stelle findest.

    Einen Kommentar schreiben:

Lädt...
X