As I’m using the Velux KLF 200 bridge to control my blinds, I’m faced with the regular “zombie bridge” issue where the only solution is to disable the bridge in openHab, unplug, wait, replug the KLF200 and enable the bridge.
As I have a remote controlled socket on the KLF 200 power line, I can do that just fine manually via Main UI but this is somewhat tedious and I may not notice immediately when the KLF goes zombie.
As such, I would like to write a rule that triggers when the thing goes Offline because of a COMMUNICATION_ERROR state.
Why not trigger on the COMMUNICATION_ERROR state instead of OFFLINE?
If you can’t do that, you’ll have to trigger some rule (maybe the same one) on COMMUNICATION_ERROR and set a timestamp. Then trigger some rule on OFFLINE and send your commands to the switch only if the OFFLINE was close in time to the COMMUNICATION_ERROR.
I thought the UI would let you type in the status, not just select one from the list (similar to Item triggers).
The COMMUNICATION_ERROR is a part of the status details. You could try changing it in the Code tab to OFFLINE (COMMUNICATION_ERROR) but there is no guarantee that will work.
If it doesn’t, trigger the rule just using OFFLINE. Then you can get the Thing and pull the details from the status.
GraalVM JS Scripting
var thing = things.getThing('velux:klf200:4b425d26ec');
if(thing.statusInfo == 'COMMUNICATION_ERROR') {
// toggle the switch
}
else {
console.info('Thing went offline for some other reason');
}
Unfortunately Blockly doesn’t expose the statusInfo in a block.
I have just ordered additional smart plugs, one to be used for the KLF200 as it goes into zombie mode about once every month.
Do you remove power for a certain amount of time? (Like 10, 30 or 60 seconds).
Do you have to disable the binding during reset and enable after it?
Long story short, would you mind sharing your rule with actions?
With Autumn kicking in and the binding being far less active (less sunshade and window opening action), finetuning (and troubleshooting) my own rule would take beyond Christmas I’m afraid…
Aaaaaand it is beyond Christmas and the rule did not provide a successful reset yet. TBH today the bridge finally turned zombie for once. And the rule I made in rules DSL behaved correctly but did not solve the problem. I think due to a power outage one month ago due to which the Innr power plug did not reconnect to my hue bridge properly (I have two Innr plugs, both were unreachable after that time). My hypothesis is that the plugs probably want to connect to the bridge when it is not yet online, fail and don’t retry. I did not try to reconnect them on purpose, just because of this rule.
Anyway, my DSL rule looks like this:
// Triggers:
// - When velux:klf200:meterkast changed
// context: veluxreset-1
if (getThingStatusInfo("velux:klf200:meterkast").getStatusDetail().toString() == "COMMUNICATION_ERROR") {
logWarn("VeluxWARN", "Velux KLF is zombie, restarting it via the power socket")
logInfo("VeluxINFO", "Velux KLF zombie -> disable bridge")
sendHttpPutRequest("http://localhost:8080/rest/things/velux:klf200:meterkast/enable", "text/plain", "false", headers, 1000)
Thread::sleep(2000)
logInfo("VeluxINFO", "Velux KLF zombie -> power off")
Velux_Bridge_Smartplug.sendCommand(OFF)
Thread::sleep(10000)
logInfo("VeluxINFO", "Velux KLF zombie -> power on")
Velux_Bridge_Smartplug.sendCommand(ON)
VeluxEnableTimer = createTimer(now.plusSeconds(30))[|
logInfo("VeluxINFO", "Velux KLF zombie -> enable bridge")
sendHttpPutRequest("http://localhost:8080/rest/things/velux:klf200:meterkast/enable", "text/plain", "true", headers, 1000)
VeluxEnableTimer = null
]
}
Reason that it took three-and-half month to finally turn zombie:
I bought the Innr plugs only after the previous post (innr as these had the right dimensions not to block the plugs next to it and are compitable with the hue environment that is already present).
After incorporating them in hue, one wall switch of hue commanded a room i.s.o. a single light, took me a few weeks to figure out that mistake (turning off the bridge together with the light).
Had to turn of power a few times for other reasons and finally the power outage one month ago…
Now waiting for the next zombie state (plugs are paired again)
Not sure if it will help:
After I moved the klf200 bridge closer to the roller shutters I want to control, I have not faced the communication error between klf200 and OH again. Maybe weak signal was causing this