HMIP-WRCD

Begonnen von yep_DD, 29 Januar 2020, 15:46:31

Vorheriges Thema - Nächstes Thema

yep_DD

Hallo zusammen,

hat schon jemand von euch ein HMIP-WRCD in Verwendung? Ich habe das Problem, dass die Events (Pressed Long / Short) für die beiden Kanäle (1 und 2) nicht angelegt werden und ich ebenfalls nicht weiß, wie ich über FHEM die Statuszeile definieren kann.

Vilen Dank

defmod HM_TasterVorraum HMCCUDEV "HmIP-WRCD XXX"
attr HM_TasterVorraum IODev d_ccu
attr HM_TasterVorraum ccureadingfilter (OPERATING_VOLTAGE|PRESS|RSSI|BAT|ACOUSTIC|DISPLAY)
attr HM_TasterVorraum ccureadingformat datapoint
attr HM_TasterVorraum event-on-update-reading .*
attr HM_TasterVorraum room Testraum


Der Event Monitor sagt folgendes:

2020-01-29 15:47:54 HMCCUDEV HM_TasterVorraum 0.RSSI_DEVICE: -54
2020-01-29 15:47:54 HMCCUDEV HM_TasterVorraum activity: alive
2020-01-29 15:47:54 HMCCUDEV HM_TasterVorraum hmstate: Initialized

zap

Du musst in der CCU den Kanal in einem Programm abfragen, damit die CCU Events bei Tastendrücken schickt. Klingt schräg, ist bei solchen Tastern aber so.
Kann ein Dummy Programm sein, das nichts macht.

Ich mache es so, dass ich die Taste im Programm abfrage (prüfen auf pressed) und dann eine CCU Systemvariable auf irgendeinen Wert setze (als Action).
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

yep_DD

#2
Oha, vielen Dank für die schnelle Antwort. Ich habe einige 6-fach Homematic Wandtaster (NICHT ip) auch in FHEM eingebunden und da funktioniert es. Die Raspberrymatic läuft bei mir ausschließlich um alle Aktoren / Sensoren an FHEM weiterzuleiten. Könntest du mir eventuell ein kleines Beispiel zeigen was du meinst?

Edit: Bei den 6-fach Tastern sehe ich die Kanäle für die Tastendrücke auch in der Geräteübersicht. Beim WRCD nur die Displaykonfiguration.

So habe ich bisher die Taster eingebunden:

defmod SW_LR HMCCUDEV QEQXXXXXXX
attr SW_LR IODev d_ccu
attr SW_LR ccureadingfilter (^LOW_BAT$|PRESS_SHORT|PRESS_LONG|^DUTY_CYCLE$)
attr SW_LR event-on-update-reading .*
attr SW_LR room Wohnzimmer
attr SW_LR substitute PRESS_SHORT,PRESS_LONG!(1|true):pressed

yep_DD

#3
Edit: Es sieht so aus, als würde nur der Kanal "0" ausgelesen, da funktionieren auch Events. Kanal 1 / 2 und 3 werden weder schreibend noch lesend übertragen. Auch eine Änderung zu HMCCUCHN :1 bringt nichts (verwende ich nirgends, weiß also nicht, ob es funktionieren sollte).

So sieht die Device Info aus. Was mich wundert, ist das [E]vent und nicht [RE]

CHN XXXXXXX:0 HmIP-WRCD XXXXXXX:0
  DPT {b} HmIP-RF.XXXXXXX:0.CONFIG_PENDING = false [RE]
  DPT {b} HmIP-RF.XXXXXXX:0.DUTY_CYCLE = false [RE]
  DPT {b} HmIP-RF.XXXXXXX:0.INSTALL_TEST = true [RW]
  DPT {b} HmIP-RF.XXXXXXX:0.LOW_BAT = false [RE]
  DPT {f} HmIP-RF.XXXXXXX:0.OPERATING_VOLTAGE = 3.100000 [RE]
  DPT {i} HmIP-RF.XXXXXXX:0.OPERATING_VOLTAGE_STATUS = 0 [RE]
  DPT {n} HmIP-RF.XXXXXXX:0.RSSI_DEVICE = 199 [RE]
  DPT {n} HmIP-RF.XXXXXXX:0.RSSI_PEER = 0 [RE]
  DPT {b} HmIP-RF.XXXXXXX:0.UNREACH = false [RE]
  DPT {b} HmIP-RF.XXXXXXX:0.UPDATE_PENDING = false [RE]
CHN XXXXXXX:1 HmIP-WRCD XXXXXXX:1
  DPT {b} HmIP-RF.XXXXXXX:1.PRESS_LONG =  [E]
  DPT {b} HmIP-RF.XXXXXXX:1.PRESS_SHORT =  [E]
CHN XXXXXXX:2 HmIP-WRCD XXXXXXX:2
  DPT {b} HmIP-RF.XXXXXXX:2.PRESS_LONG =  [E]
  DPT {b} HmIP-RF.XXXXXXX:2.PRESS_SHORT =  [E]
CHN XXXXXXX:3 HmIP-WRCD XXXXXXX:3
  DPT {i} HmIP-RF.XXXXXXX:3.ACOUSTIC_NOTIFICATION_SELECTION =  [W]
  DPT {s} HmIP-RF.XXXXXXX:3.COMBINED_PARAMETER =  [W]
  DPT {i} HmIP-RF.XXXXXXX:3.DISPLAY_DATA_ALIGNMENT =  [W]
  DPT {i} HmIP-RF.XXXXXXX:3.DISPLAY_DATA_BACKGROUND_COLOR =  [W]
  DPT {b} HmIP-RF.XXXXXXX:3.DISPLAY_DATA_COMMIT =  [W]
  DPT {i} HmIP-RF.XXXXXXX:3.DISPLAY_DATA_ICON =  [W]
  DPT {i} HmIP-RF.XXXXXXX:3.DISPLAY_DATA_ID =  [W]
  DPT {s} HmIP-RF.XXXXXXX:3.DISPLAY_DATA_STRING =  [W]
  DPT {i} HmIP-RF.XXXXXXX:3.DISPLAY_DATA_TEXT_COLOR =  [W]
  DPT {i} HmIP-RF.XXXXXXX:3.INTERVAL =  [W]
  DPT {i} HmIP-RF.XXXXXXX:3.REPETITIONS =  [W]

yep_DD

@zap, du hast recht. Ich habe jetzt ein Dummy Programm erstellt (und wieder GELÖSCHT) und nun funktioniert es. Das ist super mysteriös. Hast du eine ERklärung dafür?

Jetzt fehlt nur noch, wie ich selber das Display beschreiben kann.

zap

Zitat von: yep_DD am 29 Januar 2020, 18:10:48
@zap, du hast recht. Ich habe jetzt ein Dummy Programm erstellt (und wieder GELÖSCHT) und nun funktioniert es. Das ist super mysteriös. Hast du eine ERklärung dafür?

Jetzt fehlt nur noch, wie ich selber das Display beschreiben kann.

Du hast das Programm wieder gelöscht und es funktioniert immer noch? Erstaunlich!

Wegen der Display-Ausgabe musst Du mal ein bißchen rumprobieren. Vielleicht findest Du auch irgendwo eine Doku.

Als Start würde ich mal folgendes versuchen: Das Ding als HMCCUDEV Device definieren. Das [E] bei den Press Datenpunkten ist normal.

Die Datenpunkte vom Display setzt Du so (Beispiel)
set xy datapoint 3.DISPLAY_DATA_STRING "Test"

Leider muss man bei solchen Devices of mehrere Datenpunkte gleichzeitig setzen. Die Frage ist nur, welche Werte erwartet werden.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

yep_DD

Hallo zap,

ja, ich habe es bei beiden Kanälen ausprobiert und die Programme wieder gelöscht, inklusive der Systemvariable. Das "Test" habe ich auch schon ausdprobiert, ohne Erfolg. Aber ich werde weiter probieren, die events waren das Wichtigste. Die EQ3 Doku -eventuell habe ich auch nicht die aktuellste gefunden- enthält leider nichts dazu.

Grüße

yep_DD

#7
Hallo,

folgendes funktioniert so halbe:

set HM_TasterVorraum datapoint 3.DISPLAY_DATA_ID 2
set HM_TasterVorraum datapoint 3.DISPLAY_DATA_STRING "Neuer Test 3!!"
set HM_TasterVorraum datapoint 3.DISPLAY_DATA_COMMIT 1


Zeile 1 ist die Zeile (1-5), Zeile 2 der Text und schließlich die Übertragung, das ganze geht aber nur, wenn ich in der CCU den Befehl noch folgendermaßen sende:

dom.GetObject("HmIP-RF.XXX:3.COMBINED_PARAMETER").State("{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=CENTER,DDS=Testtext,DDID=1,DDC=true}")

Über die CCU kann man über "3. COMBINED PARAMETER" auch alles setzen, leider weiß ich nicht, wie das in FHEM umzusetzen ist.

Aber so richtig sicher bin ich mir nicht wann und warum

zap

Du kannst die 3 Set Befehle in einen zusammenfassen:


set HM_TasterVorraum datapoint 3.DISPLAY_DATA_ID 2 3.DISPLAY_DATA_STRING "Neuer Test 3!!" 3.DISPLAY_DATA_COMMIT 1


Das ist auch schneller, da nur ein Request Richtung CCU geht.

Und für den anderen Befehl:


set HM_TasterVorraum datapoint 3.COMBINED_PARAMETER "{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=CENTER,DDS=Testtext,DDID=1,DDC=true}"
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

yep_DD

Das erste ist super, vielen Dank. Den CCU Script Befehl bekomme ich leider nicht hin, das akzeptiert HMCCUDEV nicht:

HMCCUDEV: HM_TasterVorraum Usage: set HM_TasterVorraum datapoint [{channel-number}.]{datapoint} {value} [...]

yep_DD

#10
Also für alle die ein ähnliches Problem haben, habe ich jetzt folgenden Lösungansatz:

Prinzip: In FHEM wird der Text, inkl. Icons und allem gesetzt und für den Commit ein Skript auf der CCU ausgeführt, welches über eine Systemvariable in der CCU getriggert wird.


- In der CCU eine neue Systemvariable, z.B. TEST_VAR erstellen
- In der CCU ein neues Programm erstellen, welches auf die Änderung der oberen Systemvariable reagiert und folgendes ausführt:
dom.GetObject("HmIP-RF.XXXXXXX:3.COMBINED_PARAMETER").State("{DDBC=WHITE,DDTC=BLACK,DDA=CENTER,DDID=1,DDC=true}")}")
- Über HMCCU in FHEM die Texte in Zeile 1-5 beliebig schreiben über:

set HM_TasterVorraum datapoint 3.DISPLAY_DATA_ID X
set HM_TasterVorraum datapoint 3.DISPLAY_DATA_STRING "[TEXT]"
set HM_TasterVorraum datapoint 3.DISPLAY_DATA_ICON Y


Aktualisiert wird das Display mit folgendem Befehl in fhem:
set HM_IO_DEVICE[zum beispiel d_ccu] vars TEST_VAR true

X = Zeile 1-5
Y = Icon 0-31 Siehe Homematic Dokumentation Abschnitt 163.3.4.1.5

Anmerkung: Will man wie ich nur die Zeilen 2-4 beschreiben, so kann man in den CCU Einstellungen des Gerätes den Standardtext für die oberste und unterste Zeile definieren, welcher erhalten bleibt. Leider weiß ich nicht, wie man den Trenner (siehe Bild) hinbekommt.

Beispiel für die drei mittleren Zeilen:

set HM_TasterVorraum datapoint 3.DISPLAY_DATA_ID 2 3.DISPLAY_DATA_ICON 1 3.DISPLAY_DATA_STRING "Status Zeile 2" 3.DISPLAY_DATA_ID 3 3.DISPLAY_DATA_ICON 3 3.DISPLAY_DATA_STRING "Status Zeile 3" 3.DISPLAY_DATA_ID 4 3.DISPLAY_DATA_ICON 5 3.DISPLAY_DATA_STRING "Status Zeile 4"
set d_ccu var updateVorraumDisplay true

zap

Mit ist immer noch nicht klar, weshalb das nicht direkt aus FHEM funktioniert. Versuche doch mal, bestimmte Zeichen zu escapen, vielleicht so:

set xy datapoint 3.COMBINED_PARAMETER "\{DDBC=WHITE,DDTC=BLACK,DDA=CENTER,DDID=1,DDC=true\}"

P.S. In Deinem Homematic Script sind zu viele geschlossene Klammern, kann das sein?

Was auch hilfreich sein könnte: setze in dem Device für das Attriubt ccuflags das Flag trace und verbose auf 3 oder 4. Führe den BEfehl oben aus und schau Dir die Logausgabe aus.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

yep_DD

Hatte ich schon probiert, auch testweise die geschweiften Klammern zu entfernen, sobald die "=" drin sind, geht es nicht mehr. Diese zu escapen geht leider auch nicht, auch nicht URL Notation (%3D)

zap

Das liegt an der Interpretation der Kommandozeile. Muss ich mir mal anschauen
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

yep_DD

Danke, dass wäre Klasse :)