Eltako FRM60

Begonnen von TOtto, 29 Dezember 2021, 08:26:18

Vorheriges Thema - Nächstes Thema

TOtto

Hallo zusammen,

ich habe die Tage einen Rolladenmotor Eltako FRM60 verbaut.
Da er sich anders wie die Eltako Rolladenaktoren verhält, hier die Infos:

1. beim losfahren versendet der Motor ein F6 Telegram mit der Fahrtrichtung:
ab: IODev: TCM310 PacketType: 1 RORG: F6 DATA: 02 SenderID: xxxxxxx STATUS: 31
auf: IODev: TCM310 PacketType: 1 RORG: F6 DATA: 01 SenderID: xxxxxxx STATUS: 31

2. bei Motor Stop wird ein F5 Telegramm versendet. Dieses enthält die aktuelle Position im Byte 3 zwischen 0 (untere Endlage) und 200=0xCA (obere Endlage):
IODev: TCM310 PacketType: 1 RORG: A5 DATA: C800030A SenderID: xxxxxxx STATUS: 01

3. die Einlernprozedur funktioniert wie gehabt. Der Motor kann, neben einem regulären Schalter, mit "stop" und "position" angesteuert werden.

Die angepasste und getestete 10_EnOcean.pm befindet sich im Anhang. Für die Umsetzung hab ich das "model Eltako_FRM60" eingeführt.

Meine Beispiel-cfg wie folgt:
define Rollo_Ku_FRM60M20 EnOcean xxxxxxxx
attr Rollo_Ku_FRM60M20 IODev TCM310
attr Rollo_Ku_FRM60M20 comMode confirm
attr Rollo_Ku_FRM60M20 devStateIcon closed:fts_shutter_100 open:fts_window_2w \d.*:fts_shutter down:fts_shutter_down up:fts_shutter_up
attr Rollo_Ku_FRM60M20 eep A5-3F-7F
attr Rollo_Ku_FRM60M20 eventMap /position 0:ab/position 100:auf/
attr Rollo_Ku_FRM60M20 manufID 00D
attr Rollo_Ku_FRM60M20 model Eltako_FRM60
attr Rollo_Ku_FRM60M20 subDef 12345678
attr Rollo_Ku_FRM60M20 subType manufProfile
attr Rollo_Ku_FRM60M20 webCmd ab:auf:stop

Meine bisherigen Erfahrung:
Der Motor verhält sich deutlich besser wie die Aktoren. Es gibt eine exakte Positionsrückmeldung auf Basis der eingestellten Endlagen und er kann damit zielgerichtet angesteuert werden.
Offen:
Zur Ansteuerung des Langsamfahrmodus fehlt mir noch, falls überhaupt möglich, das passende Bit.


Grüße
TOtto

klaus.schauer

Gibt es von Eltako zu den Änderungen entsprechende Protokollbeschreibungen? In den technischen Anlagen des aktuellen Hauptkataloges finde ich dazu keine Angaben.

TOtto

Bei Eltako selbst hab ich auch nichts gefunden.
Ich werde mal den Support anschreiben. Vielleicht gibt es ja eine Antwort.

TOtto

Nach kurzem hin und her mit dem Support hab ich eine sehr ausführliche Doku bekommen (siehe Anhang).
Ich bin echt postiv überrascht. Die Antworten kamen alle sehr schnell.
Damit wäre meine Implementierung erst mal korrekt, wenn auch nicht vollständig.

Grüße
TOtto






JF Mennedy

#5
Hallo,

ich habe ebenfalls die Rohr Motoren von Eltako bei mir verbaut und habe nun diesen Thread hier gefunden :-)

Bisher habe ich es nicht geschafft, die Motoren in FHEM einzulernen. Die Antwort in FHEM ist  EnO_0410E838 teach: MSC not supported und das bleibt dann im State stehen.

Jetzt habe ich die ergänzte Version de 10_EnOcean.pm hier gefunden :-) Prima, werde es heute Abend dann mal versuchen, damit einzulernen... Dazu hätte ich eine Frage zur Einlernprozedur.
Ich habe im TCM das Attribut learningDev auf all gesetzt. Reicht zum Anlernen ein set TCM teach 30 und dann Spannung an den Motor anlegen oder muss das Device erst in FHEM angelegt werden und dann im Device set teach ausgeführt werden?

Guss Jan

JF Mennedy

Hallo,

ich habe jetzt versucht den Motor neu anzulernen und auch als Device angelegt und ein teach aus dem Device gemacht, aber leider bekomme ich den nicht angesprochen...

Definiert ist der Motor so :

defmod ez_Rolladen EnOcean 0410E838
attr ez_Rolladen DbLogExclude .*
attr ez_Rolladen IODev USB300
attr ez_Rolladen alias Esszimmer Rolladen
attr ez_Rolladen comMode confirm
attr ez_Rolladen devStateIcon closed:fts_shutter_100 open:fts_window_2w \d.*:fts_shutter down:fts_shutter_down up:fts_shutter_up
attr ez_Rolladen eep A5-3F-7F
attr ez_Rolladen eventMap /position 0:ab/position 100:auf/
attr ez_Rolladen group Verschattung
attr ez_Rolladen manufID 00D
attr ez_Rolladen model Eltako_FRM60
attr ez_Rolladen room 00_Haus,23_Esszimmer,53_Enocean,EnOcean
attr ez_Rolladen subDef FFA2FF10
attr ez_Rolladen subType manufProfile
attr ez_Rolladen webCmd ab:auf:stop


0410E838 ist die ID die mir angelegt wurde beim 1. Teach-in mit dem MSC Telegramm und FFA2FF10 eine freie Sender ID meines TCM...

Ist das so nicht ok?

Gruss Jan

JF Mennedy

Hallo und guten Morgen,

ich habe es nun geschafft den Motor anzulernen und kann ihn auch schalten. Das Problem war das Attribut comMode, das musste ich auf biDir statt confirm stellen...

Super Erweiterung für das EnOcean Modul :-) Vielen lieben Dank dafür  :-)

Gruss Jan

klaus.schauer


TOtto

Hallo Klaus,

Danke für die offizielle Unterstützung des Geräts. Funktioniert soweits alle inkl. langsamfahren.

Gibt es einen Grunde warum die Postion invertiert wurde, d.h. "0" ist obere Endlage?
Das führt dazu, dass z.B. der Motor beim losfahren über ein F6 Telegramm "up" schickt und am Ende auf "closed" steht.

klaus.schauer

#10
Zitat von: TOtto am 14 März 2022, 22:28:26
Gibt es einen Grunde warum die Postion invertiert wurde, d.h. "0" ist obere Endlage?
Das führt dazu, dass z.B. der Motor beim losfahren über ein F6 Telegramm "up" schickt und am Ende auf "closed" steht.
Bei allen anderen EnOcean Profile hat die obere Position den Wert 0. Deshalb habe ich die Werte invertiert. Warum Eltako hier wieder einen anderen Weg gegangen ist, ist für mich nicht nachvollziehbar. Die F6-Telegramme hatte ich bei den Überlegungen aber nicht im Blick. Ich sehe mir das nochmals an. Das muss natürlich zusammenpassen.

Ergänzung: Ich habe mir die Programmlogik angesehen. Ich kann keinen Fehler erkennen. Die "up/down" Darstellung passt zur Positionsangabe und den Stati "open/closed". Was passt nicht? Was steht in den LOGs?

TOtto

1.
ich hatte einen Fehler in der Definition, da in meiner Implementierung 0 unten war (ich hab nur Eltako...):
attr Rollo_Ku_FRM60M20 eventMap /position 0:ab/position 100:auf/
richtig:
attr Rollo_Ku_FRM60M20 eventMap /position 100:ab/position 0:auf/

2.
Ist die Invertierung in 10_EnOcean.pm 25759 korrekt?
Zeile 11159
          # invert position
          $position = 200 - $db[3];
          $position = $db[3] == 1 ? 1 : int($db[3] / 2);
Sollte es nicht so sein:
          # invert position
          $position = $db[3] == 1 ? 1 : int($db[3] / 2);
          $position = 100 - $position;

3.
hier noch das Log:
2022.03.15 22:19:01 3: EnOcean set Rollo_Ku_S_stat position
2022.03.15 22:19:01 4: EnOcean Rollo_Ku_S_stat sent PacketType: 1 RORG: A5 DATA: 00000308 SenderID: 11111111 STATUS: 00 ODATA:
Rollo fährt nach unten:
2022.03.15 22:19:02 4: EnOcean Rollo_Ku_S_stat received from IODev: TCM310 PacketType: 1 RORG: F6 DATA: 02 SenderID: 12345678 STATUS: 30
2022.03.15 22:19:37 4: EnOcean Rollo_Ku_S_stat received from IODev: TCM310 PacketType: 1 RORG: A5 DATA: 0000030A SenderID: 12345678 STATUS: 00

2022.03.15 22:19:41 3: EnOcean set Rollo_Ku_S_stat position
2022.03.15 22:19:41 4: EnOcean Rollo_Ku_S_stat sent PacketType: 1 RORG: A5 DATA: C8000308 SenderID: 11111111 STATUS: 00 ODATA:
Rollo fährt nach oben:
2022.03.15 22:19:42 4: EnOcean Rollo_Ku_S_stat received from IODev: TCM310 PacketType: 1 RORG: F6 DATA: 01 SenderID: 12345678 STATUS: 30
2022.03.15 22:20:17 4: EnOcean Rollo_Ku_S_stat received from IODev: TCM310 PacketType: 1 RORG: A5 DATA: C800030A SenderID: 12345678 STATUS: 01


klaus.schauer

Zitat von: TOtto am 15 März 2022, 23:01:47
Ist die Invertierung in 10_EnOcean.pm 25759 korrekt?
Zeile 11159
          # invert position
          $position = 200 - $db[3];
          $position = $db[3] == 1 ? 1 : int($db[3] / 2);
Sollte es nicht so sein:
          # invert position
          $position = $db[3] == 1 ? 1 : int($db[3] / 2);
          $position = 100 - $position;
Das ändere ich noch.

JF Mennedy

Zitat von: klaus.schauer am 16 März 2022, 13:52:45
Das ändere ich noch.

Hallo, wurde das schon geändert?
In V25863 steht in Zeile 11165 $position = 100 - $db[3]; was mir den negativen Wert -100 bei Position 0 liefert und somit Endlage nicht erreicht.
Sollte es nicht $position = 100 - $position; sein?

Gruss Jan

klaus.schauer

Zitat von: JF Mennedy am 31 März 2022, 11:17:32
Sollte es nicht $position = 100 - $position; sein?
Ja natürlich, danke für den Hinweis. Wird geändert.