Doorbird und KNX Licht schalten mit einer Rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Köchi
Beiträge: 14
Registriert: 27. Aug 2020 19:00

Doorbird und KNX Licht schalten mit einer Rule

Beitrag von Köchi »

Hallo zusammen,

auch in bin neu bei OpenHab angekommen und arbeite mich gerade in die Materie ein.

Mein Ziel ist es, das Doorbird Motion Signal einzulesen und dann die Haustürlampe einzuschalten.
Hört sich machbar an aber ich scheitere schon daran :oops:

Hoffe jemand aus dem Forum kann mir ein Schupser in die richtige Richtung geben.

Doorbird scheint zu funktionieren und wird in OpenHab richtig eingelesen.
2020-08-29 17_33_36-openhab.log - Unbenannt (Arbeitsbereich) - Visual Studio Code.jpg

Eine Test Lampe kann ich über Control ein und ausschalten somit klappt KNX auch.

Nur mit der Rule komme ich nicht weiter!
2020-08-29 17_31_38-doorbird_motion.rules - Unbenannt (Arbeitsbereich) - Visual Studio Code.jpg
Das Licht wird nicht eingeschaltet und im Log File finde ich auch keine Information.
2020-08-29 17_25_47-events.log - Unbenannt (Arbeitsbereich) - Visual Studio Code.jpg
Braucht Ihr noch weitere Informationen von mir?

Vorab vielen Dank für Eure Hilfe

Gruß Köchi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Raspberry PI 3, OpenHap 2.5, KNX, Doorbird, Sonos, Alexa

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Doorbird und KNX Licht schalten mit einer Rule

Beitrag von Darkwin101 »

Also erstmal füge bitte sowas hier im mit Code Text ein so ist das immer schwer zu lesen las die Rule doch mal auf changed to ON triggern anstatt auf received Command


Gesendet von iPhone mit Tapatalk

Köchi
Beiträge: 14
Registriert: 27. Aug 2020 19:00

Re: Doorbird und KNX Licht schalten mit einer Rule

Beitrag von Köchi »

Hi,

du meinst s0

Code: Alles auswählen

rule "Motion Detected"
when
    Item Doorbell_Motion changed to ON
 //   
then
    KnxEGLichtWzKamin.sendCommand(ON)
    // degub logging
    logDebug("doorbird_motion.rules", "Motion Detected Doorbird Debug")
    logError("doorbird_motion.rules", "Motion Detected Doorbird Error")
    logInfo("doorbird_motion.rules", "Motion Detected Doorbird Info" + KnxEGLichtWzKamin.state)
    logWarn("doorbird_motion.rules", "Motion Detected Doorbird Warm")
end

Raspberry PI 3, OpenHap 2.5, KNX, Doorbird, Sonos, Alexa

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Doorbird und KNX Licht schalten mit einer Rule

Beitrag von Darkwin101 »

Ja genauso , für beides


Gesendet von iPhone mit Tapatalk

Köchi
Beiträge: 14
Registriert: 27. Aug 2020 19:00

Re: Doorbird und KNX Licht schalten mit einer Rule

Beitrag von Köchi »

OK ;-)

Die Bewegung wurde erkannt:

Code: Alles auswählen

2020-08-29 17:49:31.033 [vent.ItemStateChangedEvent] - doorbird_d101_ed77bdf4_motion changed from ON to OFF
2020-08-29 17:49:35.636 [vent.ItemStateChangedEvent] - doorbird_d101_ed77bdf4_image changed from raw type (image/jpeg): 37542 bytes to raw type (image/jpeg): 38046 bytes
2020-08-29 17:49:35.646 [vent.ItemStateChangedEvent] - doorbird_d101_ed77bdf4_imageTimestamp changed from 2020-08-29T17:48:35.000+0200 to 2020-08-29T17:49:35.000+0200
Jedoch gibt es keine Info im "openhab.log" File oder ein Licht geht an.

Code: Alles auswählen

2020-08-29 17:47:21.418 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'doorbird_motion.rules'
2020-08-29 17:50:16.341 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'doorbird_bell.rules'
Ich hätte gehofft das im Log File etwas auftaucht, wollte es zum Testen verwenden.

Gibt es noch eine Möglichkeit zu testen ob die Rule in den "when" oder "then" Zweig kommt?
Ich hatte den Log Anweisung im "when" drinnen aber dann taucht ein Fehler im openhab.log File auf.
Raspberry PI 3, OpenHap 2.5, KNX, Doorbird, Sonos, Alexa

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Doorbird und KNX Licht schalten mit einer Rule

Beitrag von Darkwin101 »

du musst auch das richtige Item Abfragen dein Item heisst doorbird_d101_ed77bdf4_motion

Code: Alles auswählen

rule "Motion Detected"
when
    Item doorbird_d101_ed77bdf4_motion changed to ON
then
    KnxEGLichtWzKamin.sendCommand(ON)
end
Die ganzen Logbefehle sind Blödsinn da alle log ausgeführt werden
dies wäre Hilfreich wenn du mehrer bedingungen im Then teil hättest damit du weisst bis wo die Rule ausgeführt wird

Köchi
Beiträge: 14
Registriert: 27. Aug 2020 19:00

Re: Doorbird und KNX Licht schalten mit einer Rule

Beitrag von Köchi »

Das Item "KnxEGLichtWzKamin" war auch nicht das richtige.

Ich habe das Licht eingeschaltet und den Namen aus dem Log genommen und verwendet.
Finde nicht das richtige KNX Item :P

Da merkt man halt den Anfänger
Ich muss mir nochmal die Beschreibungen durchlesen.

Meine letze Frage für heute:

Ich hatte die Version 2.5 auf einer Synology laufen und habe dann von Hand die neueste Stable Version 2.5.x auf dem PI installiert.
Beim aktivieren der Bindings wurden die Items automatisiert erstellt und ich sehe keine Items mehr in der Paper UI.
Ist das ein normales Verhalten oder habe ich beim aufsetzen etwas verschossen?

Ich glaube mich auch daran zu erinnern, dass die Empfehlung ist die Items von Hand zu erstellen oder irre ich mich?
2020-08-29 20_24_50-Window.jpg
Vielen Dank für deine Hilfe Darkwin101 :D

Gruß Köchi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Raspberry PI 3, OpenHap 2.5, KNX, Doorbird, Sonos, Alexa

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

Re: Doorbird und KNX Licht schalten mit einer Rule

Beitrag von udo1toni »

Darkwin101 hat geschrieben: 29. Aug 2020 18:11 Die ganzen Logbefehle sind Blödsinn da alle log ausgeführt werden
Na, so ganz stimmt das nicht :)

Code: Alles auswählen

rule "Motion Detected"
when
    Item Doorbell_Motion changed to ON
 //   
then
    KnxEGLichtWzKamin.sendCommand(ON)
    // degub logging
    logDebug("doorbird_motion.rules", "Motion Detected Doorbird Debug") // wird nicht ausgeführt
    logError("doorbird_motion.rules", "Motion Detected Doorbird Error") //wird ausgeführt
    logInfo("doorbird_motion.rules", "Motion Detected Doorbird Info" + KnxEGLichtWzKamin.state) // wird nicht ausgeführt
    logWarn("doorbird_motion.rules", "Motion Detected Doorbird Warm") // wird nicht ausgeführt
end
logDebug() wird nur ausgeführt, wenn der passende Logger auf DEBUG steht (eher unwahrscheinlich, default ist INFO)
logInfo() wird nicht ausgeführt, da man den Status nicht einfach als String verwenden kann -> Rule bricht mit NullPointerException ab.
logWarn() wird auch nicht ausgeführt, da die Rule schon vorher gecrasht ist. :)
Darkwin101 hat geschrieben: 29. Aug 2020 18:11 dies wäre Hilfreich wenn du mehrer bedingungen im Then teil hättest damit du weisst bis wo die Rule ausgeführt wird
log-Meldungen sind grundsätzlich hilfreich zum eingrenzen von Fehlern. Aber BITTE verwendet das so, wie es gedacht ist!

Es gibt vier verschiedene Stufen, eben Debug, Info, Warn und Error. Diese werden im Log auch so gekennzeichnet und sollten auch ihrer Stufe entsprechend verwendet werden.
Debug: detaillierte Informationen, die nur im Ausnahmefall interessant sind.
Info: allgemeine Informationen
Warn: Warnmeldungen (z.B. weil ein Wert nicht gelesen werden konnte und in der Folge ein Default Wert verwendet wird)
Error: Wenn die Rule abgebrochen werden muss, weil ein schwerer Fehler aufgetreten ist.

Alle log-Befehle einer Rule (oder auch thematisch zusammengehörender Rules) sollten den gleichen Logger verwenden. Der Logger ist der erste String.
BITTE verwendet nicht das Wort "rules" oder "rule" im Loggernamen, das ist doppelt gemoppelt. Alle Logger aus der Rules Engine gehören zu org.openhab.module.script, das ist eindeutig, und wenn man den Loggernamen kurz genug wählt (!), sieht man genug von dieser Zeichenkette, um die Meldung zuordnen zu können.
Im vorliegenden Fall wäre meine Wahl einfach doorbird, was dann als vollständigen Loggernamen org.openhab.module.script.doorbird ergibt. Im Log selbst werden die letzten 36 Zeichen angezeigt, was dann [ org.openhab.module.script.doorbird] ergibt.
Über den Loggernamen kann man zur Laufzeit (ohne openHAB zu beenden) jederzeit wählen, wie weitreichend die Meldungen sein sollen, das geht über die Karaf Konsole. Man kann dort das Logging (pro Logger) auf die Stufen TRACE, DEBUG, INFO, WARN, ERROR, OFF und DEFAULT einstellen. Alles unterhalb der gewählten Stufe wird nicht geloggt, wenn man also WARN wählt, werden logWarn und logError geloogt, logDebug und logInfo aber nicht. DEFAULT erbt die Einstellung des übergeordneten Elements (org.openhab.module.script, das erbt INFO von org.openhab (über org.openhab.module)
Zum Testen (und so waren die logBefehle sicher gedacht ;) ) ist es natürlich vollkommen ok, sie einfach hinzuschreiben.

Zum testen, bis wohin ein Code ausgeführt wird, ist es hingegen sinnvoller, den Log-Text (das ist der zweite String der Meldung) zu variieren, z.B. so:

Code: Alles auswählen

rule "Motion Detected"
when
    Item Doorbell_Motion changed to ON
 //   
then
    logInfo("doorbird", "Motion Detected - Rule wurde getriggert.")
    KnxEGLichtWzKamin.sendCommand(ON)
    logInfo("doorbird", "Motion Detected - Licht wurde geschaltet.")
end
Sollte nun etwas nicht funktionieren, kann man nachverfolgen, an welcher Stelle etwas schief gegangen ist
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Doorbird und KNX Licht schalten mit einer Rule

Beitrag von udo1toni »

Was das Problem mit den automatischen Items betrifft: Du hast den Simple Mode aktiv. Das kannst Du in Paper UI->Configuration->System->Item Linking ändern (Simple Mode OFF).
Bestehende Items werden dabei nicht entfernt.
Welche Items mit welchen Channels verlinkt sind, kann man aber auch bei Simple Mode ON im Thing nachsehen (der Channel hat einen ausgefüllten weißen Kreis auf blauem Grund, dann auf der rechten Seite die UP/DOWN Pfeile anklicken und es öffnet sich eine Liste der verlinkten Items. Dort kann man auch den Namen direkt in die Zwischenablage übernehmen (das Kopiersymbol neben dem Namen)

Für die Rule-Entwicklung möchte ich Dir VSCode mit dem openHAB Plugin ans Herz legen. wenn das Plugin korrekt konfiguriert ist, kannst Du über das openHAB-Menü in VSCode eine Liste aller Things und Channels sowie eine Liste aller Items einsehen (gruppiert). Die Liste lässt sich neu einlesen, falls man Items gelöscht, geändert oder hinzugefügt hat, ansonsten lassen sich Itemnamen direkt in Sitemaps oder Rules einsetzen. Der aktuelle Status wird per Mouseover angezeigt.

EDIT: Ich muss mich korrigieren. Offensichtlich kann man das Item im Simple Mode nicht im Thing nachsehen. Und der Kopierknopf übernimmt lediglich die UUID des Channels in die Zwischenablage. Das war mal anders... VSCode ist davon aber nicht betroffen, da funktioniert die Liste immer.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Köchi
Beiträge: 14
Registriert: 27. Aug 2020 19:00

Re: Doorbird und KNX Licht schalten mit einer Rule

Beitrag von Köchi »

Hi udo1toni,

Danke für die Erklärung und die Tipps bezüglich Logging werde ich umsetzen.

Visual Studio Code habe ich installiert. Der Code Checker klappt nicht, bei den Rules werden keine Fehler markiert.
Habe gedacht er würde das Itemm rot markieren.

Code: Alles auswählen

when
    Itemm doorbird_d101_ed77bdf4_motion changed to ON 
then
Fällt dir beim settings.jason File etwas auf, was ich vergessen habe?

Code: Alles auswählen

{
    "openhab.host": "192.168.178.55",
    "openhab.port": 8080,
    "[openhab]": {
        "editor.defaultFormatter": "openhab.openhab"
    },
    "openhab.useRestApi": true,
    "openhab.remoteLspEnabled": true,
    "openhab.remoteLspPort": 5007,
    "openhab.karafCommand": "ssh openhab@192.168.178.55 -p 8101 -t 'log:tail'",
}
Simple Mode habe ich ausgeschaltet und schon sind die Items wieder da. :shock:


Danke für die Hilfe.

Gruß Köchi
Raspberry PI 3, OpenHap 2.5, KNX, Doorbird, Sonos, Alexa

Antworten