Design Pattern: Time Of Day

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Erhard Pech
Beiträge: 8
Registriert: 2. Jan 2018 15:18
Answers: 0

Design Pattern: Time Of Day

Beitrag von Erhard Pech »

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

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
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

mikshe
Beiträge: 3
Registriert: 30. Nov 2017 19:26
Answers: 0

Re: Design Pattern: Time Of Day

Beitrag von mikshe »

Hast Du auch die Things definiert (und gegebenenfalls angepasst) wie in dem Tutorial beschrieben (siehe unter "openHAB 2 Astro 2.0 Example")?

Antworten