NEWS
Astrozeit spinnt - Lampen sind zu früh an
-
Hi zusammen,
seit einigen Monaten spinnt mein Skript. Geändert hatte ich eigentlich nichts.
Um diese Uhrzeit und bei dem hellen Wetter geht das Licht im Flur bereits an.//Flur EG let lampe1 = 'alias.0.Flur.Licht.Flur1'; let lampe2 = 'alias.0.Flur.Licht.Flur2'; let bwm = 'alias.0.Flur.Sensor.Bewegungsmelder.presence'; let licht_wohnzimmer = 'yeelight-2.0.Yeelight-Stehlampe.control.power'; let overwrite = '0_userdata.0.Licht.Flur_overwrite'; let von, bis, low_von = '20:30:00'; let timeOut; von = getState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang').val; bis = getState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang').val; // function checkLightWohnzimmer(){ // if(getState(licht_wohnzimmer).val === false){ // return true; // }else{ // return false; // } // } function checkLightWohnzimmer(){ if(getState(licht_wohnzimmer).val === false && getState(overwrite).val === false){ return true; }else{ return false; } } on({id: bwm}, function(obj){ if(timeOut){ clearTimeout(timeOut); } if(obj.state.val === true && isTimeInRange(von, bis) === true && checkLightWohnzimmer() === true){ if(isTimeInRange(low_von, bis) === true){ setState(lampe1 + '.level', 5); setState(lampe1 + '.ct', 6530); setState(lampe2 + '.level', 5); setState(lampe2 + '.ct', 6530); }else{ setState(lampe1 + '.level', 32); setState(lampe1 + '.ct', 6530); setState(lampe2 + '.level', 32); setState(lampe2 + '.ct', 6530); } setState(lampe1 + '.on', true) setState(lampe2 + '.on', true) timeOut = setTimeout(function(){ setState(lampe1 + '.on', false); setState(lampe2 + '.on', false); }, 150000) }else if(obj.state.val === false){ setState(lampe1 + '.on', false); setState(lampe2 + '.on', false); } })
mit dem Astrozeit Skript ...
/* System Tageszeoten Skript meldet Tageszeiten Nacht;Frühmorgens;Morgengrauen;Vormittag;Mittag;Nachmittag;Dämmerung;Abend; Basis: http://www.homematic-inside.de/tecbase/homematic/scriptlibrary/item/tageszeit-in-abschnitte-unterteilen oder hier: https://github.com/ioBroker/ioBroker.javascript#astro--funktion https://github.com/iobroker/ioBroker.javascript/blob/master/README.md#getastrodate erstellt: 01.06.2015 von Pix 18.02.2018 Sonnenaufgang und Sonnenuntergang wird nur noch neu geschrieben wenn die bereits gesetzte Zeit sich von der neuen Unterscheidet 11.12.2015 getAstroDate ermittelt nun auch Sonnenaufgang und Untergang Astrotag (isAstroDay) eingebaut */ /*Variablen erstellen*/ createState('0_userdata.0.Allgemein.Astro.Tageszeit', { name: 'Tageszeit' }); createState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang', { name: 'nächster Sonnenaufgang Uhrzeit', desc: 'sunrise (top edge of the sun appears on the horizon)' }); createState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang', { name: 'nächster Sonnenuntergang Uhrzeit', desc: 'sunset (sun disappears below the horizon, evening civil twilight starts)' }); createState('0_userdata.0.Allgemein.Astro.Tageszeit.Astrotag', false, { read: true, write: true, type: 'boolean', name: 'Astologischer Tag', desc: 'Zeit zwischen Sonnenauf- und untergang' }); let idTageszeit = "0_userdata.0.Allgemein.Astro.Tageszeit", tageszeiten = ['Nacht', 'Morgendämmerung', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abenddämmerung', 'Abend'], idAstrotag = "0_userdata.0.Allgemein.Astro.Tageszeit.Astrotag", idSonnenaufgang = "0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang", idSonnenuntergang = "0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang"; function zeiten_speichern () { let astrotag = getState(idAstrotag).val, sonnenaufgang, sonnenuntergang; let today = new Date(); let tomorrow = today.setDate(today.getDate()+1); if (astrotag) { // Wenn Tag (Aufgang vorbei (erst wieder morgen, Untergang kommt noch heute) sonnenuntergang = getAstroDate('sunset', today), sonnenaufgang = getAstroDate('sunrise', tomorrow); } else { // nach Nacht (Untergang vorbei (erst wieder morgen, Aufgang kommt heute oder morgen) sonnenuntergang = getAstroDate('sunset', tomorrow); sonnenaufgang = (today.getHours() > 12 && today.getHours() <= 23) ? getAstroDate('sunrise', tomorrow) : getAstroDate('sunrise', today); // es ist vor Mitternacht (bzw. vor 23:XXUhr), dann morgen, sonst heute } if(getState(idSonnenaufgang).val != sonnenaufgang){ setState(idSonnenaufgang, sonnenaufgang.toLocaleTimeString('de-DE', { hour12: false })); } if(getState(idSonnenuntergang).val != sonnenuntergang){ setState(idSonnenuntergang, sonnenuntergang.toLocaleTimeString('de-DE', { hour12: false })); } } function neue_tageszeit(abschnitt) { setState(idTageszeit, tageszeiten[parseInt(abschnitt, 10)]); log('neue Tagezeit: ' + tageszeiten[parseInt(abschnitt, 10)], 'info'); zeiten_speichern(); } // Nacht schedule({astro: "night", shift: 120}, function () { neue_tageszeit(0) }); // Morgengdämmerung schedule({astro: "nightEnd"}, function () { neue_tageszeit(1) }); // Morgen schedule({astro: "sunrise"}, function () { neue_tageszeit(2) }); // Vormittag (beginnt 120min vor Sonnenhöchststand) schedule({astro: "solarNoon", shift: -120}, function () { neue_tageszeit(3) }); // Mittag schedule({astro: "solarNoon"}, function () { neue_tageszeit(4) }); // Nachmittag schedule({astro: "solarNoon", shift: 60}, function () { neue_tageszeit(5) }); // Abenddämmerung (nach Sonnenuntergang) schedule({astro: "dusk"}, function () { neue_tageszeit(6) }); // Abend schedule({astro: "night"}, function () { neue_tageszeit(7) }); // Astrotag checken schedule("*/1 * * * *", function () { if (isAstroDay) setState(idAstrotag, true); if (!isAstroDay) setState(idAstrotag, false); zeiten_speichern(); });
-
@bielefelder81 was sagt die Systemzeit?
-
@homoran Hi, der ioBroker zeigt unter "Info" folgendes an.
0c4dff98-e79d-4106-885f-2d6c4329ec01-image.png -
@bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:
@homoran Hi, der ioBroker zeigt unter "Info" folgendes an
das ist nicht die Systemzeit des Servers, sondern die Zeit deines PCs
-
-
timedatectl
Und das ganze nicht als root und Konsolentext nicht als Screenshot sondern als Text in CodeTags.
-
Laut Datenpunkt in den Objekten steht Tageszeit "Nachmittag" und trotzdem ist das Licht schon an.
Eigentlich müsste dort doch mindestens Abenddämmerung oder so etwas stehen.
-
Local time: Mon 2023-06-05 20:53:02 CEST Universal time: Mon 2023-06-05 18:53:02 UTC RTC time: n/a Time zone: Europe/Berlin (CEST, +0200) System clock synchronized: yes NTP service: inactive RTC in local TZ: no
-
Wo kommt der Inhalt von
0_userdata.0.Allgemein.Astro.Tageszeit.
her?
Vergiss die Frage...
Hab geschnallt. -
@thomas-braun sagte in Astrozeit spinnt - Lampen sind zu früh an:
Wo kommt der Inhalt von
@Bielefelder81
und wieso steht im Ordner ein Wert?
...weil der Ordner in Wirklichkeit ein State ist... zählt nicht als Antwort. -
@homoran Sry, aber ich bin da nicht so firms. Mir hatte man mal die beiden Skripte vor x Jahren mal gegeben und bis vor einigen Wochen funktionierte auch alles.
Laut kleinem Info Fenster wurde heute um 14:25 Uhr der Wert zuletzt aktualisiert. -
Das Skript hatte ich oben ja gepostet. Es ist unter Skripte > common > Astrozeit
Dort zieht er sich ja anscheinend die Tageszeit und trägt sie dort in den Ordner ein. Vermute ich./* System Tageszeoten Skript meldet Tageszeiten Nacht;Frühmorgens;Morgengrauen;Vormittag;Mittag;Nachmittag;Dämmerung;Abend; Basis: http://www.homematic-inside.de/tecbase/homematic/scriptlibrary/item/tageszeit-in-abschnitte-unterteilen oder hier: https://github.com/ioBroker/ioBroker.javascript#astro--funktion https://github.com/iobroker/ioBroker.javascript/blob/master/README.md#getastrodate erstellt: 01.06.2015 von Pix 18.02.2018 Sonnenaufgang und Sonnenuntergang wird nur noch neu geschrieben wenn die bereits gesetzte Zeit sich von der neuen Unterscheidet 11.12.2015 getAstroDate ermittelt nun auch Sonnenaufgang und Untergang Astrotag (isAstroDay) eingebaut */ /*Variablen erstellen*/ createState('0_userdata.0.Allgemein.Astro.Tageszeit', { name: 'Tageszeit' }); createState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang', { name: 'nächster Sonnenaufgang Uhrzeit', desc: 'sunrise (top edge of the sun appears on the horizon)' }); createState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang', { name: 'nächster Sonnenuntergang Uhrzeit', desc: 'sunset (sun disappears below the horizon, evening civil twilight starts)' }); createState('0_userdata.0.Allgemein.Astro.Tageszeit.Astrotag', false, { read: true, write: true, type: 'boolean', name: 'Astologischer Tag', desc: 'Zeit zwischen Sonnenauf- und untergang' }); let idTageszeit = "0_userdata.0.Allgemein.Astro.Tageszeit", tageszeiten = ['Nacht', 'Morgendämmerung', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abenddämmerung', 'Abend'], idAstrotag = "0_userdata.0.Allgemein.Astro.Tageszeit.Astrotag", idSonnenaufgang = "0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang", idSonnenuntergang = "0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang"; function zeiten_speichern () { let astrotag = getState(idAstrotag).val, sonnenaufgang, sonnenuntergang; let today = new Date(); let tomorrow = today.setDate(today.getDate()+1); if (astrotag) { // Wenn Tag (Aufgang vorbei (erst wieder morgen, Untergang kommt noch heute) sonnenuntergang = getAstroDate('sunset', today), sonnenaufgang = getAstroDate('sunrise', tomorrow); } else { // nach Nacht (Untergang vorbei (erst wieder morgen, Aufgang kommt heute oder morgen) sonnenuntergang = getAstroDate('sunset', tomorrow); sonnenaufgang = (today.getHours() > 12 && today.getHours() <= 23) ? getAstroDate('sunrise', tomorrow) : getAstroDate('sunrise', today); // es ist vor Mitternacht (bzw. vor 23:XXUhr), dann morgen, sonst heute } if(getState(idSonnenaufgang).val != sonnenaufgang){ setState(idSonnenaufgang, sonnenaufgang.toLocaleTimeString('de-DE', { hour12: false })); } if(getState(idSonnenuntergang).val != sonnenuntergang){ setState(idSonnenuntergang, sonnenuntergang.toLocaleTimeString('de-DE', { hour12: false })); } } function neue_tageszeit(abschnitt) { setState(idTageszeit, tageszeiten[parseInt(abschnitt, 10)]); log('neue Tagezeit: ' + tageszeiten[parseInt(abschnitt, 10)], 'info'); zeiten_speichern(); } // Nacht schedule({astro: "night", shift: 120}, function () { neue_tageszeit(0) }); // Morgengdämmerung schedule({astro: "nightEnd"}, function () { neue_tageszeit(1) }); // Morgen schedule({astro: "sunrise"}, function () { neue_tageszeit(2) }); // Vormittag (beginnt 120min vor Sonnenhöchststand) schedule({astro: "solarNoon", shift: -120}, function () { neue_tageszeit(3) }); // Mittag schedule({astro: "solarNoon"}, function () { neue_tageszeit(4) }); // Nachmittag schedule({astro: "solarNoon", shift: 60}, function () { neue_tageszeit(5) }); // Abenddämmerung (nach Sonnenuntergang) schedule({astro: "dusk"}, function () { neue_tageszeit(6) }); // Abend schedule({astro: "night"}, function () { neue_tageszeit(7) }); // Astrotag checken schedule("*/1 * * * *", function () { if (isAstroDay) setState(idAstrotag, true); if (!isAstroDay) setState(idAstrotag, false); zeiten_speichern(); });
-
@bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:
Vermute ich.
ich auch, ich kann aber kein js
-
@homoran Hast du eine andere Möglichkeit für mich? Dann nehme ich die gern, damit die Lampe endlich nur im Dunkeln angeht
-
Ich nutze dafür den 'followthesun'-Adapter.
Und einen user-Account, nicht den root. -
@bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:
Hast du eine andere Möglichkeit für mich
nee, Systemzeit ist die häufigste Ursache, aber die passt ja.
@bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:
heute um 14:25 Uhr der Wert zuletzt aktualisiert.
auf nachmittag.
das passt ja.@bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:
astro: "solarNoon", shift: 60
das nächste wäre
@bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:
Abenddämmerung (nach Sonnenuntergang)
das kommt in Bielefeld ungefähr jetzt
der Fehler mit dem Licht muss also woanders liegen
edit: Sonnenuntergang in Bielefeld heute ca. 21:40
-
@homoran Oh Dann weiß ich nicht. Wann exakt die Lampen angehen weiß ich nicht. Glaube aber, dass es schon bereits vor 18 Uhr angeht, obwohl es deutlich zu hell für Licht im Flur ist. "Früher" funktionierte das.
-
@thomas-braun Den Root hatte ich eben nur in der Konsole auf Proxmox angemeldet, um nach der Uhrzeit zu schauen.
-
@bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:
Wann exakt die Lampen angehen weiß ich nicht.
laut Skript fix um
@bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:
let von, bis, low_von = '20:30:00';
-
@homoran Nee ab 20:30 Uhr soll es "dunkler" beleuchtet sein... Denn das Licht im Flur sieht man im Kinderzimmer. Vor 20:30 Uhr kann das Flurlicht ruhig auf 100% sein. So war es eigentlich geplant.
Das Skript checkt: Licht im Wohnzimmer an, ja nein? Wenn ja, dann kein Licht an. Wenn nein, dann geht das Flurlicht an (Wenn nach 20:30 Uhr dann nur 30% oder so)