Die erste Frage wäre, welchen Itemtyp Du verwendest. Also wie ist KSonoffPow_Watt exakt definiert.
Deine Rules sind so auch nicht so ganz günstig. Dein Boolean wird nämlich zurückgesetzt, sobald der Verbrauch geringer als über 10 Watt ist, nicht erst, wenn der Verbrauch auf 2 Watt gesunken ist.
Abgesehen davon brauchst Du nur eine Rule, schließlich werden beide Rules durch den selben Trigger angestoßen.
Gesetzt den Fall, KSonoffPow_Watt ist als Number definiert (und nicht z.B. Number:Power), sollte eine passende Rule so aussehen:
Code: Alles auswählen
// globale Variablen werden immer zu Beginn der Datei definiert!
var Boolean bMerker = false // Primitives vermeiden
rule "E-Mail bei Ende Maschine"
when
Item KSonoffPow_Watt received update // changed wäre vermutlich genauso gut
then
logDebug("machineEnd","Rule gestartet!")
if(!(KSonoffPow_Watt.state instanceof Number)) {
logWarn("machineEnd","KSonoffPow_Watt hat ungültigen Status! ({})",KSonoffPow_Watt.state)
return;
}
val Number nPow = KSonoffPow_Watt.state as Number
if(nPow > 10 && bMerker != true) {
logDebug("machineEnd","Maschine gestartet!")
bMerker = true
} else if(nPow < 3 && bMerker != false) {
logDebug("machineEnd","Maschine fertig!")
bMerker = false
sendMail("name@name.name", "Die Maschine ist fertig", "gesendet von Deinem openHAB")
}
end
Wenn Du die Debug-Meldungen sehen möchtest, musst Du, während openHAB läuft, über die Karaf Konsole das logLevel für diese Rule erhöhen:
Code: Alles auswählen
openhabian@openhab2:~$ openhab-cli console
Logging in as openhab
__ _____ ____
____ ____ ___ ____ / / / / | / __ )
/ __ \/ __ \/ _ \/ __ \/ /_/ / /| | / __ |
/ /_/ / /_/ / __/ / / / __ / ___ |/ /_/ /
\____/ .___/\___/_/ /_/_/ /_/_/ |_/_____/
/_/ 2.5.0-SNAPSHOT
Build #1502
Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown openHAB.
openhab> bundle:list -s | grep script
139 x Active x 80 x 0.11.0.201901111358 x org.eclipse.smarthome.model.script
140 x Active x 80 x 0.11.0.201901111358 x org.eclipse.smarthome.model.script.ide
141 x Active x 80 x 0.11.0.201901111358 x org.eclipse.smarthome.model.script.runtime
228 x Active x 75 x 0.11.0.201901111358 x org.eclipse.smarthome.transform.javascript
openhab> log:set DEBUG org.eclipse.smarthome.model.script.machineEnd <<<<<<
openhab> log:list
Logger │ Level
───────────────────────────────────────────────────┼──────
ROOT │ WARN
javax.jmdns │ ERROR
org.apache.karaf.jaas.modules.audit │ INFO
org.apache.karaf.kar.internal.KarServiceImpl │ ERROR
org.apache.karaf.shell.support │ OFF
org.apache.sshd │ WARN
org.eclipse.lsp4j │ OFF
org.eclipse.smarthome │ INFO
org.eclipse.smarthome.model.script │
org.eclipse.smarthome.model.script.machineEnd │ DEBUG <<<<<<
org.jupnp │ ERROR
org.openhab │ INFO
org.ops4j.pax.url.mvn.internal.AetherBasedResolver │ ERROR
org.ops4j.pax.web.pax-web-runtime │ OFF
smarthome.event │ INFO
smarthome.event.InboxUpdatedEvent │ ERROR
smarthome.event.ItemAddedEvent │ ERROR
smarthome.event.ItemRemovedEvent │ ERROR
smarthome.event.ItemStateEvent │ ERROR
smarthome.event.ThingAddedEvent │ ERROR
smarthome.event.ThingRemovedEvent │ ERROR
smarthome.event.ThingStatusInfoEvent │ ERROR
openhab> logout
openhabian@openhab2:~$
Achtung! der eigentliche Befehl ist versionabhängig, weil sich der Pfad geändert hat. - seit OH2.5.0-M2, wenn ich mich richtig erinnere.
Aber auch bei richtig alten Versionen ist der Pfad ein anderer, weshalb ich hier direkt zeige, wie Du den korrekten Pfad bestimmst:
1. Schritt: Einloggen in die Karaf Konsole
2. Schritt: Suche nach allen Bundles, in deren Name das Wort script vorkommt.
3. Schritt; logging auf einen bestimmten Level setzen, mit dem vorher gefundenen Pfad (endet mit dem Wort script) und der Erweiterung um den vergebenen loggernamen (der erste String im log-Befehl) (Ich habe die Zeile oben mit <<<<<< markiert)
4. Schritt: Kontrolle, ob der Eintrag stimmt. (Ich habe die Zeile oben mit <<<<<< markiert)
5. Schritt logout.
Diese Änderungen sind unmittelbar gültig. Der Witz ist, dass Du das Logging nun nach Belieben ein- und ausschalten kannst, mehr noch, Du kannst bestimmen, welche Meldungen geloggt werden, keine (Level OFF), alle (Level DEBUG bzw. für openHAB-Komponenten gar TRACE), nur bestimmte (Level INFO, alles ab info, Level WARN, alles ab warn, Level ERROR, nur error Logs)
Es lohnt sich also, das Logging so einzubauen, da die Rule nicht mehr angefasst werden muss, um die Anzahl der Logg Meldungen zu verringern.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet