I have copy and paste the tutorials examples: Time of Day Events, but I get some error in my log file. No time showing up in the sitemap and no event take place. I have read further in the thread, but I don’t see any notice about my problem. I haven’t make any adjustment to my file, so it stand as in the first post.
I’m using a pi 3b+. Running OH 2.4 which has been power off and on.
I have copied the error from the log file, Asto item, rules and sitemap (The file on PI).
I don’t think there any problem in the Astro and sitemap, since the log file point to DawnStart_ in this line:
val dawn = new Date((DawnStart_Time.state as DateTimeType).calendar.timeInMillis)
Can any tell my what the problem is and how I correct it.
Copy of error in log file:
‘’’
2019-09-21 16:37:11.537 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule ‘Generate Time of Day Events’: Could not cast NULL to org.eclipse.smarthome.core.library.types.DateTimeType; line 59, column 26, length 36
2019-09-21 16:37:55.188 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item for widget org.eclipse.smarthome.model.sitemap.Text
2019-09-21 16:37:55.198 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item ‘SunriseStart_Time’ for widget org.eclipse.smarthome.model.sitemap.Text
2019-09-21 16:37:55.204 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item ‘SunriseStart_Time’ for widget org.eclipse.smarthome.model.sitemap.Text
2019-09-21 16:37:55.208 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item ‘SunriseStart_Time’ for widget org.eclipse.smarthome.model.sitemap.Text
2019-09-21 16:37:55.213 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item for widget org.eclipse.smarthome.model.sitemap.Text
2019-09-21 16:37:55.217 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item ‘SunsetStart_Time’ for widget org.eclipse.smarthome.model.sitemap.Text
2019-09-21 16:37:55.225 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item ‘SunsetStart_Time’ for widget org.eclipse.smarthome.model.sitemap.Text
2019-09-21 16:37:55.231 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item ‘SunsetStart_Time’ for widget org.eclipse.smarthome.model.sitemap.Text
‘’’’
Astro items start here: The top part of are from the original astro example. I don’t see any problems here.
Astro.items
‘’’’
Group Astro <sun_clouds> (W66a)
//
DateTime Current_DateTime “Today [%1$tA, %1$td.%1$tm.%1$tY]” (Astro) {channel=“ntp:ntp:local:dateTime”}
//
DateTime Sunset_Time “Sunset [%1$tH:%1$tM]” (Astro) {channel=“astro:sun:home:set#start”}
DateTime Sunrise_Time “Sunrise [%1$tH:%1$tM]” (Astro) {channel=“astro:sun:home:rise#end”}
DateTime Evening_Time “Evening [%1$tH:%1$tM]” (Astro) {channel=“astro:sun:minus90:set#start”}
//
String Day_Phase “Phase of Day [MAP(astro.map):%s]” (Astro) {channel=“astro:sun:home:phase#name”}
Switch Night_State “Night” (Astro)
//
String Season_Name “Season [MAP(astro.map):%s]” (Astro) {channel=“astro:sun:home:season#name”}
String Zodiac_Sign “Zodiac [MAP(astro.map):%s]” (Astro) {channel=“astro:sun:home:zodiac#sign”}
Number Sun_Elevation “Sun Elevation [%.1f °]” (Astro) {channel=“astro:sun:home:position#elevation”}
Number Moon_Elevation “Moon Elevation [%.1f °]” (Astro) {channel=“astro:moon:home:position#elevation”}
String Moon_Phase “Moon Phase [MAP(astro.map):%s]” (Astro) {channel=“astro:moon:home:phase#name”}
DateTime Moon_Next_Full “Next Full Moon [%1$td.%1$tm.%1$tY, %1$tH:%1$tM]” (Astro) {channel=“astro:moon:home:phase#full”}
DateTime Moon_Next_New “Next New Moon [%1$td.%1$tm.%1$tY, %1$tH:%1$tM]” (Astro) {channel=“astro:moon:home:phase#new”}
///
//Design Pattern: time-of-day-events
// Time of Day Events
// Times of Day
String TimePeriodOfDay “Time of Day [%s]”
DateTime DawnStart_Time “Dawn Start [%1$tH:%1$tM]” { channel=“astro:sun:local:civilDawn#start” }
DateTime DawnStop_Time “Dawn Stop [%1$tH:%1$tM]” { channel=“astro:sun:local:civilDawn#end” }
DateTime DayStart_Time “Day Start [%1$tH:%1$tM]” { channel=“astro:sun:local:daylight#start” }
DateTime DayStop_Time “Day Stop [%1$tH:%1$tM]” { channel=“astro:sun:local:daylight#end” }
DateTime DuskStart_Time “Dusk Start [%1$tH:%1$tM]” { channel=“astro:sun:local:civilDusk#start” }
DateTime DuskStop_Time “Dusk Stop [%1$tH:%1$tM]” { channel=“astro:sun:local:civilDusk#end” }
DateTime NightStart_Time “Night Start [%1$tH:%1$tM]” { channel=“astro:sun:local:night#start” }
DateTime NightStop_Time “Night Stop[%1$tH:%1$tM]” { channel=“astro:sun:local:night#end” }
DateTime MorningNightStart_Time “MorningNightStart [%1$tH:%1$tM]” { channel=“astro:sun:local:morningNight#start” }
DateTime MorningNightStop_Time “MorningNightStop [%1$tH:%1$tM]” { channel=“astro:sun:local:morningNight#end” }
DateTime EveningNightStart_Time “EveningNightStart [%1$tH:%1$tM]” { channel=“astro:sun:local:eveningNight#start” }
DateTime EveningNightStop_Time “EveningNightStop [%1$tH:%1$tM]” { channel=“astro:sun:local:eveningNight#end” }
// Events
Switch DawnStart_Event “Start of Dawn Event”
Switch DayStart_Event “Start of Day Event”
Switch DuskStart_Event “Start of Dusk Event”
Switch NightStart_Event “Start of Night Event”
// Items
Switch Dawn “Dawn [%s]” // After Dawn and before Day
Switch Day “Day [%s]” // After Day and before Dusk
Switch Dusk “Dusk [%s]” // After Dusk and before Night
Switch Night “Night [%s]” // After Night and before Dawn
Number SunAzimuth “Azimuth [%.0f °]” { channel=“astro:sun:local:position#azimuth” }
Number SunElevation “Elevation [%.0f °]” { channel=“astro:sun:local:position#elevation” }
String MoonPhase “MoonPhase [%s]” { channel=“astro:moon:local:phase#name” }
‘’’’
RULES file start here:
time-of-day.rules
‘’’’
import java.util.Date
// Time of Day Rules
// Requires time update every 60 seconds
val String RFN = “time-of-day.rules”
rule “Get time period for right now”
when
System started
then
val now = new Date()
val dawn = new Date((DawnStart_Time.state as DateTimeType).calendar.timeInMillis)
val day = new Date((DayStart_Time.state as DateTimeType).calendar.timeInMillis)
val dusk = new Date((DuskStart_Time.state as DateTimeType).calendar.timeInMillis)
val night = new Date((NightStart_Time.state as DateTimeType).calendar.timeInMillis)
val String initStr = "Initializing time period. The time of day is "
if(now.after(dawn) && now.before(day)) {
logInfo(RFN, initStr + "Dawn: " + now)
Dawn.sendCommand(ON)
Day.sendCommand(OFF)
Dusk.sendCommand(OFF)
Night.sendCommand(OFF)
TimePeriodOfDay.postUpdate("Dawn")
}
else if(now.after(day) && now.before(dusk)) {
logInfo(RFN, initStr + "Day: " + now)
Dawn.sendCommand(OFF)
Day.sendCommand(ON)
Dusk.sendCommand(OFF)
Night.sendCommand(OFF)
TimePeriodOfDay.postUpdate("Day")
}
else if(now.after(dusk) && now.before(night)) {
logInfo(RFN, initStr + "Dusk: " + now)
Dawn.sendCommand(OFF)
Day.sendCommand(OFF)
Dusk.sendCommand(ON)
Night.sendCommand(OFF)
TimePeriodOfDay.postUpdate("Dusk")
}
else {
logInfo(RFN, initStr + "Night: " + now)
Dawn.sendCommand(OFF)
Day.sendCommand(OFF)
Dusk.sendCommand(OFF)
Night.sendCommand(ON)
TimePeriodOfDay.postUpdate("Night")
}
end
rule “Generate Time of Day Events”
when
Item CurrentTime received update
then
val now = new Date()
val dawn = new Date((DawnStart_Time.state as DateTimeType).calendar.timeInMillis)
val day = new Date((DayStart_Time.state as DateTimeType).calendar.timeInMillis)
val dusk = new Date((DuskStart_Time.state as DateTimeType).calendar.timeInMillis)
val night = new Date((NightStart_Time.state as DateTimeType).calendar.timeInMillis)
val sunset = new Date((SunsetStart_Time.state as DateTimeType).calendar.timeInMillis)
val sunrise = new Date((SunriseStart_Time.state as DateTimeType).calendar.timeInMillis)
if((now.getTime-(now.getTime%60000)) == (dawn.getTime-(dawn.getTime%60000))) {
logInfo(RFN, "Transitioning to Dawn!!!")
DawnStart_Event.postUpdate(ON)
}
else if((now.getTime-(now.getTime%60000)) == (day.getTime-(day.getTime%60000))) {
logInfo(RFN, "Transitioning to Day!!!")
DayStart_Event.postUpdate(ON)
}
else if((now.getTime-(now.getTime%60000)) == (dusk.getTime-(dusk.getTime%60000))) {
logInfo(RFN, "Transitioning to Dusk!!!")
DuskStart_Event.postUpdate(ON)
}
else if((now.getTime-(now.getTime%60000)) == (night.getTime-(night.getTime%60000))) {
logInfo(RFN, "Transitioning to Night!!!")
NightStart_Event.postUpdate(ON)
}
if((now.getTime-(now.getTime%60000)) == (sunrise.getTime-(sunrise.getTime%60000))) {
logInfo(RFN, "Start of Sunrise!")
SunriseStart_Event.postUpdate(ON)
}
else if((now.getTime-(now.getTime%60000)) == (sunset.getTime-(sunset.getTime%60000))) {
logInfo(RFN, "Start of Sunset!")
SunsetStart_Event.postUpdate(ON)
}
end
rule “Dawn Started”
when
Item DawnStart_Event received update ON
then
val now = new Date()
val dawn = new Date((DawnStart_Time.state as DateTimeType).calendar.timeInMillis)
val day = new Date((DayStart_Time.state as DateTimeType).calendar.timeInMillis)
if(now.after(dawn) && now.before(day)) {
logInfo(RFN, "Its Dawn: " + now)
Dawn.sendCommand(ON)
Day.sendCommand(OFF)
Dusk.sendCommand(OFF)
Night.sendCommand(OFF)
TimePeriodOfDay.postUpdate("Dawn")
}
end
rule “Day Started”
when
Item DayStart_Event received update ON
then
val now = new Date()
val day = new Date((DayStart_Time.state as DateTimeType).calendar.timeInMillis)
val dusk = new Date((DuskStart_Time.state as DateTimeType).calendar.timeInMillis)
if(now.after(day) && now.before(dusk)) {
logInfo(RFN, "Its Day: " + now)
Dawn.sendCommand(OFF)
Day.sendCommand(ON)
Dusk.sendCommand(OFF)
Night.sendCommand(OFF)
TimePeriodOfDay.postUpdate("Day")
}
end
rule “Dusk started”
when
Item DuskStart_Event received update ON
then
val now = new Date()
val dusk = new Date((DuskStart_Time.state as DateTimeType).calendar.timeInMillis)
val night = new Date((NightStart_Time.state as DateTimeType).calendar.timeInMillis)
if(now.after(dusk) && now.before(night)) {
logInfo(RFN, "Its Dusk: " + now)
Dawn.sendCommand(OFF)
Day.sendCommand(OFF)
Dusk.sendCommand(ON)
Night.sendCommand(OFF)
TimePeriodOfDay.postUpdate("Dusk")
}
end
rule “Night started”
when
Item NightStart_Event received update ON
then
val now = new Date()
val morningNightStart = new Date((MorningNightStart_Time.state as DateTimeType).calendar.timeInMillis)
val morningNightStop = new Date((MorningNightStop_Time.state as DateTimeType).calendar.timeInMillis)
val eveningNightStart = new Date((EveningNightStart_Time.state as DateTimeType).calendar.timeInMillis)
val eveningNightStop = new Date((EveningNightStop_Time.state as DateTimeType).calendar.timeInMillis)
if((now.after(morningNightStart) && now.before(morningNightStop)) ||
(now.after(eveningNightStart) && now.before(eveningNightStop))) {
logInfo(RFN, "Its Night: " + now)
Dawn.sendCommand(OFF)
Day.sendCommand(OFF)
Dusk.sendCommand(OFF)
Night.sendCommand(ON)
TimePeriodOfDay.postUpdate("Night")
}
end
rule “Sunrise started”
when
Item SunriseStart_Event received update ON
then
val now = new Date()
logInfo(RFN, "Its Sunrise : " + now)
end
rule “Sunset started”
when
Item SunsetStart_Event received update ON
then
val now = new Date()
logInfo(RFN, "Its Sunset : " + now)
end
‘’’
Sitemap start here:
Test.sitemap
‘’’’
sitemap test2 label=“Header2”
{
Frame label=“Day switch”
{
Switch item=Switch1 label=“Test knap”
}
Slider item=Dimmer1 label=“dimmer [%d %%]”
Switch item=Pir1 label=“movement”
Text item=Pir1_Bat label=“pir1”
Text item=Door1 label=“driveway [%s]”
// Text item=Door1_B label=“door1”
Text item=Door2 label=“Door2 [%s]”
// Text item=Door2_B label=“door2”
Text item=Door3 label=“Door3 [%s]”
// Text item=Door3_B label=“door3”
Text item=Door4 label=“Door4 [%s]”
// Text item=Door4_B label=“door4”
Text item=Door5 label=“Door5 [%s]”
// Text item=Door5_B label=“door5”
Text item=Door6 label=“Door6 [%s]”
// Text item=Door6_B label=“door6”
Text item=Door7 label=“Stairway [%s]”
Text item=Westwall label=“West wall [%s]”
// Text item=Door7_B label=“door7”
Text item=Door8 label=“Door8 [%s]”
// Text item=Door8_B label=“door8”
Switch item=Switch1 label=“Test knap”
Switch item=Sonoff_s31_1 label=“Wall plug 1”
Switch item=Sonoff_s31_2 label=“Wall plug 2”
Text item=vTimeOfDay label=“vTimeOfDay [%]”
///
//Time of Day Events
//https://community.openhab.org/t/time-of-day-events/14554
Frame {
Text label=“Time of Day Information” {
Frame label=“Time Period of Day” {
Text item=TimePeriodOfDay label=“Time of Day”
}
Frame label=“Time Transition Events” {
Text item=SunriseStart_Time label=“Sunrise Start Time”
Text item=SunsetStart_Time label=“Sunset Start Time”
Text item=DawnStart_Time label=“Dawn Start Time”
Text item=DayStart_Time label=“Day Start Time”
Text item=DuskStart_Time label=“Dusk Start Time”
Text item=NightStart_Time label=“Night Start Time”
}
Frame label=“Time of Day Status” {
Text item=Dawn label=“Is Dawn”
Text item=Day label=“Is Day”
Text item=Dusk label=“Is Dusk”
Text item=Night label=“Is Night”
}
Frame label=“Sun” {
Text item=SunAzimuth label=“Sun Azimuth” icon=“sun”
Text item=SunElevation label=“Sun Elevation” icon=“sun”
}
Frame label=“Moon” {
Text item=MoonPhase label=“Moon Phase” icon=“moon”
}
}
}
///
}
‘’’’’