Ja, ist kein Wunder, denn das Number Item ist ein UoM Item (Number:Power). Da muss der Vergleich etwas anders aussehen, nämlich:
Code: Alles auswählen
rule "TP-Link ausschalten"
when
Item TPLink_Raspi_Watt changed
then
if(!(TPLink_Raspi_Watt.state instanceof Number)) return;
if(TPLink_Raspi_Toggle.state == OFF) return;
if ((TPLink_Raspi_Watt.state as QuantityType<Number>).floatValue < 2) {
TPLink_Raspi_Toggle.sendCommand(OFF)
sendTelegram("openHAB", "TP-Link Steckdose wurde ausgeschaltet.")
}
end
Die erste Zeile nach dem then stellt sicher, dass die Rule nicht mit einer NullPointer Exception abbricht, falls das Item keinen gültigen Wert enthält.
Die zweite Zeile stellt sicher, dass nicht zwei Ausschaltbefehle gesendet werden (einmal, weil der Verbrauch unter 2 Watt fällt, ein zweiter, wenn der Verbrauch auf 0 fällt)
Aber wie gesagt, ich möchte dringend empfehlen, da noch einen Timeout einzubauen:
Code: Alles auswählen
var Timer tKodiAus = null
rule "TP-Link ausschalten"
when
Item TPLink_Raspi_Watt changed
then
if(!(TPLink_Raspi_Watt.state instanceof Number)) return;
if(TPLink_Raspi_Toggle.state == OFF) return;
if ((TPLink_Raspi_Watt.state as QuantityType<Number>).floatValue < 2 && tKodiAus === null)
tKodiAus = createTimer(now.plusSeconds(15),[|
TPLink_Raspi_Toggle.sendCommand(OFF)
sendTelegram("openHAB", "TP-Link Steckdose wurde ausgeschaltet.")
tKodiAus = null
])
end
Nur wenn der Timer noch nicht läuft, wird das Gerät nach 15 Sekunden vom Strom getrennt.
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.9 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte