Ankündigung

Einklappen
Keine Ankündigung bisher.

SmarthomeNG, MQTT Plugin, Sonoff Wifi Switch mit Tosmata FW - Kein Item Update

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

    SmarthomeNG, MQTT Plugin, Sonoff Wifi Switch mit Tosmata FW - Kein Item Update

    Hallo User Gemeinde,

    Ich hänge grad irgendwie an einer Stelle. Ich hab mir einen Wifi Switch von Sonoff angeschafft und mit der Tosmata Firmware geflashed. Hab den Mosquito Server auf der selben Maschine wie SmarthomeNG am laufen, hier mal wie es aktuell aussieht:

    Ein Item hab ich angelegt (noch im alten conf Format):

    [Sonoff]
    [[Weihnachten]]
    [[[Status]]]
    name = weihnachten_in
    type = foo
    mqtt_topic_in = 'stat/sonoff/POWER'

    plugin.yaml:

    mqtt:
    class_name: Mqtt
    class_path: plugins.mqtt

    Smarthome.log:

    2017-12-07 12:32:42 INFO Main MQTT: Connecting to broker. Starting mqtt client 'Henfri'
    2017-12-07 12:32:44 INFO Main MQTT: parsing item: Sonoff.Weihnachten.Status
    2017-12-07 12:32:45 INFO Thread-6 MQTT: Connection returned result 'Connection Accepted.'
    2017-12-07 12:32:45 WARNING Thread-6 MQTT: Connected to broker 'mosquitto version 1.4.14' at address 127.0.0.1:1883

    Ich kann auch den Status live abfrage funktioniert auch:

    mosquitto_sub -t stat/sonoff/POWER
    ON
    ON
    OFF

    Hier mal aus dem Log vom Sonoff Switch:

    12:47:43 MQT: stat/sonoff/ERGEBNIS = {"POWER":"ON"}
    12:47:43 MQT: stat/sonoff/POWER = ON
    12:47:44 MQT: stat/sonoff/ERGEBNIS = {"POWER":"OFF"}
    12:47:44 MQT: stat/sonoff/POWER = OFF

    Auszug aus dem mosquito.log:

    1512647606: Sending PINGRESP to DVES_8AEEFF
    1512647621: Received PINGREQ from DVES_8AEEFF
    1512647621: Sending PINGRESP to DVES_8AEEFF
    1512647626: Received PINGREQ from Henfri
    1512647626: Sending PINGRESP to Henfri
    1512647636: Received PINGREQ from DVES_8AEEFF
    1512647636: Sending PINGRESP to DVES_8AEEFF
    1512647651: Received PINGREQ from DVES_8AEEFF
    1512647651: Sending PINGRESP to DVES_8AEEFF
    1512647666: Received PINGREQ from DVES_8AEEFF


    Soweit schaut alles gut aus aber irgendwie seh ich im SmarthomeNG Backend nicht das sich das Value des Items ändert. Hat wer ne Idee?

    Grüße,
    nano
    Zuletzt geändert von nano81; 07.12.2017, 13:00.

    #2
    Welche Version von SmartHomeNG und welche Version des MQTT Plugins nutzt Du?

    Wenn Du mit SmartHomeNG v1.3 (master) unterwegs bist, kannst Du mal das aktuelle MQTT Plugin aus den Develop Branch probieren. Da hatte ich für Connection Probleme einen Fix eingebaut. Das ist aber noch nicht im Master.
    Viele Grüße
    Martin

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

    Kommentar


      #3
      Hi,

      SmarthomeNG -> 1.3.v1.3_Hotfix_2.dev
      MQTT -> 1.3.3

      Ich bekomme leider eine Fehlermeldung mit 1.3.4:

      2017-12-07 22:24:45 ERROR Main Plugin mqtt exception: 'Mqtt' object has no attribute 'get_loginstance'
      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 176, in __init__
      self.ConnectToBroker()
      File "/usr/local/smarthome/plugins/mqtt/__init__.py", line 368, in ConnectToBroker
      self.logger.info(self.get_loginstance()+"Connectin g to broker. Starting mqtt client '{0}'".format(clientname))
      AttributeError: 'Mqtt' object has no attribute 'get_loginstance'
      Zuletzt geändert von nano81; 07.12.2017, 22:27.

      Kommentar


        #4
        Ok,

        die aktuelle Version des Plugin aus Develop läuft auf Deinem shNG nicht. Ich würde Dir jedoch nicht empfehlen deshalb auf develop umzustellen.

        Du kannst entweder auf das Release v1.4 von SmartHomeNG warten oder den Quick-Fix, den ich damals für das Plugin gemacht habe selber kurz in den Code des Plugin eintragen:

        Im Verzeichnis plugins/mqtt musst Du dazu die Datei __init__.py mit einem Texteditor öffnen und zwei Änderungen Vornehmen:

        Ändere:
        - Zeile 56: PLUGIN_VERSION = "1.3.3" in PLUGIN_VERSION = "1.3.4"
        - Zeile 243: if self._connected: in if self._connected or True:

        Gib bitte Feedback ob Du den Fix selbst einbaust (und ob er bei Dir funktioniert).
        Viele Grüße
        Martin

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

        Kommentar


          #5
          Hi, ja das wars!

          hab den fix eingebaut. Das Item wird jetzt aktualisiert, schaut jetzt so aus im Smarthome Log:

          2017-12-08 08:09:49 INFO Thread-6 MQTT: Received topic 'stat/sonoff/POWER', payload 'b'OFF'' (type foo), QoS '0', retain '0' for item 'Sonoff.Weihnachten.Status' vielen dank!

          Grüße, nano

          Kommentar


            #6
            Hast du vielleicht noch eine Idee warum im Item b'OFF' steht statt einfach nur OFF ?

            Grüße,
            nano

            Kommentar


              #7
              Habs, wenn ich das Item als bool definiere, funktioniert es! gibt dann ein true für ON und ein false für OFF. Denke das b' kommt durch den itemtyp foo, das wird dann glaub ich als array dargestellt.
              Zuletzt geändert von nano81; 08.12.2017, 08:52.

              Kommentar


                #8
                Bei Datentyp foo wird die Payload ohne jede Veränderung in das Item übernommen, also als byte array.

                Ich habe in das Plugin ein casting eingebaut, so dass die Payload in den Datentyp des Items gewandelt wird. Wenn Du statt bool den type auf str gesetzt hättest, hättest Du eine Sting mit ‚On‘ bzw .‘Off‘ erhalten.
                Viele Grüße
                Martin

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

                Kommentar


                  #9
                  Zitat von Msinn Beitrag anzeigen
                  Im Verzeichnis plugins/mqtt musst Du dazu die Datei __init__.py mit einem Texteditor öffnen und zwei Änderungen Vornehmen:

                  Ändere:
                  - Zeile 56: PLUGIN_VERSION = "1.3.3" in PLUGIN_VERSION = "1.3.4"
                  - Zeile 243: if self._connected: in if self._connected or True:
                  Perfekt. Mit der Änderunge funktioniert es. Ich habe gerade über den Azure IoT Hub und eine Cloud to Device Message über einen lokalen MQTT Broker eine Lampte geschaltet

                  Kommentar


                    #10
                    Hallo,
                    ich möchte mich hier mal einschalten.
                    Ich möchte auch eine sonoff mit Tasmota Firmware via smarthomeNG mit dem MQTT Plugin schalten.

                    Allerdings scheitere ich schon an der Installation von mosquitto auf Debian stretch, also dem Image von Onkelandy.

                    Kann jemand mal die entsprechenden Schritte hier listen. Ich bin mehr der Anwender.
                    Danke

                    ERLEDIGT: War ein Hardwaredefekt des SONOFF
                    Zuletzt geändert von Sisamiwe; 09.01.2018, 13:53. Grund: Gelöst

                    Kommentar


                      #11
                      nano81

                      Ich arbeite mich auch in das Thema ein und hätte eine Frage: Final würde ich den SONOFF gern über die smartVISU mit einem basic.statewitch steuern und auch den Status darüber darstellen.

                      Aktuell habe ich ein Item für pub zum Senden und ein Item für sub zum StatusEmpfang. Grund dafür ist, dass die Tasmota FW für Pub und Sub mit verschiedenen Topics belegt bzw. zugeordnet.

                      Dabei ist Schalten und Rückmeldung wie folgt definiert:
                      The relay can be controlled with cmnd/sonoff/power on, cmnd/sonoff/power off or cmnd/sonoff/power toggle. Sonoff will send a MQTT status message like stat/sonoff/POWER ON.
                      Die smartVISU oder besser der basic.stateswitch kann "Schalten" und "Rückmeldung" nur auf dem gleichen Item. Das passt so nicht zur Defintion der Tasmota FW.

                      Wie hast Du das gelöst?

                      Kommentar


                        #12
                        Msinn

                        Könntest Du mir sagen, wie du bei MQTT die sub und pub messages realisiert hast? Welche Befehle erwartet dein MQTT Device und wie bestätigt er dies?
                        Konntest Du alles senden (pub) und empfangen (sub) auf ein Item bringen?

                        Kommentar


                          #13
                          Ich verstehe nicht ganz was Du meinst. Das MQTT Device gibt ja vor, welche Messages und welche Daten es verarbeiten kann. Die Daten einer Message sind nicht strukturiert (das kann erst die gerade verabschiedete v5 von MQTT). Die Daten einer Messag sind also genau genommen ei Array of Byte, welches vom Device interpretiert wird.
                          Viele Grüße
                          Martin

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

                          Kommentar


                            #14
                            Bestätigungen sind in MQTT erstmal nicht vorgesehen (von QoS mal abgesehen).

                            Willst Du Dir selber ein MQTT Device bauen? Dann kannst Du Dir selber aussuchen ob Du ein Quittungspaket schickst und was Du dort für Informationen übermitteln willst. Diese Antworten musst Du dann aber in shng auch selber interpretieren. Ich persönlich schicke keine solchen Quittungen von meinen Devices aus. So tickt MQTT auch nicht.
                            Viele Grüße
                            Martin

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

                            Kommentar


                              #15
                              Ich grüble immer noch hierüber: Link

                              Im Prinzip möchte ich den SONOFF via MQTT wie einen anderen normalen Schalter mit smartVISU bedienen. Damit das als basic.stateswitch funktioniert, müssten Schalten und Rückmeldung auf einem Item sein (basic.stateswitch kann nicht 2 items nutzen (1 zum Schalten und 1 für die Rückmeldung).
                              Da ich den SONOFF mit Tasmote FW nutze, kann ich in gewissen Maße die pub und sub beeinflussen bzw. definieren.
                              Meine Fragen war eigenllich nur, wie Du das realisiert hast.

                              Kommentar

                              Lädt...
                              X