Seite 1 von 1

HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Verfasst: 15. Apr 2021 14:53
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

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Verfasst: 15. Apr 2021 15:21
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.

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Verfasst: 15. Apr 2021 15:32
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!

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Verfasst: 16. Apr 2021 11:46
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...

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Verfasst: 16. Apr 2021 18:53
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?

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Verfasst: 16. Apr 2021 19:42
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

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Verfasst: 23. Apr 2021 11:10
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

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Verfasst: 23. Apr 2021 11:53
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

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Verfasst: 23. Apr 2021 12:08
von DJFlaxi
Das war es. Vielen Dank für die Hilfe.
Da hätte ich auch selbst drauf kommen können ;)

Re: HILFE! Ich brauche Euren Tipp bei Regelerstellung!

Verfasst: 29. Aug 2021 11:21
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...