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.54k stars 188 forks source link

PRESS_xxx=FALSE von HmIP-RCV-50 HmIP-RCV-1 wenn diese durch ein WebUI-Programm "gedrückt" werden #1583

Open Baxxy13 opened 2 years ago

Baxxy13 commented 2 years ago

Describe the issue you are experiencing

"drückt" man die HmIP-RCV-50 HmIP-RCV-1 oder die HM-RCV-50 BidCoS-RF per Mausklick in der WebUI wird folgendes ausgegeben... Systemprotokoll:

12:48:46 | 06.12.2021 | HM-RCV-50 BidCoS-RF:18 | Tastendruck kurz
12:48:50 | 06.12.2021 | HM-RCV-50 BidCoS-RF:18 | Tastendruck lang
12:48:58 | 06.12.2021 | HmIP-RCV-50 HmIP-RCV-1:18 | Tastendruck kurz
12:49:02 | 06.12.2021 | HmIP-RCV-50 HmIP-RCV-1:18 | Tastendruck lang

Externe Auswertung ioBroker mit Blockly:

6.12.2021, 12:48:46.703 [warn ]: javascript.0 (17189) script.js.Baxxy_Test_Blockly.Virt-Tasten-Debug: HM_PRESS_SHORT:true
6.12.2021, 12:48:50.628 [warn ]: javascript.0 (17189) script.js.Baxxy_Test_Blockly.Virt-Tasten-Debug: HM_PRESS_LONG:true
6.12.2021, 12:48:58.722 [warn ]: javascript.0 (17189) script.js.Baxxy_Test_Blockly.Virt-Tasten-Debug: HMIP_PRESS_SHORT:true
6.12.2021, 12:49:02.392 [warn ]: javascript.0 (17189) script.js.Baxxy_Test_Blockly.Virt-Tasten-Debug: HMIP_PRESS_LONG:true

Soweit korrekt.

Lässt man die selben Tasten im DANN-Teil eines WebUI-Programmes drücken ergibt sich folgendes Bild... Systemprotokoll:

12:50:10 | 06.12.2021 | HM-RCV-50 BidCoS-RF:18 | Tastendruck kurz
12:50:12 | 06.12.2021 | HM-RCV-50 BidCoS-RF:18 | Tastendruck lang
12:50:14 | 06.12.2021 | HmIP-RCV-50 HmIP-RCV-1:18 | unbekannte Meldung (PRESS_SHORT=FALSE)
12:50:16 | 06.12.2021 | HmIP-RCV-50 HmIP-RCV-1:18 | unbekannte Meldung (PRESS_LONG=FALSE)

Externe Auswertung ioBroker mit Blockly:

6.12.2021, 12:50:10.465 [warn ]: javascript.0 (17189) script.js.Baxxy_Test_Blockly.Virt-Tasten-Debug: HM_PRESS_SHORT:true
6.12.2021, 12:50:12.456 [warn ]: javascript.0 (17189) script.js.Baxxy_Test_Blockly.Virt-Tasten-Debug: HM_PRESS_LONG:true
6.12.2021, 12:50:14.459 [warn ]: javascript.0 (17189) script.js.Baxxy_Test_Blockly.Virt-Tasten-Debug: HMIP_PRESS_SHORT:false
6.12.2021, 12:50:16.464 [warn ]: javascript.0 (17189) script.js.Baxxy_Test_Blockly.Virt-Tasten-Debug: HMIP_PRESS_LONG:false

Man sieht das sich die HmIP-RCV-50 HmIP-RCV-1 - Tastendrücke anders verhalten wenn sie durch ein WebUI-Programm ausgeführt wurden.

Describe the behavior you expected

Bin mir nicht sicher ob es tatsächlich ein Bug ist. Zumindest ist es ein inkonsistentes Verhalten und sollte m.E. so nicht sein. Ich würde erwarten das die HmIP-RCV-50 HmIP-RCV-1 - Tastendrücke immer das gleiche "Event" erzeugen, egal ob per WebUI angeklickt oder per WebUI-Programm "gedrückt" Eben gleich wie die HM-RCV-50 BidCoS-RF - Tastendrücke.

Steps to reproduce the issue

  1. eine HmIP-RCV-50 HmIP-RCV-1 - Taste auf protokolliert stellen und in der WebUI per Mausklick "drücken"
  2. dieselbe Taste im DANN-Teil eines WebUI-Programms drücken lassen
  3. Systemprotokoll ansehen ...

What is the version this bug report is based on?

3.61.6.20211203 Nightly Snapshot

Which base platform are you running?

rpi4 (RaspberryPi4)

Which HomeMatic/homematicIP radio module are you using?

RPI-RF-MOD

Anything in the logs that might be useful for us?

Logausgaben innerhalb der Fehlerbeschreibung

Additional information

Innerhalb der WebUI spielt der Fehler augenscheinlich keine Rolle. WebUI-Programme werden trotz: PRESS_SHORT=FALSE korrekt durch solch eine gedrückte Taste getriggert.

Externe Steuerungen kommen da aber teilweise ins straucheln da sie vermutlich immer ein "true" erwarten.

Diskussion zum Thema im Homematic-Forum: Virtuelle Taster in Programmen

Maik2208 commented 2 years ago

Klingt für mich als würde lediglich die Übersetzung fehlen 🤷🏻‍♂️

jp112sdl commented 2 years ago

Klingt für mich als würde lediglich die Übersetzung fehlen 🤷🏻‍♂️

Es geht darum, dass das Ergebnis der Methode beim Klicken in der WebUI true, beim Aufruf über ein Programm jedoch false ist. Und das nur bei HmIP. Bei BidCos ist es in beiden Fällen true.

Baxxy13 commented 2 years ago

Die fehlende Übersetzung im Systemprotokoll fällt natürlich auf, spielt hier aber erstmal keine Rolle. Spekulation: Es kann nicht korrekt übersetzt werden weil der "Tastendruck = falsch" so nicht vorgesehen ist.

Ist ja m.E. auch irgendwie unsinnig. Das Event ist z.B. ein kurzer Testendruck und der Wert ist falsch? Wenn irgendwas die Taste drückt sollte in dem Moment der Druck als wahr erkannt werden.

stale[bot] commented 2 years ago

Thanks for your contribution!
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs within the next 7 days. Please check if the issue is still relevant in the most current version of RaspberryMatic and tell us. Also check that all relevant details,


Vielen Dank für die Unterstützung!
Dieses Problem wurde automatisch als veraltet markiert, da es in letzter Zeit keine Aktivitäten gab. Es wird geschlossen, wenn nicht innerhalb der nächsten 7 Tage weitere Aktivitäten stattfinden. Bitte überprüfen Sie, ob das Problem auch in der aktuellsten Version von RaspberryMatic noch relevant ist, und teilen Sie uns dies mit. Überprüfen Sie auch, ob alle relevanten Details, Logs und Reproduktionsschritte enthalten sind oder aktualisiert werden müssen.

Baxxy13 commented 2 years ago

Da mir der Bot im Nacken hängt... Programm zum Nachbauen: IP_RCV50_Test-Prg Taste 1 & 2 protokollieren...

20:16:05 | 09.03.2022 | HmIP-RCV-50 HmIP-RCV-1:1 | Tastendruck kurz
20:16:06 | 09.03.2022 | HmIP-RCV-50 HmIP-RCV-1:2 | unbekannte Meldung (PRESS_SHORT=FALSE), unbekannte Meldung (PRESS_LONG=FALSE)
20:17:24 | 09.03.2022 | HmIP-RCV-50 HmIP-RCV-1:1 | Tastendruck kurz
20:17:26 | 09.03.2022 | HmIP-RCV-50 HmIP-RCV-1:2 | unbekannte Meldung (PRESS_SHORT=FALSE), unbekannte Meldung (PRESS_LONG=FALSE)
20:18:01 | 09.03.2022 | HmIP-RCV-50 HmIP-RCV-1:1 | Tastendruck lang
20:18:03 | 09.03.2022 | HmIP-RCV-50 HmIP-RCV-1:2 | unbekannte Meldung (PRESS_SHORT=FALSE), unbekannte Meldung (PRESS_LONG=FALSE)

Auffällig ist auch das Taste :2 keinen Zeitstempel in der WebUI bekommt.

Sollte leicht zu reproduzieren sein.

Baxxy13 commented 1 year ago

Kleines Update: DestinationValue der SINGLEDESTINATION wird hier beim Erzeugen des Programmes in der Tat fälschlicherweise auf false gesetzt. DestValue_SD_false

Korrekt wäre true (korrigiert mit dem SDV): DestValue_SD_korrigiert

Mit einem entsprechenden Script (oder mit dem SDV von Black) lässt sich das also korrigieren.

jp112sdl commented 1 year ago

Das Problem stellt sich für mich wie folgt dar: 1.) Bedienung über die WebUI Egal ob HMRF oder HmIP - beim Klick auf den Button unter "Status und Bedienung" wird dem Datenpunkt des Buttons der Wert 1 (true) übergeben. Auszug aus der webui.js:

...
  onClickShort: function() {
    setDpState(this.shortId, 1);
...
  onClickLong: function() {
    setDpState(this.longId, 1);
...

2.) Auslösen des PRESS-Ereignisses via Programm-DANN Beim Speichern der Destination wird grundsätzlich der Wert 0 für den PRESS_*-Datenpunkt gesetzt gesetzt.

Bei HmIP:

<select id="setDestinationDPSelectChange2456" onchange="SetDestinationDPSelectChange(2456,this);" class="SelectBox">  
   <option value="1381:0|HmIP-RF.HmIP-RCV-1:1.PRESS_LONG" selected="">Tastendruck lang</option>
   <option value="1382:0|HmIP-RF.HmIP-RCV-1:1.PRESS_SHORT">Tastendruck kurz</option>
</select>

Bei HMRF:

<select id="setDestinationDPSelectChange2457" onchange="SetDestinationDPSelectChange(2457,this);" class="SelectBox">
   <option value="1039:0|BidCos-RF.BidCoS-RF:1.PRESS_LONG" selected="">Tastendruck lang</option>
   <option value="1040:0|BidCos-RF.BidCoS-RF:1.PRESS_SHORT">Tastendruck kurz</option>
   <option value="1038:0|BidCos-RF.BidCoS-RF:1.LEVEL">Prozentwert senden</option>
</select>

Das Auslösen eines PRESS_SHORT/_LONG durch ein ReGa-Programm mit dem Wert 0 erzeugt bei der

Dem BidCos ist es also egal - die Gegenprobe lässt sich auch mittels Skript testen.

dom.GetObject("BidCos-RF.BidCoS-RF:1.PRESS_LONG").State(1);
 > homematic-raspi user.debug rfd: Event: BidCoS-RF:1.PRESS_LONG=true
dom.GetObject("BidCos-RF.BidCoS-RF:1.PRESS_LONG").State(0);
 > homematic-raspi user.debug rfd: Event: BidCoS-RF:1.PRESS_LONG=true

Dahingegen sieht es bei HmIP anders aus:

dom.GetObject("HmIP-RF.HmIP-RCV-1:1.PRESS_LONG").State(1);
  > Call HmIP-RF_java with event HmIP-RCV-1:1 PRESS_LONG = true
dom.GetObject("HmIP-RF.HmIP-RCV-1:1.PRESS_LONG").State(0);
  > Call HmIP-RF_java with event HmIP-RCV-1:1 PRESS_LONG = false

Abhilfe Um das Problem zu korrigieren, müsste entweder

Ob es jedoch schädlich ist, wenn man in der /www/rega/esp/side.inc:332 generell hier aus der 0 eine 1 macht, weiß ich nicht:

Write( '<option value="'#oDP.ID()#':0|'#oDP.Name()#'"'#sSelected#'>' );

Ggf. müsste man hier noch mal gezielt nach virt. CCU-Tasten filtern.