NEWS
Cron aus DP
-
Hallo,
trotz 2 existierenden Posts gleicher Problematik bekomme ich das einfach nicht bei mir hin.Ich möchte eine Aktion nach Zeit ausführen, welche in der Vis über ein Auswahl / Dropdown Feld gesetzt wird.
Der Datenpunkt ist ein String:
Das Blockly schickt mir genau die richtige Uhrzeit aufgespalten in Stunde: Bsp. 10 und Minute: 55 wenn ich das über Telegram als Text generiert mir schicken lassen. Sobald ich das in Cron rein setze, geht es nicht.
Weiß jemand wo mein Fehler liegt?<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="cron" id="schedule1">schedule1</variable> </variables> <block type="schedule_create" id="$s!JE7be1S5it`4x#U%L" x="412" y="114"> <field name="NAME">schedule1</field> <value name="SCHEDULE"> <shadow type="field_cron" id="wH8?O_W*2B2fB9!w.OFS"> <field name="CRON">* * * * *</field> </shadow> <block type="cron_builder" id="Mqa]zCGUg,[P:j|#U%Ua"> <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=";kWM[|H(R^[ze)~sCF!e"> <field name="TEXT">*</field> </shadow> </value> <value name="MONTHS"> <shadow type="text" id="1M!X[?k)[O0|;ZP~S=]/"> <field name="TEXT">*</field> </shadow> </value> <value name="DAYS"> <shadow type="text" id="H}x~WwuKv~jUEhN;%i{k"> <field name="TEXT">*</field> </shadow> </value> <value name="HOURS"> <shadow type="text" id="atq@AxM_.`Q=;}4OY0k7"> <field name="TEXT">*</field> </shadow> <block type="text_getSubstring" id="PI6}J:),@9H5%RvB]qI9"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_END</field> <value name="STRING"> <block type="get_value" id="]hZy/-%Bc|*B-pvC:;o#"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Klima_Zeitsteuerung.OG_WZ.Timerbereich_1.Mo.1_Abschnitt.Startzeit</field> </block> </value> <value name="AT2"> <block type="math_number" id="z_OlR4a,#~%|Yx/W#t6X"> <field name="NUM">4</field> </block> </value> </block> </value> <value name="MINUTES"> <shadow type="text" id=".p{d:/}-L/=|B=-4l}AU"> <field name="TEXT">*</field> </shadow> <block type="text_getSubstring" id="`P^4RiKc{lFjwrxv63|("> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_END</field> <value name="STRING"> <block type="get_value" id="J{e6E^*yHhs_a!r,BPt["> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Klima_Zeitsteuerung.OG_WZ.Timerbereich_1.Mo.1_Abschnitt.Startzeit</field> </block> </value> <value name="AT1"> <block type="math_number" id="%yhe$[7Z@=D^;cxk##$r"> <field name="NUM">4</field> </block> </value> <value name="AT2"> <block type="math_number" id="lMcvwTV-(%aXd6qO{6JK"> <field name="NUM">0</field> </block> </value> </block> </value> </block> </value> <statement name="STATEMENT"> <block type="comment" id="f*4RkI,piDEMCHWnqiy5"> <field name="COMMENT">falls Timer 1</field> <next> <block type="telegram" id="?=c64kn_v:N){16e:T64"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <field name="ESCAPING">FALSE</field> <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field> <value name="MESSAGE"> <shadow type="text" id="ydUYy@/]Sy#M2qkt@io!"> <field name="TEXT">Start</field> </shadow> <block type="text_join" id="Z[r81%mGxAVMu(/cml6E"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text_getSubstring" id="=sC*@!])j1l}Ujg2(GSg"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_END</field> <value name="STRING"> <block type="get_value" id="Fa@=I4949EnC4r}0SE)G"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Klima_Zeitsteuerung.OG_WZ.Timerbereich_1.Mo.1_Abschnitt.Startzeit</field> </block> </value> <value name="AT2"> <block type="math_number" id="@%EYfsax/p;A)q`)hC.4"> <field name="NUM">4</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text_newline" id="lm^v[B.mK$Y8R%-RlkQM"> <field name="Type">\n</field> </block> </value> <value name="ADD2"> <block type="text_getSubstring" id="]#e3|Hp3+cw!WD]-Xc(W"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_END</field> <value name="STRING"> <block type="get_value" id="!]XNr@K=51ku7+3a*DsO"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Klima_Zeitsteuerung.OG_WZ.Timerbereich_1.Mo.1_Abschnitt.Startzeit</field> </block> </value> <value name="AT1"> <block type="math_number" id="KiUd%}}~yH^%ID[Z-2(~"> <field name="NUM">4</field> </block> </value> <value name="AT2"> <block type="math_number" id="j$gbYJcrz)!QV58{oUxw"> <field name="NUM">0</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </xml>
-
@mika-0
Prinzip: -
@mika-0 sagte: richtige Uhrzeit aufgespalten in Stunde: Bsp. 10 und Minute: 55
Stimmt die Zeitzone im OS, unter dem ioBroker läuft? Was ergibt rechts im Log?
@djmarc75 sagte in Cron aus DP:
Prinzip:
Bei diesem Prinzip muss vor 10 Uhr eine führende 0 eingegeben werden. Ich bevorzuge die Array-Version:
-
@paul53 Hi Paul, Debug result akt. Zeit als SS:mm
22.12.2023, 11:52:56.769 [info ]: javascript.0 (1603) Stop script script.js.Klimaanlagen.OG_WZ.Lösch 22.12.2023, 11:53:01.404 [info ]: javascript.0 (1603) Start javascript script.js.Klimaanlagen.OG_WZ.Lösch 22.12.2023, 11:53:01.436 [info ]: javascript.0 (1603) script.js.Klimaanlagen.OG_WZ.Lösch: 11:53 22.12.2023, 11:53:01.436 [info ]: javascript.0 (1603) script.js.Klimaanlagen.OG_WZ.Lösch: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 22.12.2023, 11:53:03.169 [info ]: javascript.0 (1603) Stop script script.js.Klimaanlagen.OG_WZ.Lösch
Die Idee von @DJMarc75 hat leider nicht funktioniert. Null habe ich so vorne dran gesetzt, geht aber trotzdem nicht. Vielleicht habe ich das auch falsch kreiert.
BTW: Händisch gehts:
-
@mika-0 sagte: akt. Zeit als SS:mm
Dann stimmt schon mal die Zeitzone.
@mika-0 sagte in Cron aus DP:
Null habe ich so vorne dran gesetzt, geht aber trotzdem nicht.
Mit "011" kann CRON sicherlich nichts anfangen.
-
@paul53 aber mit 11 so wie es sich zeigt ja auch nichts.
-
@mika-0
Wenn es mit String-Zerlegung sein soll, dann versuche es mal so: -
Da das Thema hier immer wieder aufkommt, wird es mal Zeit für eine Funktion in JS/Blockly:
scheduleById('0_userdata.0.myTime', async () => { console.log('test'); });
bzw.
Unterstütze Formate für den Wert sind:
HH:MM:SS
undHH:MM
. Der Zeitplan wird beim Start des Scripts registriert und entsprechend aktualisiert, falls sich der Wert ändert.Mein größtes Problem aktuell: Ein toller Name für den Block
Vorschläge?
-
@haus-automatisierung sagte: Unterstütze Formate für den Wert sind: HH:MM:SS und HH:MM.
Nicht auch "H:MM" und "H:MM:SS"?
-
@paul53 sagte in Cron aus DP:
Nicht auch "H:MM" und "H:MM:SS"?
Doch, klar, hab die Doku mal angepasst. Da schaut ja sicher jeder als erstes - haha...
-
@haus-automatisierung sagte in Cron aus DP:
Vorschläge?
Da ich eigentlich nur im Studio oder in der Küche kreativ bin gebe ich aber trotzdem mal meinen Senf dazu:
"Zeitplan aus Zustandswert"Frage:
Ich muss im Moment noch Datenpunkte mit Werten wie z.B.
2023-12-22T20:00:00+01:00
für meine Crons "zerlegen".
Ob man solche Werte auch einbauen kann ?
-
@djmarc75 sagte in Cron aus DP:
Ich muss im Moment noch Datenpunkte mit Werten wie z.B.
Naja, was soll das für eine Angabe sein? Einmaliger Trigger? Ist ja eine genaue Zeitangabe. Wenn Du soetwas machen willst, nimmt halt n Alias mit einer Lese-Funktion, welche das Datum in das Format umwandelt:
((v) => { const d = new Date(v); return `${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}`; })(val)
oder so ist vllt. eleganter:
((d) => `${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}`)(new Date(val))
-
@haus-automatisierung sagte: Vorschläge?
Zeitplan aus Uhrzeit-DP
-
@paul53 Boa also erstmal danke, dass ihr euch meinem Leid annehmt. Das ist ne harte Nuss.
Stunde geht aus Datenpunkt oder aus Teil einer Uhrzeit Bsp: 17:10 (die ersten 2 Buchstaben nimmt der an)
Minute geht ums verrecken nicht. Bisher nur mit Blockly Textfeld mit den Minuten direkt eintragen. Anders bekomme ich keinen Trigger. -
@mika-0 sagte: Minute geht ums verrecken nicht.
Hast du es mal so versucht wie hier vorgeschlagen?
-
@paul53 Ja. Aber nicht zuverlässig. Manchmal Ja, manchmal nein. Wenn ich die Zeit im Datenpunkt setze und dann dieses Skript neu restarte, geht es. Aber nur dann.
-
@mika-0 sagte: dieses Skript neu restarte, geht es. Aber nur dann.
Das ist so, wenn man keinen Trigger auf den sich ändernden Datenpunkt hat. Damit man nur einen Zeitplan benötigt, muss man ihn in eine Funktion packen.
-
@paul53 Sorry, für Blockly habe ich leier keinen Doktor Titel
DANKE!!!!!!! Es funktioniert. Jetzt löst der Trigger.
Ich hatte das leider nicht verstanden, dass dies eine Möglichkeit wäre und dachte, das hat was mit der führenden 0 zu tun.
@haus-automatisierung Dann wäre ja @paul53 Variante für den Verbesserungsvorschlag die Lösung.
-
@mika-0 sagte in Cron aus DP:
@haus-automatisierung Dann wäre ja @paul53 Variante für den Verbesserungsvorschlag die Lösung.
Mh? Genau das macht die Funktion/der neue Baustein dann ja alles für Dich. Wie vor über 3 Jahren hier erklärt: https://youtu.be/Of2C8F_n11U?si=7fowoH9OxVocTJLf&t=990
-
@haus-automatisierung Alles klar nochmals vielen Dank euch.