Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Andreas Staecker

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Profile
    • Following 0
    • Followers 0
    • Topics 5
    • Posts 20
    • Best 1
    • Groups 1

    Andreas Staecker

    @Andreas Staecker

    9
    Reputation
    78
    Profile views
    20
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Andreas Staecker Follow
    Starter

    Best posts made by Andreas Staecker

    • Waschmaschine läuft, aus, fertig

      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 ☺

      posted in Praktische Anwendungen (Showcase)
      Andreas Staecker
      Andreas Staecker

    Latest posts made by Andreas Staecker

    • RE: Raspberry Pi4 kommt wohl erst 2020, Alternativen zum Pi3B+?

      @reini Was hast du den für einen NUC und was hat er gekostet? Gruß Andreas

      posted in Hardware
      Andreas Staecker
      Andreas Staecker
    • RE: Probleme mit Blockly (gelöst)

      @Motsche1 In deinem Blockly ist der Wert für "annerkannt ist" leer!
      f8aa6a0f-f26d-4ff2-a22d-05dd4dc4f4d4-image.png
      Nur so eine Idee, versuch mal auf "egal" zu setzen...

      Kannst du denn den den Datenpunkt "Aussentemsteuerung" per Hand unter Objekte auf true und false setzen?

      Gruß Andreas

      posted in Skripten / Logik
      Andreas Staecker
      Andreas Staecker
    • RE: Probleme mit Blockly (gelöst)

      Sorry ich habe dummes Zeug erzählt. Wert geht , wusste ich nicht...

      0d9ebcc7-88f4-4d48-8490-c416b4908d2e-image.png

      War ein Schnellschuß von mir....

      posted in Skripten / Logik
      Andreas Staecker
      Andreas Staecker
    • RE: Probleme mit Blockly (gelöst)

      893c2d9f-6430-499a-9cc0-ce7d029d2259-image.png
      Du must statt Wert den Wert des Objekts nehmen.

      posted in Skripten / Logik
      Andreas Staecker
      Andreas Staecker
    • RE: Raspberry Pi4 kommt wohl erst 2020, Alternativen zum Pi3B+?

      @nricky1965 Ich habe mit einem Voltcraft Energiy Logger 4000 gemessen und der Zeigt 2,5 Watt an. Scheint mir aber sehr wenig. Wenn ich die Admin Oberfläche aktuallisiere geht die Leistung auf ca. 6 Watt. Ich habe allerdings auch keine USB-Verbraucher angeschlossen, an dem Gerät sind nur das mitgelieferte Netzteil und ein Ethernetkabel angeschlossen.

      Ich glaube ich werde noch mal mit einem zweiten Messgerät messen, dies ist aber hinterm Schreibtisch verbaut. Muss ich erst aus der Kabelwanne raus operieren. Werde ich die Tage mal machen.

      Selbst bei 10 Watt Dauer-Verbrauch sind das:

      • im Monat 7,2 Kwh (2,16 Euro)
      • im Jahr 88 Kwh (26 Euro)

      Mir ist es das auf jeden Fall wert. Ich kenne den unterschied zwischen dem Raspberry Pi 3 und dem beelink. Jetzt macht das Programieren und Arbeiten mit vis wieder Spaß 👍

      BeeLink wirbt auf der Homepage mit einer Leistungsaufnahme von maximal 10 Watt!

      16b76961-96e7-4609-809e-de6ec11451fe-image.png

      Der Rechner langweilt sich und hat noch über 3Gb freien Arbeitsspeicher.
      db67e69e-4fd4-4c6c-9fb1-4d9a151c52f4-image.png

      f2ce9297-8ee6-474e-9360-2f7529f43c8c-image.png

      posted in Hardware
      Andreas Staecker
      Andreas Staecker
    • RE: Raspberry Pi4 kommt wohl erst 2020, Alternativen zum Pi3B+?

      @nricky1965 Ich werde am Wochenende mal messen...

      posted in Hardware
      Andreas Staecker
      Andreas Staecker
    • RE: Drei Zustände einer Waschmaschine in VIS

      @Herzog97944 schau dir mal den Beitrag an. Ich habe hier meine Umsetzung dargestellt. Vielleicht kannst du hier ein paar Ideen abgreifen....
      Gruß Andreas

      posted in Visualisierung
      Andreas Staecker
      Andreas Staecker
    • Waschmaschine läuft, aus, fertig

      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 ☺

      posted in Praktische Anwendungen (Showcase)
      Andreas Staecker
      Andreas Staecker
    • RE: WLAN Smart Steckdosen Empfehlung

      Ich nutze den Sonoff Pow 16A. Habe mir eine gute Verlängerungsleitung (1,5mm2) gekauft,diese aufgetrennt und den Pow zwischengeschaltet.
      49310170-43f8-4f26-a214-05da50097931-grafik.png
      Den Pow habe ich an die Fliesen geklebt. Kann man aber auch anschrauben. Der Pow läuft bei mir schon seit einem halben Jahr einwandfrei.

      Gruß Andreas

      posted in Hardware
      Andreas Staecker
      Andreas Staecker
    • RE: Raspberry Pi4 kommt wohl erst 2020, Alternativen zum Pi3B+?

      Ich habe erst ende 2018 mit iobroker angefangen und bis Gestern auf einem RaspberryPi3+ laufen gehabt. Es hat nicht wirklich spass gemacht, der raspi lief vom Arbeitsspeicher her am Limit. Auch das Blockly-Handling war sehr unbefriedigend. Ich habe mir den Beelink x45 mit 4Gb Arbeitsspeicher für ca. 200 Euro bestellt und bin mit dem gesamten iobroker auf den neuen Rechner umgezogen. beelink x45 bei Amazon

      b586866d-0b18-4223-8a6c-02511b796562-grafik.png
      Den Umzug habe ich nach einer Anleitung von Dennis (SchimmerMediaHD) durchgeführt.

      Soweit läuft alles wieder und ich bin sehr zufrieden. Jetzt macht mir das Programmieren mit Blockly wieder richtig fun und die Bedienung von iobroker geht richtig flott. Die Entscheidung zu einem etwas teureren Rechner habe ich nicht bereut.
      Als Betriebssystem habe ich Debian9 ohne Desktop installiert.
      Was ich nicht auf die Schnelle hinbekommen habe, ist den conbee-Stick an dem neuen Rechner zu betreiben. Den conbee-Stick betreibe ich erstmal weiter am alten Raspi weiter, bis ich oder jemand anderes eine Lösung für den BeeLink-Rechner habe.

      Gruß Andreas

      posted in Hardware
      Andreas Staecker
      Andreas Staecker
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo