[SOLVED] Ultimate guide to debugging rules?

Ok,

First of all, please use the code fences when publishing code

You rules is:

rule "Oppvask"
when
Item OppvaskProgramStatus changed
then
logDebug("Oppvask","Rule running!")
if (OppvaskProgramStatus is "Off") {
KjokkenPanel.postUpdate("Huset")
logDebug("Oppvask","HUSET chosen")
}
else {
KjokkenPanel.postupdate("HusOppvask")
logDebug("Oppvask","Oppvask chosen")
}
end

Which is untidy, use indents:
To see message in the log use logInfo if your logging is not set to debug.
Use ==, is is NOT a keywork.
Put a space after commas, it makes the code easier to read.
The state of an item can be obtained with .state. Putting just the name of the item refers to the item object itself.
Add a logInfo line to check the value of OppvaskProgramStatus.
Add a check if the value is NULL and do nothing in that case.

rule "Oppvask"
when
    Item OppvaskProgramStatus changed
then
    logInfo("Oppvask", "Rule running!")
    logInfo("Oppvask", "Status is: " + OppvaskProgramStatus.state.toString)
    if (OppvaskProgramStatus.state == NULL) return; //Do nothing if changed to NULL
    if (OppvaskProgramStatus.state == "Off") {
        KjokkenPanel.postUpdate("Huset")
        logInfo("Oppvask", "HUSET chosen")
    }
    else {
        KjokkenPanel.postUpdate("HusOppvask")
        logInfo("Oppvask", "Oppvask chosen")
    }
end
2 Likes