Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Waschmaschine läuft, aus, fertig

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Waschmaschine läuft, aus, fertig

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

      Da immer wieder Fragen zu Sonoff Pow in Verbindung mit Waschmaschinen- oder Trocknerstatus gestellt werden, stelle ich mein Umsetzung vor. Der Sonoff-Pow ist mit Tasmota geflasht. Verbesserungsvorschläge zur Anleitung immer gerne.

      Es hat mir bei anderen Umsetzungen nicht gefallen den sonoff Pow Leistungswert direkt auszuwerten. Ich stelle mir vor wenn die Waschmaschine beim Umkehr der Drehrichung (z.B. beim Schleudern) mitten im Programm einen sehr geringen Leistungswert hat. Hier könnten sich unerwünschte Statusänderungen ergeben. Meine Idee ist, eine Liste (powerlist)mit 5 Einträgen zu verwenden und jede Minute einen aktuellen Leistungswert eintragen. So kann man mit einem "beruhigten" Mittelwert arbeiten. Das Script läuft bei mir dauerhaft und die Liste wird beim Starten des Scripts erstellt. Die Datenpunkte und Variablen in den Scripten habe ich kursiv dargestellt.

      Bei jeden minütlichen Intervall setze ich den Zähler (zaehler) um 1 hoch bis der Wert 5 erreicht wird, dann wird der Zähler wieder auf 0 gesetzt. So kann ich die Zählervariable nutzen um zyklisch die aktuell aufgenomme Leistung der Waschmaschine in die Listenpositionen 1 bis 5 zu schreiben.
      So habe ich die Möglichkeit den Mittelwert (avg_value) der letzten (max 5) Messungen zu ermitteln und diesen auszuwerten. Somit habe ich den Messwert "etwas beruhigt".

      9531f95c-9473-4430-9d88-4b2a09bba5ec-image.png
      Der Sonoff Pow sendet bei mir alle 30 Sekunden die Daten, dieser Wert kann über die Sonoff Konsole mit dem Befehl TelePeriod 30 gesetzt werden. Wer seinen Sonoff Pow kalibrieren möchte wird hier fündig.
      31cbdb19-9bef-4fff-bebf-107ff160dd6f-image.png

      57fca1d9-64f2-4ef3-ad65-937458b66d78-image.png

      Die Auflösung für aktuelle Leistungsaufnahme in Watt und den Energieverbrauch in Kwh habe ich per Sonoff-Konsole auf folgende Werte gesetzt:

      • wattres 1 - Leistungswert auf 1 Nachkommastelle
      • energyres 2 - Energiewerte auf 2 Nachkommastellen (für spätere Kostenermittlung pro Waschgang)

      2d70674e-e76f-4d7d-8053-8ff679c74769-image.png

      Für die Darstellung in VIS habe ich mir 2 Datenpunkte (trockner_state als Zahl, trockner_state_text als String) erstellt. Den ersten Datenpunkt nutze ich für die jeweilige Darstellung der Bilder, den zweiten für den Status-Text.
      f811f8ba-1b65-42ee-9228-568f14df3922-image.png

      Im letzten Blockly Teil folgt noch das Setzen des Status und Statustextes. Für mich habe ich mir folgende Schwellenwerte für einen Wäschetrockner ermittelt:

      • kleiner gleich 2 Watt ist AUS, der Trockner ist dann auch wirklich am Gerät ausgeschaltet (trockner_state == 3)
      • größer als 2 Watt und kleiner gleich 160 Watt, der Trockner ist Fertig (trockner_state == 2)
      • größer als 160 Watt, der Trocker läuft (trockner_state == 1)

      Die Schwellenwerte im Blockly-Script müsst ihr je nach Gerät anpassen, wie schon gesagt schaut euch die Mittelwerte über einen oder mehrere Waschgänge im Log an und ermittelt die für euch passenden Werte!

      Um einen Überblick, über die minütlich ermittelten Mittelwerte zu bekommen habe ich mir diese per debug output (Blockly > Sytem) in die Konsole ausgegeben. Anschließend habe ich mir die Logausgaben eines Trocknerdurchlaufs in eine Datei gespeichert und mit LogExpert gefiltert und angeschaut. Dies hat den Vorteil, dass man während des Waschgangs nicht immer vor dem iobroker-Logfenster sitzen muss!

      0ba0e729-8355-4eba-a962-9148e510c39e-image.png

      Es reicht aber auch aus sich die Logausgaben direkt im iobroker zu filtern und direkt anzuschauen.

      12283ad0-601d-4ba9-a6bd-c41279a83b8c-image.png

      b1799960-7dcd-49bd-98a0-93ac662d785d-image.png

      <xml xmlns="http://www.w3.org/1999/xhtml">
      <block type="variables_set" id="0aa?[W^Eiz/+s!b_cjv:" x="-462" y="-62">
      <field name="VAR">powerlist</field>
      <value name="VALUE">
      <block type="lists_create_with" id="l{)ggJUIC^MB5~HnpkK">
      <mutation items="1"></mutation>
      <value name="ADD0">
      <block type="lists_repeat" id="qTquchIQ2hsLO@+nwdb"> <value name="NUM"> <shadow type="math_number" id="OOxCj9]M~w6x,4GjIY1w"> <field name="NUM">5</field> </shadow> </value> <value name="ITEM"> <block type="math_number" id="}J@R=hD{b4@:1|m;fr@1"> <field name="NUM">0</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="_wJwOrDH[-@z)7#f.]~d"> <field name="VAR">zaehler</field> <value name="VALUE"> <block type="math_number" id="^1qClPKO)byi*^}y
      rl">
      <field name="NUM">1</field>
      </block>
      </value>
      <next>
      <block type="timeouts_setinterval" id="R8G,T3uOIZ5^nKaY{6Z}">
      <field name="NAME">Intervall</field>
      <field name="INTERVAL">1</field>
      <field name="UNIT">min</field>
      <statement name="STATEMENT">
      <block type="lists_setIndex" id="i[9ekb#FxDO[Q,XJUf%z">
      <mutation at="true"></mutation>
      <field name="MODE">SET</field>
      <field name="WHERE">FROM_START</field>
      <value name="LIST">
      <block type="variables_get" id="r]E9:0GGU,7t#Tqmsr0A">
      <field name="VAR">powerlist</field>
      </block>
      </value>
      <value name="AT">
      <block type="variables_get" id="OEy#cK{(ocW-W/P=0REj">
      <field name="VAR">zaehler</field>
      </block>
      </value>
      <value name="TO">
      <block type="get_value" id="1}qZEO:SOFgy~d;!g;/K">
      <field name="ATTR">val</field>
      <field name="OID">sonoff.0.sonoff-pow-02.ENERGY_Power</field>
      </block>
      </value>
      <next>
      <block type="controls_if" id="x(3]2/PR=(yMJ}uG?Uh,">
      <value name="IF0">
      <block type="logic_compare" id="HsSrLZlMD0fDvd}LBHRP">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="variables_get" id="YPHVohUdGN/YmEVD{v">
      <field name="VAR">zaehler</field>
      </block>
      </value>
      <value name="B">
      <block type="math_number" id="OG6z9tzsrW|MVnF@N590">
      <field name="NUM">5</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="variables_set" id="}26op)#ACFS@6GCrqdsM">
      <field name="VAR">zaehler</field>
      <value name="VALUE">
      <block type="math_number" id=":U2HH_Tw43Z9dw[B(E0Z">
      <field name="NUM">0</field>
      </block>
      </value>
      </block>
      </statement>
      <next>
      <block type="math_change" id=")DYK%F553DwziokE]-p*">
      <field name="VAR">zaehler</field>
      <value name="DELTA">
      <shadow type="math_number" id="B8xv]2@}Pt8_lYV;Y6D">
      <field name="NUM">1</field>
      </shadow>
      </value>
      <next>
      <block type="variables_set" id="7j-hdnljTg~+n;hMm#j">
      <field name="VAR">avg_value</field>
      <value name="VALUE">
      <block type="math_on_list" id="b
      )d0^t{W1V#)z47Z1h(">
      <mutation op="AVERAGE"></mutation>
      <field name="OP">AVERAGE</field>
      <value name="LIST">
      <block type="variables_get" id="r-/qP?MC)4!OxRnYex/F">
      <field name="VAR">powerlist</field>
      </block>
      </value>
      </block>
      </value>
      <next>
      <block type="controls_if" id="xBQ6a7WY}7jH~,VrbA5L">
      <mutation elseif="2"></mutation>
      <value name="IF0">
      <block type="logic_compare" id="G(%Xbg3S95.u*[rIEWL">
      <field name="OP">LTE</field>
      <value name="A">
      <block type="variables_get" id="#V]okvvd)vkX8N.s``P5">
      <field name="VAR">avg_value</field>
      </block>
      </value>
      <value name="B">
      <block type="math_number" id=":N/u3F
      uq]M^8B-F
      -vS">
      <field name="NUM">2</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="control" id="YweL#_MKYw{V/6EeIWa"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Datenpunkte.trockner_state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="+!@m,kSI9w.UFA##-d}U"> <field name="NUM">3</field> </block> </value> <next> <block type="control" id="Ds*+Ug=AQDO.7MXGvJ=5"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Datenpunkte.trockner_state_text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="RvkvK#cQS,ndtN:JpDQ7"> <field name="TEXT">AUS</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_operation" id="Z~DQ^ZJIpSo#Fn]W{a#">
      <field name="OP">AND</field>
      <value name="A">
      <block type="logic_compare" id="Rox/4sZoO|{se*CJWsc"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="w_(lGcq(:,]D/p!(;ENE"> <field name="VAR">avg_value</field> </block> </value> <value name="B"> <block type="math_number" id="ZqlLC1UmscGXeX;CGo!U"> <field name="NUM">2</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="sX|uK!|2V3{;+{qd*r4,"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="wqoxHt;(KY]uWai?,2%("> <field name="VAR">avg_value</field> </block> </value> <value name="B"> <block type="math_number" id="ViVTv,Jy=Bw8D!GQnp:F"> <field name="NUM">160</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="fWE!9k}:4a59(K8zobk^"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Datenpunkte.trockner_state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="8)q)4;,at@Luu8Kn}m:w"> <field name="NUM">2</field> </block> </value> <next> <block type="control" id="mKXD;CMErc5WR17P3pOB"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Datenpunkte.trockner_state_text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="@Au,q7ZNS=5^iTgSii(z"> <field name="TEXT">FERTIG</field> </block> </value> </block> </next> </block> </statement> <value name="IF2"> <block type="logic_compare" id="+6;Et~K}UxVMk.N]Q(KS"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="n],K)_RS)+G9StEHz4#g"> <field name="VAR">avg_value</field> </block> </value> <value name="B"> <block type="math_number" id="1B]@,Q)7YKgl#7oc*DWO"> <field name="NUM">160</field> </block> </value> </block> </value> <statement name="DO2"> <block type="control" id="i=_CBQ=B-3~{ee[4,L2B"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Datenpunkte.trockner_state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="u3bug^@_e9LwQj8Dv[w|"> <field name="NUM">1</field> </block> </value> <next> <block type="control" id="EE@z_/t,,hcHQPG2LWp">
      <mutation delay_input="false"></mutation>
      <field name="OID">javascript.0.Datenpunkte.trockner_state_text</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="text" id="cN#/BId7WJmLsD!b6,n2">
      <field name="TEXT">Trocknet noch...</field>
      </block>
      </value>
      </block>
      </next>
      </block>
      </statement>
      </block>
      </next>
      </block>
      </next>
      </block>
      </next>
      </block>
      </next>
      </block>
      </statement>
      </block>
      </next>
      </block>
      </next>
      </block>
      </xml>

      In vis habe ich das Widget Basic > HTML benutzt und Icons vom Adapter Icons from Icons8.com. Sieh Screenshot.

      Im Widget tausche ich über die Signalbilder die Icons (zu den jeweiligen trockner_state). Eigentlich ist es kein Tauschen, sondern je nach Status werden andere Bilder dargestellt.
      bf147098-a8bf-42d6-af00-01a0c3425981-image.png

      Zusätzlich zu den farbigen Waschmaschinen lasse ich mir noch den Status in Textform darstellen. Diesen hole ich mir über den Datenpunkt trockner_state_text und stelle ihn mit dem Widget basic > String dar.

      5149408c-c83a-45a0-9dd4-aa00792b01cd-image.png

      Den Datenpunkt trockner_state nutze ich auch um die Beendigung des Trockenvorgangs per Alexa im Wohnzimmer anzusagen.
      61a3522a-ab6f-40f0-b44b-d0387230265a-image.png

      Ich hoffe dieses kleine Kochrezept hilft einigen Einsteigern. Hier ist natürlich noch Raum für "schöner Wohnen"....

      ToDo

      • die Anzeige der Kosten pro Waschgang
      • Kosten pro Woche
      • abgelaufene Zeit im Waschgang
      • ...

      Viel Spaß und Gruß Andreas ☺

      1 Reply Last reply Reply Quote 9
      • Stabilostick
        Stabilostick last edited by

        Jetzt noch das kommende Wetter abfragen, die Stromerzeugung der PV-Anlage erfassen, eine Prognose über den Hausverbrauch erstellen lassen und dann bei sich abzeichnenden Überschuss den Trockner/Waschmaschine automatisch gleitend einschalten lassen.

        1 Reply Last reply Reply Quote 1
        • G
          Georgius last edited by

          Was ist LogExpert?

          D 1 Reply Last reply Reply Quote 0
          • E
            excalibur270 last edited by

            Funktioniert soweit. Danke.
            Aber ich bekomme die logausgabe nicht so angezeigt wie bei dir. Da steht halt nur ### Status: 3
            Wie bekomme ich das hin.

            1 Reply Last reply Reply Quote 0
            • D
              darkiop Most Active @Georgius last edited by

              @Georgius https://github.com/zarunbal/LogExpert

              1 Reply Last reply Reply Quote 0
              • D
                deta Most Active last edited by

                Wo hast du das mit Alexa angehängt? Hast du das Blocky für die Waschmaschiene auch? Wäre klasse.
                cu Deta

                E 1 Reply Last reply Reply Quote 0
                • E
                  excalibur270 @deta last edited by excalibur270

                  @deta hier einfach nachbauen

                  D 1 Reply Last reply Reply Quote 0
                  • D
                    deta Most Active @excalibur270 last edited by

                    @excalibur270 sagte in Waschmaschine läuft, aus, fertig:

                    @deta hier einfach nachbauen

                    Das ist ja nicht das Problem, wo kommt der Nachbau dann hin ran? Extra?

                    E 1 Reply Last reply Reply Quote 0
                    • E
                      excalibur270 @deta last edited by

                      @deta jup. Extra script

                      1 Reply Last reply Reply Quote 0
                      • D
                        deta Most Active last edited by deta

                        Fehler gefunden Skript läuft. Werde es jetzt mal beobachten.

                        1 Reply Last reply Reply Quote 0
                        • D
                          deta Most Active last edited by deta

                          Fehler gefunden Skript läuft. Werde es jetzt mal beobachten.

                          1 Reply Last reply Reply Quote 0
                          • D
                            deta Most Active last edited by

                            Frage, ich habe bei mir wenn die Maschiene Fertig gewaschen hat, 2 Watt Standby aus 0 Watt.
                            Wie lange wartet das Skript, bis es den Status ändert?
                            Das heißt, wenn 2 Watt erreicht sind über eine Zeit X Welche? schaltet er den Status um?

                            cu Deta

                            1 Reply Last reply Reply Quote 0
                            • D
                              deta Most Active last edited by

                              Verständniss Fragen:

                              kleiner gleich 2 Watt ist AUS, der Trockner ist dann auch wirklich am Gerät ausgeschaltet (trockner_state == 3)
                              

                              Das ist klar, Verbraucht dein Trockner 2 Watt wenn er aus ist? Bei mir sind das 0 Watt. Hab es bei mir geändert auf 1 Watt

                              größer als 2 Watt und kleiner gleich 160 Watt, der Trockner ist Fertig (trockner_state == 2)
                              

                              Das verwirrt nich, wenn die Maschiene fertig ist und nur noch Stand by ist, dann kann Sie doch nicht mehr als 2 Watt bis 160 Watt verbrauchen? Meine liegt da bei 1 bis 2 Watt.

                              größer als 160 Watt, der Trocker läuft (trockner_state == 1)

                              Das ist klar, bei mir alles was über 3 Watt ist wäscht...

                              E 1 Reply Last reply Reply Quote 0
                              • G
                                Georgius last edited by

                                Umso höher der Stanbyverbrauch ist umso besser kann man ihn erkennen. 😞

                                Wenn beim TO der Standby ca. 3W verbraucht werden ist das mehr als 2W. Realistisch könnte man auch >2W und kleiner 4W schreiben, allerdings hat man dann einen undefinierten Bereich., den man durch die Mittelung auch erreichen wird.

                                Wo die 3 Bereiche liegen müssen muß jeder selbst einstellen.
                                Gerade bei Waschmaschinen mit unterschiedlichen Programmen kann es schwierig werden.

                                D 1 Reply Last reply Reply Quote 0
                                • D
                                  deta Most Active @Georgius last edited by

                                  @Georgius Hab Waschmaschiene und Trockner extra immer. Also nicht in einer Maschiene, ich denke da wirds dann problematisch, wenn Wasch und Trockner ein Gerät ist.

                                  Hab mal das Skript weiter angepasst, mal sehen, ob es jetzt das macht was es soll. Meine Frau hat Waschtag 😁

                                  cu Deta

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

                                    Diesen Sonoff Schalter ohne Schutzleiter in einem total wasserungeschützten Gehäuse zu betreiben, ist nicht ohne Risiko. Ich hoffe Du hast den weit weg von Deiner Waschmaschine montiert.

                                    E 1 Reply Last reply Reply Quote 0
                                    • E
                                      excalibur270 @Marty56 last edited by

                                      @Marty56 ist das e nicht Erde?

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

                                        Stimmt, die Erde wird durchgeführt. Der Schalter selbst ist allerdings weit weg von Spritzwassergeschützt.

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

                                          kann sein. Meine Sonoffs hatte keinen Schutzleiter. Aber vielleicht ist das ein anderer Typ.

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

                                            Der Pow leitet den Schurtleiter durch

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            805
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            27
                                            8251
                                            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