Hab eine rules die mir sagt das der Postbote Post in den Briefkasten eingeworfen hat. Hab im Postkasten umgebauten Xiaomi Door Sensor mit dem Schalter eingebaut.
Letzte Zeit prellt der Schalter und ich bekomme die Benachrichtigung mehrmals.
Kann man das irgendwie begrenzen? Z.b das wenn einmal getriggert nur einmal Benachrichtigung kommt und danach erst in z.b einer Stunde , wenn nochmal getriggert. Oder irgendwie anders Hauptsache ich bekomme die Nachrichten nur einmal.
rule "Post"
when
Item Kontakt4 changed to OPEN
then
{
var picture1 = "pic1.jpg"
executeCommandLine("wget", "http://name:pass192.000.000.000/ISAPI/Streaming/channels/201/picture", "-O", "/etc/openhab/html/" + picture1)
Echo_Show_Announcement.sendCommand('Post ist da')
Echo_Show_TTS_Volume.sendCommand ('5')
Echo_Show_TTS.sendCommand('Post ist da')
Echo_Show_TTS_Volume.sendCommand ('2')
Echo_Garage_TTS.sendCommand( 'Post ist da')
Thread::sleep(3000)
val telegramAction = getActions("telegram","telegram:telegramBot:bot1")
telegramAction.sendTelegram("Post ist da \ud83d\udceb")
telegramAction.sendTelegramPhoto("http://192.000.000.000:8080/static/pic1.jpg", "Kamera Garage")
}
end
Das Einfachste ist ein Schalter, den Du in der Rule einschaltest. Zu Beginn der Rule prüfst Du, ob der Schalter eingeschaltet ist oder nicht. Ist der Schalter eingeschaltet, brichst Du die Rule ab.
Zum Ausschalten der Rule kannst Du entweder einen Timer starten oder Du nutzt einfach die Expiration Funktion, welche den Schalter nach dem eingestellten Timeout einfach wieder abschaltet.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
var Timer PostTimer = null //Timer löschen
val Integer PostTimer_TimeOut = 10 //Wert für den Timer
rule "Post"
when
Item Kontakt4 changed to OPEN
then
if(Post.state == OFF) //wenn der Schalter Post aus ist läuft die rules
{
var picture1 = "pic1.jpg"
executeCommandLine("wget", "http://name:pass192.000.000.000/ISAPI/Streaming/channels/201/picture", "-O", "/etc/openhab/html/" + picture1)
Echo_Show_Announcement.sendCommand('Post ist da')
Echo_Show_TTS_Volume.sendCommand ('5')
Echo_Show_TTS.sendCommand('Post ist da')
Echo_Show_TTS_Volume.sendCommand ('2')
Echo_Garage_TTS.sendCommand( 'Post ist da')
Thread::sleep(3000)
val telegramAction = getActions("telegram","telegram:telegramBot:bot1")
telegramAction.sendTelegram("Post ist da \ud83d\udceb")
telegramAction.sendTelegramPhoto("http://192.000.000.000:8080/static/pic1.jpg", "Kamera Garage")
}
else //wenn der Post schalter nicht aus dann einschalten und timer starten und RPost schalter aus
{Post.sendCommand (ON)
PostTimer = createTimer(now.plusMinutes(PostTimer_TimeOut), [|
Post.sendCommand (OFF)
])
}
end
Ist das so richtig? timer hab ich auf 10 min gemacht das wird bestimmt reichen.
var Timer tPost = null // Timer für Post
val Integer iPost_TimeOut = 10 // Wert für den Timer
rule "Post"
when
Item Kontakt4 changed to OPEN
then
if(tPost !== null) // wenn der Timer existiert
return; // Rule abbrechen
val telegramAction = getActions("telegram","telegram:telegramBot:bot1") // hole Handle für Telegram
val strMeldung = "Post ist da" // Setze Meldungstext
val strSource = "http://name:pass@192.168.0.0/ISAPI/Streaming/channels/201/picture" // Setze Quelle
var picture1 = "pic1.jpg" // Setze Dateinamen
executeCommandLine("wget", strSource, "-O", "/etc/openhab/html/" + picture1) // speichere Bild im Web-Ordner
Echo_Show_Announcement.sendCommand(strMeldung)
Echo_Show_TTS_Volume.sendCommand (5)
Echo_Show_TTS.sendCommand(strMeldung)
Echo_Show_TTS_Volume.sendCommand (2)
Echo_Garage_TTS.sendCommand(strMeldung)
Thread::sleep(3000) // sollte nicht nötig sein!
telegramAction.sendTelegram("Post ist da \ud83d\udceb")
telegramAction.sendTelegramPhoto("http://192.168.0.0:8080/static/pic1.jpg", "Kamera Garage") // Bild senden
tPost = createTimer(now.plusMinutes(iPost_TimeOut), [| // Timer starten
tPost = null // Variable leeren
])
end
Die Variable muss ohnehin abgefragt werden (wenn man es ordentlich machen will) und dann reicht eine minimalistische Version.
Beachte bitte auch, dass ein ungebundener Schalter nicht mit sendCommand angesteuert wird, sondern mit postUpdate.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
O man Udo du hast ja alles geändert ) Gott sei Dank mit Komentaren mit Variablen werde ich nie Freund
Vielen Dank !
Hab die Bilder von 2 anderen Kameras auch so geändert und es läuft.
Warum eigentlich über die Variable val strMeldung = "Post ist da" ?
es geht doch sendCommand('Post ist da') ?