HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
DJFlaxi
Beiträge: 27
Registriert: 16. Apr 2020 19:40

HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Beitrag von DJFlaxi »

Hallo zusammen,
ich glaube ich stehe auf dem Schlauch.

Ich habe folgende zwei Regeln:

1.) Mit dieser Regel (REGEL 1) lasse ich bei einer Bewegungserkennung bereits die Doorbird-App via Fully-Kiosk-Browser starten, damit der Bildaufbau nicht so lange dauert:

Code: Alles auswählen

rule "Doorbird Bewegung - Appstart"
when
	Item DoorbirdBewegung changed to ON 
then
	sendHttpGetRequest("http://<-IP-Adresse:Port->/?cmd=startApplication&package=com.doorbird.doorbird&password=** sagichnicht**")
end
2.) Mit dieser Regel (REGEL2) wird bei auslösen der Klingel mit der Alexa ein Sprachbefehl getätigt und auch nochmal die Doorbird-App gestartet.

Code: Alles auswählen

rule "Doorbird Klingel"
when
    Channel "doorbird:d210x:**********:doorbell" triggered PRESSED
then
	sendHttpGetRequest("http://<-IP-Adresse:Port->/?cmd=startApplication&package=com.doorbird.doorbird&password=**sagichnicht**")
	Thread::sleep(5)
	Alexa_WZ_Ankuendigung.sendCommand("Es hat geklingelt!")
end
Jetzt zu meiner Frage:
Ich hätte gerne, dass bei Regel 2 vorher gecheckt wird, ob über Regel 1 bereits die Doorbird-App gestartet wurde.
Falls das der Fall sei, soll in Regel 2 nicht nochmal die Doorbird-App gestartet werden.
Falls bei Regel 1 aus irgendwelchen gründen die Bewegung nicht erkannt wurde und somit auch nicht die Doorbird-App gestartet wurde, soll natürlich in Regel 2 die Doorbird-App gestartet werden.

Ich hoffe, ich habe mich verständlich ausgedrückt und Ihr könnt mir eventuell die richtigen Hinweise hierzu geben.

Für Eure Hilfe bin ich jetzt schon sehr dankbar.

Viele Grüße
DJFlaxi
Zuletzt geändert von DJFlaxi am 15. Apr 2021 15:34, insgesamt 1-mal geändert.

Benutzeravatar
udo1toni
Beiträge: 13931
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Beitrag von udo1toni »

Also, nur so als Hinweis: Du hast einen privaten Adressbereich, da Adressen mittels Sternen auszublenden hat keinen Taug. Wenn jemand in Deinem Netz ist, langt ein nmap Befehl, um alle Geräte im Netz zu finden und zu identifizieren. Anders sieht das natürlich beim Passwort aus ;)

Ob die App gestartet wurde, musst Du beim Rechner erfragen, den Du da steuerst, openHAB kann ja nicht wissen, ob die App läuft, höchstens, ob es selbst in den letzten Sekunden den Befehl zum Starten gesendet hat. Letzteres kannst Du mit einem zusätzlichen Switch Item abdecken, welches Du in der ersten Rule auf ON setzt. Aber wann setzt Du das Item wieder auf OFF? Du brauchst also so oder so eher eine Überwachung, ob die App gerade läuft.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

DJFlaxi
Beiträge: 27
Registriert: 16. Apr 2020 19:40

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Beitrag von DJFlaxi »

Hi Udo,

schon mal danke für den Tipp.

Ich habe die erste Regel nun so angelegt:

Code: Alles auswählen

rule "Doorbird Bewegung - Appstart"
when
	Item DoorbirdBewegung changed to ON 
then
	sendHttpGetRequest("http://<-IP-Adresse:Port->/?cmd=startApplication&package=com.doorbird.doorbird&password=**sagichnicht**")
	DoorbirdApp.sendCommand(ON)
	Thread::sleep(30000)
	DoorbirdApp.sendCommand(OFF)
end
Hier habe ich jetzt noch ein Switch mit dem Namen "DoorbirdApp" auf ON gesetzt.
Der Switch kann ruhig immer nach ca. 30 Sekunden wieder auf OFF gesetzt werden.
Wer bis dahin nicht geklingelt hat, wird dann auch nicht mehr klingeln und falls doch, dann springt ja die zweite Regel an.

Wie muss nun die zweite Regel aussehen, die checkt, ob der Switch "DoorbirdApp" auf ON bzw. OFF steht und dann den Aufruf der Doorbird-App steuert.

Vielen Dank vorab für Deine Hilfe!

imhofa
Beiträge: 12
Registriert: 10. Sep 2020 09:04

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Beitrag von imhofa »

Ich würde in der ersten Regel nicht mit Thread::sleep arbeiten, sondern eher mit einem Timer. In deinem Item DoorbirdApp hast Du ja den Schalter der Dir anzeigt, ob die erste Regel gelaufen ist. D.h. in der zweiten Regel kannst Du einfach abfragen, ob der Switch an ist...

Benutzeravatar
udo1toni
Beiträge: 13931
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Beitrag von udo1toni »

Genau was imhofa schreibt ;)

Wobei, wenn Du die Deaktivierung eh über einen Timer machst, brauchst Du noch nicht mal ein extra Item:

Code: Alles auswählen

var Timer tDoorbird = null

rule "Doorbird Bewegung - Appstart"
when
    Item DoorbirdBewegung changed to ON 
then
    sendHttpGetRequest("http://<-IP-Adresse:Port->/?cmd=startApplication&package=com.doorbird.doorbird&password=**sagichnicht**")
    tDoorbird?.cancel
    tDoorbird = createTimer(now.plusSeconds(30),[|
        tDoorbird = null
    ])
end


rule "Doorbird Klingel"
when
    Channel "doorbird:d210x:**********:doorbell" triggered PRESSED
then
    if(tDoorbird === null)
        sendHttpGetRequest("http://<-IP-Adresse:Port->/?cmd=startApplication&package=com.doorbird.doorbird&password=**sagichnicht**")
    Alexa_WZ_Ankuendigung.sendCommand("Es hat geklingelt!")
end
Die erste Rule erzeugt den Timer (nachdem sie sichergestellt hat, dass der Timer nicht aktiv ist)
Wenn der Timer abläuft, tut er nichts anderes, als den Zeiger auf sich selbst mit null zu füllen.

In der zweiten Rule wird nun lediglich geprüft, ob der Zeiger null ist. Ist das der Fall, dann sind entweder seit der letzten Bewegungserkennung schon mehr als 30 Sekunden vergangen oder es wurd eben keine Bewegung erkannt.

Das Thread::sleep(5) dürfte kompletter Unsinn sein, warum sollte openHAB hier 5 Millisekunden warten, bis es die Sprachansage startet?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

DJFlaxi
Beiträge: 27
Registriert: 16. Apr 2020 19:40

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Beitrag von DJFlaxi »

Danke für die Top Hilfe imhofa und udo1toni!

Die Rule von Dir udo1toni funktioniert genau so, wie sie soll.
So habe ich mir das vorgestellt!

Danke nochmal und viele Grüße
DJFlaxi

DJFlaxi
Beiträge: 27
Registriert: 16. Apr 2020 19:40

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Beitrag von DJFlaxi »

Hallo zusammen,

irgendetwas stimmt noch nicht.
Ich benutze folgende Rule:

Code: Alles auswählen

var Timer tDoorbird = null

rule "Doorbird Bewegung - Appstart"
when
    Item DoorbirdBewegung changed to ON 
then
    Habpanelviewer.sendCommand("SCREEN_ON")
    Habpanelviewer.sendCommand("START_APP com.doorbird.doorbird")
    tDoorbird?.cancel
    tDoorbird = createTimer(now.plusSeconds(50),[|
        tDoorbird = null
    ])
end

rule "Doorbird Klingel"
when
    Channel "doorbird:d210x:**********:doorbell" triggered PRESSED
then
    if(tDoorbird === null)
        Habpanelviewer.sendCommand("SCREEN_ON")
        Habpanelviewer.sendCommand("START_APP com.doorbird.doorbird")
end
Wenn Bewegung erkannt wird dann wird das Display eingeschaltet und die Doorbird-App gestartet.
Jetzt soll geprüft werden, ob die App durch Bewegung gestartet wurde. Falls ja, dann soll die App nicht nochmal gestartet werden, wenn geklingelt wird.
Falls die App nicht durch die Bewegungserkennung gestartet wurde, dann soll die App spätestens gestartet werden, wenn geklingelt wird.

Bei der o.g. Rule wird die App allerdings zweimal gestartet. Einmal bei Bewegungserkennung und dann nochmal, wenn geklingelt wird.
Da muss noch irgendwas nicht in der Rule passen.

Ich hoffe mir kann da jemand helfen.

Vielen Dank vorab!

LG
DJFlaxi

imhofa
Beiträge: 12
Registriert: 10. Sep 2020 09:04

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Beitrag von imhofa »

Du hast in der zweiten Rule die Klammern beim "if" vergessen. D.h. wenn beim Klingeln der Timer noch läuft, wird der Bildschirm nicht angeschaltet, aber dafür die App immer gestartet...

Code: Alles auswählen

rule "Doorbird Klingel"
when
    Channel "doorbird:d210x:**********:doorbell" triggered PRESSED
then
    if(tDoorbird === null)
    {
        Habpanelviewer.sendCommand("SCREEN_ON")
        Habpanelviewer.sendCommand("START_APP com.doorbird.doorbird")
    }
end

DJFlaxi
Beiträge: 27
Registriert: 16. Apr 2020 19:40

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Beitrag von DJFlaxi »

Das war es. Vielen Dank für die Hilfe.
Da hätte ich auch selbst drauf kommen können ;)

Simaniac
Beiträge: 1
Registriert: 29. Aug 2021 11:14

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Beitrag von Simaniac »

Hallo,

ich würde das Thema gerne nochmal ausfgreifen...
Ich habe das gleiche versucht mit Tasker, allerdings funktioniert das mit meinem Samsung Tab A7 nicht zuverlässig.
Mit dem Fully Kiosk Broswer kenne ich mich nicht aus. Wo muss ich die Regeln eingeben bzw. was muss ich in der App bzw. in der Doorbird-App einstellen damit das funktioniert?
Wäre für eine Hilfestellung sehr dankbar...

Antworten