I have four items three Dimmer items and one Switch item, i cant get them to react on a rule if one of the Dimmer items goes ON, the Switch item works fine, I added them all to the same group
When i turn on one of the dimmers I can see in the log the kokken group goes to ON, and when i turn OFF the dimmer, the kokken group goes OFF.
So it should work, but it dosen’t
The log when i turn ON/OFF one of the dimmers:
2018-12-03 20:54:47.200 [ome.event.ItemCommandEvent] - Item 'spots_kokken' received command 22
2018-12-03 20:54:47.540 [vent.ItemStateChangedEvent] - spots_kokken changed from 0 to 22
2018-12-03 20:54:47.544 [GroupItemStateChangedEvent] - kokken changed from OFF to ON through spots_kokken
2018-12-03 20:54:58.514 [vent.ItemStateChangedEvent] - spots_kokken changed from 22 to 0
2018-12-03 20:54:58.520 [GroupItemStateChangedEvent] - kokken changed from ON to OFF through spots_kokken
My Rule:
rule "Godmorgen hilsen"
when
Member of kokken changed to ON
then
if(now.getHourOfDay >= 20 && now.getHourOfDay <= 21)
{
var String AudioSink
AudioSink= "sonos:PLAY1:RINCON_949F3E72CEE801400" //"sonos:PLAY1:RINCON_B8E937B7EB3601400"
var String SayText1
var String SayText2
var String SayText3
SayText1="Godmorgen allesammen "
SayText2="Klokken er " + Ntp.state.format("%1$tR") + " og idag er det " + Ntp.state.format("%1$tA") + " den " + Ntp.state.format("%1$td") + ". " + Ntp.state.format("%1$tB")
SayText3=" Temperaturen udenfor er lige nu " + Temp_ude.state.format("%.1f") + " Grader"
// SayText3=SayText3.replace(".",",")
logInfo("Godmorgen hilsen", "SayText: {}",SayText1 + SayText2 + SayText3)
say(SayText1,null,AudioSink)
say(SayText2,null,AudioSink)
say(SayText3,null,AudioSink)
if
(Temp_ude.state < 0)
(
say("Da temperaturen er under 0 grader. skal i nok huske at sætte tid af. til at fjerne is og sne på biler og vejen udenfor",null, "sonos:PLAY1:RINCON_B8E937B7EB3601400")
)
}
end
Your problem here is that the dimmer doesn’t change to ON it changes to 22 (Or any value > 0)
So change the rule’s trigger:
I’ve also tidied up your code a bit
rule "Godmorgen hilsen"
when
Member of kokken changed to ON or
Member of kokken changed from 0
then
if (triggeringItem.state == 0 || triggeringItem.state == OFF) return; //If dimmer is 0 or switch if OFF do nothing
if(now.getHourOfDay >= 20 && now.getHourOfDay <= 21) {
var String AudioSink
AudioSink = "sonos:PLAY1:RINCON_949F3E72CEE801400" //"sonos:PLAY1:RINCON_B8E937B7EB3601400"
var String SayText1
var String SayText2
var String SayText3
SayText1="Godmorgen allesammen "
SayText2="Klokken er " + Ntp.state.format("%1$tR") + " og idag er det " + Ntp.state.format("%1$tA") + " den " + Ntp.state.format("%1$td") + ". " + Ntp.state.format("%1$tB")
SayText3="Temperaturen udenfor er lige nu " + Temp_ude.state.format("%.1f") + " Grader"
// SayText3=SayText3.replace(".",",")
logInfo("Godmorgen hilsen", "SayText: {}",SayText1 + SayText2 + SayText3)
say(SayText1,null,AudioSink)
say(SayText2,null,AudioSink)
say(SayText3,null,AudioSink)
if (Temp_ude.state < 0) {
say("Da temperaturen er under 0 grader. skal i nok huske at sætte tid af. til at fjerne is og sne på biler og vejen udenfor",null, "sonos:PLAY1:RINCON_B8E937B7EB3601400")
}
}
end
var Number testTrigger = 0
rule "reset trigger after midnigth"
when
Time cron "0 1 0 ? * * *"
then
testTrigger = 0
end
rule "Godmorgen hilsen"
when
Member of kokken changed to ON or
Member of kokken changed from 0
then
if (triggeringItem.state == 0 || triggeringItem.state == OFF) return; //If dimmer is 0 or switch if OFF do nothing
if (testTrigger == 1) return;
testTrigger = 1
if(now.getHourOfDay >= 20 && now.getHourOfDay <= 21) {
var String AudioSink
AudioSink = "sonos:PLAY1:RINCON_949F3E72CEE801400" //"sonos:PLAY1:RINCON_B8E937B7EB3601400"
var String SayText1
var String SayText2
var String SayText3
SayText1="Godmorge......
It’s called a flag.
You use them to “mark” something
Just don’t forget to reset them!!
Also, be aware that this flag is a variable and therefore volatile.
Meaning that the value will not survive an openHAB reset or reboot
You can achieve that by using an item and persistence.