Unkontrolliertes AN/AUS-Schalten von Lampen(Leuchten) bei Änderung von Item-Stammdaten
Verfasst: 13. Nov 2024 12:44
Hallo in die Runde.
Ich habe einige "Zigbee2mqtt-Lampen" (Paulmann) und kann diese per Switch(Sonoff SNZB-01/SNZB-01P) und DSL-Rule an- und ausschalten. Die Switche erkennen "single/double/long"
Ein kleiner (unerwünschter) Nebeneffekt tritt auf, wenn ich Änderungen in der .items-Datei vornehme. Dann nämlich wird irgend eine meiner Rules ausgelöst und eine Lampe angeschaltet.
zigbee2mqtt_switches.items:
zigbee2mqtt_switch.rules
Es passiert relativ selten, dass ich nach dem SetUp noch Änderungen im ".items-file" vornehme, aber wenn jemand eine Lösung weiss, dann nehme ich die gerne auf.
Ich habe einige "Zigbee2mqtt-Lampen" (Paulmann) und kann diese per Switch(Sonoff SNZB-01/SNZB-01P) und DSL-Rule an- und ausschalten. Die Switche erkennen "single/double/long"
Ein kleiner (unerwünschter) Nebeneffekt tritt auf, wenn ich Änderungen in der .items-Datei vornehme. Dann nämlich wird irgend eine meiner Rules ausgelöst und eine Lampe angeschaltet.
zigbee2mqtt_switches.items:
Code: Alles auswählen
// Mini Switch SNZB01 - 01 snzb_01_01
Group gsnzb01_01 "Sensor SNZB-01 01" <snzb_01> (gEG_Kind2) ["Sensor"]
String snzb01_01_action "Sensor SNZB-01 01 Zustand" <snzb_01> (gsnzb01_01) ["Switch"] { channel="mqtt:topic:danny:snzb0101:action" }
Number:ElectricPotential snzb01_01_voltage "Sensor SNZB-01 01 Spannung [%.1f]" <snzb_01> (gsnzb01_01) ["Voltage"] { channel="mqtt:topic:danny:snzb0101:voltage" }
Number:Dimensionless snzb01_01_battery "Sensor SNZB-01 01 Batterie" <snzb_01> (gsnzb01_01) ["Level"] { channel="mqtt:topic:danny:snzb0101:battery", unit="%" }
Number snzb01_01_linkquality "Sensor SNZB-01 01 LQI " <snzb_01> (gsnzb01_01) ["Frequency"] { channel="mqtt:topic:danny:snzb0101:linkquality", stateDescription=" " [pattern="%.0f LQI"] }
Code: Alles auswählen
rule "miniswitch_snzb01_01"
when
Item snzb01_01_action received update
then
// logInfo("miniswitch_snzb01_02", "{}", snzb01_01_action.label)
switch (snzb01_01_action.state) {
case "single" : {
var location = getLocation(LidlLedLamp_01)
if (LidlLedLamp_01.state == ON) {
LidlLedLamp_01.sendCommand(OFF)
logInfo("single 1 - if", "{} - {} Lampe ausgeschaltet: {}", snzb01_01_action.state.toString, LidlLedLamp_01.label, location.label)
return;
}
else (LidlLedLamp_01.state == OFF) {
LidlLedLamp_01.sendCommand(ON)
logInfo("single 1 - else", "{} - {} Lampe angeschaltet: {}", snzb01_01_action.state.toString, LidlLedLamp_01.label, location.label)
return;
}
}
case "double" : {
var location = getLocation(Be2709w_01)
if (Be2709w_01.state == ON) {
Be2709w_01.sendCommand(OFF)
logInfo("double 1 - if", "{} - {} Lampe ausgeschaltet: {}", snzb01_01_action.state.toString, Be2709w_01.label, location.label)
return;
}
else (Be2709w_01.state == OFF) {
Be2709w_01.sendCommand(ON)
logInfo("double 1 - else", "{} - {} Lampe angeschaltet: {}", snzb01_01_action.state.toString, Be2709w_01.label, location.label)
return;
}
}
case "long" : {
var location = getLocation(Be2709w_02)
if (Be2709w_02.state == ON) {
Be2709w_02.sendCommand(OFF)
logInfo("long 1 - if", "{} - {} Lampe ausgeschaltet: {}", snzb01_01_action.state.toString, Be2709w_02.label, location.label)
return;
}
else (Be2709w_02.state == OFF) {
Be2709w_02.sendCommand(ON)
logInfo("long 1 - else", "{} - {} Lampe angeschaltet: {}", snzb01_01_action.state.toString, Be2709w_02.label, location.label)
return;
}
}
}
end