NEWS
Präsenzmelder nach Tageszeit mit bestimmter Helligkeit
-
@hinsen2k
Wie sieht denn aktuell Dein Blockly aus ? -
Wobei...ich sehe gerade....heute morgen funktioniert es!!?!? Häh?!?! Braucht ide CCU3 ein paar Stunden, bis sie Einstellungen neu verarbeitet?!!? Ich bin jetzt völlig verwirrt. Ich traue dem Ganzen aber noch nicht und beobachte das.
Ich werde mich mal einen Timer machen, um zu sehen, wie lange das Licht denn immer so angeschaltet ist. Hast Du da zufällig noch eine Idee für die Umsetzung? Bisher hat das bei mir noch nicht so geklappt.
-
@hinsen2k sagte in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:
Ich werde mich mal einen Timer machen, um zu sehen, wie lange das Licht denn immer so angeschaltet ist. Hast Du da zufällig noch eine Idee für die Umsetzung? Bisher hat das bei mir noch nicht so geklappt.
Um das zu sehen sollten debug Bausteine reichen, dann siehst Du es im Log.
-
@hinsen2k
Mal was anderes, Dein Blockly für die Astro Zeiten...die Zeiten stimmen aber, ja ? Ich nutze dieses Script dafür.https://forum.iobroker.net/post/673736
-
@dslraser
ja, ich habe dazu auch ein Script hier aus dem Forum. Funktioniert auch einwandfrei. -
@hinsen2k sagte in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:
@dslraser
ja, ich habe dazu auch ein Script hier aus dem Forum. Funktioniert auch einwandfrei.poste das mal, dann kann ich das mal importieren und was ausprobieren.
EDIT: Poste mal Deine beiden Blocklys als Export
-
/* * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln> * * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln> * * Dieses Skript dient zur freien Verwendung in ioBroker zur Verbrauchserfassung der Shelly Geräte. * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung * und Performance entwickelt. * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind. * * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf * https://www.kreyenborg.koeln * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der, * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht! * * Ansprüche gegenüber Dritten bestehen nicht. * * Skript Name: Astro-Zeiten * Skript Version: 1.21 * Erstell-Datum: 13. Mai 2021 * */ // Datenpunkte neu erstellen var ueberschreiben = false; // Hauptdatenpunkt unterhalb javascript var datenpunkt = "Astro."; // Lesbare Zeiten const lesbare_zeiten = ["Früher Morgen", "Frühe Dämmerung", "Morgendämmerung", "Sonnenaufgang", "Vormittag", "später Vormittag", "Mittag", "früher Abend", "Abend", "Sonnenuntergang", "Abenddämmerung", "später Abend", "Nacht", "Mitternacht"]; // Objekte der Astro Zeiten const objekt = ["nightEnd", "nauticalDawn", "dawn", "sunrise", "sunriseEnd", "goldenHourEnd", "solarNoon", "goldenHour", "sunsetStart", "sunset", "dusk", "nauticalDusk", "night", "nadir", "tageszeitAstro", "naechsteTageszeitAstro", "tageszeitLesbar", "naechsteTageszeitLesbar", "aktuelleAstroZeit", "Tag", "sunriseUnix", "sunsetUnix"]; // Zustände der Astro-Zeiten const beschreibung = ["00 - Ende der Nacht", "01 - nautische Morgendämmerung", "02 - Morgendämmerung", "03 - Sonnenaufgang", "04 - Ende des Sonnenaufgangs", "05 - Ende der goldenen Stunde VM", "06 - Mittag", "07 - goldene Abendstunde", "08 - Start des Sonnenuntergangs", "09 - Sonnenuntergang", "10 - Dämmerung Abends", "11 - nautische Dämmerung abends", "12 - Start der Nacht", "13 - Mitternacht", "Aktuelle Tageszeit (Astro)", "Nächste Tageszeit (Astro)", "Aktuelle Tageszeit (lesbar)", "Nächste Tageszeit (lesbar)", "aktuelle Astrozeit", "Solange die Sonne scheint, ist Tag", "Sunrise Unix Zeitstempel", "Sunset Unix Zeitstempel"]; // Erstelle die benötigten Datenpunkte function datenpunkte_erstellen() { for (var i = 0; i < objekt.length; i++) { createState(datenpunkt + objekt[i], "", ueberschreiben, { name: beschreibung[i], desc: beschreibung[i], type: "string", role: "value", unit: "" }); } log("Astro: Datenpunkte erstellt!"); } // Datenpunkte mit erstem Inhalt füllen function datenpunkte_fuellen() { for (var i = 0; i < objekt.length - 8; i++) { var datum = new Date(); try { var astro_zeit = zeit_formatieren(getAstroDate(objekt[i], datum)); } catch (e) { // Fehler Kontrolle } if (astro_zeit == "Invalid Date") { astro_zeit = "00:00"; } setState(datenpunkt + objekt[i], astro_zeit); } log("Astro: Erste Datenpunkte gefüllt!"); } // Haupt-Skript function update_astro_zeiten() { var datum = new Date(); var uhrzeit = zeit_formatieren(datum); // Zustand der Daten var aktuell = 0; var aktualisiert = 0; var keine_aktualisierung = 0; var astro_index = 0; // Aktuellen Tagesabschnitt bestimmen var ergebnis = -1; var naechste_element = false; // Aktuelle & kommende Tageszeit var aktuelle_tageszeit = 0; var kommende_tageszeit = 0; // Tag var astroTag = "Nacht"; for (var i = 0; i < objekt.length - 8; i++) { // Temporäre Zahl var tmp_ergebnis = 0; // Hole Uhrzeit aus aktuellem Datenpunkt var dp_zeit = getState(datenpunkt + objekt[i]).val; // Hole Index aktuelle Tageszeit var tmp_time_uhr = Date.parse('1970-01-01 ' + uhrzeit + ':00'); var tmp_time_dp = Date.parse('1970-01-01 ' + dp_zeit + ':00'); // Aktuelle Zeit ist kleiner als DP if (tmp_time_uhr < tmp_time_dp) { tmp_ergebnis = tmp_time_dp - tmp_time_uhr; if (tmp_ergebnis <= ergebnis || ergebnis == -1) { ergebnis = tmp_ergebnis; astro_index = i; naechste_element = true; } // Aktuelle Zeit ist größer als DP } else { tmp_ergebnis = tmp_time_uhr - tmp_time_dp; if (tmp_ergebnis <= ergebnis || ergebnis == -1) { ergebnis = tmp_ergebnis; astro_index = i; naechste_element = false; } } // Datenpunkt ist kleiner als aktuelle Uhrzeit. Update! if (dp_zeit < uhrzeit) { // Neue Astro-Zeit für den nächsten Tag generieren let morgen = new Date(); morgen.setDate(morgen.getDate() + 1); try { var astro_zeit = zeit_formatieren(getAstroDate(objekt[i], morgen)); } catch (e) { // Fehler Kontrolle } // Datenpunkt und Astro Zeit sind gleich. Kein Update! if (dp_zeit == astro_zeit) { keine_aktualisierung++; } else { if (astro_zeit == "Invalid Date") { astro_zeit = "00:00"; } setState(datenpunkt + objekt[i], astro_zeit); aktualisiert++; } } else { // Zeit kommt noch! Kein Update! aktuell++; } } // Wenn wahr, ist der Abstand zum nächsten Zeitpunkt kleiner. Also -1 um aktuellen Index zu erhalten. if (naechste_element) { astro_index--; } // Navigiere zum richtigen Index if (astro_index > 12) { aktuelle_tageszeit = 13; kommende_tageszeit = 0; } else if (astro_index < 0) { aktuelle_tageszeit = 0; kommende_tageszeit = 1; } else { aktuelle_tageszeit = astro_index; kommende_tageszeit = astro_index + 1; } // Prüfe, ob aktuelle Uhrzeit zwischen Sonnenauf- und untergang liegt if (astro_index > 2 && astro_index < 10) { astroTag = "Tag"; } // Update aktuelle Tageszeit Astro (Text) setState(datenpunkt + objekt[14], text_formatieren(beschreibung[aktuelle_tageszeit])); // Update kommende Tageszeit Astro (Text) setState(datenpunkt + objekt[15], text_formatieren(beschreibung[kommende_tageszeit])); // Update aktuelle Tageszeit lesbar (Text) setState(datenpunkt + objekt[16], lesbare_zeiten[aktuelle_tageszeit]); // Update kommende Tageszeit lesbar (Text) setState(datenpunkt + objekt[17], lesbare_zeiten[kommende_tageszeit]); // Update aktuelle AstroZeit setState(datenpunkt + objekt[18], objekt[aktuelle_tageszeit]); // Setze die Variable "Tag" auf "Tag", wenn Uhrzeit zwischen Sonnenauf- und untergang setState(datenpunkt + objekt[19], astroTag); // Setze die Variable Sunrise Unix let tmp_morgen = new Date(); tmp_morgen.setDate(tmp_morgen.getDate() + 1); let unix_sunrise = getAstroDate("sunrise", tmp_morgen).getTime() * 1000; setState(datenpunkt + objekt[20], unix_sunrise.toString()); // Setze die Variable Sunset Unix let unix_sunset = getAstroDate("sunset", tmp_morgen).getTime() * 1000; setState(datenpunkt + objekt[21], unix_sunset.toString()); var ausgabe = "Astro: Gültige Zeiten: [aktueller Tag: " + aktuell + "] | [nächster Tag: " + keine_aktualisierung + "] | [Aktualisiert: " + aktualisiert + "] | Aktuelle Tageszeit: " + lesbare_zeiten[aktuelle_tageszeit] + " | Kommende Tageszeit: " + lesbare_zeiten[kommende_tageszeit]; log(ausgabe); } // Funktion, um die Zeit in HH:MM zu formatieren function zeit_formatieren(zeit) { return zeit.toLocaleTimeString('de-DE', { hour12: false, hour: '2-digit', minute: '2-digit' }); } // Funktion, um den Text zu formatieren. "Mittag" statt "6 - Mittag" function text_formatieren(text) { text = text.split("-")[1]; text = text.substr(1, text.length); return text; } // Erster Start des Skripts und anlegen der Datenpunkte function update_astro_zeiten_erster_start() { log("Astro: Erster Start des Skriptes!") // Datenpunkte werden erstellt datenpunkte_erstellen(); // erstes Füllen der Datenpunkte um 3 Sek. verzögert setTimeout(datenpunkte_fuellen, 3000); // Das Update der Zeiten ist um 5 Sek. verzögert setTimeout(update_astro_zeiten, 5000); } // Erster Start und Initialisierung update_astro_zeiten_erster_start(); // Alle 60 Minunten das Hauptskript ausführen schedule('*/30 * * * *', update_astro_zeiten);
Hier das Blockly für die Tageszeit:
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="schedule" id="HO}_tUx1x5P:u/vEA_5=" x="-388" y="-987"> <field name="SCHEDULE">* * * * *</field> <statement name="STATEMENT"> <block type="controls_if" id="36`CLBkPw=gI06~5?w$P"> <value name="IF0"> <block type="time_compare_ex" id="5iTB)~59m4Q8ZGsm@C.K"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">==</field> <value name="START_TIME"> <shadow type="text" id="G7%Y8jbICT/]6g9V(20Q"> <field name="TEXT">12:00</field> </shadow> <block type="get_value" id="}g3y-BP:zzvsMb^z;P^k"> <field name="ATTR">val</field> <field name="OID">javascript.0.Astro.night</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="dlv_pWrCj0L)ZP_6`;cP"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Wetter.Tageszeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="|UqlZ+1?U0x![Je`q=Ik"> <field name="NUM">0</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="]I5~#^oY^oc|Wr=41-vU"> <value name="IF0"> <block type="time_compare_ex" id="E[FonN_mpak/rEUXD[q{"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">==</field> <value name="START_TIME"> <shadow type="text" id="h#bi#I-u~?oMK:K*[*Hw"> <field name="TEXT">12:00</field> </shadow> <block type="get_value" id="t`|O?0=xj:TL3cnaZTvI"> <field name="ATTR">val</field> <field name="OID">javascript.0.Astro.dawn</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="{^CND^PpK4B#BSRs*T7q"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Wetter.Tageszeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="-u+T#TvggPN`gd4Dil]a"> <field name="NUM">1</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="o~/0e]i)@{ovoRyw8:u/"> <value name="IF0"> <block type="time_compare_ex" id="Q}[Jd%%)5=-8{!,{VJNY"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">==</field> <value name="START_TIME"> <shadow type="text" id="9#P-9Dna`WIQp3RRn+x+"> <field name="TEXT">12:00</field> </shadow> <block type="get_value" id="Y2rB;%+8A[9Ro{2}D+}j"> <field name="ATTR">val</field> <field name="OID">javascript.0.Astro.sunriseEnd</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="~;6MirFP9Rhx#mVX$Uwk"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Wetter.Tageszeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="/nu*_Qt7.iM?ufxP7h6)"> <field name="NUM">2</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="~3gB+Tx2jw^2NY#L:81i"> <value name="IF0"> <block type="time_compare_ex" id="kiJ[:|lK|qhw)j~dJDU%"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">==</field> <value name="START_TIME"> <shadow type="text" id="OfW64`w]CT!N2g6:xXS?"> <field name="TEXT">12:00</field> </shadow> <block type="get_value" id="]tIy1SUy8GAXNL#n`gRD"> <field name="ATTR">val</field> <field name="OID">javascript.0.Astro.sunsetStart</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="xsEH-mIipVT7TO5CLe0r"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Wetter.Tageszeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="h9#.*=zLN3RlcykKZo%F"> <field name="NUM">3</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
Und hier die Lichtschaltung:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="interval" id="Intervall">Intervall</variable> <variable id="{OcV;9JI[AK?VB^,6ay*">ZählerSchleife</variable> </variables> <block type="on_ext" id="[%=J4qpQ(I$}t`g633vf" x="-388" y="-662"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="p;`jg|4T8P_Ct8]CuqMM"> <field name="oid">hm-rpc.0.000000000.1.PRESENCE_DETECTION_STATE</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="iPeJKS0Q#L$P/1=W$X44"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_operation" id=";dWn;`_10rkZ.5sAn@Fg"> <field name="OP">AND</field> <value name="A"> <block type="on_source" id="s7lL,Q1ie;sKAi;gB4@#"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_compare" id="JpXh=-;R#x26Ij{|(/3!"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="0jnnR}4f@PqIfEax//AY"> <field name="ATTR">val</field> <field name="OID">hue.1.Raum_Badezimmer.bri</field> </block> </value> <value name="B"> <block type="math_number" id="eGXc7}vR/ScLIh9)KDk%"> <field name="NUM">0</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="WpBEaYZB0n9:9u)er:pI"> <mutation elseif="2"></mutation> <value name="IF0"> <block type="logic_compare" id="WT]MBkj}s9,-W+mfsx(T"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="a%IO]Z@Udu7GKmsN3L~Y"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Wetter.Tageszeit</field> </block> </value> <value name="B"> <block type="math_number" id="mwtw0WSN28`T(Zv$#g)^"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="=^[~qp(:U80dl4]:C8y2"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">hue.1.Raum_Badezimmer.command</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="y:iaYWblm_59,Nobf_c/"> <field name="TEXT">{"on":true,"bri":10,"transitiontime":50}</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_operation" id="SwHNkU2UBTU]pxi8l%wx" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="Ol!~MbZZaNF^{4(GT;0t" inline="false"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="DPdE;co$s-n@=^kSRCwa"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Wetter.Tageszeit</field> </block> </value> <value name="B"> <block type="math_number" id="{AGNw]{XqnMHh7jPTUdk"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="OxJy=Qr9$fv]t:_a3bN3" inline="false"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="pZ]6O_0riOmP+k/mn.*G"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Wetter.Tageszeit</field> </block> </value> <value name="B"> <block type="math_number" id="Op._VH#:#x)k%M@ts.V3"> <field name="NUM">3</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="k#!n8.9GFCHUL@e](975"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">hue.1.Raum_Badezimmer.command</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id=":Bq4%$WlKw^`3I3_1f3C"> <field name="TEXT">{"on":true,"bri":120,"transitiontime":100}</field> </block> </value> </block> </statement> <value name="IF2"> <block type="logic_compare" id="n27r$V8V3oe2k@sIS-HV"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="B1dW.|5bN[z^p;(]4~f2"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Wetter.Tageszeit</field> </block> </value> <value name="B"> <block type="math_number" id="1d0S-1G)0+Gz8Zsztpm$"> <field name="NUM">2</field> </block> </value> </block> </value> <statement name="DO2"> <block type="control" id="*R87]Zq^%OS07@]SstfI"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">hue.1.Raum_Badezimmer.command</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="cw-5+0#NKZ.560!^0S#T"> <field name="TEXT">{"on":true,"bri":254,"transitiontime":100}</field> </block> </value> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="control" id="l@OT!K]pPfA~d;)$]c)~"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">hue.1.Raum_Badezimmer.command</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="u]f0h8eQt,h]Q(~-HL%X"> <field name="TEXT">{"on":false,"transitiontime":100}</field> </block> </value> </block> </statement> </block> </statement> </block> <block type="timeouts_setinterval" id="+J$GLv^iHlp!.DB%,M|L" disabled="true" x="812" y="-587"> <field name="NAME">Intervall</field> <field name="INTERVAL">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="math_change" id="~[4:nL2EN-uO+GTBmIHQ"> <field name="VAR" id="{OcV;9JI[AK?VB^,6ay*">ZählerSchleife</field> <value name="DELTA"> <shadow type="math_number" id="*zbc@w*XLME=Ix;?Gz1K"> <field name="NUM">1</field> </shadow> </value> </block> </statement> <next> <block type="timeouts_clearinterval" id="Zi?2!1Br7B,v]oh$OrW3" disabled="true"> <field name="NAME">Intervall</field> <next> <block type="debug" id="nh,Xx1?=!t:#JoV%B::2" disabled="true"> <field name="Severity">warn</field> <value name="TEXT"> <shadow type="text" id="{Rl67zi--b,(Yz@S!oyF"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="k4x.edDy}{;RQpPzHbQN"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="c!P)8O-NkHwj0[1W%qC="> <field name="TEXT">Das Licht im Bad war für </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="-)pM(ICZ)tX};F[w8Wc:"> <field name="VAR" id="{OcV;9JI[AK?VB^,6ay*">ZählerSchleife</field> </block> </value> <value name="ADD2"> <block type="text" id="dv^LPCY6qzZ3*,IIHCL`"> <field name="TEXT"> Sekunden eingeschaltet.</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </xml>
-
-
@dslraser
ja, genau -
eigentlich kann das so beim Blockly Start nur "zufällig" mal stimmen und dann erst wenn das nächste Mal eine dieser Zeiten zutrifft. (und steuere passt auch nicht, da der Datenpunkt nix steuert, da sollte aktualisiere rein) Wenn ich das jetzt so starten würde, dann würde in Deinem Datenpunkt jetzt gar nix passieren, da keine dieser Zeiten Zutrifft.
-
Wenn man es ganz genau nimmt, hast Du sicher recht. Aber nachdem ich die Astro-Datenpunkte das erste Mal mit Leben gefüllt habe, hat es eben noch 24 Stunden gedauert, bis der Datenpunkt mit den Tageszeiten erstmalig Daten gezogen hat. Und das aktualisiert sich eben mit den neuen Daten. Das Astro-Script läuft, wenn ich mich nicht irre alle 30 Minuten und wird mit aktuellen Daten gefüttert. Sollte es mal so sein, dass Datenpunkte nicht 100% stimmen, weil sich die Zeiten angepasst haben, kann ich damit um. Wir reden hier ja nur über maximal ein paar Minuten Differenz zum Vortag.
Weiterhin ist natürlich nochmal entscheidend, dass die Astrozeiten eh nie so genau sein können. Das werde ich noch zusätzlich mit HMIP Helligkeitssensoren oder eben auch Bewegungsmeldern koppeln.Erstmal geht es mir hier aber um das Grundverständnis und die Bedienbarkeit bevor wir den Neubau damit ausstatten. Wenn ich das später auf "blauen Dunst" kaufe und das klappt nicht, werde ich ein Problem mit meiner Frau bekommen.
-
@dslraser sagte: eigentlich kann das so beim Blockly Start nur "zufällig" mal stimmen
Richtig. Deshalb verwendet man keine Zeitpunkte, sondern Zeitspannen und geht auch nicht den "Umweg" über ein Astro-Skript und einen zusätzlichen Datenpunkt, da Blockly alles liefert
-
Da war ich gerade glücklich, dass es funktioniert und dann kommt schon eine neue Idee. Danke! Klingt logisch und ich spare mir ein paar Skripte bzw. Blocklys. Hab das direkt mal übernommen und ausgetauscht. Scheint bisher auch zu funktionieren.
-
@hinsen2k
Übrigens: Nacht(-18 °) wird im Sommer(21.6.) nur in Süddeutschland erreicht. Siehe Astrozeiten -
ich habe das Blockly von @paul53 mal für mich auf HUE_ command angepasst. Vielleicht kannst/willst Du es gebrauchen. @paul53 geht das auch noch kürzer, oder ist das okay ?
14:06:25.115 warn javascript.0 (321) script.js.99_Test.hinsen2k-BWM: Interval Kueche gestartet. Der Wert von bri ist: 254 14:07:29.767 warn javascript.0 (321) script.js.99_Test.hinsen2k-BWM: Das Licht in der Küche war für 64 Sekunden eingeschaltet.
@hinsen2k
Du brauchst zum testen nur diese 4 für Dich anpassen. (oder auch umbenennen)
In anderen Blocklys frage ich zusätzlich noch diesen DatenpunktPRESENCE_DETECTION_ACTIVE
mit ab, damit ist es dann auch möglich "Dauerlicht" zu schalten, wenn der Melder vorübergehend ausgeschaltet wird. (Das nutze ich manchmal im Bad, wenn ich in der Badewanne liege. Ich schalte dann per Sprache/Alexa den Bewegungsmelder aus und das Licht bleibt dann dauerhaft an. Bei mir wird dann der Melder spätestens nach einer Stunde wieder eingeschaltet, falls ich es vergesse) -
@dslraser sagte: geht das auch noch kürzer, oder ist das okay ?
"schreibe" sollte nur einmal (am Ende) ausgeführt werden, möglichst auch nur dann, wenn sich das Kommando geändert hat (Störpegel).
-
-
Das hatte ich, natürlich noch umständlicher, auch gerade gelöst.
Nun wollte ich aber statt dem Ergebnis in Sekunden das ganze in Stunden und Minuten haben, was sich entsprechend sekündlich aktualisiert.
Das Ziel ist, die laufende Zeit in Minuten und Sekunden in der Vis anzuzeigen. Ich hab den Timer in der VIS umgerechnet, was aber zur Folge hat, dass alles was <10 Sekunden ist, nur einstellig dargestellt wird. Ist noch suboptimal... -
@hinsen2k sagte in Präsenzmelder nach Tageszeit mit bestimmter Helligkeit:
Das Ziel ist, die laufende Zeit in Minuten und Sekunden
also Minuten und Sekunden (keine Stunden ? ) Ich frage nur zur Sicherheit. Welches Format ? getrennt als Zahlen oder mit : dazwischen, oder als Text ?
-
Erst hatte ich nur an Minuten und Sekunden gedacht. Jetzt wo Du von einer chilligen Zeit in der Badewanne gesprochen hast, könnte es auch mal ne Stunde sein.
Und die Darstellung dann mit :
Aber eben keine statische Zeit, sondern eine die sich in der VIS (oder dem Datenpunkt) sekündlich aktualisiert.