@violine21
Hallo André,
lange nichts mehr von dir gehört. Danke für dein Vorschlag. Aber eigentlich geht es mir weniger darum ein anderes Gerät zu schalten und ggf. über einen bestimmten Zeitraum nicht wieder ausgehen zu lassen. Ich schau's mir aber nochmal genauer an.
Liebe Grüsse in den Harz - Peter
@udo1toni
udo1toni hat geschrieben: ↑31. Jan 2025 00:55
Noch ist da ja gar kein Timer (also außer dem im Bewegungsmelder eingebauten).
Das mit der Location ist einfach eine Spielerei um aus einer Eigenschaft (semantisches Modell) den Standort des Gerätes (Equipment) zu ermitteln. Das geht mit DSL super und soweit Ich weiss mit JS nicht bzw. nur ganz kompliziert mit mehreren Repeatern(JustinG) . Das hab ich eigentlich aus einer anderen Regel abgeleitet, die mit mehreren Bewegungsmeldern arbeitet. (Ich vermute mal stark, dass du mir da auch geholfen hast

). Es geht eigentlich nur um die Information, das eine Bewegung erkannt wurde.
So sieht sie aus:
Code: Alles auswählen
import org.openhab.core.model.script.ScriptServiceUtil
rule "motion_all"
when
Member of gMoSo changed to ON
then
if (snzb03_01_occupancy.state == ON || snzb03_01_occupancy.state == OFF) return; // Ergänzung
var GenericItem itemTemp = ScriptServiceUtil.getItemRegistry.getItem(triggeringItemName) as GenericItem // Initialize Generic Item
var strLocation = getLocation(itemTemp).label // Location Label ermitteln
logInfo("motion", "Da hat sich was getan im {} von {} : Bewegung gerade: {} ", strLocation, triggeringItemName, newState)
val mailActions = getActions("mail","mail:smtp:tonline-smtp")
mailActions.sendMail("name@provider.de", "Bewegung im: " + strLocation, "durch: " + itemTemp.label)
Ich hab da noch eine Bedingung eingebaut, damit ich nicht mit Spam-Mails und Logs überflutet werde, weil ich im Arbeitszimmer sitze und irgend etwas mache und der Bewegungsmelder isch nach einer gewissen Zeit wieder ausschaltet und danach wieder angeht. (Er soll sozusagen nicht merken, dass ich nichts tue

)
Ich hab auch schon mal versucht einen Timer einzubauen, aber das was ich da fabriziert habe, war nur "Schrott"
Versuch:
Code: Alles auswählen
// https://openhabforum.de/viewtopic.php?p=57780&hilit=bewegungsmelder+timer#p57780
var Timer occupancyTimer = null
val int timeoutMinutes = 5
rule "motion_snzb03"
when
Item snzb03_01_occupancy changed to ON
then
var GenericItem itemTemp = ScriptServiceUtil.getItemRegistry.getItem(triggeringItemName) as GenericItem // Initialize Generic Item
var strLocation = getLocation(itemTemp).label // Location Label ermitteln
logInfo("snzb03", "Da hat sich was getan im {} von {} : Bewegung gerade: {} ", strLocation, triggeringItemName, newState)
if (occupancyTimer === null) {
occupancyTimer = createTimer(now.plusMinutes(timeoutMinutes)) [|
logInfo("snzb03", "Da hat sich was getan im {} von {} : Bewegung gerade: {} ", strLocation, triggeringItemName, newState)
occupancyTimer = null
]
} else if (snzb03_01_occupancy.state == ON)
{occupancyTimer.reschedule(now.plusMinutes(timeoutMinutes))
} else occupancyTimer = null
end
... weil ich's wohl nicht richtig verstanden habe.
Wie gesagt, es geht nur darum (und bei diesem Bewegungmelder), dass die Meldungen(Log/Email) sich nicht permanet wiederholen, wenn sich jemand über längere Zeit im Arbeitszimmer aufhält. Der Timer soll halt bestehen bleiben solange ich mich im Raum aufhalte, auch wenn ich mal eine Minute still stehe

und der Bewegungsmelder sich in der Zwischenzeit aus- und wieder angeschaltet hat.
Dank an euch im voraus.