NEWS
CRON ... ich heul gleich :-(
-
Hallo Community,
ich bin gerade an einem Blockly dass ab X Uhr bei meinem Verstärker regelmäßig auf den Stromverbrauch schauen soll um ihn auszuschalten, nur um ihn dann am nächsten Tag um Y Uhr wieder anzuschalten. Ok, das mal zur Ausgangssituation. Das ganze ist gelöst in einem verschachtelten Blockly und funktioniert mit manuellen Eingaben auch soweit ganz gut. Da man das ganze aber auch verstellen können soll, wollte ich das ganze dynamisch tun. Hier verzweifel ich. Vielleicht kennt ja jemand die Lösung
Wenn ich das so stehen lasse, startet iobroker um 11 Uhr 23 das Script ... wunderbar
Der Wert von Uhrzeit_Sonos_...._Stunde ist 11 und eine "Number", Uhrzeit_Sonos...Minute ist 23 und ebenfalls eine "Number"
Eigentlich würde ich erwarten, dass wenn ich nun die Bausteine zusammenziehe, alles genau so funktioniert wie bei der händischen Eingabe ....
... tut es aber nicht.Wo nutze ich das CRON falsch ??
Schonmal Danke vorab für eure Unterstützung
Steffen -
@steffensammet sagte in CRON ... ich heul gleich
:
Wo nutze ich das CRON falsch ??
was machst du da überhaupt?
Der Trigger ist innerhalb einer Funktion?
und sonst nichts?
-
@steffensammet sagte: Wo nutze ich das CRON falsch ??
Es wird ein anderer Zeitplan gestoppt als der, der geändert werden soll.
-
Sorry, ich muss euch natürlich das ganze Bild zeigen. Wie bereits geschrieben, geht es darum dass es zwei Eingaben gibt. Um welche Zeit sollen die AMPs eingeschaltet werden und ab welcher Zeit können sie ausgeschalten werden (unter der Bedingung dass keine Musik mehr gespielt wird).
Erstmal fange ich bei der Funktion an. Sie läuft mit Start des Skript an und wird nochmals getriggert falls sich eine Uhrzeit (Start oder Ende) ändert:
Wenn die Zeit soweit ist, dass meine AMPs eingeschaltet werden sollen, sollte dieses Skript das tun:
Es wird erst eine Überwachung gestoppt die mir die AMPs ausschaltet; danach werden die AMPs eingeschalten.
Soweit so gut, nun hier die Überwachung des Ausschalteteils
Ab der Uhrzeit "Sonos darf ausgehen" soll im 5 Minutentakt abgefragt werden ob noch Musik läuft. Um nicht in die Bredullie zu kommen, man schaltet die AMPs an, bis alles hochgefahren ist wird schon wieder der Strom gekappt, habe ich eine Variable "Sonos wieder abschalten" die erstmal getriggert wird bevor dann 5 Minuten später tatsächlich geschalten wird....
Wie gesagt, die Zeit-Trigger der CRON Funktion reagieren (warum auch immer) nicht
Steffen
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="cron" id="Sonos AMP anschalten">Sonos AMP anschalten</variable> <variable type="cron" id="Sonos AMP ausschalten Startzeitpunkt der Abfrage">Sonos AMP ausschalten Startzeitpunkt der Abfrage</variable> <variable type="cron" id="Sonos AMP abfrage">Sonos AMP abfrage</variable> </variables> <block type="procedures_callnoreturn" id="M.f?|B/?3Mr~4LuJnXKE" x="63" y="-62"> <mutation name="registriere Sonos Ansschalten"></mutation> <next> <block type="procedures_callnoreturn" id="rnbEg_zxp~+!}8H{G}}4"> <mutation name="registriere Sonos Ausschalten"></mutation> <next> <block type="on_ext" id="UI@hVhdtN%w$lz#GZ|JS"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="4"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="6J?k@#WZv6!*}HlI~MA/"> <field name="oid">0_userdata.0.Sound.Uhrzeit_Sonos_AMP_anschalten_heute_Minute</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id=")WJz$NIJO/rr*|JjrdNQ"> <field name="oid">0_userdata.0.Sound.Uhrzeit_Sonos_AMP_anschalten_heute_Stunde</field> </shadow> </value> <value name="OID2"> <shadow type="field_oid" id="FM|YeC9)D4CH{#]2D_^?"> <field name="oid">0_userdata.0.Sound.Uhrzeit_Sonos_AMP_ausschalten_heute_Minute</field> </shadow> </value> <value name="OID3"> <shadow type="field_oid" id="6yZ`03=8eww0(4,Tq%2)"> <field name="oid">0_userdata.0.Sound.Uhrzeit_Sonos_AMP_ausschalten_heute_Stunde</field> </shadow> </value> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="j],]-]q]izYDzv0|Z2ny"> <mutation name="registriere Sonos Ansschalten"></mutation> <next> <block type="procedures_callnoreturn" id="k/mU:H*B-@9/aWaU$`XT"> <mutation name="registriere Sonos Ausschalten"></mutation> </block> </next> </block> </statement> </block> </next> </block> </next> </block> <block type="procedures_defnoreturn" id="v8L8H/_;GQ.{,i?@snnn" x="63" y="263"> <field name="NAME">registriere Sonos Ansschalten</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="schedule_create" id="{Fu.cG-=(@$l9G`0eDEV"> <field name="NAME">Sonos AMP anschalten</field> <value name="SCHEDULE"> <shadow type="field_cron" id="k[sGhHcvY4/$epZc|n8m"> <field name="CRON">* * * * *</field> </shadow> <block type="cron_builder" id="bd};=2Pt`{8gUZ3~SzHF"> <mutation xmlns="http://www.w3.org/1999/xhtml" seconds="false" as_line="false"></mutation> <field name="LINE">FALSE</field> <field name="WITH_SECONDS">FALSE</field> <value name="DOW"> <shadow type="text" id="D9S.#:g./|#K]6I/2V-o"> <field name="TEXT">*</field> </shadow> </value> <value name="MONTHS"> <shadow type="text" id="3P^gi!n/0:OE:+pMCPGr"> <field name="TEXT">*</field> </shadow> </value> <value name="DAYS"> <shadow type="text" id="j@@RpIIF+a0f/}C$ce,w"> <field name="TEXT">*</field> </shadow> </value> <value name="HOURS"> <shadow type="text" id="1,-24W^%2}SlOlbCxp~~"> <field name="TEXT">11</field> </shadow> <block type="get_value" id="prO?xcKzbI@-ER{YB-3t"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Sound.Uhrzeit_Sonos_AMP_anschalten_heute_Stunde</field> </block> </value> <value name="MINUTES"> <shadow type="text" id="1I{Zmr?.G|5rLa^Y`Z?g"> <field name="TEXT">25</field> </shadow> <block type="get_value" id="Sn6xSW.h:!=]v+jS4uqE"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Sound.Uhrzeit_Sonos_AMP_anschalten_heute_Minute</field> </block> </value> </block> </value> <statement name="STATEMENT"> <block type="debug" id="rU7nIm|JvcSHMPx@$ri$"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="[u:hQB_]1lOCRa9LN{0S"> <field name="TEXT">Stop Abfrage</field> </shadow> </value> <next> <block type="schedule_clear" id="EoaWQ9RmaG,PGf,Y,77q"> <field name="NAME">Sonos AMP abfrage</field> <next> <block type="control" id="W^OSi?L3NWl|Q}mH?f6%"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">bshb.0.hdm:ZigBee:50325ffffe6f76b9.PowerSwitch.switchState</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="pf6Qc234$.vnpCqDRz=c"> <field name="TEXT">ON</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> <block type="procedures_defnoreturn" id="K:vtn#ngOw|0R%u+fx+V" x="1013" y="263"> <field name="NAME">registriere Sonos Ausschalten</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="schedule_clear" id="[[7l7/,6Yx[Y9?d#ESn1"> <field name="NAME">Sonos AMP abfrage</field> <next> <block type="schedule_create" id="q+(+Xj9#inHw`1W.;JBX"> <field name="NAME">Sonos AMP ausschalten Startzeitpunkt der Abfrage</field> <value name="SCHEDULE"> <shadow type="field_cron" id="*G/K{z$(0D/=!-@q`=0-"> <field name="CRON">* * * * *</field> </shadow> <block type="cron_builder" id="MB)CtdtF=tuJd^v%G)aF"> <mutation xmlns="http://www.w3.org/1999/xhtml" seconds="false" as_line="false"></mutation> <field name="LINE">FALSE</field> <field name="WITH_SECONDS">FALSE</field> <value name="DOW"> <shadow type="text" id="t-6VBz_Rj;PRc;wZz_{$"> <field name="TEXT">*</field> </shadow> </value> <value name="MONTHS"> <shadow type="text" id="v6lpuR^%m,OxzwjXatKr"> <field name="TEXT">*</field> </shadow> </value> <value name="DAYS"> <shadow type="text" id="S=.O2!@w@s*kT6vE5:bf"> <field name="TEXT">*</field> </shadow> </value> <value name="HOURS"> <shadow type="text" id="h)JX)+zEQtE@umR}Q:Qa"> <field name="TEXT">11</field> </shadow> <block type="get_value" id="vwF*srWBVa`jFOF~d|/l"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Sound.Uhrzeit_Sonos_AMP_ausschalten_heute_Stunde</field> </block> </value> <value name="MINUTES"> <shadow type="text" id="AO_`g-YD6$1tZhgRZq0?"> <field name="TEXT">23</field> </shadow> <block type="get_value" id="DD3(v]rk8:,zct?ca#Y="> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Sound.Uhrzeit_Sonos_AMP_ausschalten_heute_Minute</field> </block> </value> </block> </value> <statement name="STATEMENT"> <block type="schedule_create" id="]?~G|OIXSQBEC!UA~EIH"> <field name="NAME">Sonos AMP abfrage</field> <value name="SCHEDULE"> <shadow type="field_cron" id="fyhLCD5cucp:Db6*q%0+"> <field name="CRON">* * * * *</field> </shadow> <block type="field_cron" id="n/u)gVyMV+p9+$8Fd@`|"> <field name="CRON">*/5 * * * *</field> </block> </value> <statement name="STATEMENT"> <block type="debug" id="+#HYSC`s7Opem/}mh2@@"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="$dNw#e%t[]El~~^9$G+4"> <field name="TEXT">Abschaltabfrage</field> </shadow> </value> <next> <block type="controls_if" id="K}|/gckZGEYXiO,cxuc3"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="~QA7*G9SjbZ+KGG{=nyZ"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="_}O:E.hVjO@/XUD^#~NJ"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Sound.Sonos_AMP_spielen_Musik</field> </block> </value> <value name="B"> <block type="logic_boolean" id="N3[oZu/awSZ?3Sx4KjVp"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="7YjC;%Fc7G_}Kb`Y#!@9"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Sound.Sonos_wieder_abschalten</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="KF}ufc@.l;e2x4g6O-#Q"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="debug" id="Jjs.N52iI/7mWGbGB,G-"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="G!N9`@w+*:ME[%^B.[4$"> <field name="TEXT">Musik läuft, Sonos AMPs werden nicht abgeschaltet</field> </shadow> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="controls_if" id="VzwB~!elD(fZ9GW$@9!I"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="1.aOjF6@)qRcg.-Q6nR_"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="gbxCl7wX.:SL7qm)lRCK"> <field name="ATTR">val</field> <field name="OID">bshb.0.hdm:ZigBee:50325ffffe6f76b9.PowerSwitch.switchState</field> </block> </value> <value name="B"> <block type="text" id="NdQ}5*Ca,POH#a;mN=#j"> <field name="TEXT">OFF</field> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="/;fiLcE6]^y*sPh4X5=%"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="(wVd@^%+T}k~[R]HPs!s"> <field name="TEXT">Sonos AMPs sind bereits abgeschaltet</field> </shadow> </value> </block> </statement> <statement name="ELSE"> <block type="controls_if" id="Ou|pFlI!41w9t;N),B[%"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id=".KxNI$ROGW,e76E{OMP*"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="%^RCM/~:Up,JMCmMIyr%"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Sound.Sonos_wieder_abschalten</field> </block> </value> <value name="B"> <block type="logic_boolean" id="r6)0W06Io0Ec@FQYJNqe"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="yG95t:$GRFjj]bB_Pzy;"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="$lXaGBT`#Dw7%:z|kJ?~"> <field name="TEXT">Kein Sonos AMP spielt etwas; Abschaltung erfolgt in 5 Minuten falls nichts abgespielt wird</field> </shadow> </value> <next> <block type="control" id="yTT={[]dqvPIG_Of:7%i"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Sound.Sonos_wieder_abschalten</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="[7kwQ|{SB(3.ns}``akD"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="debug" id="***e4UNinq4IomO@|p46"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="+7d}/HM30aKH*}P(9`Iq"> <field name="TEXT">Sonos AMPs werden jetzt abgeschalten</field> </shadow> </value> <next> <block type="control" id=".39~2$.21T*munZJ]X2}"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">bshb.0.hdm:ZigBee:50325ffffe6f76b9.PowerSwitch.switchState</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="f70fmQm/bg0prx#PH!v^"> <field name="TEXT">OFF</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </statement> </block> </xml>
-
@steffensammet sagte: getriggert falls sich eine Uhrzeit (Start oder Ende) ändert:
Im Trigger müssen alle Zeitpläne gestoppt werden, bevor sie neu registriert werden.
-
-
@steffensammet
Mache es besser so (braucht weniger Ressourcen): -
ich würde es so machen:
-
Danke ! Es scheint zu funktionieren
-
@ecki-noname sagte in CRON ... ich heul gleich
:
ich würde es so machen:
Das ergibt aber nur super wenig Sinn. Die "Datum / Uhrzeit"-Blöcke sind überflüssig und sorgen eher für Probleme (Zeitzonen-Thematik). Außerdem wird der Cron dann nur genau 1x angelegt und danach nie wieder angepasst. Selbst, wenn sich die Werte ändern.
@paul53 hat ja schon die schönste Lösung genannt.