[SOLVED] Different Item types in the same group

Hi

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

My Items:

Dimmer		spots_kokken		"Spots Køkken"					(kokken)			["Lighting"]		
Dimmer		pendler_kokken		"Pendler Køkken"				(kokken)			["Lighting"]	
Dimmer		spisebord_kokken	"Spisebord Køkken"				(kokken)			["Lighting"]		
Switch		overskabe_kokken	"Overskabe_kokken"				(kokken)    		["Lighting"]		

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

Thanks it works

I did find out that the rule runs every time i turn on an item, is there a way that it only can run ones every day?

Once a day, you mean?

Yes

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

You are awesome Thanks.

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.