Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. [Adapter] Sonoff- Tasmota

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Adapter] Sonoff- Tasmota

    This topic has been deleted. Only users with topic management privileges can see it.
    • modmax
      modmax last edited by

      @Bluefox

      Danke für die schnelle Umsetzung.

      Aber inzwischen kam mir eine ganz andere Idee bzw. Erkenntnis

      (jaaaaaaa .. ich bin voller Erkenntnisse, wenn es ums Finden einer Lösung geht … :-))

      Und zwar:

      Was passiert, wenn sich ein Client zweimal connected, ohne daß vorher ein close,error oder dergleichen kam?

      Passiert nämlich beim Neustart eines Sonoffs immer ...

      Szenario:

      Sonoff wird das erste mal gestartet und im Adapter wird ein Client-Objekt angelegt, bezeichnen wir den mal als Pointer_A, samt Stream.

      Nun wird der Sonoff nochmals gestartet und es erfolgt wieder ein Connect.

      Hier wird dann, soweit ich das übersehen kann, ein neuer Client angelegt, sagen wir Pointer_B.

      Es wird dabei nicht überprüft, ob der Client schon da ist oder dergleichen.

      Somit ergeben sich dann für denselben Sonoff für den gleichen Client 2 Pointer-Objekte: A und B.

      A und B haben immer noch einen eigenen Stream, da Pointer_A nie geschlossen wurde.

      Im Endeffekt sieht man aber einen Timeout, der dann aber von Pointer_A zu kommen scheint und nicht Pointer_B.

      Testen kann man das folgendermaßen:

      1.) Sonoff-Adapter neu starten.

      2.) sonoff verbindet sich und im Log steht "Client [sonoff] connected".

      3.) Sonoff über WebUI neu starten.

      4.) Es erscheint wieder die Meldung ""Client [sonoff] connected".

      Diese dürfte dann der Punkt sein, an dem der Adapter 2 Streams für denselben Client im Speicher hält;

      nämlich den "vergessenen Stream" vom ersten Connect und dann den aktuellen Stream für

      das aktuelle Connect.

      5.) Problem hierbei ist, daß für den vergessenen Stream dann der Timeout kommt

      und der Adapter dann den Client aus der "connections"-Liste löscht, weswegen

      dann kein Schalten mehr möglich ist.

      Im Log erscheint nämlich folgendes:

      2018-03-17 22:35:43.220  - info: sonoff.0 terminating
      2018-03-17 22:35:43.228  - info: host.iobroker instance system.adapter.sonoff.0 terminated with code 0 (OK)
      2018-03-17 22:35:45.223  - info: host.iobroker instance system.adapter.sonoff.0 started with pid 27509
      2018-03-17 22:35:45.585  - info: sonoff.0 starting. Version 2.0.0 in /work/iobroker/node_modules/iobroker.sonoff, node: v8.9.4
      2018-03-17 22:35:45.612  - info: sonoff.0 Starting MQTT authenticated  server on port 1885
      2018-03-17 22:36:01.754  - info: sonoff.0 Client [kinderzimmer-stehlampe] connected
      2018-03-17 22:38:04.450  - info: sonoff.0 Client [kinderzimmer-stehlampe] connected
      2018-03-17 22:41:02.164  - info: sonoff.0 Client [kinderzimmer-stehlampe] timeout
      
      

      Ergebnis ist: Sonoff funktioniert; nur er ist nicht mehr über ioBroker steuerbar.

      Das erklärt dann auch, wieso noch immer Pings und Telemetrie-Infos ankommen,

      aber man über iobroker nicht mehr schalten kann.

      Müßte bei einem "connect" eines neuen CLients mit gleicher ID nicht geschaut werden, ob schon ein Client da ist und den terminieren?

      Oder wenigstens den Stream eines bereits bestehenden Clients mit gleicher client.id löschen oder schließen?

      Hatte das mal testweise so geändert:

      client.on('connect'
          ...
      
      	let oldClient = clients[client.id];
      	if (oldClient) {
      		adapter.log.info('Client [' + client.id + '] reconnected');
      		oldClient.stream.end();
      		oldClient = undefined;
      	} else {
      		adapter.log.info('Client [' + options.clientId + '] connected');
      	}
      
      	client.connack({returnCode: 0});
      
      

      Da nun aber der Stream feherhaft ist, wird der "neue" Client nun geschlossen und über dessen

      Stream das LWT gesendet und der Client geschlossen, so daß sich der Sonoff nun wieder neu connected;

      was eigentlich überflüssig ist. Die Änderung im PingReq wäre damit auch obsolet.

      Im Log sieht das dann nämlich so aus:

      2018-03-18 00:49:05.705  - info: sonoff.0 Client [kinderzimmer-stehlampe] connected
      2018-03-18 00:51:43.537  - info: sonoff.0 Client [kinderzimmer-stehlampe] reconnected
      2018-03-18 00:51:43.552  - info: sonoff.0 Client [kinderzimmer-stehlampe] Error: read ECONNRESET
      2018-03-18 00:52:14.791  - info: sonoff.0 Client [kinderzimmer-stehlampe] connected
      
      

      Man müßte also den "vergessenen Client/Stream" so termieren, daß kein Trigger mehr ausgeführt wird;

      oder die Timepout-Methode ändern … oder ... oder .... oder ...

      Wie gesagt; bin kein JavaScript-Experte, sondern eher Java und etwas C,

      deswegen fiel mir das beim Testen auf. Nur Debuggen kann ich

      das JavaScript nicht um zu sehen, welche Objekte in der VM/Speicher

      denn nun wirklich bestehen.

      Zum Schluß noch ein Kleiner Bug in Zeile 430,

      bei dem "adapter.warn" durch "adapter.log.warn" ersetzt werden muß.

      MfG Markus

      1 Reply Last reply Reply Quote 0
      • modmax
        modmax last edited by

        @Bluefox

        Sodele ..

        Ich hoffe ich habe nun die Lösung des Problems gefunden.

        Jeder Client bekommt nun beim "connect" einen timestamp mit.

        Sollte beim connect noch ein "vergessener" Client (was wohl nur ein Duplex-Stream ist) für die gleiche

        Client-ID existieren, dann wird dieser "vergessene" Client geschlossen.

        Dies passiert, weil die Sonoffs beim Neustart kein close/end mehr in den Stream zum Server schicken

        und dieser Stream dann auf dem Server noch weiter rumidlet; aber für den Server dann noch immer aktiv;

        hängt wohl mit der Implementierung der "mqtt-connection" zusammen …

        Der timestamp eines Clients wird zudem beim Schließen eines Clients überprüft.

        Passen die timestamps des Clients, der ein event bekommt, nicht mit dem

        Timestamp des gespeicherten Clients überein, dann wird lediglich dieser "vergessene" Client geschlossen.

        Sollte sich der Stream aus irgendwelchen Netzgründen verabschieden und weder Server noch Client (also der Sonoff)

        kriegen was davon mit, dann greif der von Bluefox eingebaute Timeout und der Client wird geschlossen.

        Letzter Sicherheitscheck ist dann der PingResponse, der nur dann bei einem PingRequest gesendet wird,

        wenn der Timestamp des Clients, für den der Ping ist, mit dem gespeicherten Client-Timestamp übereinstimmt.

        Ich habe dafür nun einen PullRequest beim ioBroker.sonoff auf GitHub erstellt.

        Wäre schön wenn Bluefox nochmal drüber schaut und den commiten würde;

        in der Hoffnung, daß ich mal richtiges Javascript geschrieben habe ... 🙂

        Lösung wäre auch für den mqtt-Adapter evtl. interessant, da dort ähnliche Probleme auftauchen.

        MfG Markus

        1 Reply Last reply Reply Quote 0
        • modmax
          modmax last edited by

          Danke @ Bluefox für den Merge ins iobroker.sonoff-GitHub.

          Zu installieren ist das Ganze folgendermaßen:

          1.) Über Github den sonoff-Adapter aktualisieren

          2.) Upload über erweiterte Einstellungen triggern (betrifft nur Admin-Seiten)

          3.) Sonoff-Adapter neu starten.

          Getestet habe ich das Ganze unter Tasmota-Firmware 5.12.0d.

          Es können hier und da noch ein paar "reconnected" auftreten, wenn der Sonoff entweder

          neu startet oder selbst festgestellt hat, daß eine Verbindung nicht gut ist, oder sich neu

          mit WiFi verbunden hat.

          Als Ergänzung:

          Hab testweise auch mal die Tasmota-Firmware 5.12.0g aufgespielt und da verbindet

          sich jeder Sonoff alle 5 Minuten wieder mit dem iobroker. Zudem finden mit der 5.12.0g

          häufigere Wifi-Reconnects statt, also mit der D-Version.

          Hier hat der Tasmota-Autor mit der Tasmota 5.12.0e-Version das Wifi-Handling etwas verändert

          oder sensitiver gestaltet, so daß mehr WiFi-Neuverbindungen stattfinden.

          Zudem ist das MQTT-Handling in Tasmota geändert worden; so daß es nun mehr reconnects gibt.

          Zudem kann man in der 5.12.0g nun auch beim Flashen definieren, welche mqtt-Library man nutzen will.

          Man sollte dann bei der PubSubClient-Bibliothek bleiben. Die Tasmota-eigene MQTT-Library (aktuell 1.1.1)

          führt nämlich nach einem Wifi-Reconnect kein MQTT-Reconnect mehr aus; obwohl dann immer der Stream weg ist.

          Hier ist also noch ein Bug drin ..

          Also würde ich raten aktuell nicht höher als 5.12.0d zu gehen. Zu ESP-Easy kann ich dagegen nix sagen,

          da ich das nicht im Einsatz habe.

          1 Reply Last reply Reply Quote 0
          • A
            Arnulf last edited by

            wie komme ich denn an die 5.12d?

            Ich sehe in github immer nur die 5.12.0

            1 Reply Last reply Reply Quote 0
            • G
              gemu last edited by

              @Arnulf:

              wie komme ich denn an die 5.12d?

              Ich sehe in github immer nur die 5.12.0 `

              wenn du mit Atom arbeitest gibt es rechts unten den Button mit dem branch, den must du auf development stellen.

              oder halt mit GIT Desktop den branch umstellen.

              1 Reply Last reply Reply Quote 0
              • K
                klassisch Most Active last edited by

                Vielen Dank fürs Weiterentwickeln.

                Habe jetzt auch aktualisiert und bei mir läuft jetzt auch die 2.0.1

                Meine Sonoffs haben 5.11.1 oder älter. Ich arbeite mit fertigen bins, die über OTA geflasht werden.

                1 Reply Last reply Reply Quote 0
                • modmax
                  modmax last edited by

                  @Arnulf

                  Du kannst auch die 5.11.1 nehmen. DIe geht auch.

                  Mit der 5.12.0 hatten einige User Probleme mit WLAN gemeldet, so daß bei denen nur komplettes serielles Neuflashen geholfen hat,

                  Die 5.12.0d hatte ich mir aus dem Entwicklungsstrang geholt und an meine Bedürfnisse angepaßt (kein DOMOTIC oder HOMEASSISTENT,

                  und keine anderen Einstellungen; dazu gleich noch die eigenen WLAN-Einstellungen etc.).

                  Ist dadurch nur 4KB größer als die Minimal-Version .. 🙂

                  Der GitHub-User reloxx13 hat einen eigen Fork von Tasmota gemacht und stellt dort auch Zwischenversionen ein.

                  Allerdings in modifizierter Version. Die hatte ich aber noch nicht getestet.

                  https://github.com/reloxx13/Sonoff-Tasmota-Modified

                  1 Reply Last reply Reply Quote 0
                  • T
                    TimmBo last edited by

                    So

                    Ich bin jetzt mit dem Aktuellen Adapter und 5.12.0e (ist jetzt eben drauf) unterwegs. Bis jetzt läuft alles gut.

                    Wenn nicht werde ich Die Sonoff downgraden.

                    Vielen Dank an alle die sich bis jetzt hier mit eingebracht haben.

                    Leider bin ich als Kfz Meister da nicht so der checker.

                    Wenn jemand ein Problem mit seinem Auto hat helfe ich aber gern weiter :lol:

                    Wenn jetzt alles laufen sollte werde ich noch weitere sonoff beim Ali bestellen und meine Frau würde sich über Funktionierende Lichtschalter freuen.

                    Mfg Timm

                    1 Reply Last reply Reply Quote 0
                    • Bluefox
                      Bluefox last edited by

                      Jetzt sollte man alle die Änderungen dann ins mqtt adapter übernehmen.

                      1 Reply Last reply Reply Quote 0
                      • modmax
                        modmax last edited by

                        @Bluefox

                        hab noch eine Änderung am sonoff-Adapter gemacht, so daß

                        nun auch das "alive"-Flag immer korrekt gesetzt wird.

                        Bisher war dies nicht möglich, weil der Timeout fehlt, wenn z.B. ein

                        Sonoff-Gerät vom Strom getrennt wurde, oder aufgrund eines Fehgler geschlossen wurde.

                        Die Änderungen habe ich auch den iobroker.mqtt-Adapter eingebaut.

                        Der MQTT-Server ist jedoch etwas komplexer und ich hoffe, ich habe die callbacks

                        beim Schließen eines Clients korrekt eingebaut.

                        MfG Markus

                        1 Reply Last reply Reply Quote 0
                        • B
                          broker100 last edited by

                          @modmax:

                          @Bluefox

                          hab noch eine Änderung am sonoff-Adapter gemacht, so daß

                          nun auch das "alive"-Flag immer korrekt gesetzt wird.

                          Bisher war dies nicht möglich, weil der Timeout fehlt, wenn z.B. ein

                          Sonoff-Gerät vom Strom getrennt wurde, oder aufgrund eines Fehgler geschlossen wurde.

                          Die Änderungen habe ich auch den iobroker.mqtt-Adapter eingebaut.

                          Der MQTT-Server ist jedoch etwas komplexer und ich hoffe, ich habe die callbacks

                          beim Schließen eines Clients korrekt eingebaut.

                          MfG Markus `

                          Habe das bei mir probiert, geht aber leider noch nicht mit dem alive.

                          Verwende Tamota 5.12.0h u. sonoff Adapter 2.0.2

                          Was wir moch aufgefallen ist, in dem Adpater wird die Firmware 4.1.1 angezeigt, obwohl der Adapter eindeutig 5.12.0h hat.

                          1 Reply Last reply Reply Quote 0
                          • modmax
                            modmax last edited by

                            @broker100

                            Dann poste nach einem Neustart des Sonoffs bitte mal:

                            1.) Log aus ioBroker im debug-Modus

                            2.) Konsole des Sonoffs (als Bild)

                            Am besten ein Zeitraum von 2-3 Minuten beginnend mit dem Neustart.

                            Nachtrag 1:

                            Hast Du die Sonoff-Adapter-Instanz nach der Installation über GitHub einmal neu gestartet?

                            Bei Update über GitHub werden die Seiten zwar aktualisiert, aber die Instanz nicht neu gestartet, was aber nötig ist.

                            Kann man leicht bei Update von 1.x auf 2.x feststellen: Denn in der Sonoff-Konfig gibt es nun einen Timeout.

                            Nachtrag 2:

                            Die 5.12.0h verwende ich gar nicht; sondern nur die 5.12.0d. Hatte nämlich einige Probleme schon mit der 5.12.0g, weil

                            da etwas in der Tasmota-Firmware geändert wurd, so daß bei mir INFO und States nicht zuverlässig ankamen.

                            Auch war die Sensitivität der WLAN-Verbindung schlecht, so daß sich der Sonoff 2-3 mal in der Stunde neu mit dem WLAN

                            verbunden hat.

                            Ich bin zwar auch einer von denen, die meistens die neueste Software aufspielen. Aber bei Tasmota bleibe ich vorerst bei

                            der 5.12.0d … bis dann mal eine finale und hoffentlich fehlerfreie 5.13.0 erscheint, die dann wieder so funktioniert wie erwartet.

                            1 Reply Last reply Reply Quote 0
                            • arteck
                              arteck Developer Most Active last edited by

                              ich hatte mit der 5.12.x nur probleme

                              bin auf die letzte von 5.11 geganegn.. hier läufts zur zeit

                              1 Reply Last reply Reply Quote 0
                              • M
                                Master77 last edited by

                                Hallo zusammen.

                                Habe ebenfalls die Version 5.11 drauf und die läuft schon seit einer ganzen Weile ohne Probleme.

                                Gruß Markus

                                Getippt von unterwegs mit Tapatalk Pro.

                                1 Reply Last reply Reply Quote 0
                                • M
                                  Micro1959 last edited by

                                  Ich habe einige Fragen:

                                  Viele sprechen von Tasmota Version 12.0.0h oder d

                                  1. Meine Firmware zeigt diesen Buchstaben garnicht, obwohl ich mit von der Github Seite den letzten Tasmota herunter geladen habe.

                                  2. Dann habe ich gestern festgestellt, daß, wenn ich die POWER schalte, der Status auf false bleibt, obwohl geschaltet wurde. Ich kann auch wieder ausschalten und der Status bleibt trotzdem auf false. Ist ja so nicht ganz richtig, oder?

                                  3. Gibt es eine Doku über die im Sonoff-Tasmota-Menü einstellbaren Werte. Mich würde mal, ohne auszuprobieren, interessieren, wofür die verschiedenen Einstellungen sind. Z.B. sehe ich an einigen Stellen (domus1).

                                  Über ein Paar Antworten würde ich mich freuen.

                                  LG aus Münster

                                  Volker

                                  1 Reply Last reply Reply Quote 0
                                  • modmax
                                    modmax last edited by

                                    Hi Micro1959,

                                    1.) Die Versionen mit einem Buchstaben hintendran sind keine Releases, die direkt über die Tasmota-Seite bereitgestellt werden.

                                    Jedoch werden von dem Tasmota-Autor immer Zwischenstände bereitgestellt, die man dann selber über GitHub herunterladen

                                    und selber kompilieren und flashen kann. Dies kann man über GitHub selber machen indem man

                                    die Seite "Commits" durchgeht und dort die entsprechende Version auswählt und herunterlädt.

                                    Eigentlich ist nämlich jede Änderung am Code, die auf GitHub gemacht wird, eine eigenständige Version, die mal

                                    mehr mal weniger gut ist.

                                    Releases (also ohne Buchstaben) ist dann das, was der Autor am Ende als fertige Version (nach x Änderungen) festlegt.

                                    2.) Kann ich aktuell nicht nachvollziehen. Um das zu klären, bräuchte man Firmware-Version des Sonoffs, ioBroker-SonoffAdapter-Version

                                    und ein Logile aus ioBroker, daß auf debug-LogLevel getellt ist und am besten einen Auszug aus der Tasmota-Konsole.

                                    3.) Siehe Tasmota-Wiki

                                    https://github.com/arendst/Sonoff-Tasmota/wiki/Commands

                                    MfG Markus

                                    1 Reply Last reply Reply Quote 0
                                    • B
                                      broker100 last edited by

                                      ` > Dann poste nach einem Neustart des Sonoffs bitte mal:

                                      1.) Log aus ioBroker im debug-Modus

                                      2.) Konsole des Sonoffs (als Bild)

                                      Am besten ein Zeitraum von 2-3 Minuten beginnend mit dem Neustart. `

                                      Entwarnung!

                                      Ich habe alles nochmal neu gestartet und die Datenpunkte vorher maneall gelöscht.

                                      Jetzt läuft es mit der Version 5.12.0h, auch das alive wird jetzt aktualisiert.

                                      Danka nochmals

                                      broker

                                      1 Reply Last reply Reply Quote 0
                                      • M
                                        Micro1959 last edited by

                                        Irgendwie geht es doch wieder. Keine Ahnung, warum nicht gestern. Trotzdem, danke #Markus

                                        auch für die anderen Antworten, die sehr aufschlussreich waren.

                                        1 Reply Last reply Reply Quote 0
                                        • K
                                          klassisch Most Active last edited by

                                          Nach dem Update auf V2.0.2 war das Password weg. Musste ich wieder neu setzen

                                          ! sonoff.0 2018-04-01 06:38:39.105 warn Client [SonoffS20-02] has invalid password(*****************) or username(DVES_USER) sonoff.0 2018-04-01 06:38:39.017 warn Client [TestSonPow] has invalid password(*****************) or username(DVES_USER) sonoff.0 2018-04-01 06:38:13.355 warn Client [SonoffS20-01] has invalid password(*****************) or username(DVES_USER) sonoff.0 2018-04-01 06:38:13.343 warn Client [SonoffS20-02] has invalid password(*****************) or username(DVES_USER) sonoff.0 2018-04-01 06:38:13.000 warn Client [TestSonPow] has invalid password(*****************) or username(DVES_USER) sonoff.0 2018-04-01 06:38:07.606 info Starting MQTT authenticated server on port 1500 sonoff.0 2018-04-01 06:38:07.464 info starting. Version 2.0.2 in /opt/iobroker/node_modules/iobroker.sonoff, node: v6.13.1 host.orangepiplus2e 2018-04-01 06:38:03.275 info instance system.adapter.sonoff.0 started with pid 14685 host.orangepiplus2e 2018-04-01 06:38:01.228 info instance system.adapter.sonoff.0 terminated with code 0 (OK) sonoff.0 2018-04-01 06:38:01.173 info terminating iobroker 2018-04-01 06:38:01.034 info exit 0 iobroker 2018-04-01 06:38:00.966 info Adapter "sonoff" updated iobroker 2018-04-01 06:38:00.896 info upload [0] sonoff.admin /opt/iobroker/node_modules/iobroker.sonoff/admin/index.html index.html text/html iobroker 2018-04-01 06:38:00.823 info upload [1] sonoff.admin /opt/iobroker/node_modules/iobroker.sonoff/admin/index_m.html index_m.html text/html !
                                          Nach dem erneuten Eingeben des PWD und PWD confirmation war wars dann i.O.

                                          ! ````
                                          sonoff.0 2018-04-01 06:47:07.824 info Client [SonoffS20-01] connected
                                          sonoff.0 2018-04-01 06:46:57.105 info Client [TestSonPow] connected
                                          sonoff.0 2018-04-01 06:46:57.047 info Client [SonoffS20-02] connected
                                          host.orangepiplus2e 2018-04-01 06:46:51.304 info instance system.adapter.sonoff.0 started with pid 17083
                                          host.orangepiplus2e 2018-04-01 06:46:48.875 info instance system.adapter.sonoff.0 terminated with code 0 (OK)
                                          sonoff.0 2018-04-01 06:46:48.729 info terminating
                                          host.orangepiplus2e 2018-04-01 06:46:48.696 info stopInstance system.adapter.sonoff.0 killing pid 14685
                                          host.orangepiplus2e 2018-04-01 06:46:48.693 info stopInstance system.adapter.sonoff.0
                                          host.orangepiplus2e 2018-04-01 06:46:48.674 info object change system.adapter.sonoff.0
                                          sonoff.0 2018-04-01 06:46:41.056 warn Client [SonoffS20-01] has invalid password(*****************) or username(DVES_USER)
                                          sonoff.0 2018-04-01 06:46:30.561 warn Client [TestSonPow] has invalid password(****************) or username(DVES_USER)

                                          1 Reply Last reply Reply Quote 0
                                          • ?
                                            A Former User last edited by

                                            Hallo Chefkoch009,

                                            ich habe nun der Einfachheit halber aus dem bestehenden Projekt ein kleines Setup raus kopiert und als neues Projekt erstellt.

                                            Dort habe ich alle DPTs gesetzt. Wenn ich nun das Projekt in den KNX Adapter lade dann wird der Raum 1 erstellt allerdings werden 0 Objekte importiert.

                                            Das Testprojekt ist allerdings zu GroГџ um es hochzuladen. Wie kann ich es dir zukommen lassen?

                                            LG Abry88

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            395
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            75
                                            720
                                            183716
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo