Get item previous state in a rule

Solved:

// ###########Cinema v2
rule "Cinema scene Level selection"
    when
        Item Scene_Cinema changed
    then
        switch(Scene_Cinema.state) { 
            case 0 : return false                             //no selection
            case 1 : {                                        //Level I
                if (previousState == 8) return false
                //logInfo("TEST ", "sendCommand(D2, DOWN)"
                sendCommand(D2, DOWN)
            }
            case 2 : {                                        //Level II
                if (previousState == 8) return false
                sendCommand(D0, DOWN)
            }
            case 3 : {                                        //Level III
                if (previousState == 8) return false
                sendCommand(D0, DOWN) 
                sendCommand(K1, DOWN)
            }
            case 4 : {                                        //Level IV
                if (previousState == 8) return false
                sendCommand(D0, DOWN) 
                sendCommand(K0, DOWN)
            }
            case 8 : {                                        //STOP
                if (previousState == 8) return false
                sendCommand(D0, STOP)
                sendCommand(K0, STOP)
                postUpdate(Scene_Cinema, previousState)
            }
            case 9 :                                         //exit Cinema mode
                switch(previousState) {
                    case 1 : {
                        sendCommand(D2, UP)
                        postUpdate(Scene_Cinema, 0)
                    }
                    case 2 : {
                        sendCommand(D0, UP)
                        postUpdate(Scene_Cinema, 0)
                    }
                    case 3 : {
                        sendCommand(D0, UP)
                        sendCommand(K1, UP)
                        postUpdate(Scene_Cinema, 0)
                    }
                    case 4 : {
                        sendCommand(D0, UP)
                        sendCommand(K0, UP)
                        postUpdate(Scene_Cinema, 0)
                    }
                    default : {                 //use instead of else statement
                        sendCommand(D0, UP)
                        sendCommand(K0, UP)
                        postUpdate(Scene_Cinema, 0)
                    }
                }
        }
end

Thank you all!

1 Like