FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: a_quadrat am 08 Oktober 2019, 12:44:51

Titel: [HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 => neues input/output Modul HBW-IO-6-6
Beitrag von: a_quadrat am 08 Oktober 2019, 12:44:51
Hallo Thomas,

das Anlegen der Verknüpfung war kein Problem, aber es hatte leider nicht funktioniert. Ich gucke mal, ob ich die beiden Module zusammen gestrickt bekomme.

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR peering funktioniert nicht
Beitrag von: loetmeister am 08 Oktober 2019, 18:01:14
Hi,

Eventuell hast du noch ein paar mehr Infos... Auch für alle anderen, die die historie nicht kennen.  ;)

Um  HMW-LC-Sw2-DR geht es ja nicht, oder? Sondern  Peering eines HBW-LC-Sw-8, mit? ???
https://github.com/ThorstenPferdekaemper/HBWired/tree/master/HBW-LC-Sw-8

Bei dem HBW-LC-Sw-8 kannst du ja mal im seriellen Monitor schauen. Ansonsten auch im FHEM event log...

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR peering funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 09 Oktober 2019, 11:35:30
Zitat von: a_quadrat am 08 Oktober 2019, 12:44:51
das Anlegen der Verknüpfung war kein Problem
Das ist klar, da die Homebrew-Version ja dasselbe XML wie das Original verwendet. Daher "glaubt" FHEM, dass das geht.

Zitat von: loetmeister am 08 Oktober 2019, 18:01:14
Um  HMW-LC-Sw2-DR geht es ja nicht, oder? Sondern  Peering eines c, mit?
War die Ausgangssituation nicht ein 6-fach Taster? D.h. zumindest der HBW-LC-Sw-8 alleine würde nichts bringen.

Gruß,
   Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 09 Oktober 2019, 13:01:28
Die Ausgangssituation war, dass ich ein Gerät benötige, dass zwei Eingänge und zwei Ausgänge besitzt. Daher der Ansatz, folgendes Modul zu benutzen - HMW-LC-Sw2-DR.
Bei der Software die ich verwendet habe, habe ich festgestellt, dass ein peeren in der CCU möglich war, aber funktioniert hatte es nicht.
Der zweite Ansatz, das Modul HBW-LC-Sw-8 mit dem Modul HBW-SEN-key  zu vereinheitlichen und dann testen, ob das peeren funktioniert.
Ich hatte das Modul HBW-LC-Sw-8 schon probiert zu peeren, aber es hatte ebenfalls nicht funktioniert.

Meine HMW-Testgeräte sind alle auf einer CCU angelegt und kommunizieren mit fhem über das HMCCU Modul.

Zu meinem Verständnis, sind die Geräte einmal gepeert, läuft die Kommunikation doch direkt über den Bus und sollte auch CCU/FHEM unabhängig laufen, oder?

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 09 Oktober 2019, 21:54:46
Zitat von: a_quadrat am 09 Oktober 2019, 13:01:28
Ich hatte das Modul HBW-LC-Sw-8 schon probiert zu peeren, aber es hatte ebenfalls nicht funktioniert.
Mir fehlt noch immer das Gegenstück... wo ist er Sensor (Taster) mit dem du HBW-LC-Sw-8 verknüpft hast?? Welches Modul nutzt du?

Zitat
Zu meinem Verständnis, sind die Geräte einmal gepeert, läuft die Kommunikation doch direkt über den Bus und sollte auch CCU/FHEM unabhängig laufen, oder?
Ja, das ist korrekt.

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 11 Oktober 2019, 15:57:11
Hallo Thomas,

als Tasterschnittstelle habe ich das Modul HMW-IO-12-Sw7-DR.

Ich war eigentlich der Meinung, dass ich das Modul  HBW-LC-Sw-8 schon getestet hatte, aber das war scheinbar nicht der Fall. Ich habe es jetzt nochmal aufgebaut und festgestellt, dass unter der CCU der Schaltbefehl nicht ausgeführt wird. Folgende Zeilen sind der Mitschnitt vom Bus:


B: 2A 1220
T: FD:FF:FF:FF:FF:F8:42:00:00:17:12:41:00:83:00:00:66:48:42:57:37:32:39:36:32:37:39:04:06
R: FD:FF:FF:FF:FF:DE:00:00:96:F3:06:4B:01:00:EF:1A:D8
R: FD:FF:FF:FF:FF:D8:00:00:96:F3:06:4B:01:00:EF:91:C0
R: FD:FF:FF:FF:FF:DA:00:00:96:F3:12:41:01:12:00:03:06:4A:45:D1:30:B4:39:B7:39:33:30:0B:3EE: CRC
R: FD:42:00:00:17:1E:00:00:00:81:05:38:00:E8:53:26E: CRC
R: FD:42:00:00:17:1E:00:00:00:81:05:38:00:E8:53:26E: CRC
R: FD:42:00:00:17:1E:00:00:00:81:05:38:00:E8:53:26E: CRC
R: FD:42:00:00:17:1E:00:00:00:81:05:38:00:E8:53:26E: CRC
R: FD:42:00:00:17:1E:00:00:00:81:05:38:00:E8:53:26E: CRC
R: FD:42:00:00:17:1E:00:00:00:81:05:38:00:E8:53:26E: CRC


Die ersten beiden Zeilen sind Anmeldung am Bus. Die nächsten 3 Zeilen sind die Befehle aus der Verknüpfung vom Tastermodul und der Rest, ist der Einschaltbefehl aus der CCU.

Leider funktioniert es nicht. Kannst du erkennen woran es liegen kann?

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 11 Oktober 2019, 21:18:59
Hi,
für mich sieht das so aus, als ob der Prüfsummencheck fehlschlägt. Komischerweise scheinen die Tastendrücke (4B) ok zu sein, aber die A-Message (41) sowie alles von der CCU nicht. Seltsam...
@Thomas: Hast Du was am Prüfsummencheck gemacht?
Gruß,
   Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 11 Oktober 2019, 23:16:46
Hallo,

Am Empfangsteil habe ich eigentlich nichts gemacht.. Schon gar nicht an den crc Routinen.
Die Nachrichten mit dem crc Fehler sehen auch irgendwie abgeschnitten aus..

Verknüpfung der Taster mit broadcast funktioniert leider nicht.. Keine Ahnung ob HMW-IO-12-Sw7-DR auch die Tastendruck Nachricht direkt an die Adresse des aktors schicken würde.

Das Thema mit Tasten Peerings hatten wir letztens ähnlich hier diskutiert: https://forum.fhem.de/index.php/topic,22952.msg966355.html#msg966355

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 12 Oktober 2019, 09:44:14
Zitat von: loetmeister am 11 Oktober 2019, 23:16:46
Verknüpfung der Taster mit broadcast funktioniert leider nicht.. Keine Ahnung ob HMW-IO-12-Sw7-DR auch die Tastendruck Nachricht direkt an die Adresse des aktors schicken würde.
Ja, müsste er. Bei mir sieht das so aus (das ist aus dem FHEM-Log, also nicht genau das, was auf dem Bus passiert):

FD0F006542000014FA000123264B030158

Die Empfängeradresse 42000014 ist ein HBW-Teil und 00012326 ist ein HMW-IO-12-Sw7-DR, desses Taste damit gepeert ist. Ich denke, dass die drei Nachrichten aus dem Log von Andreas nichts mit einem Peering zu tun haben. ...oder anders: Die Geräte sind wohl gar nicht verknüpft.

Gruß,
   Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 12 Oktober 2019, 10:07:35
Hi,

ja, das könnte so sein, aber das erste Problem ist, dass ich es aus der Geräteoberfläche (CCU) nicht steuern kann. Das waren die "abgeschnittenen" CRC Fehler bzw. Zeile 6-11.

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 12 Oktober 2019, 12:40:17
Hi,
ich habe mir jetzt nochmal die eine Message genauer angeschaut:

R: FD:42:00:00:17:1E:00:00:00:81:05:38:00:E8:53:26E: CRC

Als das 42000017 sieht ok aus.
00000081 ist dann die Adresse Deiner CCU. Ist das korrekt? Es wundert mich ein bisschen, da die CCU normalerweise auf 00000001 hört.
Dan die 38 sollte eigentlich eine 78 (oder 73) sein.
Die E8 ist auch seltsam. Es sollte eher eine C8 sein.
Das sieht so aus als ob in der Nachricht einzelne Bits gekippt sind. Das sieht wirklich nach Fehlern in der Übertragung aus.
Gruß,
   Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 14 Oktober 2019, 20:22:36
Hi,

ja, die 00000081 ist die CCU, es ist keine orginal CCU sondern eine RaspberryMatic. Es ist schon merkwürdig, aber einen Übertragungsfehler kann ich mir nur schwer vorstellen, der Bus ist nur 30 cm lang und mit der Firmware von jfische funktioniert es.

Anbei einmal ein Mitschnitt eines Schaltbefehls vom HMW-IO-12-Sw7-DR:


R: FD:00:00:96:F3:1C:00:00:00:81:84E: MsgTooLong
:13:0C:32:FAR: FD:00:00:00:01:5C:00:00:56:73:06:29:0C:E8:00:5F:90E: CRC
R: FD:00:00:96:F3:59:00:00:00:81:82E: MsgTooLong
:92:4AR: FD:00:00:96:F3:1E:00:00:00:81:84E: MsgTooLong
:13:0C:2F:56R: FD:00:00:00:01:7E:00:00:16:73:06:29:0C:E8:00:06:56E: CRC
R: FD:00:00:96:F3:79:00:00:00:81:82E: MsgTooLong
:F6:0CR: FD:00:00:96:F3:18:00:00:00:81:84E: MsgTooLong
:13:8D:B8:A0R: FDR: FD:00:00R: FD:00:00:96R: FD:00:00:00R: FD:00R: FD:00:00:96:F3R: FD:00:00R: FD:00:00:96R: FD:00:00:96R: FD:00:00:00R: FD:00R: FD:00:00:96:F3:18:00:00R: FD:00R: FDR: FD:00:00:96R: FD:00:00:00R: FD:00:00:96R: FD:00:00:96R: FD:00R: FD:00:00:96R: FD:00:00R: FD:00:00:00R: FD:00:00R: FD:00:00:96:F3:18:00:00R: FD:00:00R: FD:00:00:96R: FD:00:00:96R: FD:00:00R: FD:00:00:96R: FD:00:00:96:F3:1C:00R: FD:00:00R: FD:00:00:96R: FD:00:00R: FD:00:00R: FD:00:00:96R: FD:00:00:96:F3:18:00:00:00:81:05:38:0C:00:A7:90E: CRC
R: FD:00:00:00:01:18:00:00:56:73:06:29:0C:00:00:B4:D4E: CRC
R: FD:00:00:96:F3:19:00:00:00:81:82E: MsgTooLong
:4B:


VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 14 Oktober 2019, 22:56:21
Hi Andreas,

scheint gibt es mit der neuen Arduino IDE noch immer Probleme. Nicht mehr ganz so fatal wie vorher, aber es funktioniert nicht so recht... (habe https://forum.fhem.de/index.php?topic=22952.msg981363#msg981363 ergänzt)

Habe eben mal einen Test mit HBW-LC-Sw-8 gemacht. Mit IDE 1.8.10 & Arduino AVR Boards, Version 1.8.1.
Die Kommunikation mit FHEM funktioniert nicht, es gibt "MsgTooLong" und CRC Fehler Meldungen im Seriellen Monitor... also insgesamt nicht funktionsfähig.

Gehe ich wieder zurück auf die alte Boardversion:
Weiterhin IDE 1.8.10 aber Arduino AVR Boards, Version 1.6.21, läuft es wie gewohnt.

z.b. HBW-LC-Sw-8 start, dann per FHEM Kanal 1 ON (S: set 200)
22:21:51.008 -> B: 2A 1220
22:21:52.028 -> T: FD:FF:FF:FF:FF:F8:42:00:00:16:12:41:00:83:00:00:66:48:42:57:37:32:39:36:32:37:38:B2:A6
22:21:58.927 -> R: FD:42:00:00:16:1E:00:00:00:01:05:78:00:C8:9F:D2
22:21:58.961 -> S: 00 C8
22:21:58.961 -> T: FD:00:00:00:01:78:42:00:00:16:05:69:00:C8:9C:56
22:21:58.995 -> R: FD:42:00:00:16:19:00:00:00:01:02:F4:02
22:21:58.995 -> R: ACK
22:22:00.931 -> T: FD:00:00:00:01:98:42:00:00:16:05:69:00:C8:46:A4
22:22:00.964 -> R: FD:42:00:00:16:19:00:00:00:01:02:F4:02
22:22:00.998 -> R: ACK



Kannst du mal HBW-LC-Sw-8 mit Arduino AVR Boards, Version 1.6.21 kompilieren und testen?
Wenn du die Größen des Kompilierten Sketch vergleicht, sollte es so aussehen wie:

ok -> Arduino AVR Boards, Version 1.6.21
Der Sketch verwendet 14104 Bytes (45%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 452 Bytes (22%) des dynamischen Speichers, 1596 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes


not ok -> Arduino AVR Boards, Version 1.8.1
Der Sketch verwendet 13660 Bytes (44%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 452 Bytes (22%) des dynamischen Speichers, 1596 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.


Keine Ahnung was fehlt... scheint aber Code zu sein der für die Kommunikation wichtig ist..  ;D :o

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 15 Oktober 2019, 20:31:06
Hi,
ich kann mir vorstellen, dass das mit (der Spezialversion) der SoftwareSerial zusammenhängt. Möglicherweise wird da sowas wie tunedDelay "kaputtoptimiert". Inzwischen scheint die normale SoftwareSerial das auch ein bisschen anders zu machen: Es wird jetzt wohl _delay_loop_2 aus delay_basic.h verwendet. Vielleicht müsste man da mal was anpassen.
Gruß,
  Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 15 Oktober 2019, 23:06:57
Hi Thorsten,

es scheint tatsächlich mit HBWSoftwareSerial zusammen zuhängen... obwohl ich mir das nicht so erklären kann, da ich auch unterschiedliche Größen des Kompilierten Sketch habe, selbst wenn ich HBWSoftwareSerial gar nicht genutzt habe.

Ich habe aber dennoch mal zum testen HBW-LC-Sw-8 und HBW-1W-T10 auf die neue SoftwareSerial abgeändert (es können ja nun mehrere Instanzen erzeugt werden).

  Serial.begin(19200);  // Serial->USB for debug
  rs485.begin(19200);    // RS485 via SoftwareSerial, must use 19200 baud!


Der Code, generiert mit Arduino AVR Boards, Version 1.8.1 scheint tatsächlich zu laufen... bei einem kurzen Test mit HBW-LC-Sw-8 und HBW-1W-T10 habe ich in FEHM und im Seriellen Monitor keine Probleme erkennen können.

D.h. ich könnte HBWSoftwareSerial aus allen Devices entfernen, um dieses Thema mit der Arduino AVR Boards Version zu begraben.


HBW-LC-Sw-8, Arduino AVR Boards, Version 1.8.1 & New SoftwareSerial
Der Sketch verwendet 13624 Bytes (44%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 460 Bytes (22%) des dynamischen Speichers, 1588 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.


Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 16 Oktober 2019, 09:12:38
Hi,
es würde mich stark wundern, wenn man die HBWSoftwareSerial einfach durch die originale SoftwareSerial ersetzen kann. Die originale SoftwareSerial hat kein Parity Bit, aber HMW sendet ein Parity Bit bzw. erwartet eins. Ich denke, dass man eine neue Version der HBWSoftwareSerial braucht.
Gruß,
   Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 16 Oktober 2019, 10:03:46
Hi,

Es hat funktioniert... Sowohl die Kommunikation mit FHEM, als auch ein direktes Peering mit dem hausbus 6-Fach Taster.
Ich checke mal die modifizierte Version des sw8 in github ein, dann könnte Andreas mal testen..

EDIT: Hab die Version mal eingestellt:
https://github.com/loetmeister/HBWired/tree/master/HBW-LC-Sw-8
zum Kompilieren HBWSoftwareSerial.h / .cpp im Arduino library Verzeichnis umbenennen oder verschieben.
Anmerkung: Diese Version sollte mit der aktuellen IDE 1.8.10 & Arduino AVR Boards, Version 1.8.1 - die mitgelieferte Version, kompilierbar sein.

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 18 Oktober 2019, 08:59:53
Hallo,

Irgendwie ist das ganze etwas sonderbar. Egal ob parity bit oder nicht, die Geräte kommunizieren mit einander.
Hatte gestern mal die aktuelle SoftwareSerial um den parity bit Teil aus der HBWSoftwareSerial ergänzt. Auf dem Bus spricht aber alles miteinander... Werde heute noch mal Geräte testen, die mit der alten HBWSoftwareSerial laufen, ob da das Verhalten anders ist.

Ein test von Andreas mit dem HMW-IO-12-Sw7-DR wäre natürlich auch sehr hilfreich.

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 18 Oktober 2019, 10:31:09
Zitat von: loetmeister am 18 Oktober 2019, 08:59:53Egal ob parity bit oder nicht, die Geräte kommunizieren mit einander.
Hatte gestern mal die aktuelle SoftwareSerial um den parity bit Teil aus der HBWSoftwareSerial ergänzt. Auf dem Bus spricht aber alles miteinander...
Soweit ich mich erinnere hast Du gar keine echte eq3-Hardware, oder? Es kann gut sein, dass die Arduino-Lösungen und auch der hm485d etwas "toleranter" sind.

Zitat
Ein test von Andreas mit dem HMW-IO-12-Sw7-DR wäre natürlich auch sehr hilfreich.
...oder mit irgend einer anderen Original-Hardware. Am besten auch noch mit einem HMW-LAN-GW.

Gruß,
   Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 20 Oktober 2019, 21:22:12
Hi,

alles klar, morgen habe ich Zeit, dann kann ich es mal testen. Mit der alten AVR Boardversion hatte es funktioniert.

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 22 Oktober 2019, 07:38:42
Hallo,

ich habe es gestern getestet und es funktioniert. Nur bei dem direkten Peering mit dem HMW-IO-12-Sw7-DR gibt es das Phänomen, dass der Ausgang einmal flackert. Beim Ein- und beim Ausschalten. Ich habe mal den Mitschnitt angehängt.


R: FD:FF:FF:FF:FF:9C:00:00:96:F3:06:4B:01:00:FA:F2:E6
R: FD:42:00:00:17:1E:00:00:96:F3:06:4B:01:02:F8:0F:AC
S: 02 FF
T: FD:00:00:96:F3:79:42:00:00:17:02:8F:16
R: FD:42:00:00:17:1E:00:00:96:F3:06:4B:01:02:F8:0F:AC
S: 02 FF
T: FD:00:00:96:F3:79:42:00:00:17:02:8F:16
R: FD:42:00:00:17:1E:00:00:96:F3:06:4B:01:02:F8:0F:AC
S: 02 FF
T: FD:00:00:96:F3:79:42:00:00:17:02:8F:16
R: FD:FF:FF:FF:FF:9A:00:00:96:F3:12:41:01:12:00:03:06:4A:45:51:30:34:39:37:39:33:30:9C:00
R: FD:FF:FF:FF:FF:9C:00:00:96:F3:06:4B:01:00:FC:7E:B2:EE
R: FD:42:00:00:17:1E:00:00:96:F3:06:4B:01:02:FC:7C:4F:A4
S: 02 FF
T: FD:00:00:96:F3:79:42:00:00:17:02:8F:16
R: FD:42:00:00:17:1E:00:00:96:F3:06:4B:01:02:FC:7C:4F:A4
S: 02 FF
T: FD:00:00:96:F3:79:42:00:00:17:02:8F:16
R: FD:42:00:00:17:1E:00:00:96:F3:06:4B:01:02:FC:7C:4F:A4
S: 02 FF
T: FD:00:00:96:F3:79:42:00:00:17:02:8F:16
R: FD:FF:FF:FF:FF:9A:00:00:96:F3:12:41:01:12:00:03:06:4A:45:51:30:34:39:37:39:33:30:9C:00
T: FD:00:00:00:01:B8:42:00:00:17:05:69:02:00:36:D6
R: FD:42:00:00:17:19:00:00:00:01:02:A2:3C
R: ACK


VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 22 Oktober 2019, 09:03:40
Hallo Andreas,

Sieht ja schon mal nicht schlecht aus.  ;)
Welche Version des HBW-LC-Sw-8 has du benutzt? Die mit der Standard SoftwareSerial? Oder alte HBWSoftwareSerial?

In jedem Fall würde ich dich bitten die neue Version der HBWSoftwareSerial zu testen, die ich gestern bei mir im github hochgeladen hatte.

Das log schaue ich mir heute Abend genauer an.
Die direkt Verknüpfung hättest du mit an und aus konfiguriert, kein toggle?

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 22 Oktober 2019, 09:35:09
Hallo Thomas,

ich habe die Version mit Standard SoftwareSerial getestet, die du vor 4 Tagen hochgeladen hattest. Der Input ist als Schalter konfiguriert, also an/aus, wie vermutet.

Dann teste ich mal die neue HBWSoftwareSerial...

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 22 Oktober 2019, 09:41:17
Zitat von: a_quadrat am 22 Oktober 2019, 09:35:09Der Input ist als Schalter konfiguriert, also an/aus, wie vermutet.
Wenn bei Standard-HMW ein Input als Schalter konfiguriert ist, dann sendet der sozusagen ein Taster-Signal bei jeder Flanke, also sowohl beim Ein- als auch beim Ausschalten. Wenn man dann aber einen Taster dranhängt, dann flackert das natürlich.

Außerdem:
Wenn ich das Log überfliege, dann sieht es so aus, dass da ein Standard-HMW-Gerät das ACK vom HBW-Teil nicht versteht und dann seinen Tastendruck dreimal sendet. Ich denke also nicht, dass das richtig funktioniert.
Gruß,
   Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 22 Oktober 2019, 12:49:17
nein, es hängt auch ein Schalter dran. Aber das dreimalige Senden könnte das flackern erklären.

Ich habe jetzt die neue Version der HBWSoftwareSerial getestet, damit funktioniert es auch ohne flackern.

So sieht der Mitschnitt aus:


R: FD:FF:FF:FF:FF:98:00:00:96:F3:06:4B:01:00:6A:91:C4
R: FD:42:00:00:17:1A:00:00:96:F3:06:4B:01:02:68:6C:8E
S: 02 FF
T: FD:00:00:96:F3:39:42:00:00:17:02:56:98
R: FD:FF:FF:FF:FF:9C:00:00:96:F3:12:41:01:12:00:03:06:4A:45:51:30:34:39:37:39:33:30:9F:4C
T: FD:00:00:00:01:D8:42:00:00:17:05:69:02:C8:B3:EE
R: FD:42:00:00:17:19:00:00:00:01:02:A2:3C
R: ACK
R: FD:FF:FF:FF:FF:9E:00:00:96:F3:06:4B:01:00:6E:5A:D4
R: FD:42:00:00:17:18:00:00:96:F3:06:4B:01:02:6C:55:8E
S: 02 FF
T: FD:00:00:96:F3:19:42:00:00:17:02:B2:5E
R: FD:FF:FF:FF:FF:9A:00:00:96:F3:12:41:01:12:00:03:06:4A:45:51:30:34:39:37:39:33:30:9C:00
T: FD:00:00:00:01:B8:42:00:00:17:05:69:02:00:36:D6
R: FD:42:00:00:17:19:00:00:00:01:02:A2:3C
R: ACK
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 22 Oktober 2019, 13:04:49
Ja, das sieht meiner Meinung nach besser aus. Die 4B-Nachricht wird jeweils nur einmal an das HBW-Gerät geschickt.
Gruß,
   Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 22 Oktober 2019, 21:28:55
Zitat von: a_quadrat am 22 Oktober 2019, 12:49:17
Ich habe jetzt die neue Version der HBWSoftwareSerial getestet, damit funktioniert es auch ohne flackern.

Hi,

danke fürs testen. Es ist viel einfacher die Standard Ardunino IDE und Board Version nehmen zu können...  :D
Kannst ja mal schauen ob auch HBW-Sen-Key-12 mit deinen Homematic Geräten funktioniert. Dann kannst du HMW_LC_Sw2_DR aus beiden Homebrew Geräten zusammen zu bauen.

Aus dem letzten Mitschnitt lese ich aber immer noch ein Toggle...  ;)
Kanal 2 im Aktor wird zwei mal vom Taster Kanal 1 "getoggelt", Antwort ist C8 (200) - Ein, beim zweiten toggle Antwort 0 - Aus.


PS: Man sieht schön den Broadcast KeyEvent, mit Zielkanal 0

FD:FF:FF:FF:FF:98:00:00:96:F3:06:...
KeyEvent:Quellkanal:Zielkanal
4B      :01        :00
...:6A:91:C4


Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 23 Oktober 2019, 09:16:24
Hi Thomas,

Zitat von: loetmeister am 22 Oktober 2019, 21:28:55
Aus dem letzten Mitschnitt lese ich aber immer noch ein Toggle...  ;)
Kanal 2 im Aktor wird zwei mal vom Taster Kanal 1 "getoggelt", Antwort ist C8 (200) - Ein, beim zweiten toggle Antwort 0 - Aus.

der Sendekanal vom HMW Gerät ist als Schalter konfiguriert, er sendet ein Event beim einschalten und ein zweites Event beim ausschalten. Ich denke das ist der Toggle den du siehst, Oder?

Gibt es die Möglichkeit, dass auch beim Modul HBW-Sen-Key-12 so einzustellen, dass man Taster und Schalterfunktion hat? Dann könnte man auch Bewegunsmelder oder Fensterkontakte anschließen.
Aktuell sendet das Modul beim gedrückten Taster ständig.

VG Andreas

Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 23 Oktober 2019, 12:49:27
Hi,

Ja, "Schalter" in diesem Fall würde immer den selben event senden. Da macht normalerweise nur toggle Sinn.

Im SenKey Gerät ist das nicht konfigurierbar. Da nimmst du am besten HBWKey. Dort kannst du verschiedene Schalter auswählen.
https://github.com/loetmeister/HBWired/blob/master/libraries/src/HBWKey.h

Sensor Kontakte hatte ich in HBW-SC-10-Dim-6 implementiert. Da kannst du auch die Schalter mit HBWKey raus kopieren.

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 25 Oktober 2019, 14:03:05
Hi,

ich habe auf Basis des HBW-SC-10-Dim-6 mein Modul angepasst und es funktioniert halbwegs. Ich kann in der CCU die Output Kanäle ansteuern und sehe auch die Input Kanäle. Was noch nicht funktioniert, ist das direkte Peering. Ich habe mal meinen sketch angehängt, vielleicht ist ja etwas auffällig.


//*******************************************************************
//
// HBW-IO-6-6
//
// Homematic Wired Hombrew Hardware
// Arduino NANO als Homematic-Device
//
// - Direktes Peering für Switch (noch nicht) möglich. (HBWLinkSwitchSimple)
// - Direktes Peering für Taster (noch nicht) möglich. (HBWLinkKey)
//
//
//
//*******************************************************************
// Changes


#define HARDWARE_VERSION 0x01
#define FIRMWARE_VERSION 0x0001
#define HMW_DEVICETYPE 0x98 //device ID (make sure to import hbw_io-10_dim-6.xml into FHEM)

#define NUMBER_OF_INPUT_CHAN 6  // input channel - pushbutton, key, other digital in
#define NUMBER_OF_OUT_CHAN 6  // digital output channels


#define NUM_LINKS_OUT 20    // address step 42
#define LINKADDRESSSTART_OUT 0x038   // ends @0x37F
#define NUM_LINKS_INPUT 20    // address step 6
#define LINKADDRESSSTART_INPUT 0x380   // ends @0x3F7


//#define USE_HARDWARE_SERIAL   // use hardware serial (USART) for final device - this disables debug output
/* Undefine "HBW_DEBUG" in 'HBWired.h' to remove code not needed. "HBW_DEBUG" also works as master switch,
* as hbwdebug() or hbwdebughex() used in channels will point to empty functions. */


// HB Wired protocol and module
#include <HBWired.h>
#include <HBWLinkKey.h>
#include <HBWKey.h>
#include <HBWLinkSwitchSimple.h>
#include <HBWSwitch.h>

// Pins

  #define RS485_RXD 4
  #define RS485_TXD 2
  #define RS485_TXEN 3  // Transmit-Enable
  #define BUTTON 8  // Button fuer Factory-Reset
  #define ADC_BUS_VOLTAGE A7  // analog input to measure bus voltage

  #define OU01 A0 
  #define OU02 A1
  #define OU03 A2
  #define OU04 A3
  #define OU05 A4 
  #define OU06 A5

  #define IO1 6
  #define IO2 7
  #define IO3 9
  #define IO4 10
  #define IO3 11
  #define IO4 12

  #include "FreeRam.h"
  #include <HBWSoftwareSerial.h>
  HBWSoftwareSerial rs485(RS485_RXD, RS485_TXD); // RX, TX


#define LED LED_BUILTIN        // Signal-LED

#define NUMBER_OF_CHAN NUMBER_OF_OUT_CHAN + NUMBER_OF_INPUT_CHAN


struct hbw_config {
  uint8_t logging_time;     // 0x01
  uint32_t central_address;  // 0x02 - 0x05
  uint8_t direct_link_deactivate:1;   // 0x06:0
  uint8_t              :7;   // 0x06:1-7
  hbw_config_switch switchCfg[NUMBER_OF_OUT_CHAN]; // 0x07 - 0x12 (address step 2)
  hbw_config_key keyCfg[NUMBER_OF_INPUT_CHAN]; // 0x1D - 0x30 (address step 2) 
} hbwconfig;


HBWChannel* channels[NUMBER_OF_CHAN];  // total number of channels for the device


class HBIODevice : public HBWDevice {
    public:
    HBIODevice(uint8_t _devicetype, uint8_t _hardware_version, uint16_t _firmware_version,
               Stream* _rs485, uint8_t _txen,
               uint8_t _configSize, void* _config,
               uint8_t _numChannels, HBWChannel** _channels,
               Stream* _debugstream, HBWLinkSender* linksender = NULL, HBWLinkReceiver* linkreceiver = NULL) :
    HBWDevice(_devicetype, _hardware_version, _firmware_version,
              _rs485, _txen, _configSize, _config, _numChannels, ((HBWChannel**)(_channels)),
              _debugstream, linksender, linkreceiver) {
    };
    virtual void afterReadConfig();
};

// device specific defaults
void HBIODevice::afterReadConfig() {
  if(hbwconfig.logging_time == 0xFF) hbwconfig.logging_time = 50;
};

HBIODevice* device = NULL;



void setup()
{
#ifndef NO_DEBUG_OUTPUT
  Serial.begin(19200);  // Serial->USB for debug
#endif
  rs485.begin();

//Definition mehrerer Kanaele pro Typ

  channels[0] = new HBWSwitch(A0,&(hbwconfig.switchCfg[0]));
  channels[1] = new HBWSwitch(A1,&(hbwconfig.switchCfg[1]));
  channels[2] = new HBWSwitch(A2,&(hbwconfig.switchCfg[2]));
  channels[3] = new HBWSwitch(A3,&(hbwconfig.switchCfg[3]));
  channels[4] = new HBWSwitch(A4,&(hbwconfig.switchCfg[4]));
  channels[5] = new HBWSwitch(A5,&(hbwconfig.switchCfg[5]));
  channels[6] = new HBWKey(6,&(hbwconfig.keyCfg[0]));
  channels[7] = new HBWKey(7,&(hbwconfig.keyCfg[1]));
  channels[8] = new HBWKey(9,&(hbwconfig.keyCfg[2]));
  channels[9] = new HBWKey(10,&(hbwconfig.keyCfg[3]));
  channels[10] = new HBWKey(11,&(hbwconfig.keyCfg[4]));
  channels[11] = new HBWKey(12,&(hbwconfig.keyCfg[5]));

  device = new HBIODevice(HMW_DEVICETYPE, HARDWARE_VERSION, FIRMWARE_VERSION,
                         &rs485,RS485_TXEN,sizeof(hbwconfig),&hbwconfig,
                         // NEU (10 statt 2 Kanaele)
                         NUMBER_OF_CHAN,(HBWChannel**)channels,
#ifdef NO_DEBUG_OUTPUT
                         NULL,
  #else
                         &Serial,
  #endif
                         new HBWLinkKey(NUM_LINKS_INPUT,LINKADDRESSSTART_INPUT),  new HBWLinkSwitchSimple(NUM_LINKS_OUT,LINKADDRESSSTART_OUT));
                         
device->setConfigPins(BUTTON, LED);  // 8 (button) and 13 (led) is the default
                         
#ifndef NO_DEBUG_OUTPUT
  hbwdebug(F("B: 2A "));
  hbwdebug(freeRam());
  hbwdebug(F("\n"));
#endif
 
 

}


void loop()
{
  device->loop();
};


VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 25 Oktober 2019, 15:28:15
Hi,

Das sieht auf den ersten Blick ganz gut aus.
Wie stellt sich das Problem dar? Peering kannst du anlegen, haben aber keine Funktion?
Was sich auf jeden Fall ändert, sind die EEPROM Adressen für die links und die Konfiguration. Das müsstest du in der xml richtig eintragen.
HBWLinkSwitchSimple.h hat einen anderen "address step"... Steht in der cpp Datei, EEPROM_SIZE.

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 25 Oktober 2019, 15:30:02
also, das direkte Peering funktioniert jetzt - es war noch ein Fehler in der XML.

Aber wo definiere ich die Schalter- bzw Tasterfunktion? Ich kann zwar in den Geräteeinstellungen auf Schalter bzw Taster umstellen, aber die Signale vom Modul ändern sich nicht. Das aktuelle verhalten ist, ziehe ich den Schalter auf Masse, sendet das Modul alle paar Sekunden ein Signal, wahrscheinlich longpress, das geht solange, bis der Schalter wieder geöffnet ist.

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 25 Oktober 2019, 17:33:32
Hi Andreas,

Das ist schon die richtige Stelle. Jeder Schalter Kanal kann individuell konfiguriert werden.
Wenn es keinen Effekt hat, stimmt meist die Adresse nicht... Poste doch die xml hier...

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 25 Oktober 2019, 17:58:05
Hallo Thomas,

das kann sein, da bin ich auch noch nicht so richtig durchgestiegen. So sieht meine XML aus:


<?xml version="1.0"?>
<device eep_size="1024" version="14">
<supported_types>
<type priority="2" id="HBW-io-6-6" name="RS485 6-channel master out actuator and 6 Digital inputs">
<parameter const_value="0x98" size="1" index="0"/><!--HMW_DEVICETYPE-->
<parameter const_value="1" size="1" index="1"/><!--HARDWARE_VERSION-->
<parameter const_value="0x0001" size="2" cond_op="GE" index="2"/><!--Min. FIRMWARE_VERSION-->
</type>
</supported_types>

<paramset id="HBW-io-6-6_dev_master" type="MASTER">
<parameter id="LOGGING_TIME">
<logical type="float" unit="s" default="5.0" max="25.5" min="0.1"/>
<physical size="1.0" type="integer" interface="eeprom">
<address index="0x0001"/>
</physical>
<conversion type="float_integer_scale" offset="0.0" factor="10"/>
</parameter>
<parameter id="CENTRAL_ADDRESS" hidden="true">
<logical type="integer"/>
<physical size="4" type="integer" interface="eeprom">
<address index="0x0002"/>
</physical>
</parameter>
<parameter id="DIRECT_LINK_DEACTIVATE" hidden="true">
<logical type="boolean" default="false"/>
<physical interface="eeprom" size="0.1" type="integer">
<address index="0x0006"/>
</physical>
</parameter>
<enforce id="CENTRAL_ADDRESS" value="1"/>
<enforce id="DIRECT_LINK_DEACTIVATE" value="true"/>
</paramset>

<frames>
<frame id="LEVEL_SET" type="#x" channel_field="10" direction="to_device">
<parameter size="1.0" index="11.0" type="integer" param="LEVEL"/>
</frame>
<frame id="LEVEL_GET" type="#S" channel_field="10" direction="to_device"/>
<frame id="INFO_LEVEL" type="#i" channel_field="10" direction="from_device" event="true">
<parameter size="1.0" index="11.0" type="integer" param="LEVEL"/>
<parameter size="0.3" index="12.4" type="integer" param="STATE_FLAGS"/>
</frame>
<frame id="OLD_LEVEL" direction="to_device" type="#x" channel_field="10">
<parameter type="integer" index="11.0" size="1.0" const_value="201"/>
</frame>
<frame id="STATE_LEVEL" type="#i" channel_field="10" direction="from_device" event="true">
<parameter size="1.0" index="11.0" type="integer" param="STATE"/>
</frame>
<frame id="KEY_EVENT_SHORT" type="#K" channel_field="10" direction="from_device" event="true">
<parameter const_value="0" size="0.1" index="12.0" type="integer"/>
<parameter size="0.6" index="12.2" type="integer" param="COUNTER"/>
</frame>
<frame id="KEY_EVENT_LONG" type="#K" channel_field="10" direction="from_device" event="true">
<parameter const_value="1" size="0.1" index="12.0" type="integer"/>
<parameter size="0.6" index="12.2" type="integer" param="COUNTER"/>
</frame>
<frame id="KEY_SIM_SHORT" type="#K" channel_field="10" direction="from_device" receiver_channel_field="11">
<parameter const_value="0" size="0.1" index="12.0" type="integer"/>
<parameter size="0.6" index="12.2" type="integer" param="COUNTER"/>
</frame>
<frame id="KEY_SIM_LONG" type="#K" channel_field="10" direction="from_device" receiver_channel_field="11">
<parameter const_value="1" size="0.1" index="12.0" type="integer"/>
<parameter size="0.6" index="12.2" type="integer" param="COUNTER"/>
</frame>
<frame id="SET_LOCK" type="#l" channel_field="11" direction="to_device">
<parameter type="integer" index="12.0" size="1.0" param="INHIBIT"/>
</frame>
<frame id="TOGGLE_INSTALL_TEST" type="#x" channel_field="10" direction="to_device">
<parameter type="integer" index="11.0" size="1.0" param="TOGGLE_FLAG"/>
</frame>
</frames>

<channels>
<channel index="0" type="MAINTENANCE" count="1" class="maintenance" ui_flags="internal">
<paramset id="maint_ch_master" type="MASTER"/>
<paramset id="maint_ch_values" type="VALUES">
<parameter id="UNREACH" ui_flags="service" operations="read,event">
<logical type="boolean"/>
<physical type="integer" interface="internal" value_id="UNREACH"/>
</parameter>
<parameter id="STICKY_UNREACH" ui_flags="service" operations="read,write,event">
<logical type="boolean"/>
<physical type="integer" interface="internal" value_id="STICKY_UNREACH"/>
</parameter>
<parameter id="CONFIG_PENDING" ui_flags="service" operations="read,event">
<logical type="boolean"/>
<physical type="integer" interface="internal" value_id="CONFIG_PENDING"/>
</parameter>
</paramset>
</channel>

<channel index="1" type="SWITCH" count="6" physical_index_offset="-1">
<link_roles>
<target name="SWITCH"/>
</link_roles>
<paramset id="hmw_switch_ch_master" type="MASTER" address_step="2" address_start="0x07">
<parameter id="LOGGING">
<logical type="option">
<option id="OFF"/>
<option id="ON" default="true"/>
</logical>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0"/>
</physical>
</parameter>

<parameter id="OUTPUT_LOCKED">
<logical type="boolean" default="false"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.1"/>
</physical>
<conversion type="boolean_integer" invert="true"/>
</parameter>
<parameter id="INVERTED">
<logical type="boolean" default="true"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.2"/>
</physical>
<conversion type="boolean_integer" invert="true"/>
</parameter>
</paramset>

<paramset type="LINK" id="hmw_switch_ch_link" peer_param="SENSOR" channel_param="CHANNEL" count="20" address_step="42" address_start="0x038">
<parameter id="UI_HINT">
<logical type="string" default="" use_default_on_failure="true"/>
<physical type="string" interface="store" id="UI_HINT" save_on_change="true"/>
</parameter>
<parameter id="SENSOR" operations="none" hidden="true">
<logical type="address"/>
<physical type="array">
<physical type="integer" size="4.0" interface="eeprom">
<address index="+0"/>
</physical>
<physical type="integer" size="1.0" interface="eeprom">
<address index="+4"/>
</physical>
</physical>
</parameter>
<parameter id="CHANNEL" operations="none" hidden="true">
<logical type="integer" min="0" max="255" default="255"/>
<physical type="integer" size="1.0" interface="eeprom">
<address index="+5"/>
</physical>
</parameter>
<parameter id="SHORT_ACTION_TYPE">
<logical type="option">
<option id="ON"/>
<option id="OFF"/>
<option id="INACTIVE"/>
<option id="TOGGLE" default="true"/>
</logical>
<physical type="integer" size="0.2" interface="eeprom">
<address index="+6.0"/>
</physical>
</parameter>
<parameter id="LONG_ACTION_TYPE">
<logical type="option">
<option id="ON"/>
<option id="OFF"/>
<option id="INACTIVE"/>
<option id="TOGGLE" default="true"/>
</logical>
<physical type="integer" size="0.2" interface="eeprom">
<address index="+6.2"/>
</physical>
</parameter>
</paramset>

<paramset id="hmw_switch_ch_values" type="VALUES">
<parameter id="STATE" operations="read,write,event" control="SWITCH.STATE">
<logical type="boolean" default="false"/>
<physical type="integer" interface="command" value_id="LEVEL">
<set request="LEVEL_SET"/>
<get request="LEVEL_GET" response="INFO_LEVEL"/>
<event frame="INFO_LEVEL"/>
</physical>
<conversion type="boolean_integer" true="200" false="0" threshold="1"/>
</parameter>
<parameter id="WORKING" operations="read,event" ui_flags="internal">
<logical type="boolean" default="false"/>
<physical type="integer" interface="command" value_id="STATE_FLAGS">
<get request="LEVEL_GET" response="INFO_LEVEL"/>
<event frame="INFO_LEVEL"/>
<event frame="ACK_STATUS"/>
</physical>
<conversion type="boolean_integer"/>
</parameter>
<parameter id="INHIBIT" operations="read,write,event" control="NONE" loopback="true">
<logical type="boolean" default="false"/>
<physical type="integer" interface="command" value_id="INHIBIT">
<set request="SET_LOCK"/>
</physical>
</parameter>
<parameter id="INSTALL_TEST" operations="write" ui_flags="internal">
<logical type="action"/>
<physical type="integer" interface="command" value_id="TOGGLE_FLAG" no_init="true">
<set request="TOGGLE_INSTALL_TEST"/>
</physical>
<conversion type="toggle" value="STATE" />
</parameter>
</paramset>

</channel>


<channel index="7" type="KEY" count="6" physical_index_offset="-1"> <!-- input key chan -->
<link_roles>
<source name="SWITCH"/>
</link_roles>
<paramset id="hbw_input_ch_master" type="MASTER" address_start="0x13" address_step="1">
    <parameter id="INPUT_LOCKED">
<logical type="boolean" default="false"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.0"/>
</physical>
<conversion type="boolean_integer" invert="true"/>
</parameter>
<parameter id="INVERTED">
<logical type="boolean" default="false"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.1"/>
</physical>
<conversion type="boolean_integer" invert="true"/>
</parameter>
<!-- don't allow to change, cause using same IO pins as input sensor contact channels
<parameter id="PULLUP">
<logical type="boolean" default="true"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.2"/>
</physical>
<conversion type="boolean_integer" invert="false"/>
</parameter> -->
<parameter id="INPUT_TYPE">
<logical type="option">
<option id="DOORSENSOR" default="true"/>
<option id="MOTIONSENSOR"/>
<option id="SWITCH"/>
<option id="PUSHBUTTON"/>
</logical>
<physical size="0.2" type="integer" interface="eeprom">
<address index="+0.3"/>
</physical>
</parameter>
<parameter id="LONG_PRESS_TIME">
<logical type="float" unit="s" default="1.0" max="5.0" min="0.4"/>
<physical size="1.0" type="integer" interface="eeprom">
<address index="+1"/>
</physical>
<conversion type="float_integer_scale" factor="10"/>
<conversion type="integer_integer_map">
<value_map to_device="false" from_device="true" parameter_value="10" device_value="0xff"/>
</conversion>
</parameter>
</paramset>

<paramset id="hmw_input_ch_link" type="LINK" channel_param="CHANNEL" peer_param="ACTUATOR" count="20" address_start="0x380" address_step="6">
<parameter hidden="true" id="CHANNEL" operations="none">
<logical type="integer" default="255" max="255" min="0"/>
<physical size="1.0" type="integer" interface="eeprom">
<address index="+0"/>
</physical>
</parameter>
<parameter hidden="true" id="ACTUATOR" operations="none">
<logical type="address"/>
<physical type="array">
<physical size="4.0" type="integer" interface="eeprom">
<address index="+1"/>
</physical>
<physical size="1.0" type="integer" interface="eeprom">
<address index="+5"/>
</physical>
</physical>
</parameter>
</paramset>

<paramset type="VALUES" id="hbw_input_ch_values">
<parameter id="PRESS_SHORT" operations="event" loopback="true" control="BUTTON.SHORT">
<logical type="action"/>
<physical type="integer" interface="command" value_id="COUNTER">
<event frame="KEY_EVENT_SHORT"/>
</physical>
<conversion type="action_key_counter" counter_size="6" sim_counter="SIM_COUNTER"/>
</parameter>
<parameter id="PRESS_LONG" operations="event" loopback="true" control="BUTTON.LONG">
<logical type="action"/>
<physical type="integer" interface="command" value_id="COUNTER">
<event frame="KEY_EVENT_LONG"/>
</physical>
<conversion type="action_key_counter" counter_size="6" sim_counter="SIM_COUNTER"/>
</parameter>
</paramset>
</channel>


</channels>
</device>


VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 25 Oktober 2019, 20:15:40
Hi,

Zwei Sachen sind mir aufgefallen:

<paramset type="LINK" id="hmw_switch_ch_link" peer_param="SENSOR" channel_param="CHANNEL" count="20" address_step="42" address_start="0x038">

address_step für HBWLinkSwitchSimple ist 7 (#define EEPROM_SIZE 7)


<paramset id="hbw_input_ch_master" type="MASTER" address_start="0x13" address_step="1">

address_step müsste 2 sein. (HBWKey.h > struct hbw_config_key)


Wenn die Startadresse stimmt, dann hat man das fehlerhafte Verhalten, das der erste Kanal oder das erste peering geht, alle folgenden nicht...

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 25 Oktober 2019, 21:00:28
Danke, das passe ich noch an. Aber mit der Definition der Inputs hat das nichts zu tun, oder?

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 25 Oktober 2019, 23:33:38
Hi,

wenn die Konfiguration an eine andere Adresse im EEPROM geschrieben wird, als vom Gerät erwartet, dann funktioniert es nicht.  ;)
Ich vermute das es genau daran liegt.

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 28 Oktober 2019, 09:12:34
Hi,

du hattest recht, an der Adresszuweisung hat es gelegen - jetzt funktioniert es. Vielen Dank.  :)

Kann man in der Hbwkey library den Level des Inputs mit aufnehmen? Dann kann man dies, über einen zusätzlichen Datenpunkt in der XML auswerten und für bestimmte Logiken verwenden. Aktuell sehe ich in FHEM immer nur ein short - oder Longpress Event, was für den "DOORSENSOR" nicht so günstig ist. Oder gibt's das schon und es fehlt nur in meiner xml?

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 28 Oktober 2019, 09:57:13
Hi Andreas,

Schön zu hören das es soweit funktioniert.

Was meinst du mit "Level"? Der sensor meldet nur offen oder geschlossen. Du könntest noch HBWSenSC.h nutzen, damit kann ein notify bei jeder status Änderung gesendet werden.

Ansonsten gibt es kein Level in einer key event Nachricht. Bei homematic Funk schon, dort sendet z.b. der Bewegungsmelder den helligkeitslevel mit, wenn er ausgelöst hat. Bei wired leider nicht. Hab ich auch etwas später festgestellt.. Dachte es wäre gleich, mal mit Kabel und mal ohne..  ::)

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 28 Oktober 2019, 10:59:51
Zitat von: loetmeister am 28 Oktober 2019, 09:57:13

Was meinst du mit "Level"? Der sensor meldet nur offen oder geschlossen.

Im Prinzip habe ich das mit Level gemeint, offen/geschlossen bzw. high/low des Inputs. Fehlt mir nur der Datenpunkt in meiner xml? Weil in FHEM sind nur die Datenpunkte bzw. Readings von short - longpress. Ein zusätzliches Reading mit high oder Low für den Input-Kanal wäre gut.
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 28 Oktober 2019, 22:53:58
Hi,

Ok... Taster/Schalter Kanäle verhalten sich so. Es gibt nur die kurzen und langen Tastendrücke, dazu den Tastendruckzähler. Dafür lassen sich die Taster Kanäle direkt verknüpfen.
Wenn du die selben Eingänge als weitere Sensor Kanäle, mit HBWSenSC.h einbindest, dann kannst du sie abfragen und erhältst den Status zurück. (open / close)
So habe ich das bei meinem HBW-SC-10-Dim-6 gemacht.
Ist das dass was du haben willst?

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 29 Oktober 2019, 08:15:12
Hi,

ja, das habe ich gemeint. Ich habe es auch schon in deinem Modul gesehen. Ich wollte es ganz gern in einem Kanal, nur ein zusätzliches Reading. Aber es geht natürlich auch so.

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 04 November 2019, 13:04:14
Hallo Thomas,

ich habe noch Probleme die Sensorkanäle zuzufügen, wahrscheinlich liegt es wieder an der Speicheradresse im EEPROM, aber ich kann es nicht finden. Ich habe mich bei der Adresszuweisung an dem HBW-SC-10-Dim-6 Modul orientiert. Anbei mal mein Sketch und XML, vlt. fällt dir was auf:


#define FIRMWARE_VERSION 0x0001
#define HMW_DEVICETYPE 0x99 //device ID

#define NUMBER_OF_INPUT_CHAN 6  // input channel - pushbutton, key, other digital in
#define NUMBER_OF_SEN_INPUT_CHAN 6  // equal number of sensor channels, using same ports/IOs as INPUT_CHAN
#define NUMBER_OF_OUT_CHAN 6  // digital output channels


#define NUM_LINKS_OUT 20    // address step 7
#define LINKADDRESSSTART_OUT 0x038   // ends @0x37F
#define NUM_LINKS_INPUT 20    // address step 6
#define LINKADDRESSSTART_INPUT 0x380   // ends @0x3F7


//#define USE_HARDWARE_SERIAL   // use hardware serial (USART) for final device - this disables debug output
/* Undefine "HBW_DEBUG" in 'HBWired.h' to remove code not needed. "HBW_DEBUG" also works as master switch,
* as hbwdebug() or hbwdebughex() used in channels will point to empty functions. */


// HB Wired protocol and module
#include <HBWired.h>
#include <HBWLinkKey.h>
#include <HBWKey.h>
#include <HBWLinkSwitchSimple.h>
#include <HBWSwitch.h>
#include <HBWSenSC.h>

// Pins

  #define RS485_RXD 4
  #define RS485_TXD 2
  #define RS485_TXEN 3  // Transmit-Enable
  #define BUTTON 8  // Button fuer Factory-Reset
  #define ADC_BUS_VOLTAGE A7  // analog input to measure bus voltage

  #define OU01 A0 
  #define OU02 A1
  #define OU03 A2
  #define OU04 A3
  #define OU05 A4 
  #define OU06 A5

  #define IO1 6
  #define IO2 7
  #define IO3 9
  #define IO4 10
  #define IO5 11
  #define IO6 12

  #include "FreeRam.h"
  #include <HBWSoftwareSerial.h>
  HBWSoftwareSerial rs485(RS485_RXD, RS485_TXD); // RX, TX


#define LED LED_BUILTIN        // Signal-LED

#define NUMBER_OF_CHAN NUMBER_OF_OUT_CHAN + NUMBER_OF_INPUT_CHAN + NUMBER_OF_SEN_INPUT_CHAN


struct hbw_config {
  uint8_t logging_time;     // 0x01
  uint32_t central_address;  // 0x02 - 0x05
  uint8_t direct_link_deactivate:1;   // 0x06:0
  uint8_t              :7;   // 0x06:1-7
  hbw_config_senSC senCfg[NUMBER_OF_SEN_INPUT_CHAN]; // 0x13 - 0x1C (address step 1)
  hbw_config_switch switchCfg[NUMBER_OF_OUT_CHAN]; // 0x07 - 0x12 (address step 2)
  hbw_config_key keyCfg[NUMBER_OF_INPUT_CHAN]; // 0x1D - 0x30 (address step 2) 
} hbwconfig;


HBWChannel* channels[NUMBER_OF_CHAN];  // total number of channels for the device


class HBIODevice : public HBWDevice {
    public:
    HBIODevice(uint8_t _devicetype, uint8_t _hardware_version, uint16_t _firmware_version,
               Stream* _rs485, uint8_t _txen,
               uint8_t _configSize, void* _config,
               uint8_t _numChannels, HBWChannel** _channels,
               Stream* _debugstream, HBWLinkSender* linksender = NULL, HBWLinkReceiver* linkreceiver = NULL) :
    HBWDevice(_devicetype, _hardware_version, _firmware_version,
              _rs485, _txen, _configSize, _config, _numChannels, ((HBWChannel**)(_channels)),
              _debugstream, linksender, linkreceiver) {
    };
    virtual void afterReadConfig();
};

// device specific defaults
void HBIODevice::afterReadConfig() {
  if(hbwconfig.logging_time == 0xFF) hbwconfig.logging_time = 50;
};

HBIODevice* device = NULL;



void setup()
{
#ifndef NO_DEBUG_OUTPUT
  Serial.begin(19200);  // Serial->USB for debug
#endif
  rs485.begin();

//Definition Kanaele


  channels[0] = new HBWSwitch(A0,&(hbwconfig.switchCfg[0]));
  channels[1] = new HBWSwitch(A1,&(hbwconfig.switchCfg[1]));
  channels[2] = new HBWSwitch(A2,&(hbwconfig.switchCfg[2]));
  channels[3] = new HBWSwitch(A3,&(hbwconfig.switchCfg[3]));
  channels[4] = new HBWSwitch(A4,&(hbwconfig.switchCfg[4]));
  channels[5] = new HBWSwitch(A5,&(hbwconfig.switchCfg[5]));
  channels[6] = new HBWSenSC(IO1,&(hbwconfig.senCfg[0]));
  channels[7] = new HBWSenSC(IO2,&(hbwconfig.senCfg[1]));
  channels[8] = new HBWSenSC(IO3,&(hbwconfig.senCfg[2]));
  channels[9] = new HBWSenSC(IO4,&(hbwconfig.senCfg[3]));
  channels[10] = new HBWSenSC(IO5,&(hbwconfig.senCfg[4]));
  channels[11] = new HBWSenSC(IO6,&(hbwconfig.senCfg[5]));
  channels[12] = new HBWKey(IO1,&(hbwconfig.keyCfg[0]));
  channels[13] = new HBWKey(IO2,&(hbwconfig.keyCfg[1]));
  channels[14] = new HBWKey(IO3,&(hbwconfig.keyCfg[2]));
  channels[15] = new HBWKey(IO4,&(hbwconfig.keyCfg[3]));
  channels[16] = new HBWKey(IO5,&(hbwconfig.keyCfg[4]));
  channels[17] = new HBWKey(IO6,&(hbwconfig.keyCfg[5]));
 

  device = new HBIODevice(HMW_DEVICETYPE, HARDWARE_VERSION, FIRMWARE_VERSION,
                         &rs485,RS485_TXEN,sizeof(hbwconfig),&hbwconfig,
                         // NEU (10 statt 2 Kanaele)
                         NUMBER_OF_CHAN,(HBWChannel**)channels,
#ifdef NO_DEBUG_OUTPUT
                         NULL,
  #else
                         &Serial,
  #endif
                         new HBWLinkKey(NUM_LINKS_INPUT,LINKADDRESSSTART_INPUT),  new HBWLinkSwitchSimple(NUM_LINKS_OUT,LINKADDRESSSTART_OUT));
                         
device->setConfigPins(BUTTON, LED);  // 8 (button) and 13 (led) is the default
                         
#ifndef NO_DEBUG_OUTPUT
  hbwdebug(F("B: 2A "));
  hbwdebug(freeRam());
  hbwdebug(F("\n"));
#endif
 
 

}


void loop()
{
  device->loop();
};



<?xml version="1.0"?>
<device eep_size="1024" version="14">
<supported_types>
<type priority="2" id="HBW-io-6-6-Sen" name="RS485 6-channel master out actuator and 6 Digital inputs">
<parameter const_value="0x99" size="1" index="0"/><!--HMW_DEVICETYPE-->
<parameter const_value="1" size="1" index="1"/><!--HARDWARE_VERSION-->
<parameter const_value="0x0001" size="2" cond_op="GE" index="2"/><!--Min. FIRMWARE_VERSION-->
</type>
</supported_types>

<paramset id="HBW-io-6-6_dev_master" type="MASTER">
<parameter id="LOGGING_TIME">
<logical type="float" unit="s" default="5.0" max="25.5" min="0.1"/>
<physical size="1.0" type="integer" interface="eeprom">
<address index="0x0001"/>
</physical>
<conversion type="float_integer_scale" offset="0.0" factor="10"/>
</parameter>
<parameter id="CENTRAL_ADDRESS" hidden="true">
<logical type="integer"/>
<physical size="4" type="integer" interface="eeprom">
<address index="0x0002"/>
</physical>
</parameter>
<parameter id="DIRECT_LINK_DEACTIVATE" hidden="true">
<logical type="boolean" default="false"/>
<physical interface="eeprom" size="0.1" type="integer">
<address index="0x0006"/>
</physical>
</parameter>
<enforce id="CENTRAL_ADDRESS" value="1"/>
<enforce id="DIRECT_LINK_DEACTIVATE" value="true"/>
</paramset>

<frames>
<frame id="LEVEL_SET" type="#x" channel_field="10" direction="to_device">
<parameter size="1.0" index="11.0" type="integer" param="LEVEL"/>
</frame>
<frame id="LEVEL_GET" type="#S" channel_field="10" direction="to_device"/>
<frame id="INFO_LEVEL" type="#i" channel_field="10" direction="from_device" event="true">
<parameter size="1.0" index="11.0" type="integer" param="LEVEL"/>
<parameter size="0.3" index="12.4" type="integer" param="STATE_FLAGS"/>
</frame>
<frame id="OLD_LEVEL" direction="to_device" type="#x" channel_field="10">
<parameter type="integer" index="11.0" size="1.0" const_value="201"/>
</frame>
<frame id="STATE_LEVEL" type="#i" channel_field="10" direction="from_device" event="true">
<parameter size="1.0" index="11.0" type="integer" param="STATE"/>
</frame>
<frame id="KEY_EVENT_SHORT" type="#K" channel_field="10" direction="from_device" event="true">
<parameter const_value="0" size="0.1" index="12.0" type="integer"/>
<parameter size="0.6" index="12.2" type="integer" param="COUNTER"/>
</frame>
<frame id="KEY_EVENT_LONG" type="#K" channel_field="10" direction="from_device" event="true">
<parameter const_value="1" size="0.1" index="12.0" type="integer"/>
<parameter size="0.6" index="12.2" type="integer" param="COUNTER"/>
</frame>
<frame id="KEY_SIM_SHORT" type="#K" channel_field="10" direction="from_device" receiver_channel_field="11">
<parameter const_value="0" size="0.1" index="12.0" type="integer"/>
<parameter size="0.6" index="12.2" type="integer" param="COUNTER"/>
</frame>
<frame id="KEY_SIM_LONG" type="#K" channel_field="10" direction="from_device" receiver_channel_field="11">
<parameter const_value="1" size="0.1" index="12.0" type="integer"/>
<parameter size="0.6" index="12.2" type="integer" param="COUNTER"/>
</frame>
<frame id="SET_LOCK" type="#l" channel_field="11" direction="to_device">
<parameter type="integer" index="12.0" size="1.0" param="INHIBIT"/>
</frame>
<frame id="TOGGLE_INSTALL_TEST" type="#x" channel_field="10" direction="to_device">
<parameter type="integer" index="11.0" size="1.0" param="TOGGLE_FLAG"/>
</frame>
</frames>

<channels>
<channel index="0" type="MAINTENANCE" count="1" class="maintenance" ui_flags="internal">
<paramset id="maint_ch_master" type="MASTER"/>
<paramset id="maint_ch_values" type="VALUES">
<parameter id="UNREACH" ui_flags="service" operations="read,event">
<logical type="boolean"/>
<physical type="integer" interface="internal" value_id="UNREACH"/>
</parameter>
<parameter id="STICKY_UNREACH" ui_flags="service" operations="read,write,event">
<logical type="boolean"/>
<physical type="integer" interface="internal" value_id="STICKY_UNREACH"/>
</parameter>
<parameter id="CONFIG_PENDING" ui_flags="service" operations="read,event">
<logical type="boolean"/>
<physical type="integer" interface="internal" value_id="CONFIG_PENDING"/>
</parameter>
</paramset>
</channel>

<channel index="1" type="SWITCH" count="6" physical_index_offset="-1">
<link_roles>
<target name="SWITCH"/>
</link_roles>
<paramset id="hmw_switch_ch_master" type="MASTER" address_step="2" address_start="0x07">
<parameter id="LOGGING">
<logical type="option">
<option id="OFF"/>
<option id="ON" default="true"/>
</logical>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0"/>
</physical>
</parameter>

<parameter id="OUTPUT_LOCKED">
<logical type="boolean" default="false"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.1"/>
</physical>
<conversion type="boolean_integer" invert="true"/>
</parameter>
<parameter id="INVERTED">
<logical type="boolean" default="true"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.2"/>
</physical>
<conversion type="boolean_integer" invert="true"/>
</parameter>
</paramset>

<paramset type="LINK" id="hmw_switch_ch_link" peer_param="SENSOR" channel_param="CHANNEL" count="20" address_step="7" address_start="0x038">
<parameter id="UI_HINT">
<logical type="string" default="" use_default_on_failure="true"/>
<physical type="string" interface="store" id="UI_HINT" save_on_change="true"/>
</parameter>
<parameter id="SENSOR" operations="none" hidden="true">
<logical type="address"/>
<physical type="array">
<physical type="integer" size="4.0" interface="eeprom">
<address index="+0"/>
</physical>
<physical type="integer" size="1.0" interface="eeprom">
<address index="+4"/>
</physical>
</physical>
</parameter>
<parameter id="CHANNEL" operations="none" hidden="true">
<logical type="integer" min="0" max="255" default="255"/>
<physical type="integer" size="1.0" interface="eeprom">
<address index="+5"/>
</physical>
</parameter>
<parameter id="SHORT_ACTION_TYPE">
<logical type="option">
<option id="ON"/>
<option id="OFF"/>
<option id="INACTIVE"/>
<option id="TOGGLE" default="true"/>
</logical>
<physical type="integer" size="0.2" interface="eeprom">
<address index="+6.0"/>
</physical>
</parameter>
<parameter id="LONG_ACTION_TYPE">
<logical type="option">
<option id="ON"/>
<option id="OFF"/>
<option id="INACTIVE"/>
<option id="TOGGLE" default="true"/>
</logical>
<physical type="integer" size="0.2" interface="eeprom">
<address index="+6.2"/>
</physical>
</parameter>
</paramset>

<paramset id="hmw_switch_ch_values" type="VALUES">
<parameter id="STATE" operations="read,write,event" control="SWITCH.STATE">
<logical type="boolean" default="false"/>
<physical type="integer" interface="command" value_id="LEVEL">
<set request="LEVEL_SET"/>
<get request="LEVEL_GET" response="INFO_LEVEL"/>
<event frame="INFO_LEVEL"/>
</physical>
<conversion type="boolean_integer" true="200" false="0" threshold="1"/>
</parameter>
<parameter id="WORKING" operations="read,event" ui_flags="internal">
<logical type="boolean" default="false"/>
<physical type="integer" interface="command" value_id="STATE_FLAGS">
<get request="LEVEL_GET" response="INFO_LEVEL"/>
<event frame="INFO_LEVEL"/>
<event frame="ACK_STATUS"/>
</physical>
<conversion type="boolean_integer"/>
</parameter>
<parameter id="INHIBIT" operations="read,write,event" control="NONE" loopback="true">
<logical type="boolean" default="false"/>
<physical type="integer" interface="command" value_id="INHIBIT">
<set request="SET_LOCK"/>
</physical>
</parameter>
<parameter id="INSTALL_TEST" operations="write" ui_flags="internal">
<logical type="action"/>
<physical type="integer" interface="command" value_id="TOGGLE_FLAG" no_init="true">
<set request="TOGGLE_INSTALL_TEST"/>
</physical>
<conversion type="toggle" value="STATE" />
</parameter>
</paramset>

</channel>

<channel index="7" physical_index_offset="-1" count="6" type="SENSOR"> <!-- input sensor contact chan -->
<paramset type="MASTER" id="hmw_sensor_ch_master" address_start="0x13" address_step="1">
    <parameter id="INPUT_LOCKED">
<logical type="boolean" default="false"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.0"/>
</physical>
<conversion type="boolean_integer" invert="true"/>
</parameter>
<parameter id="INVERTED">
<logical type="boolean" default="false"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.1"/>
</physical>
<conversion type="boolean_integer" invert="true"/>
</parameter>
<parameter id="NOTIFY">
<logical type="option">
<option id="ON"/>
<option id="OFF" default="true"/>
</logical>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.2"/>
</physical>
</parameter>
</paramset>

<paramset type="VALUES" id="hmw_sensor_ch_values">
<parameter id="SENSOR" operations="read,event" control="DOOR_SENSOR.STATE">
<logical type="boolean"/>
<physical type="integer" interface="command" value_id="STATE">
<event frame="STATE_LEVEL" auth_violate_policy="reject"/>
<get request="LEVEL_GET" response="STATE_LEVEL"/>
</physical>
</parameter>
<parameter id="INSTALL_TEST" operations="event" ui_flags="internal">
<logical type="action"/>
<physical type="integer" interface="command" value_id="TEST_COUNTER">
<event frame="STATE_LEVEL"/>
</physical>
</parameter>
</paramset>
</channel>

<channel index="13" type="KEY" count="6" physical_index_offset="-1"> <!-- input key chan -->
<link_roles>
<source name="SWITCH"/>
</link_roles>
<paramset id="hbw_input_ch_master" type="MASTER" address_start="0x1D" address_step="2">
    <parameter id="INPUT_LOCKED">
<logical type="boolean" default="false"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.0"/>
</physical>
<conversion type="boolean_integer" invert="true"/>
</parameter>
<parameter id="INVERTED">
<logical type="boolean" default="false"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.1"/>
</physical>
<conversion type="boolean_integer" invert="true"/>
</parameter>
<!-- don't allow to change, cause using same IO pins as input sensor contact channels
<parameter id="PULLUP">
<logical type="boolean" default="true"/>
<physical size="0.1" type="integer" interface="eeprom">
<address index="+0.2"/>
</physical>
<conversion type="boolean_integer" invert="false"/>
</parameter> -->
<parameter id="INPUT_TYPE">
<logical type="option">
<option id="DOORSENSOR" default="true"/>
<option id="MOTIONSENSOR"/>
<option id="SWITCH"/>
<option id="PUSHBUTTON"/>
</logical>
<physical size="0.2" type="integer" interface="eeprom">
<address index="+0.3"/>
</physical>
</parameter>
<parameter id="LONG_PRESS_TIME">
<logical type="float" unit="s" default="1.0" max="5.0" min="0.4"/>
<physical size="1.0" type="integer" interface="eeprom">
<address index="+1"/>
</physical>
<conversion type="float_integer_scale" factor="10"/>
<conversion type="integer_integer_map">
<value_map to_device="false" from_device="true" parameter_value="10" device_value="0xff"/>
</conversion>
</parameter>
</paramset>

<paramset id="hmw_input_ch_link" type="LINK" channel_param="CHANNEL" peer_param="ACTUATOR" count="20" address_start="0x380" address_step="6">
<parameter hidden="true" id="CHANNEL" operations="none">
<logical type="integer" default="255" max="255" min="0"/>
<physical size="1.0" type="integer" interface="eeprom">
<address index="+0"/>
</physical>
</parameter>
<parameter hidden="true" id="ACTUATOR" operations="none">
<logical type="address"/>
<physical type="array">
<physical size="4.0" type="integer" interface="eeprom">
<address index="+1"/>
</physical>
<physical size="1.0" type="integer" interface="eeprom">
<address index="+5"/>
</physical>
</physical>
</parameter>
</paramset>

<paramset type="VALUES" id="hbw_input_ch_values">
<parameter id="PRESS_SHORT" operations="event" loopback="true" control="BUTTON.SHORT">
<logical type="action"/>
<physical type="integer" interface="command" value_id="COUNTER">
<event frame="KEY_EVENT_SHORT"/>
</physical>
<conversion type="action_key_counter" counter_size="6" sim_counter="SIM_COUNTER"/>
</parameter>
<parameter id="PRESS_LONG" operations="event" loopback="true" control="BUTTON.LONG">
<logical type="action"/>
<physical type="integer" interface="command" value_id="COUNTER">
<event frame="KEY_EVENT_LONG"/>
</physical>
<conversion type="action_key_counter" counter_size="6" sim_counter="SIM_COUNTER"/>
</parameter>
</paramset>
</channel>




</channels>
</device>
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 04 November 2019, 14:44:38
Hi,

Du hast die hbw_config_senSC Konfiguration vor die switch Konfiguration im struct gesetzt, im XML aber die Adressen nicht angepasst... Mehr sehe ich auf die schnelle nicht.
Was ist denn das Problem?  :)

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 04 November 2019, 18:03:28
Hi,

ich habe die hbw_config_senSC jetzt an die zweite Position gesetzt, aber es funktioniert trotzdem nicht. Das Problem ist, ich kann die Inputtypen nicht ändern und die Sensoren ändern ihren Zustand nicht.

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 04 November 2019, 22:23:05
Hi,

wenn du den hbw_config struct veränderst, dann ändern sich auch die Startadressen. Wenn ich mich nicht verrechnet habe, dann sollten die Adressen wie folgt sein:

struct hbw_config {
  uint8_t logging_time;     // 0x01
  uint32_t central_address;  // 0x02 - 0x05
  uint8_t direct_link_deactivate:1;   // 0x06:0
  uint8_t              :7;   // 0x06:1-7
  hbw_config_switch switchCfg[NUMBER_OF_OUT_CHAN]; // 0x07 - 0x12 (address step 2)
  hbw_config_senSC senCfg[NUMBER_OF_SEN_INPUT_CHAN]; // 0x13 - 0x18 (address step 1)
  hbw_config_key keyCfg[NUMBER_OF_INPUT_CHAN]; // 0x19 - 0x25 (address step 2)
} hbwconfig;


address_start="0x1D" für channel index="13" type="KEY" ist dann folglich nicht richtig.

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 05 November 2019, 17:36:24
Hi Thomas,

ja, das war es. Danke für den Tipp. Jetzt habe ich das auch mit der Speicherzuweisung verstanden  ;).

Ich habe noch eine Frage zu den Nachrichten. Anbei einmal der Schaltbefehl aus der CCU. Die Nachricht geht einmal raus, aber wird zweimal bestätigt. Ist das so richtig?


R: FD:42:FF:FF:FF:18:00:00:00:01:05:78:00:C8:41:36
S: 00 C8
T: FD:00:00:00:01:18:42:FF:FF:FF:05:69:00:C8:49:6C
R: FD:42:FF:FF:FF:19:00:00:00:01:02:F5:06
R: ACK
T: FD:00:00:00:01:98:42:FF:FF:FF:05:69:00:C8:57:2E
R: FD:42:FF:FF:FF:19:00:00:00:01:02:F5:06
R: ACK


VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 05 November 2019, 18:29:26
Hi,

Die zweite Nachricht müsste die notify Meldung sein, welche fünf Sekunden später verschickt wird. Wenn du notify für den Kanal abschaltest sollte diese Nachricht nicht mehr verschickt werden.
Dies ist hauptsächlich dafür gedacht, dass die zentrale neue schaltzustände mitbekommt, welche über eine direktverknüpfung, o.ä.ausgelöst wurden.

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 05 November 2019, 20:56:46
Ja, die zweite Nachricht kommt ein paar Sekunden später, aber bei den Ausgängen kann man kein notify Ein- Ausschalten, das ist Ok, kann ja nicht schaden.
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 05 November 2019, 22:04:17
Hi,

sorry, die Option nennt sich LOGGING.  :D
Sollte für jeden Aktor Kanal (wie z.B. SWITCH) vorhanden sein. Die Zeitverzögerung ist eine Option des Devices "LOGGING_TIME". (Standard, meist zwischen 2 und 5 Sekunden)

Ich stelle fest, beim Kanal type="SENSOR" habe ich es "NOTIFY" genannt.  ???
Es macht das selbe wie LOGGING, nutzt aber nicht den "LOGGING_TIME" Wert... daher hatte ich wohl einen anderen Namen gewählt.

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 06 November 2019, 21:55:15
Hi,

ich habe dem Modul noch ein Blind Channel zugefügt, es funktioniert auch soweit, nur mit dem Peering komme ich nicht weiter. Ich kann im Sketch nur zwei Peering Gruppen definieren. Woran liegt das?


  device = new HBIODevice(HMW_DEVICETYPE, HARDWARE_VERSION, FIRMWARE_VERSION,
                         &rs485,RS485_TXEN,sizeof(hbwconfig),&hbwconfig,
                         NUMBER_OF_CHAN,(HBWChannel**)channels,
#ifdef NO_DEBUG_OUTPUT
                         NULL,
  #else
                         &Serial,
  #endif
                         new HBWLinkKey(NUM_LINKS_INPUT,LINKADDRESSSTART_INPUT), new HBWLinkBlindSimple(NUM_LINKS_BL,LINKADDRESSSTART_BL));
                         // new HBWLinkSwitchSimple(NUM_LINKS_OUT,LINKADDRESSSTART_OUT));


VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 07 November 2019, 08:43:12
Zitat von: a_quadrat am 06 November 2019, 21:55:15
ich habe dem Modul noch ein Blind Channel zugefügt, es funktioniert auch soweit, nur mit dem Peering komme ich nicht weiter. Ich kann im Sketch nur zwei Peering Gruppen definieren. Woran liegt das?
Die HMW-Geräte (also der Krams von eq3) können nur Peerings als "actor" oder "sensor". Dabei gibt es keine Entscheidungsmöglichkeit, ob der "actor" z.B. ein Schalter oder ein Rollladen ist. Daher gibt es auch in FHEM nur zwei Gruppen von Peerings, was sich auch in der HBW-Library widerspiegelt.
Das zu ändern wäre recht viel Aufwand und es würde auch wahrscheinlich mit der CCU nicht funktionieren.
Gruß,
   Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 07 November 2019, 09:15:23
Achso, dann muss ich mich entschieden, ob ich den Schalter oder den Rolladen peeren möchte. Richtig?

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 07 November 2019, 09:23:39
Naja, ein einzelnes Peering zielt ja immer auf einen bestimmten Kanal (zumindest ist das in der Datenstruktur so vorgesehen). Du kannst also trotzdem zwischen den Kanälen unterscheiden. Du kannst nur keine unterschiedlichen Parameter für die zwei Peering-Sorten haben.
Gruß,
   Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 07 November 2019, 09:59:34
Wie meinst du das? Im Sketch kann ich nur eine Peeringsorte definieren, z.B. "new HBWLinkBlindSimple(NUM_LINKS_BL,LINKADDRESSSTART_BL)". Kann ich damit auch den Schalter peeren?
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: Thorsten Pferdekaemper am 07 November 2019, 10:28:20
Hi,
ich habe jetzt nicht im Kopf, was HBWLinkBlindSimple genau macht, aber wahrscheinlich wäre es geschickter, für so etwas eine eigene Klasse zu schreiben, die eben genau das macht, was Du willst.
Gruß,
   Thorsten
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 07 November 2019, 11:47:04
Danke, schaue ich mir mal an.

In der XML werden die "num_links" dann aufgeteilt (Schalter/Rolladen)? Ist da noch was zu beachten?

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 07 November 2019, 12:50:34
Hi,

Du müsstest das so ähnlich machen, wie hier diskutiert.. https://forum.fhem.de/index.php/topic,102124.0.html

Bei FHEM wird nur jeweils eine Peering Konfiguration, also start Adresse und address_step, für aktor und sensor benutzt, auch wenn man mehrere in die XML schreibt..  ;)
D.h. du musst den selben EEPROM Bereich für alle sensor oder aktor peerings nutzen.

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 07 November 2019, 14:05:00
Hi,

wenn ich richtig verstanden habe, muss ich in der xml für die unterschiedlichen Kanäle, beim peering, die gleiche Startadresse und step verwenden. Was ist mit den "counts"? Werden die geteilt?

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 07 November 2019, 16:55:42
Hi,

Ne, das muss alles gleich sein. Count, also Anzahl der möglichen peerings muss in der XML, als auch in der Firmware gleich sein. Du weist ja nie an welcher Stelle das passende Peering grade steht.

<paramset type="LINK" id="hmw_switch_ch_link" peer_param="SENSOR" channel_param="CHANNEL" count="20" address_step="7" address_start="0x038">


Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: a_quadrat am 07 November 2019, 20:03:10
Hi,

vielen Dank für Eure Hilfe, ohne euch hätte ich es nicht geschafft :). Jetzt funktioniert alles.

Mein HBW-Modul hat jetzt 6 Eingänge mit Sensoren, 4 Ausgänge und einen Rollladenkanal und alles lässt sich peeren. Für die Aktoren und Rollladen habe ich die HBWLinkBlindSimple Klasse verwendet, diese funktioniert für beide.

Jetzt kann die Testphase beginnen...

VG Andreas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 - peering in der CCU funktioniert nicht
Beitrag von: loetmeister am 08 November 2019, 09:01:16
Hi Andreas,

Schön zu hören das es funktioniert.
hast du mal getestet mehrere switch und blind peerings anzulegen? Ich habe den Verdacht, dass es Probleme gibt, da der address_step unterschiedlich ist. Blind hat 9,switch simple 7. Wenn du alles auf 9 angepasst hast, dann sollte es klappen. Du "verschwendest" dann zwei bytes pro Peering, aber ich denke das ist verschmerzbar.

PS: Wenn das Modul funktioniert, stell den sketch doch hier rein...

Gruß,
Thomas
Titel: Antw:[HM-Wired] HMW-LC-Sw2-DR / HBW-LC-Sw-8 => neues input/output Modul HBW-IO-6-6
Beitrag von: a_quadrat am 12 November 2019, 08:13:28
Hallo Thomas,

danke für den Hinweis, aber ich hatte den address_step schon auf 9, habe auch ein bisschen was gelernt  ;).
Anbei habe ich die beiden Module mal angehängt, einmal mit Rollladen, einmal ohne. Vielleicht kann sie noch jemand gebrauchen.

VG Andreas