10_EnOcean.pm 2407: Kommando set bei subType eltakoDimmer fuktioniert nicht

Begonnen von klaus.schauer, 04 Januar 2013, 11:57:18

Vorheriges Thema - Nächstes Thema

klaus.schauer

Mit der Umstellung von den alten subTypen "dimmCtrl" für den Sensor (Fhem) und "dimmer" für den bidirektionalen Aktor auf den gemeinsamen aktuellen "eltakoDimmer" werden die Fhem-Befehle vom Dimmer Eltako FUD70 (FUD61NP, FUF61NPN) nicht mehr verarbeitet, z. B.

# vorher:
- set EnO_switch_0285B21F dimm 0 0 off

# jetzt

- set EnO_switch_0285B21F dim 0 0 off
- set EnO_switch_0285B21F off

Ich habe Fhem als als PC/FVS (LC5) eingelernt, siehe http://www.eltako.com/fileadmin/downloads/de/_bedienung/FUD70_30100853-4_dt.pdf.

Befehle über über die Sensortypen Schaltuhr (Auto), Zentral Aus (EC1) und Zentral Ein (LC1) und dem Fhem subType "switch" funktionieren.

Vor einiger Zeit wurde diskutiert, ob bei bidirektionen Aktoren die Devices von Sensor (Fhem) und Aktor, z. B. FUD oder FSB61 zusammengeführt werden könnten. Wurde dies mit der Umgestalltung der subTypes realisiert?

Werden jetzt zudem die "Dimmer" und "Shutter" automatisch erkannt und entsprechend parameterisiert?  



klaus.schauer

Der subType eltakoDimmer funktioniert, falls man das

attr <dev> subDef <sender_id>

des TCM-Sendemoduls setzt. Damit entfällt dann auch das bisher notwendige zusätzliche Fhem-Sensordevice. Super!

Das teach-Kommando für den eltakoShutter geht auch mit dem Attribut subDef noch nicht. Vielleicht finde ich noch die Lösung.

klaus.schauer

In 10_EnOcean 2047 wird für subType "eltakoShutter" der Befehl "stop" nicht gesendet, da dann $chutCmd = 0x00 und damit die Abfrage

if($shutCmd)) {
        $updateState = 0;
        # EEP: A5/3F/7F Universal ???
        my $data = sprintf("A5%02X%02X%02X%02X%s00",
                        0x00, $shutTime, $shutCmd, 0x08, $subDef);
        IOWrite($hash, "000A0001", $data);
        Log $ll2, $st . ".$cmd" . $data;
      }

fehlschlägt; Lösung:

if($shutCmd || ($cmd eq "stop")) {
        $updateState = 0;
        # EEP: A5/3F/7F Universal ???
        my $data = sprintf("A5%02X%02X%02X%02X%s00",
                        0x00, $shutTime, $shutCmd, 0x08, $subDef);
        IOWrite($hash, "000A0001", $data);
        Log $ll2, $st . ".$cmd" . $data;
      }

Das Kommando "teach" scheint richtig gesendet zu werden. Leider konnte ich dennoch Fhem am Schalter FSB61 noch nicht anlernen.

klaus.schauer

Beim subType "eltakoShutter" ist jetzt auch der Kommando "teach" funktionsfähig. Nach dem Anlernen funktionieren auch die Kommandos "up, down, stop".

Danke für die Erweiterung des EnOcean-Moduls.

karpate

Hallo Klaus,
welche Vorgehensweise ist notwendig um den eltakoShutter zum Laufen zu bringen:
1. Deine Ergänzung 10_EnOcean.pm
2. attr <dev> subDef <sender_id> ergänzen
3. wie genau läuft der teach-Befehl ab? Muß det aktor in Learn-Modus gesetzt sein?

Gruß Ingo
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

klaus.schauer

1. Fehlerbereinigung für Befehl "stop" hat wahrscheinlich keine Auswirkung auf das Kommando "teach". Habe es aber nicht ausprobiert.

2. attr subDef mit <sender ID> des TCM eintragen

Beispiel:
define EnO_switch_0085432A EnOcean 0085432A
attr EnO_switch_0085432A model FSB61
attr EnO_switch_0085432A room EnOcean
attr EnO_switch_0085432A shutTime 10
attr EnO_switch_0085432A subDef FFFCF564
attr EnO_switch_0085432A subType eltakoShutter

3. FSB61 in LRN-Mode bringen
- linker Schalter auf "max"
- rechter Schalter auf "LRN"

4. "set EnO_switch_0085432A teach" senden.
 

joka

Hallo,

ich habe auch noch eine Frage zu dem Shutter Implementierung

hier an Deinem Beispiel:
define EnO_switch_0085432A EnOcean 0085432A   -> soweit klar
attr EnO_switch_0085432A model FSB61          -> ich habe zwar einen FSB12 aber werde Ihn auf FSB61 setzen
attr EnO_switch_0085432A room EnOcean         -> auch klar
attr EnO_switch_0085432A shutTime 10          -> ?Zeit zwischen voll geöffnet und voll geschlossen?
attr EnO_switch_0085432A subDef FFFCF564      -> ?da kann ich mir gar nichts drunter vorstellen?
attr EnO_switch_0085432A subType eltakoShutter -> auch klar.

Kannst Du bitte erklären was in shutTime und subDef rein soll?

Danke und Gruß
joerg

klaus.schauer

- Im Attribut subDef wird die SenderID (BaseID des TCM + Offset) eingetragen, die in Fhem genutzt und im Aktor angelernt werden soll.
- Als Zeit die Zeit eintragen, die das Rollo für das vollständige Öffnen oder Schliesen benötigt.

joka

Danke für die Erläuterung!

Ist dann 0085432A die Adresse des physischen Schalters und FFFCF564 die Adresse der FHEM Schalters?

Gruß
joerg

tomy201069

Endlich !!!!!!

Habe es endlich geschafft ein FUD70 Dimmer einzulernen.


define wz_Schrank EnOcean 001E90E1
attr wz_Schrank room EnOcean
attr wz_Schrank eventMap A0:off AI:on
attr wz_Schrank subDef FFF86C81
attr wz_Schrank subType eltakoDimmer
attr wz_Schrank webCmd dimup:slider
define FileLog_wz_Schrank FileLog ./log/wz_Schrank-%Y.log wz_Schrank
attr FileLog_wz_Schrank logtype text
attr FileLog_wz_Schrank room EnOcean

Anschliessend mit set wz_Schrank teach eingelernt. Habe den linken Drehschalter auf 5 gedreht, für das anlernen über FVS Software

joka

Hallo Tomy,

du schreibst:

define wz_Schrank EnOcean 001E90E1
.
.
.
attr wz_Schrank subDef FFF86C81

Kannst Du mir kurz erklären was die subDef für eine Adresse ist und was das für eine EnOcean Adresse ist.

Mir ist immer noch unklar wieso ich zwei Adressdefinitionen haben muss.

Ich stehe da auf dem Schlauch.

Danke für eine kurze eklärung

mike1969bln

Hallo,

also die obere Adresse ist von dem Aktor. kann zum Beispiel mit dem Eventmonitor beim Betätigen des Schalters/Dimmers ermittelt werden. Die 2. Adresse muss vergeben werden. dazu folgendes Vorgehen: Der Stick ist ja angelernt und heißt TCM_310 oder so. Du mußt als erstes die BaseID (erste zu vergebende Adresse des Sticks) abfragen. Gib dazu "GET TCM310 idbase" ein.

Dann kommt eine Antwort "BaseId=FFF.....,RemainingWriteCycles=0A "

Du machst Dir dann eine eine Liste mit HEX-Zahlen fortlaufend von der obigen Adresse und ordnest diese deinen Schaltern zu. Mit Subdef wird diese dem Schalter zugewiesen. Nun den Aktor in Lernposition, Teach-Befehl senden.  Aktor wieder in normalen Modus und nun läßt er sich schalten.


joka

Hallo Mike,

Vielen Dank fuer die Erlaeuterung.
Ich setze FSB12 ein. Diese sind nicht bidirektional. Somit hat mein Aktor keine Adresse.

Dann bleibt mir wahrscheinlich nur eine option das ganze ueber on- for- timer zu realisieren.

Danke und Gruss
Joerg

Bitzer

Hi,

ich hab auch den FSB12 und einfach 2 freie Adressen aus dem BaseID-Bereich genommen. Bin nicht sicher ob das so gewollt ist, aber es läuft prima damit. So lässt sich der Rolladen auch mit Prozentangaben auf Zwischenpositionen fahren, wenn shutTime richtig eingestellt ist.

define Rolladen_Kueche_Tuer EnOcean FF810716
attr Rolladen_Kueche_Tuer group EG
attr Rolladen_Kueche_Tuer room 04_EG,02_Rolladen
attr Rolladen_Kueche_Tuer shutTime 30
attr Rolladen_Kueche_Tuer subDef FF810724
attr Rolladen_Kueche_Tuer subType eltakoShutter
attr Rolladen_Kueche_Tuer webCmd up:down

Damit konnte ich den Schalter auf dem Aktor über den teach Befehl ohne Probleme einlernen.

Gruß
Oli

joka

Hi Oli,

Vielen Dank für Die Info!

Dann werde ich das mal versuchen.

Gruß und Schönes Wochenende
Joerg