NEWS
[Blockly] Lampe einschalten, wenn PC zwischen Sonnenuntergang und Sonnenaufgang eingeschaltet ist
-
Hallo zusammen,
ich stehe total auf dem Schlauch und benötige eure Hilfe.
Ich möchte folgendes realisieren:
Falls (if) ping.0.ioBroker.192_168_0_2 = true & Uhrzeit zwischen 18-06 Uhr
Mache broadlink.0.learnedSignals.CODE_b21d34000c23230c230c230c0c23230c0d22230c0c23230c0c23230c230c230c0c230c230c230c220c230d22230c230c0c230c230c00016200000000 = button (Funksteckdose mit LED Kugel dran)
Sonst (else) ping.0.ioBroker.192_168_0_2 = false & broadlink.0.learnedSignals.CODE_b21d34000c23230c230c230c0c23230c0d22230c0c23230c0c23230c230c230c0c230c230c230c220c230d22230c230c0c230c230c00016200000000 = button
Mache broadlink.0.learnedSignals.CODE_b21d34000c23230c230c230c0c23230c0d22230c0c23230c0c23230c230c230c0c230c230c230c220c230d22230c230c0c230c230c00016200000000 = button
Nochmal in Worten:
Wenn ich den PC einschalte & es zwischen 18 & 6 Uhr morgens ist, dann schalte LED Kugel ein. Wenn der PC ausgeschaltet wird, schalte LED Kugel aus (auch nur zwischen 18-6 Uhr)
Vielen Dank vorab für eure Hilfe.
VG
Modjo
-
Moin,
hast du das schon mal mit Blockly versucht? Ist damit eigentlich relativ einfach.
Gruß
Matze
-
Ich glaube es gelöst zu haben. Ich habe jetzt nicht mit Uhrzeiten, sondern mit "Abenddämmerung" und "Sonnenaufgang" gearbeitet.
4811_unbenannt.jpg -
Hallo zusammen,
irgend etwas stimmt da noch nicht. Die Funksteckdose schaltet die Lampe zwar an, sobald der Rechner über Ping erreichbar ist & auch wieder aus, sobald er aus ist und nicht mehr per Ping erreichbar ist, aber halt immer.
Bedeutet, dass er gar nicht auf Abenddämmerung und Sonnenaufgang reagiert.
Was mache ich falsch?
Gruß
-
Moin,
erstmal zu den Zeiten: die Astrozeiten sind ein tägliches, einmaliges Ereignis. Das kannst du so nicht verwenden. Dann triggerst du dein Script auf PC aus ganz ohne Zeit.
Mach mal so:
Musst natürlich die Datenpunkte für PC und Lampe einbauen.
Matze
-
Jetzt müsste es passen. Ich habe die Uhrzeiten noch einmal angepasst. Doof nur, dass ich quasi im Winter und Sommer die Zeiten manuell ändern muss, da es unterschiedlich lange hell ist.
Vielen Dank Matzebhv!
Gruß
4811_unbenannt.jpg -
Hmm,
ich bin mir grade nicht sicher. Probiere das doch einfach mal.
Matze
EDIT: Für die Astrofunktion muss im Admin dein Wohnort konfiguriert sein.
Mit diesem Script kannst du dir die Astrodaten für den Tag anzeigen lassen.
! ````
// Astrozeiten für heute - V1.0
! log("=====================");
log("Astro Werte für heute");
log("=====================");
//----------------------------------------------------------------- Werte vom 3.12.2015
var nightEnd = getAstroDate("nightEnd");
log(" (0) nightEnd (Ende der Nacht)........................: " + nightEnd.toLocaleTimeString()); // 05:37
var nauticalDawn = getAstroDate("nauticalDawn");
log(" (1) nauticalDawn (naut. Dämmerung Morgens)...........: " + nauticalDawn.toLocaleTimeString()); // 06:13
var dawn = getAstroDate("dawn");
log(" (2) dawn (Dämmerung Morgens).........................: " + dawn.toLocaleTimeString()); // 06:52
var sunrise = getAstroDate("sunrise");
log(" (3) sunrise (Sonnenaufgang)..........................: " + sunrise.toLocaleTimeString()); // 07:26
var sunriseEnd = getAstroDate("sunriseEnd");
log(" (4) sunriseEnd (Ende des Sonnenaufgangs).............: " + sunriseEnd.toLocaleTimeString()); // 07:26
var goldenHourEnd = getAstroDate("goldenHourEnd");
log(" (5) goldenHourEnd (Ende der Golden Hour VM)..........: " + goldenHourEnd.toLocaleTimeString()); // 08:17
var solarNoon = getAstroDate("solarNoon");
log(" (6) solarNoon (Mittag)...............................: " + solarNoon.toLocaleTimeString()); // 11:49
var goldenHour = getAstroDate("goldenHour");
log(" (7) goldenHour (Start der Golden Hour NM)............: " + goldenHour.toLocaleTimeString()); // 15:22
var sunsetStart = getAstroDate("sunsetStart");
log(" (8) sunsetStart (Start des Sonnenuntergangs).........: " + sunsetStart.toLocaleTimeString()); // 16:08
var sunset = getAstroDate("sunset");
log(" (9) sunset (Sonnenuntergang).........................: " + sunset.toLocaleTimeString()); // 16:12
var dusk = getAstroDate("dusk");
log("(10) dusk (Dämmerung Abends)..........................: " + dusk.toLocaleTimeString()); // 16:47
var nauticalDusk = getAstroDate("nauticalDusk");
log("(11) nauticalDusk (naut. Dämmerung Abends)............: " + nauticalDusk.toLocaleTimeString()); // 17:25
var night = getAstroDate("night");
log("(12) night (Start der Nacht)..........................: " + night.toLocaleTimeString()); // 18:02
var nadir = getAstroDate("nadir");
log("(13) nadir (Mitternacht)..............................: " + nadir.toLocaleTimeString()); // 23:49
log("=====================");
var today = new Date();
var tomorrow = today.setDate(today.getDate()+1);
var tomorrowNight = getAstroDate("night", tomorrow);
log("Night starts tomorrow at " + tomorrowNight.toLocaleTimeString()); -
Hmm,
ich bin mir grade nicht sicher. Probiere das doch einfach mal.
blockly.PNG
Matze
EDIT: Für die Astrofunktion muss im Admin dein Wohnort konfiguriert sein.
Mit diesem Script kannst du dir die Astrodaten für den Tag anzeigen lassen.
!
// Astrozeiten für heute - V1.0 ! log("====================="); log("Astro Werte für heute"); log("====================="); //----------------------------------------------------------------- Werte vom 3.12.2015 var nightEnd = getAstroDate("nightEnd"); log(" (0) nightEnd (Ende der Nacht)........................: " + nightEnd.toLocaleTimeString()); // 05:37 var nauticalDawn = getAstroDate("nauticalDawn"); log(" (1) nauticalDawn (naut. Dämmerung Morgens)...........: " + nauticalDawn.toLocaleTimeString()); // 06:13 var dawn = getAstroDate("dawn"); log(" (2) dawn (Dämmerung Morgens).........................: " + dawn.toLocaleTimeString()); // 06:52 var sunrise = getAstroDate("sunrise"); log(" (3) sunrise (Sonnenaufgang)..........................: " + sunrise.toLocaleTimeString()); // 07:26 var sunriseEnd = getAstroDate("sunriseEnd"); log(" (4) sunriseEnd (Ende des Sonnenaufgangs).............: " + sunriseEnd.toLocaleTimeString()); // 07:26 var goldenHourEnd = getAstroDate("goldenHourEnd"); log(" (5) goldenHourEnd (Ende der Golden Hour VM)..........: " + goldenHourEnd.toLocaleTimeString()); // 08:17 var solarNoon = getAstroDate("solarNoon"); log(" (6) solarNoon (Mittag)...............................: " + solarNoon.toLocaleTimeString()); // 11:49 var goldenHour = getAstroDate("goldenHour"); log(" (7) goldenHour (Start der Golden Hour NM)............: " + goldenHour.toLocaleTimeString()); // 15:22 var sunsetStart = getAstroDate("sunsetStart"); log(" (8) sunsetStart (Start des Sonnenuntergangs).........: " + sunsetStart.toLocaleTimeString()); // 16:08 var sunset = getAstroDate("sunset"); log(" (9) sunset (Sonnenuntergang).........................: " + sunset.toLocaleTimeString()); // 16:12 var dusk = getAstroDate("dusk"); log("(10) dusk (Dämmerung Abends)..........................: " + dusk.toLocaleTimeString()); // 16:47 var nauticalDusk = getAstroDate("nauticalDusk"); log("(11) nauticalDusk (naut. Dämmerung Abends)............: " + nauticalDusk.toLocaleTimeString()); // 17:25 var night = getAstroDate("night"); log("(12) night (Start der Nacht)..........................: " + night.toLocaleTimeString()); // 18:02 var nadir = getAstroDate("nadir"); log("(13) nadir (Mitternacht)..............................: " + nadir.toLocaleTimeString()); // 23:49 log("====================="); var today = new Date(); var tomorrow = today.setDate(today.getDate()+1); var tomorrowNight = getAstroDate("night", tomorrow); log("Night starts tomorrow at " + tomorrowNight.toLocaleTimeString());
`Hey, vielen Dank für die Hilfe,
ich werde es wie folgt probieren:
-
Da die "Aktuelle Zeit Astro" nicht nur die Uhrzeit, sondern auch das heutige Datum enthält, muss die "Von-Zeit" vor der "Bis-Zeit" liegen. Damit man trotzdem auf "dunkel" prüfen kann, gibt es "nicht zwischen". Etwa so:
-
Da die "Aktuelle Zeit Astro" nicht nur die Uhrzeit, sondern auch das heutige Datum enthält, muss die "Von-Zeit" vor der "Bis-Zeit" liegen. Damit man trotzdem auf "dunkel" prüfen kann, gibt es "nicht zwischen". Etwa so:
Ping_nachts.JPG `
Hallo paul53,
jetzt habe ich einen Knoten im Kopf, hoffe aber, dass ich dich richtig verstanden habe.
Also nehmen wir mal folgendes Szenario an:
****__Sonnenaufgang-Ende: 01.01.2018 06:00
Sonnenuntergang-Anfang 01.01.2018 20:00
Wenn: PC Wahr & Zeit nicht zwischen 01.01.2018 06:00 (Sonnenaufgang-Ende) und 01.01.2018 20:00 (Sonnenuntergang) (20:01-05:59)
Mache: Büro Kugel ein Wahr
Sonst Falls:
Wenn: PC Wahr & Zeit zwischen 01.01.2018 06:00 (Sonnenaufgang-Ende) und 01.01.2018 20:00 (Sonnenuntergang-Anfang) (06:00-20:00)
Mache: Büro Kugel aus Wahr
Sonst Falls:
Wenn: PC Unwahr
Mache: Büro Kugel aus Wahr__****
<u>ACHTUNG: Die Werte entsprechen nicht der Realität zur Jahreszeit, habe es nur zur Vereinfachung so gesetzt.</u>
Habe ich das richtig interpretiert?
Dann müsste es so aussehen:
4811_unbenannt.jpg -
Ein einfaches "sonst" zum Ausschalten der Kugel (s. mein Beispiel) macht das ganauso.
Anstelle "Wert von Objekt ID PC" kann man die Skriptvariable "value" testen, da sie bereits den Wert des Ping-Datenpunktes enthält.
-
Ein einfaches "sonst" zum Ausschalten der Kugel (s. mein Beispiel) macht das ganauso.
Anstelle "Wert von Objekt ID PC" kann man die Skriptvariable "value" testen, da sie bereits den Wert des Ping-Datenpunktes enthält. `
Also das "value" mag er nicht so gerne, also belasse ich bei "Wert von Objekt ID PC".Nun sieht es wie folgt aus, was ich testen werde.
Vielen Dank für die Hilfe.
Gruß
4811_unbenannt.jpg -
Leider funktioniert das irgendwie nicht. Tagsüber schaltet er das Licht auch an, sobald der Rechner per Ping erreichbar ist, als ob die "und" Bedinungung gar nicht vorhanden wäre.
Hat Jemand noch eine Idee?
VG
Modjo
-
Nicht dass hier wieder der Tagesübergang probleme macht.
Dann musst du die Logik so umbauen, dass du in der Zeit keinen Tagesübergang hast.
Gruß
Rainer
-
wahrscheinlich liegt es an UTC und aktueller Zeit vor Ort….
Bitte mal nur mit Debug Output die Zeiten ausgeben lassen. Dann findest den Fehler ganz bestimmt
2678_zeit.png -
Nicht dass hier wieder der Tagesübergang probleme macht. `
Wahrscheinlich.Der Tageswechsel muss berücksichtigt werden.
Grüße
[EDIT] Warum können die Leute im Betreff nicht Blockly erwähnen, wenn es um Blockly geht? :roll:
-
Hmmmm…... es gibt an einem Tag nur einen Sonnenaufgang und einen Sonnenuntergang.
Versteht nicht ganz wieso man den Tageswechsel noch gesondert berücksichtigen muss......
Ansonsten ist ja z.B 8 Uhr morgens der Aufgang und 18 Uhr der Untergang. Also wie man es dreht und wendet sollten da nur die Uhrzeiten berücksichtigt werden und nicht das Datum?
Steh ich da auf dem Schlauch?
-
Nicht dass hier wieder der Tagesübergang probleme macht.
Dann musst du die Logik so umbauen, dass du in der Zeit keinen Tagesübergang hast.
Gruß
Rainer `
Hallo Rainer,
leider verstehe ich nur Bahnhof
Hmmmm…... es gibt an einem Tag nur einen Sonnenaufgang und einen Sonnenuntergang.
Versteht nicht ganz wieso man den Tageswechsel noch gesondert berücksichtigen muss......
Ansonsten ist ja z.B 8 Uhr morgens der Aufgang und 18 Uhr der Untergang. Also wie man es dreht und wendet sollten da nur die Uhrzeiten berücksichtigt werden und nicht das Datum?
Steh ich da auf dem Schlauch? `
Sieht für mich ok aus:
4811_unbenannt.jpg -
leider verstehe ich nur Bahnhof `
Obwohl ich nur Quereinsteiger bin, antworte ich mal für RainerAbfrage zwischen Sonnenaufgang und Sonnenuntergang geht. Ist ja der selbe Tag.
Abfrage zwischen Sonnenuntergang und Sonnenaufgang geht nicht. Tageswechsel.
Grüße
-
Nicht dass hier wieder der Tagesübergang probleme macht. `
Wahrscheinlich.Der Tageswechsel muss berücksichtigt werden.
Beispiel.png
Grüße
[EDIT] Warum können die Leute im Betreff nicht Blockly erwähnen, wenn es um Blockly geht? :roll: `
Hi,
ich will gerade dein Beispiel folgen und es ausprobieren, nur leider finde ich dieses verschachtelte "oder" nicht in den Blöcken. Kannst du mir hier einen Tipp geben, wo ich das finde?
Danke & Gruß