RaspberryMatic
RaspberryMatic copied to clipboard
PRESS_xxx=FALSE von HmIP-RCV-50 HmIP-RCV-1 wenn diese durch ein WebUI-Programm "gedrückt" werden
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
- eine HmIP-RCV-50 HmIP-RCV-1 - Taste auf protokolliert stellen und in der WebUI per Mausklick "drücken"
- dieselbe Taste im DANN-Teil eines WebUI-Programms drücken lassen
- 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
Klingt für mich als würde lediglich die Übersetzung fehlen 🤷🏻♂️
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
.
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.
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.
Da mir der Bot im Nacken hängt...
Programm zum Nachbauen:
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.
Kleines Update:
DestinationValue der SINGLEDESTINATION wird hier beim Erzeugen des Programmes in der Tat fälschlicherweise auf false
gesetzt.
Korrekt wäre true
(korrigiert mit dem SDV):
Mit einem entsprechenden Script (oder mit dem SDV von Black) lässt sich das also korrigieren.
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
- BidCos-Schnittstelle trotzdem ein
true
-Event. - HmIP-Schnittstelle ein
false
-Ergebnis.
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
- der Eventhandler des HMIPServer so angepasst werden, dass ihm auch der Wert egal ist und er immer
true
als Event sendet - wie bei BidCos, oder - beim Setzen von "Tastendruck XXX" in der SingleDestination der Wert
1
gesetzt werden
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.