jens-maus / RaspberryMatic

:house: A feature-rich but lightweight, buildroot-based Linux operating system alternative for your CloudFree CCU3/ELV-Charly 'homematicIP CCU' IoT smarthome central. Running as a pure virtual appliance (ProxmoxVE, Home Assistant, LXC, Docker/OCI, Kubernetes/K8s, etc.) on a dedicated embedded device (RaspberryPi, etc.) or generic x86/ARM hardware.
https://raspberrymatic.de
Apache License 2.0
1.53k stars 186 forks source link

IP-Tastendruck Auswertung im WENN von Programmen: Wechsel von "Tastendruck kurz" zu "Tastendruck lang" (und umgekehrt) führt zur Deaktivierung des "Central-Link" #2239

Open Baxxy13 opened 1 year ago

Baxxy13 commented 1 year ago

Describe the issue you are experiencing

Information: Betrifft nur batteriebetriebene IP-Geräte mit Tasterkanälen.

Legt man ein WebUI-Programm an und fügt den Tastendruck eines IP-Tasters im WENN hinzu wird beim Speichern der "Central-Link" angelegt. (löscht man das Programm oder die Bedingung wird auch der "Central-Link" gelöscht) Soweit korrekt.

Editiert man nun das Programm und ändert Tastendruck "kurz" zu "lang" (oder umgekehrt) und speichert anschließend wieder ist der "Central-Link" weg. Als Folge triggert das Programm nicht mehr.

Describe the behavior you expected

Die Bedingung "Tastendruck "kurz" / "lang" sollte sich ändern lassen ohne das der "Central-Link" anschließend gelöscht ist.

Steps to reproduce the issue

  1. Tasterkanal eines unbenutzten IP-Tasters auf protokolliert stellen, Tastendrücke sollten keinen Eintrag im Systemprotokoll erzeugen (= kein Central-Link)
  2. Einfaches WebUI-Programm erstellen, Wenn Taster xyz bei "Tastendruck lang". Speichern und Konfiguration übertragen.
  3. Tastendrücke (egal ob kurz oder lang) sollten nun im Systemprotokoll auftauchen
  4. Im Programm "Tastendruck lang" auf "Tastendruck ändern" ändern, speichern und Konfiguration übertragen
  5. Obwohl nun "Tastendruck kurz" im Programm aktiv ist erzeugen Tastendrücke keinen Protokolleintrag mehr (= kein Central-Link)

What is the version this bug report is based on?

3.67.10.20230225

Which base platform are you running?

rpi3 (RaspberryPi3)

Which HomeMatic/homematicIP radio module are you using?

RPI-RF-MOD

Anything in the logs that might be useful for us?

-

Additional information

Grobe Analyse: Beim Anlegen des Programm's wir der Central-Link auf den Datenpunkt "PRESS_LONG" des Tasterkanal's erzeugt.

Beim Ändern der Bedingung sollen 2 Sachen passieren: A: "CENTRAL-Link" zu "PRESS_LONG" soll gelöscht werden, das geht nicht instant weil beim Batteriegerät dazu die Taste gedrückt werden muss (für die Übertragung der Konfiguration) B: "CENTRAL-Link" zu "PRESS_SHORT" soll angelegt werden, das geht nicht weil A noch nicht erledigt ist und es pro Kanal nur einen "Central-Link" geben darf.

Also schlägt B fehl und A wird nach Speichern des Programmes und anschließender Übertragung der Konfiguration abgeschlossen.

Zustand nun: kein "CENTRAL-Link".

Meine Empfehlung: Den "CENTRAL-Link" nicht auf den Datenpunkt setzen sondern direkt auf den übergeordneten Kanal. So wie wir das in RM mit "Taster-/Schaltevent an Zentrale" machen.

jens-maus commented 1 year ago

Ist dieses Fehlverhalten nur auf homematicIP beschränkt oder auch bei BidCos-RF/HomeMatic vorhanden?

jp112sdl commented 1 year ago

Nur HmIP. Hab gerade ein Testprogramm mit einem HM-PB-2-WM55 angelegt und die Prozedur durchgespielt.

jens-maus commented 1 year ago

Hmm, dann "riecht" das doch momentan eher danach das mit dem letzten Fix in HMIPServer bzgl. reportValueUsage irgendwas nicht ganz sauber umgesetzt wurde. Oder irre ich mich?

Die Frage wäre halt wo genau in der WebUI wird denn dieser central link angelegt wenn das WebUI Programm gespeichert wird? Oder passiert das implizit irgendwo mit der createLink XMLRPC Anfrage?

jp112sdl commented 1 year ago

Baxxy hat das Problem schon gut beschrieben.

Das Problem ist hier, dass die Konfigurationsdaten "reportValueUsage = 0 für SHORT" noch anstehen. Es wird in der Folge die Annahme der Konfiguration "reportValueUsage = 1 für LONG" direkt abgelehnt.

Spielt man das Szenario mit einem Netz-Gerät durch, das die Konfigurationsdaten sofort übernimmt, dann klappt auch Wechsel von "kurz->lang" in einem Programm.

Die Frage wäre halt wo genau in der WebUI wird denn dieser central link angelegt wenn das WebUI Programm gespeichert wird? Oder passiert das implizit irgendwo mit der createLink XMLRPC Anfrage?

Das passiert von der ReGaHss. Die sendet den reportValueUsage an den Schnittstellenprozess. So ja auch bei BidCos.

jp112sdl commented 1 year ago

Repariert werden müsste es im HMIPServer

jens-maus commented 1 year ago

Repariert werden müsste es im HMIPServer

Ok. die Frage wäre nur was könnte da genau das problem sein? Das er das eine reportValueUsage = 0 verschluckt beim entfernen?

jp112sdl commented 1 year ago

die Frage wäre nur was könnte da genau das problem sein?

Beim Speichern des Programms wird

Der HMIPServer müsste also erkennen, dass da eine Löschung ansteht und dann schon den neuen "Verknüpfungswunsch" akzeptieren.

jens-maus commented 1 year ago

Der HMIPServer müsste also erkennen, dass da eine Löschung ansteht und dann schon den neuen "Verknüpfungswunsch" akzeptieren.

Und der rfd macht das augenscheinlich genau so, richtig?

jp112sdl commented 1 year ago

Beim BidCos ist das ganze Prozedere intern anders. Da bekommt das Gerät nur gesagt "Schick das Telegramm auch an die gepairte MASTER-Adresse".

Baxxy13 commented 5 months ago

Auch über 1 Jahr später noch aktuell. Getestet mit der 3.75.6.20240316