[SOLVED] Case in Rules is not working

Hello,

while optimizing my already working rule I realy get desperate with the new code.
I have a dropdown on my sitemap to select a program for my heating system.
It workes fine with the “old version” but not with the one with the “case”. Does anyone have a solution for me?

OLD VERSION:

when
    Item Heizung_Status received command
    // 5="5°C Frostschutz", 17="17°C Absenkbetrieb", 21="21°C Komfort", 15="15°C Urlaub" --> s. heating.sitemap
then
    val HeizungTemp = (Heizung_Status.state as Number).intValue
    
    WohnThermostatTargetTemperature.sendCommand(HeizungTemp)      //Wohnzimmer
    BadThermostatTargetTemperature.sendCommand(HeizungTemp)       //Badezimmer
    KindThermostatTargetTemperature.sendCommand(HeizungTemp)      //Kinderzimmer
    BuegelThermostatTargetTemperature.sendCommand(HeizungTemp)    //Bügelzimmer
    SchlafThermostatTargetTemperature.sendCommand(HeizungTemp)    //Schlafzimmer
        
    logInfo("Heizung", "Änderung")
    sendBroadcastNotification("Die Heizung wurde in allen Zimmern auf " +HeizungTemp + "Grad gestellt!")
    Echo_Living_Room_Talk.sendCommand("Die Heizung wurde in allen Zimmern auf " +HeizungTemp + "Grad gestellt!")
end```

NEW ONE:


```php
when

    Item Heizung_Status received update
    // 5="5°C Frostschutz", 17="17°C Absenkbetrieb", 21="21°C Komfort", 15="15°C Urlaub" --> s. heating.sitemap

then

    val HeizungTemp = (Heizung_Status.state as Number).intValue

    switch HeizungTemp {

    case 5:{                                                            // Frostschutz für alle 

        WohnThermostatTargetTemperature.sendCommand(HeizungTemp)        //Wohnzimmer
        BadThermostatTargetTemperature.sendCommand(HeizungTemp)         //Badezimmer
        KindThermostatTargetTemperature.sendCommand(HeizungTemp)        //Kinderzimmer
        BuegelThermostatTargetTemperature.sendCommand(HeizungTemp)      //Bügelzimmer
        SchlafThermostatTargetTemperature.sendCommand(HeizungTemp)      //Schlafzimmer

        logInfo("Heizung", "Änderung")
        sendBroadcastNotification("Die Heizung wurde in allen Zimmern auf " +HeizungTemp + "Grad gestellt!")
        Echo_Living_Room_Talk.sendCommand("Die Heizung wurde in allen Zimmern auf " +HeizungTemp + "Grad gestellt!")
    }

    case 15:{                                                           //Urlaub für alle

        WohnThermostatTargetTemperature.sendCommand(HeizungTemp)        //Wohnzimmer
        BadThermostatTargetTemperature.sendCommand(HeizungTemp)         //Badezimmer
        KindThermostatTargetTemperature.sendCommand(HeizungTemp)        //Kinderzimmer
        BuegelThermostatTargetTemperature.sendCommand(HeizungTemp)      //Bügelzimmer
        SchlafThermostatTargetTemperature.sendCommand(HeizungTemp)      //Schlafzimmer

        logInfo("Heizung", "Änderung")
        sendBroadcastNotification("Die Heizung wurde in allen Zimmern auf " +HeizungTemp + "Grad gestellt!")
        Echo_Living_Room_Talk.sendCommand("Die Heizung wurde in allen Zimmern auf " +HeizungTemp + "Grad gestellt!")
    }

    case 17: {                                                          //Absenkbetrieb für alle außer schlafzimmer
    
        WohnThermostatTargetTemperature.sendCommand(HeizungTemp)        //Wohnzimmer
        BadThermostatTargetTemperature.sendCommand(HeizungTemp)         //Badezimmer
        KindThermostatTargetTemperature.sendCommand(HeizungTemp)        //Kinderzimmer
        BuegelThermostatTargetTemperature.sendCommand(HeizungTemp)      //Bügelzimmer

        logInfo("Heizung", "Änderung")
        sendBroadcastNotification("Die Heizung wurde in allen Zimmern, außer dem Schlafzimmer auf " +HeizungTemp + "Grad gestellt!")
        Echo_Living_Room_Talk.sendCommand("Die Heizung wurde in allen Zimmern, außer im Schlafzimmer auf " +HeizungTemp + "Grad gestellt!")
    }
    
    case 21: {                                                          //Komfortbetrieb nur für Wohnzimmer

        WohnThermostatTargetTemperature.sendCommand(HeizungTemp)        //Wohnzimmer

        logInfo("Heizung", "Änderung")
        sendBroadcastNotification("Die Heizung wurde im Wohnzimmer auf " +HeizungTemp + "Grad gestellt!")
        Echo_Living_Room_Talk.sendCommand("Die Heizung wurde im Wohnzimmer auf " +HeizungTemp + "Grad gestellt!")
    }

    HeizungTemp.postUpdate(0)

}
end```


salu2
Stefano

That’s going to break the rule because HeizungTemp is a variable, not an Item, so it doesn’t have a postUpdate() method.
You don’t need it because HeizungTemp gets recreated each time the rule runs.

1 Like

Thank you! It works!