NEWS
[Blockly] Lampe einschalten, wenn PC zwischen Sonnenuntergang und Sonnenaufgang eingeschaltet ist
-
das hatte ich ja auch, aber jetzt stell dir das Szenario vor, ich habe den PC Tagsüber an, bis in die Nacht hinein. Der Zustand ändert sich ja nicht, was zur Folge hätte, dass dann die Lampe nicht angeht, sobald es Abend wird. Deshalb habe ich es auf aktualisieren gemacht. Oder sehe ich das falsch? `
Es geht bei meinem Hinweis nicht um das "aktualisieren".Sondern darum das man, grundsätzlich, nur schalten sollte wenn etwas geschaltet werden muss.
Wenn eine Lampe schon eingeschaltet ist, muss sie nicht nochmal eingeschaltet werden.
Wenn die Solltemperatur einer Heizung schon bei 21 Grad eingestellt ist muss die nicht laufend auf 21 Grad eingestellt werden.
Usw. usw.
Die Befehle werden zum Aktor gesendet. Ob notwendig oder nicht.
Da kann der DutyCycle schon mal permanent hoch sein.
Und schlimmstenfalls seinen Dienst mal für eine Stunde einstellten :shock:
Grüße
-
ich habe den PC Tagsüber an, bis in die Nacht hinein. Der Zustand ändert sich ja nicht, was zur Folge hätte, dass dann die Lampe nicht angeht, sobald es Abend wird. `
Dafür braucht es noch zwei Astro-Trigger. Etwa so:
Hier der Export, in dem noch die Datenpunkt-IDs eingesetzt werden müssen:! ````
<block xmlns="http://www.w3.org/1999/xhtml" type="variables_set" id="B0M,XF@Ebi0#EwzvOJvp" x="-587.6981554662608" y="-511.1388272105397"><field name="VAR">nacht</field>
<value name="VALUE"><block type="time_compare_ex" id="Qtlm^0L^oN[UoH-PauPc"><mutation end_time="true" actual_time="true"></mutation>
<field name="USE_ACTUAL_TIME">TRUE</field>
<field name="OPTION">not between</field>
<value name="START_TIME"><shadow type="text" id="tPo^_S^9UYh]^1,T!b,5"><field name="TEXT">12:00</field></shadow>
<block type="time_astro" id="[;]mY5K0=5l)x,wfRbaq"><field name="TYPE">sunriseEnd</field>
<field name="OFFSET">0</field></block></value>
<value name="END_TIME"><shadow type="text" id="Id:|HQ}w.^KeqbRnK(`!"><field name="TEXT">18:00</field></shadow>
<block type="time_astro" id="W3/Q[pO9Xbbd_2w(*d[!"><field name="TYPE">sunset</field>
<field name="OFFSET">0</field></block></value></block></value></block> -
Dafür braucht es noch zwei Astro-Trigger. Etwa so: `
Ja, das würde Tag und Nacht abdecken.Wobei "ledkugel" auch mal "unwahr" werden müsste
Grüße
-
Wobei "ledkugel" auch mal "unwahr" werden müsste `
Das sind zwei Datenpunkte "Büro Kugel ein" und "Büro Kugel aus". "ledkugel()" ist eine Funktion, die diese beiden Datenpunkte setzt. -
Das sind zwei Datenpunkte "Büro Kugel aus" und "Büro Kugel aus". "ledkugel()" ist eine Funktion, die diese beiden Datenpunkte setzt. `
Jepp, habe ich nicht aufgepasst :oops: -
ich habe den PC Tagsüber an, bis in die Nacht hinein. Der Zustand ändert sich ja nicht, was zur Folge hätte, dass dann die Lampe nicht angeht, sobald es Abend wird. `
Dafür braucht es noch zwei Astro-Trigger. Etwa so:Ping_nachts.JPG
Hier der Export, in dem noch die Datenpunkt-IDs eingesetzt werden müssen:
!
<block xmlns="http://www.w3.org/1999/xhtml" type="variables_set" id="B0M,XF@Ebi0#EwzvOJvp" x="-587.6981554662608" y="-511.1388272105397"><field name="VAR">nacht</field> <value name="VALUE"><block type="time_compare_ex" id="Qtlm^0L^oN[UoH-PauPc"><mutation end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">not between</field> <value name="START_TIME"><shadow type="text" id="tPo^_S^9UYh]^1,T!b,5"><field name="TEXT">12:00</field></shadow> <block type="time_astro" id="[;]mY5K0=5l)x,wfRbaq"><field name="TYPE">sunriseEnd</field> <field name="OFFSET">0</field></block></value> <value name="END_TIME"><shadow type="text" id="Id:|HQ}w.^KeqbRnK(`!"><field name="TEXT">18:00</field></shadow> <block type="time_astro" id="W3/Q[pO9Xbbd_2w(*d[!"><field name="TYPE">sunset</field> <field name="OFFSET">0</field></block></value></block></value></block>
`Also ist das so richtig (Anhang)?
Mit dem gelb markierten "Value" kann ich noch nicht so viel anfangen. Ist das eine eigene Variable, die so benannt ist (so hab ich es jetzt gemacht), wie PC oder Büro Kugel?
4811_unbenannt.jpg -
Mit dem gelb markierten "Value" kann ich noch nicht so viel anfangen. Ist das eine eigene Variable, die so benannt ist (so hab ich es jetzt gemacht), wie PC oder Büro Kugel? `
value (klein geschrieben !!) ist eine vordefinierte lokale Skriptvariable, die den Wert des auslösenden Datenpunktes enthält. Nacht und PC sind globale Skriptvariablen.Ich hatte die Skriptvariable pc extra klein geschrieben, damit sie sich vom Namen "PC" des auslösenden Datenpunktes unterscheidet, was auf die Funktion aber keine Auswirkung hat.
-
Mit dem gelb markierten "Value" kann ich noch nicht so viel anfangen. Ist das eine eigene Variable, die so benannt ist (so hab ich es jetzt gemacht), wie PC oder Büro Kugel? `
Paul53 benutzt die englische Variante.
Dieser Baustein ist nur innerhalb eines Triggers gültig und enthält verschiedene Information vom ausgelösten Trigger-Wert.
Grüße
-
value (klein geschrieben !!) ist eine vordefinierte lokale Skriptvariable, die den Wert des auslösenden Datenpunktes enthält. `
Ich benutze lieber den Baustein.
Ist leichter zu vermitteln und der Gültigkeitsbereich von "value" ist, für mich leider, nicht nur auf die Trigger-Funktion begrenzt.
Grüße
-
Paul53 benutzt die englische Variante. `
Nein, ich benutze die Bezeichnung der schon vordefinierten lokalen Skriptvariablen.on({id: "Object ID", change: "ne"}, function (obj) { var value = obj.state.val; // lokale Variable, die zu jedem Datenpunkt-Trigger automatisch erzeugt wird var oldValue = obj.oldState.val; // lokale Variable, die zu jedem Datenpunkt-Trigger automatisch erzeugt wird pc = value; ledkugel(); });
-
Ich benutze lieber den Baustein.
Ist leichter zu vermitteln `
Da gebe ich Dir recht.
@rantanplan:der Gültigkeitsbereich von "value" ist, für mich leider, nicht nur auf die Trigger-Funktion begrenzt. `
Doch, ist er. value wird innerhalb der Funktion mit var deklariert (var value = …) und ist deshalb nur auf die Funktion begrenzt, unabhängig davon, welche Skriptvariablen noch value genannt werden. -
Doch, ist er. value wird innerhalb der Funktion deklariert (var value = …) und ist deshalb nur auf die Funktion begrenzt, unabhängig davon, welche Skriptvariablen noch value genannt werden. `
Das muss aber relativ neu sein. Hatte das irgendwann mal getestet und dann nicht weiter verfolgt.Aber wir schweifen vom Thema ab.
-
Das muss aber relativ neu sein. `
Ich kenne es https://wiki.selfhtml.org/wiki/JavaScript/Variable. -
Das muss aber relativ neu sein.
Ich kenne es [https://wiki.selfhtml.org/wiki/JavaScript/Variable](https://wiki.selfhtml.org/wiki/JavaScript/Variable).
Ich meinte nicht die Deklaration in JavaScript.
Im Blockly-Trigger war die mal nicht so angelegt.
-
Also ist das so richtig (Anhang)? `
Neben value (klein geschrieben): Du hast den Namen der Funktion Büro Kugel genannt. Leerzeichen sind in Namen für Skriptvariablen und -funktionen nicht zulässig und Umlaute würde ich vermeiden. Ändere deshalb den Namen in Buero_Kugel.EDIT: Variablennamen dürfen nur Buchstaben, Ziffern und Unterstriche enthalten und dürfen nicht mit einer Ziffer beginnen.
-
Hallo Leute,
erstmal vielen Dank für eure tolle Hilfe, das ist wirklich klasse!
Ich habe es nun auch ohne Umlaute und die Variablen klein geschrieben (siehe Anhang).
Nun ist es folgendermaßen.
1. Ist die Zeit erfüllt und der PC wird eingeschaltet, bleibt die Lampe aus = nicht ok.
2. ist die Lampe an und ich schalte den PC aus (also kein pc-ping), bleibt die Lampe aber an = nicht ok.
var nacht, pc_ping; /** * Beschreibe diese Funktion … */ function buero_kugel() { if (pc_ping && nacht) { setState("broadlink.0.learnedSignals.CODE_b21d34000c23230c230c230c0c23230c0d22230c0c23230c0c23230c230c230c0c230c230c230c220c230d22230c230c0c230c230c00016200000000"/*Büro Kugel ein*/, true); } else { setState("broadlink.0.learnedSignals.CODE_b22134000c23230c230c230c0c23230c0c23230c0c22230c0c22230c230c230c0c230c230c230c230c220c220c230c22230c230c0c00016100000000"/*Büro Kugel aus*/, true); } } // Scriptstart nacht = compareTime(getAstroDate("sunriseEnd", undefined, 0), getAstroDate("sunsetStart", undefined, 0), "between", null); pc_ping = getState("ping.0.ioBroker.192_168_0_2").val; buero_kugel(); on({id: "ping.0.ioBroker.192_168_0_2"/*PC*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; pc_ping = (obj.state ? obj.state.val : ""); }); buero_kugel(); schedule({astro: "sunriseEnd", shift: 0}, function () { nacht = false; }); buero_kugel(); schedule({astro: "sunsetStart", shift: 0}, function () { nacht = true; }); buero_kugel();
Wo könnte noch der Fehler liegen?
Vielen Dank!
Gruß
Modjo
4811_unbenannt.jpg -
Trigger doch nur die Astrozeit und deinen PC in einem Script mit diesen 2 Bedingungen. Wenn sich eines der beiden ändert dann…...
Bei Änderung Astrozeit oder Änderung PC dann Deine Schaltbedingungen einfügen.
2678_test.png -
Trigger doch nur die Astrozeit und deinen PC in einem Script mit diesen 2 Bedingungen. Wenn sich eines der beiden ändert dann…...
Bei Änderung Astrozeit oder Änderung PC dann Deine Schaltbedingungen einfügen. `
So?
Sorry für meine Begriffsstutzigkeit
Ergebnis ist das selbe.
Ich habe herausgefunden, dass ich das Script deaktivieren & wieder aktivieren muss, damit er reagiert.
-
Hier mal mein "Blockly" zum Importieren (falls du das willst)
Es generiert mir meine eigenen Tageszeiten, was Du dann z.B. alle 30 minuten ausführen kannst
Dann Triggerst du nur noch die Änderung der Variablen Tageszeit und Deinen PC.
Kannst alles in eine Bedingung einfügen und Deine Lampe schalten.
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="schedule" id="P[E2+vYOMQn.+s91k=S{" x="-462" y="-512"><field name="SCHEDULE">1 * * * </field>
<statement name="STATEMENT"><block type="update" id="+hTGa00%6OoWcUb@-/3"><mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Globale_Variablen.Zeit.Datum</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="time_get" id="]~ic{IxcWHnedl[d]mN"><mutation format="false" language="false"></mutation>
<field name="OPTION">DD.MM.YYYY</field></block></value>
<next><block type="update" id="3)Z|ZxMY+L?%aY1)FQaf"><mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Globale_Variablen.Zeit.Monat</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="time_get" id="=t[r1jzB/w]SP=N7%1b"><mutation format="false" language="false"></mutation> <field name="OPTION">M</field></block></value> <next><block type="update" id="gCyD*#{F=c6Wbb0JiwBK"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Globale_Variablen.Zeit.Wochentag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="time_get" id="vsH}@Bp{*jrH8laqp2cB"><mutation format="false" language="true"></mutation> <field name="OPTION">wdt</field> <field name="LANGUAGE">de</field></block></value> <next><block type="update" id="OAs]4?TA59N=Gl%@-cq7"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Globale_Variablen.Zeit.Tag</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="time_get" id="[n5;%c{RBg,%^Fy=ehNu"><mutation format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">TT</field></block></value> <next><block type="update" id="Tb/3j;o-cRC7SOGs{(eh"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Globale_Variablen.Zeit.Jahr</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="time_get" id="M_/Xy:7]4[S7%A@@yzaW"><mutation format="false" language="false"></mutation> <field name="OPTION">fy</field></block></value> <next><block type="controls_if" id="!EaelY]Fr*#kt0R~Iw8n"><value name="IF0"><block type="logic_operation" id="EZq9UNvkEB;1W7iYVVT~"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="DVMA.pcOgTEFeGh-i^@v"><field name="OP">GT</field> <value name="A"><block type="time_get" id="D{gm-N66[3N0
%Kk47vf"><mutation format="false" language="false"></mutation>
<field name="OPTION">h</field></block></value>
<value name="B"><block type="math_number" id="C}ie{MyM[B%sk5g]ho5~"><field name="NUM">23</field></block></value></block></value>
<value name="B"><block type="logic_compare" id="~9Q!CJ9;nVy=D?EP7:_@"><field name="OP">LT</field>
<value name="A"><block type="time_get" id="FW6SMSsgK2iuSkbrD:J^"><mutation format="false" language="false"></mutation>
<field name="OPTION">h</field></block></value>
<value name="B"><block type="math_number" id="zfbkA.-^{.:MLdK|;I}"><field name="NUM">6</field></block></value></block></value></block></value> <statement name="DO0"><block type="update" id="YI::6WCMES6c_,;Jz-~G"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Globale_Variablen.Zeit.Tageszeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="-m01rP,P4,Km3JCTwNFw"><field name="TEXT">Nacht</field></block></value></block></statement> <next><block type="controls_if" id="u:i]YNPZvSSi=dgC5:0Z"><value name="IF0"><block type="logic_operation" id="!6:d7a}oLKp
fn;T|5Cy"><field name="OP">AND</field>
<value name="A"><block type="logic_compare" id="X}qVpDZ,7h*Ao{=sa,"><field name="OP">GT</field> <value name="A"><block type="time_get" id="d!gtn-4uWwN}K//jSlBn"><mutation format="false" language="false"></mutation> <field name="OPTION">h</field></block></value> <value name="B"><block type="math_number" id="_)}Y[1BZ8:r,ph9Gm47v"><field name="NUM">5</field></block></value></block></value> <value name="B"><block type="logic_compare" id="#g_o^9/x^r.RcF
M+Unc"><field name="OP">LT</field>
<value name="A"><block type="time_get" id="[o25VwIV0;M{;e}60;I"><mutation format="false" language="false"></mutation>
<field name="OPTION">h</field></block></value>
<value name="B"><block type="math_number" id="653HmBP5[r+8-!+G04@b"><field name="NUM">10</field></block></value></block></value></block></value>
<statement name="DO0"><block type="update" id="B/phdT_{;/ktQw2gY(x="><mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Globale_Variablen.Zeit.Tageszeit</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="text" id="dK1[gU:l(XrFo}B49rqS"><field name="TEXT">Morgen</field></block></value></block></statement>
<next><block type="controls_if" id="9=)}dhJUID!AV~=HD35"><value name="IF0"><block type="logic_operation" id="Zz~nimfWz
);kZX28Dq"><field name="OP">AND</field>
<value name="A"><block type="logic_compare" id="gg.{f1u62;b~-^iMAkV"><field name="OP">GT</field> <value name="A"><block type="time_get" id="Whwv;1b^#3j[/}pjM
0F"><mutation format="false" language="false"></mutation>
<field name="OPTION">h</field></block></value>
<value name="B"><block type="math_number" id="#67zLt]-{-PxsCIDN;W_"><field name="NUM">9</field></block></value></block></value>
<value name="B"><block type="logic_compare" id="5S;?l[H;xSyMMhLy};"><field name="OP">LT</field>
<value name="A"><block type="time_get" id="F9!SC)TwbVLE/xa(D|U{"><mutation format="false" language="false"></mutation>
<field name="OPTION">h</field></block></value>
<value name="B"><block type="math_number" id="=}lh,K03(y;B!nxI90Ih"><field name="NUM">12</field></block></value></block></value></block></value>
<statement name="DO0"><block type="update" id="u{gmcic2S,L3edT@3+``"><mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Globale_Variablen.Zeit.Tageszeit</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="text" id="@rj],^n?CD:7TsKWhm"><field name="TEXT">Vormittag</field></block></value></block></statement> <next><block type="controls_if" id="KRml-xvPCdcWBw}_lA;1"><value name="IF0"><block type="logic_operation" id="ecSiTzQeAmCJhLK3SMq]"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="|R=|]Vlbd
+z-K330b^?"><field name="OP">GT</field>
<value name="A"><block type="time_get" id="Y%/o0h.qG3@,ZDu
-~,"><mutation format="false" language="false"></mutation>
<field name="OPTION">h</field></block></value>
<value name="B"><block type="math_number" id="-*j@f-jgC=8IHFbqVVJ"><field name="NUM">11</field></block></value></block></value> <value name="B"><block type="logic_compare" id="@a!A(YAe63y|_zFEmT7V"><field name="OP">LT</field> <value name="A"><block type="time_get" id="ZwcWs6La#xOJDXY0|{KR"><mutation format="false" language="false"></mutation> <field name="OPTION">h</field></block></value> <value name="B"><block type="math_number" id="XTvktsZ.0e4-=Acd[#L-"><field name="NUM">15</field></block></value></block></value></block></value> <statement name="DO0"><block type="update" id="aIrR!uw2i4@WR:U5zS9S"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Globale_Variablen.Zeit.Tageszeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="J8F4.R_bn=_Z1m2f]6.Z"><field name="TEXT">Mittag</field></block></value></block></statement> <next><block type="controls_if" id="ixXU[@AxV7EbY.K296~R"><value name="IF0"><block type="logic_operation" id="Zd5qnG?L:X6{zQlCS0a0"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="}6S=o5uUU|F2
E5Ra3M@"><field name="OP">GT</field>
<value name="A"><block type="time_get" id="@*lk.Iccuq)t:I_cJS^"><mutation format="false" language="false"></mutation> <field name="OPTION">h</field></block></value> <value name="B"><block type="math_number" id="8B?LX-=;ZP5FZ9LVP9}p"><field name="NUM">14</field></block></value></block></value> <value name="B"><block type="logic_compare" id="^7B!rBZD4]4ywbsQBI!K"><field name="OP">LT</field> <value name="A"><block type="time_get" id="iFN%aY9aw!eMT_-45FR;"><mutation format="false" language="false"></mutation> <field name="OPTION">h</field></block></value> <value name="B"><block type="math_number" id="(@gR|]D(LG34Rbzr}BpA"><field name="NUM">18</field></block></value></block></value></block></value> <statement name="DO0"><block type="update" id="7YM=/a]cjf(pgIB{(,OP"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Globale_Variablen.Zeit.Tageszeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="?C+wSJbr|XGpOYj=}0dJ"><field name="TEXT">Nachmittag</field></block></value></block></statement> <next><block type="controls_if" id="m/prOS5QJ|%6NuPi?,8n"><value name="IF0"><block type="logic_operation" id="8zb%x9U;8
fcthE!?K?T"><field name="OP">AND</field>
<value name="A"><block type="logic_compare" id="n=Y3?s]piiB+rx@Gm@"><field name="OP">GT</field> <value name="A"><block type="time_get" id=")gKS.M
~by,lpM7A3t^"><mutation format="false" language="false"></mutation> <field name="OPTION">h</field></block></value> <value name="B"><block type="math_number" id="%XepvW?,yHTrr#)#yA]s"><field name="NUM">17</field></block></value></block></value> <value name="B"><block type="logic_compare" id="?yPjK6S-nvzJ@T68Oq/!"><field name="OP">LT</field> <value name="A"><block type="time_get" id="i:G*6*,zaJ(lhlEE
b?9"><mutation format="false" language="false"></mutation>
<field name="OPTION">h</field></block></value>
<value name="B"><block type="math_number" id="rV{pKIny_w?{{oX}UuNl"><field name="NUM">24</field></block></value></block></value></block></value>
<statement name="DO0"><block type="update" id="q5?w;!82Sz-@0%S?w:z-"><mutation delay_input="false"></mutation>
<field name="OID">javascript.0.Globale_Variablen.Zeit.Tageszeit</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE"><block type="text" id=",l|tLrrj}oF7}tVoR4}d"><field name="TEXT">Abend</field></block></value></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></xml> -
so kurz könnte es sein…..
2678_test.png