Ankündigung

Einklappen

ETS5 Sammelbestellung Vollversion

Infos unter: Link
Mehr anzeigen
Weniger anzeigen

Neues MQTT Plugin

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

    #61
    Hallo,

    hat einer von euch den Artikel in der c't 8/18 "Funkbrücke" gelesen?

    Hier wird die Firmware Espurna auf eine Sonoff 433Mhz Bridge geflasht. Diese spricht dann MQTT.
    Unter http://ct.de/ysa3 gibt es die Projektseite inklusive einem Beispielskript (Python).

    Ich frage mich, welchen Aufwand es bedeuten würde, statt des Python Skript das Sh.py MQTT Plugin zu nutzen. Ich kenne zwar MQTT vom Prinzip her, habe es aber noch nie genutzt.

    Prinzipiell muss nur in /zuhause/rfbridge/relay/[N]/set eine 0 oder 1 geschrieben werden.

    Links:
    Espurna: link
    RF Bridge: link
    Shop (13$ inkl. Versand +Zoll) link

    Gruß,
    Hendrik

    Kommentar


      #62
      Zitat von henfri Beitrag anzeigen
      Prinzipiell muss nur in /zuhause/rfbridge/relay/[N]/set eine 0 oder 1 geschrieben werden.
      Da
      mit dem MQTT Plugin solltest Du zwei item definieren müssen, da die Daten hier im MQTT-Topic übertragen werden (statt in der Payload der MQTT Message)

      Einen führenden Slash sollte man bei MQTT Topics übrigens nicht verwenden. Davor wird gewarnt, da dass mehr Performance benötigt.

      Folgende Item Definitionen sollten tun was Du möchtest.

      Code:
      relay_off:
          type: bool
          enforce_updates: true
          mqtt_topic_out: 'zuhause/rfbridge/relay/0/set
      
      relay_on:
          type: bool
          enforce_updates: true
          mqtt_topic_out: 'zuhause/rfbridge/relay/1/set
      Viele Grüße
      Martin

      There is no cloud. It's only someone else's computer.

      Kommentar


        #63
        Hallo,

        danke für deine Antwort.
        ich habe jetzt nicht gefunden, ob man die Firmware so konfigurieren kann, dass die Daten in der Payload übertragen werden.
        Wie kombiniere ich die zwei Items dann auf Sh.py Seite zu einem?

        Gruß,
        Hendrik

        Kommentar


          #64
          Du kannst nicht zwei Items zu einem kombinieren. Du kannst nur diese zwei Items als Hilfsitems verstehen und sie z.B. über eval von einem Item ableiten.

          Code:
          relay:
              type: bool
          
              relay_off:
                  type: bool
                  eval: False if sh...() == False else None
                  eval_trigger: ..
                  enforce_updates: true
                  mqtt_topic_out: 'zuhause/rfbridge/relay/0/set
          
              relay_on:
                  type: bool
                  eval: True if sh...() == True else None
                  eval_trigger: .. enforce_updates: true
                  mqtt_topic_out: 'zuhause/rfbridge/relay/1/set
          Viele Grüße
          Martin

          There is no cloud. It's only someone else's computer.

          Kommentar


            #65
            Hallo,

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

            Gruß,
            Hendrik

            Kommentar


              #66
              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

              Kommentar


                #67
                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

                Kommentar


                  #68
                  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?
                  Viele Grüße
                  Martin

                  There is no cloud. It's only someone else's computer.

                  Kommentar


                    #69
                    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?

                    Kommentar


                      #70
                      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).
                      Viele Grüße
                      Martin

                      There is no cloud. It's only someone else's computer.

                      Kommentar


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

                        Kommentar


                          #72
                          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.
                          Viele Grüße
                          Martin

                          There is no cloud. It's only someone else's computer.

                          Kommentar


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

                            Kommentar


                              #74
                              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

                              Kommentar


                                #75
                                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.
                                Viele Grüße
                                Martin

                                There is no cloud. It's only someone else's computer.

                                Kommentar

                                Lädt...
                                X