Homematik erzeugt kein Ereignis in Rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Homematik erzeugt kein Ereignis in Rule

Beitrag von kaloschke »

Hallo,

ich habe einen HmIP-Schalter in OH3.4 (auf RPi4 mit Buster) eingebunden. Ich denke, die Einbindung hat geklappt, denn ich kann z.B. die Signalstärke oder die Devicenummer auslesen.
Folgende Eigenschaften möchte ich in einer Rule nutzen:
hmIP.jpg
Leider schaffe ich es nicht, in einer Rule auf eine Schalterbetätigung zu reagieren.
Ich habe folgendes Item definiert:

Code: Alles auswählen

Switch HmIP_Button2   "Schalter"   ["Switchable"] {channel="homematic:HmIP-WRCC2:60c96b7d1a:002C1F29900CDE:2#PRESS_SHORT"}
und folgende Regeln:

Code: Alles auswählen

rule "Schalter Test 1"
    when
        Channel "homematic:HmIP-WRCC2:60c96b7d1a:002C1F29900CDE:2#BUTTON" triggered SHORT_PRESSED or
        Channel "homematic:HmIP-WRCC2:60c96b7d1a:002C1F29900CDE:2#BUTTON" triggered LONG_PRESSED
    then
        logError("HmIP1","HmIP-Taster gedrückt ...")
end    

rule "Schalter Test 2"
    when
        Item HmIP_Button2 received update
    then
        logError("HmIP2","HmIP-Taster gedrückt ...")
end    

rule "Schalter Test 3"
    when
        Item HmIP_Button2 changed
    then
        logError("HmIP3","HmIP-Taster gedrückt ...")
end    

rule "Schalter Test 4"
    when
        Item HmIP_Button2 received command
    then
        logError("HmIP4","HmIP-Taster gedrückt ...")
end    
Ich hoffe, jemand hat einen Tipp für mich.

Viele Grüße
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

rbeudel
Beiträge: 225
Registriert: 6. Jun 2019 11:25
Answers: 1

Re: Homematik erzeugt kein Ereignis in Rule

Beitrag von rbeudel »

Hallo,

Code: Alles auswählen

[INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'BueroSchaltkasten_6_PRESS_SHORT' changed from OFF to ON
so sieht bei mir die Betätigung eines Tasters in der events.log aus. Mal dort nachsehen was openhab beim Schalter schreibt,
Viele Grüße,
Ralf


Debmatic und Openhab 4.1.0 in Proxmox 8 VM debian x86_64 auf Intel NUC mit influxdb und Grafana zur Visualisierung

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

Re: Homematik erzeugt kein Ereignis in Rule

Beitrag von udo1toni »

Schau bitte mal im Log nach, welches Event der Tastendruck denn tatsächlich erzeugt. Für einen Trigger über Channel benötigst Du keinerlei Items, da die Trigger Nachricht direkt auf den openHAB Bus geht.
Du kannst in einer Rule auch schreiben:

Code: Alles auswählen

rule "Schalter Test 1"
 when
    Channel "homematic:HmIP-WRCC2:60c96b7d1a:002C1F29900CDE:2#BUTTON" triggered
 then
    logInfo("HmIP1","HmIP-Taster hat {} getriggert",receivedEvent)
end    
so bekommst Du jeden Trigger mit.
Sicher, dass die UID exakt stimmt? die UIS ist Case-Sensitive (auch deshalb wäre ein Blick ins Log beim Drücken der Taste evtl. hilfreich).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Homematik erzeugt kein Ereignis in Rule

Beitrag von kaloschke »

Danke für eure Antworten.
Klar, event.log ist naheliegend. Hatte ich nur nicht dran gedacht, weil ich das event-logging in log4j2.xml abgestellt hatte um meine SD-Karte zu schonen.
Also jetzt wird wieder geloggt und - nix zu sehen :-(
Das einzige, was eingetragen wird, ist das deaktivieren und neu aktivieren des Things.
Komischerweise werden in meiner Sitemap Werte wie Signalstärke aktualisiert.
Auch Änderungen am Thermostaten erzeugen keine Events, werden aber in der Sitemap aktualisiert.

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

Re: Homematik erzeugt kein Ereignis in Rule

Beitrag von udo1toni »

Dann hast Du am Logging (immer noch) zu viel abgedreht.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Homematik erzeugt kein Ereignis in Rule

Beitrag von kaloschke »

Das einzige, was ich gemacht hatte, war in log4j2 die Zeile mit "EVENT" auszukommentieren.

Code: Alles auswählen

              <Logger additivity="false" level="INFO" name="openhab.event">
-                       <AppenderRef ref="EVENT"/>
                        <AppenderRef ref="OSGI"/>
                </Logger>
Der Bereich darüber sieht so aus:

Code: Alles auswählen

            <Logger level="INFO" name="org.openhab"/>

                <Logger level="OFF" name="openhab.event.ItemStateEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemChannelLinkAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.ItemChannelLinkRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.ChannelDescriptionChangedEvent"/>
                <Logger level="OFF" name="openhab.event.ThingStatusInfoEvent"/>
                <Logger level="ERROR" name="openhab.event.ThingAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.ThingUpdatedEvent"/>
                <Logger level="ERROR" name="openhab.event.ThingRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.InboxUpdatedEvent"/>
                <Logger level="ERROR" name="openhab.event.RuleStatusInfoEvent"/>
                <Logger level="ERROR" name="openhab.event.RuleAddedEvent"/>
                <Logger level="ERROR" name="openhab.event.RuleRemovedEvent"/>
                <Logger level="ERROR" name="openhab.event.StartlevelEvent"/>
                <Logger level="ERROR" name="openhab.event.AddonEvent"/>
Habe jetzt mal

Code: Alles auswählen

<Logger level="ON" name="openhab.event.ItemStateEvent"/>
gesetzt, ohne zu wissen, was ich tue :-(.

Nach dem Neustart von OH erhalte ich bei einem Klick mit dem Schalter lediglich dies hier:

Code: Alles auswählen

2023-05-31 09:20:36.672 [INFO ] [openhab.event.ItemStateEvent        ] - Item 'HmIP_Button2_Devivenumber' updated to -41
2023-05-31 09:20:36.678 [INFO ] [openhab.event.ItemStateEvent        ] - Item 'HmIP_Button2_SignalStrength' updated to 4
Sehr seltsam ...

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Homematik erzeugt kein Ereignis in Rule

Beitrag von kaloschke »

Am Ende der log4j2.xml steht noch:

Code: Alles auswählen

                <!-- Added by Karaf to prevent debug logging loops, see -->
                <!-- https://issues.apache.org/jira/browse/KARAF-5559 -->
                <Logger level="WARN" name="org.apache.sshd"/>
                <Logger level="OFF" name="org.openhab.binding.deconz"/>
                <Logger level="OFF" name="openhab.event.ItemStateChangedEvent"/>
                <Logger level="OFF" name="org.openhab.binding.livisismarthome"/>
                <Logger level="OFF" name="org.openhab.binding.astro"/>
                <Logger level="OFF" name="org.openhab.binding.shelly"/>
                <Logger level="INFO" name="org.openhab.core.model.script"/>
                <Logger level="TRACE" name="org.openhab.core.model.script.hmip"/>
                <Logger level="INFO" name="org.openhab.core.model.script.home"/>
Da irritiert mich das OFF bei ItemStateChangedEvent, aber wegen der Meldung dadrüber habe ich es bisher so gelassen.
Nun mal testweise geändert - bringt auch nix ...

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

Re: Homematik erzeugt kein Ereignis in Rule

Beitrag von udo1toni »

Ich möchte Dir empfehlen, einen anderen Weg zu gehen.
Hole die die Originaldatei: https://raw.githubusercontent.com/openh ... log4j2.xml und speichere den Inhalt passend ab. openHAB darf beim Speichern der Datei nicht laufen, also vorher beenden und anschließend wieder starten.

Du kannst die von Dir verwendete Datei vorher sichern, obwohl ich davon abraten möchte, Hacks zu verwenden (das wäre, die von Dir verwendete Datei wieder zu aktivieren).

Die "korrekte" Methode, das Logging zu steuern, läuft nicht über das Auskommentieren von Zeilen, sondern über die Karaf Konsole aus dem laufenden openHAB System heraus. (Das Passwort des KARAF Users openhab lautet normalerweise habopen)

Code: Alles auswählen

Using username "openhabian".
Authenticating with public key "imported-openssh-key" from agent
Linux openhab 5.15.107-1-pve #1 SMP PVE 5.15.107-1 (2023-04-20T10:05Z) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue May 30 11:56:37 2023 from 192.168.178.207
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
iiiiiiiiiiiiiii  openhab  iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
DD        Ip -> 192.168.178.55
DD   Release -> Debian GNU/Linux 11 (bullseye)
DD    Kernel -> Linux 5.15.107-1-pve
DD  Platform -> lxc
DD    Uptime -> 6 day(s). 16:16:0
DD CPU Usage -> 3.54% avg over 2 cpu(s) (6 core(s) x 1 socket(s))
DD  CPU Load -> 1m: 0.51, 5m: 0.79, 15m: 0.93
DD    Memory -> Free: 0.71GB (24%), Used: 2.28GB (76%), Total: 3.00GB
DD      Swap -> Free: 0.00GB (0%), Used: 0.00GB (100%), Total: 0.00GB
DD      Root -> Free: 5.87GB (73%), Used: 2.12GB (27%), Total: 8.00GB
DD   Updates -> 0 apt updates available.
DD  Sessions -> 1 session(s)
DD Processes -> 38 running processes of 4194304 maximum processes
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
openhabian@openhab:~$ openhab-cli console

Logging in as openhab
Password:

                           _   _     _     ____
   ___   ___   ___   ___  | | | |   / \   | __ )
  / _ \ / _ \ / _ \ / _ \ | |_| |  / _ \  |  _ \
 | (_) | (_) |  __/| | | ||  _  | / ___ \ | |_) )
  \___/|  __/ \___/|_| |_||_| |_|/_/   \_\|____/
       |_|       3.4.4 - Release Build

Use '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
To exit, use '<ctrl-d>' or 'logout'.

openhab> log:list
Logger                                             │ Level
───────────────────────────────────────────────────┼──────
ROOT                                               │ WARN
javax.jmdns                                        │ ERROR
javax.mail                                         │ ERROR
openhab.event                                      │ INFO
openhab.event.AddonEvent                           │ ERROR
openhab.event.ChannelDescriptionChangedEvent       │ ERROR
openhab.event.InboxUpdatedEvent                    │ ERROR
openhab.event.ItemAddedEvent                       │ ERROR
openhab.event.ItemChannelLinkAddedEvent            │ ERROR
openhab.event.ItemChannelLinkRemovedEvent          │ ERROR
openhab.event.ItemRemovedEvent                     │ ERROR
openhab.event.ItemStateEvent                       │ ERROR
openhab.event.RuleAddedEvent                       │ ERROR
openhab.event.RuleRemovedEvent                     │ ERROR
openhab.event.RuleStatusInfoEvent                  │ ERROR
openhab.event.StartlevelEvent                      │ ERROR
openhab.event.ThingAddedEvent                      │ ERROR
openhab.event.ThingRemovedEvent                    │ ERROR
openhab.event.ThingStatusInfoEvent                 │ ERROR
openhab.event.ThingUpdatedEvent                    │ ERROR
org.apache.cxf.jaxrs.sse.SseEventSinkImpl          │ ERROR
org.apache.cxf.phase.PhaseInterceptorChain         │ ERROR
org.apache.karaf.jaas.modules.audit                │ INFO
org.apache.karaf.kar.internal.KarServiceImpl       │ ERROR
org.apache.karaf.shell.ssh.SshUtils                │ ERROR
org.apache.karaf.shell.support                     │ OFF
org.apache.sshd                                    │ WARN
org.eclipse.lsp4j                                  │ OFF
org.jupnp                                          │ ERROR
org.openhab                                        │ INFO
org.ops4j.pax.url.mvn.internal.AetherBasedResolver │ ERROR
org.ops4j.pax.web.pax-web-runtime                  │ OFF
su.litvak.chromecast.api.v2.Channel                │ ERROR
openhab> log:set OFF openhab.event
openhab> log:set DEFAULT openhab.event.AddonEvent
.
.
.
openhab> logout
Da die meisten Events eigene Log Level haben, musst Du leider jedes davon einzeln entweder auf OFF oder auf DEFAULT setzen. Mit DEFAULT wird der Eintrag aus der Liste entfernt und der Logger erbt künftig die Einstellung vom übergeordneten Element. Je nachdem, wie schlecht Dein System konfiguriert ist (aka wie viele ERROR-Meldungen so auftauchen...) wäre es natürlich sinnvoll, den Log Level der Einzelereignisse auf ERROR stehen zu lassen und nur das übergeordnete openhab.event von INFO auf OFF zu stellen.

Natürlich kannst Du die entsprechenden Zeilen in der log4j2.xml auch händisch bearbeiten, aber dann bitte nicht auskommentieren, sondern den level Eintrag entfernen, also z.B. statt

Code: Alles auswählen

<Logger level="ERROR" name="openhab.event.ItemStateEvent"/>
machst Du aus der Zeile

Code: Alles auswählen

<Logger name="openhab.event.ItemStateEvent"/>
dann erbt der Logger die Einstellung vom übergeordneten Element (welches Du auf OFF setzt)

Code: Alles auswählen

<Logger additivity="false" level="OFF" name="openhab.event">
Zeilen auszukommentieren geht natürlich, aber Du machst damit das Logging kaputt.
Du könntest auch den Appender abschalten (indem Du diese Zeile tatsächlich auskommentierst):

Code: Alles auswählen

<Logger additivity="false" level="INFO" name="openhab.event">
<!--	<AppenderRef ref="EVENT"/> -->
	<AppenderRef ref="OSGI"/>
</Logger>
Damit landet das Logging nicht mehr in der Datei events.log (das Ziel ist weiter oben definiert), sondern ausschließlich in OSGI. In der Karaf Konsole könntest Du dann weiterhin mit log:display bzw. log:tail das Logging der Events sehen (natürlich nur die aktuellen Events)
Aber wie gesagt, das Auskommentieren von Zeilen in der log4j2.xml ist grundsätzlich bäh, weil es am vorgesehenen Workflow vorbei arbeitet. Das Mindeste wäre dann eine zusätzliche Notiz, dass Du da mit Kommentar manipuliert hast, warum, und wie der Originalzustand wiederherzustellen ist.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Homematik erzeugt kein Ereignis in Rule

Beitrag von kaloschke »

Das ist mal wieder ein typischer udo1toni :-)

Vielen Dank für die sehr ausführliche Anleitung!
Kann ich mich leider erst morgen ausprobieren.

Viele Grüße

kaloschke
Beiträge: 175
Registriert: 29. Jan 2019 07:20

Re: Homematik erzeugt kein Ereignis in Rule

Beitrag von kaloschke »

So. Originaldatei log4j2.xml erstellt.
Es ändert sich nichts am Verhalten bez. des Tasters. Es erscheint nach wir vor nur:

Code: Alles auswählen

Item 'HmIP_Button2_Devivenumber' changed from -43 to -40
Aber: Die Events für meinen Thermostaten und Wandkontakt werden gelistet.
Wollte dann den Log-Level für das Homatic-Binding auf Trace setzen. Dabei gibts den Fehler:

Code: Alles auswählen

Error executing command: Unable to set level for logger
Den hatte ich vorher schon. Googeln bringt mir:
After editing the log4j2.xml file the user and group was wrong.
User/group changed to openab/openhab and it works again …
Nach Befolgen dieses Rates für das Homematikbinding den Log-Level auf Trace gesetzt, liefert u.a.

Code: Alles auswählen

12:54:45.663 [DEBUG] [communicator.AbstractHomematicGateway] - Received new (Boolean) value 'false' for '002C1F29900CDE:0#CONFIG_PENDING' from gateway with id '60c96b7d1a'
12:54:45.668 [DEBUG] [communicator.AbstractHomematicGateway] - Received new (Boolean) value 'false' for '002C1F29900CDE:0#UNREACH' from gateway with id '60c96b7d1a'
12:54:45.674 [DEBUG] [communicator.AbstractHomematicGateway] - Received new (Integer) value '-40' for '002C1F29900CDE:0#RSSI_DEVICE' from gateway with id '60c96b7d1a'
12:54:45.681 [TRACE] [.converter.type.AbstractTypeConverter] - Converting datapoint '002C1F29900CDE:0#RSSI_DEVICE' (dpType='INTEGER', dpUnit='dBm', dpValue='-40') with DecimalTypeConverter
12:54:45.689 [TRACE] [.converter.type.AbstractTypeConverter] - Converting datapoint '002C1F29900CDE:0#SIGNAL_STRENGTH' (dpType='INTEGER', dpUnit='null', dpValue='4') with DecimalTypeConverter
Das sieht dann ja wohl so aus, als ob die Kommunikation mit dem Schalter gestört wäre. In der 3. Zeile wird der Wert für die Devicenumber gelistet, aber die wichtigen davor fehlen. Ein Test in der WebUI von Homematic sagt jedoch, dass alles okay ist.
Vielleicht kann ich den Entwickler vom Homatic-Binding kontaktieren. Bei OH scheint ja alles okay zu sein ...

Aaah. Sehe gerade, dass ganz unten in der Beschreibung zum Binding genau mein Problem für einen ähnlichen Schalter beschrieben wird. Auch wird dort ein Workaround angegeben.
Komisch nur, dass es bis zum Neuaufsetzen meiner Debmatic (Homematic CCU für denRPi) problemlos geklappt hat. Bin gespannt.

Jedenfalls ist dieses Forum und damit auch udo1toni raus :-)

Noch mal herzlichen Dank für die Unterstützung

Antworten