Design Pattern: Time Of Day
Verfasst: 3. Feb 2018 08:37
Moin in die Runde,
ich habe das hier gefunden, soll wohl State of the Art sein um die Tageszeit zu bestimmen:
https://community.openhab.org/t/design- ... -day/15407
soweit läuft ja auch alles fein.
Meine Fragen beziehen sich auf diese Rule
So sehr ich mich auch bemühe ich verstehe es nicht vor allem verstehe ich nicht wie ich eingreifen kannn.
Wie kann ich Zeitpunkte verschieben ?
Bsp : Ich möchte nicht den Sonnenaufgang als Start MORNING nehmen sondern Dämmerung ende, also {channel="astro:sun:home:astroDawn#end"}
und wenn ich mir diese Werte anzeigen lasse sind diese leer , warum ?
DateTime vNight_Time (Astro)
DateTime vBed_Time (Astro)
Und warum erreicht er nie den Status "AFTERNOON"
Kann mir das jemand erklären?
Vielen DANK schon mal im Voraus
ich habe das hier gefunden, soll wohl State of the Art sein um die Tageszeit zu bestimmen:
https://community.openhab.org/t/design- ... -day/15407
soweit läuft ja auch alles fein.
Meine Fragen beziehen sich auf diese Rule
Code: Alles auswählen
when
System started or
Channel 'astro:sun:home:rise#event' triggered START or
Channel 'astro:sun:home:set#event' triggered START or
Channel 'astro:sun:minus90:set#event' triggered START or
Channel 'astro:sun:minus120:set#event' triggered START or
Channel 'astro:sun:minus150:set#event' triggered START or
Time cron "0 1 0 * * ? *" or
Time cron "0 0 6 * * ? *" or
Time cron "0 0 23 * * ? *"
then
logInfo(logName, "Calculating time of day...")
val long morning_start = now.withTimeAtStartOfDay.plusHours(6).millis
val long day_start = (vSunrise_Time.state as DateTimeType).getZonedDateTime.toInstant.toEpochMilli
val long evening_start = (vSunset_Time.state as DateTimeType).getZonedDateTime.toInstant.toEpochMilli
val long night_start = now.withTimeAtStartOfDay.plusHours(23).millis
val long bed_start = now.withTimeAtStartOfDay.millis
// Update when changing the cron triggers above change
vMorning_Time.postUpdate(now.withTimeAtStartOfDay.plusHours(6).toString)
vNight_Time.postUpdate(now.withTimeAtStartOfDay.plusHours(23).toString)
vBed_Time.postUpdate(now.withTimeAtStartOfDay.toString)
val long afternoon_start = (vEvening_Time.state as DateTimeType).getZonedDateTime.toInstant.toEpochMilli
var curr = "UNKNOWN"
switch now {
case now.isAfter(morning_start) && now.isBefore(day_start): curr = "MORNING"
case now.isAfter(day_start) && now.isBefore(afternoon_start): curr = "DAY"
case now.isAfter(afternoon_start) && now.isBefore(evening_start): curr = "AFTERNOON"
case now.isAfter(evening_start) && now.isBefore(night_start): curr = "EVENING"
case now.isAfter(night_start): curr = "NIGHT"
case now.isAfter(bed_start) && now.isBefore(morning_start): curr = "BED"
}
logInfo(logName, "Calculated time of day is " + curr)
vTimeOfDay.sendCommand(curr)
end
Wie kann ich Zeitpunkte verschieben ?
Bsp : Ich möchte nicht den Sonnenaufgang als Start MORNING nehmen sondern Dämmerung ende, also {channel="astro:sun:home:astroDawn#end"}
und wenn ich mir diese Werte anzeigen lasse sind diese leer , warum ?
DateTime vNight_Time (Astro)
DateTime vBed_Time (Astro)
Und warum erreicht er nie den Status "AFTERNOON"
Kann mir das jemand erklären?
Vielen DANK schon mal im Voraus