EnOcean Starter Kit von Eltako, Protokoll der ersten Schritte, Praxisbeispiel

Begonnen von mjpmotw, 08 April 2016, 23:17:17

Vorheriges Thema - Nächstes Thema

mjpmotw

Haben mein Starterkit gekriegt: STARTER-KIT N° 5 SCHNUR-SCHALTAKTOR MIT MINI-HANDSENDER

1 x FMH2S-sz Funk Minihansender für Schlüsselanhänger schwarz mit Wippe/Stromstoss
1 x FSR-70S-230V-rw - Funkaktor Schnur-Stromstoss-Schaltrelais

Ich protokolliere hier kurz meine ersten Schritte als Anfänger.

set TCM_ESP3_0 teach 600

Ich drücke auf dem Sender kurz die Wippe hoch (1) und kurz die Wippe runter (0) und schon trudeln die Telegramme ein:
2016-04-08 23:08:57 TCM TCM_ESP3_0 teach 600
2016-04-08 23:08:59 EnOcean EnO_FEFC160B teach: RPS teach-in accepted EEP F6-02-01 Manufacturer: no ID
2016-04-08 23:08:59 EnOcean EnO_FEFC160B buttons: pressed
2016-04-08 23:08:59 EnOcean EnO_FEFC160B channelB: BI
2016-04-08 23:08:59 EnOcean EnO_FEFC160B BI
2016-04-08 23:08:59 Global global UNDEFINED EnO_FEFC160B EnOcean FEFC160B EnOcean:1:F6:50:FEFC160B:30:03FFFFFFFF2D00
2016-04-08 23:08:59 Global global DEFINED FileLog_EnO_FEFC160B
2016-04-08 23:08:59 Global global DEFINED EnO_FEFC160B
2016-04-08 23:08:59 Global global SAVE


Schon ist der Sender/Sensor/Taster eingelernt. Das Modell erscheint zwar nirgends, aber laut Log funktioniert der Empfang der gesendeten Protokolle.
Vermutlich ist die Funktion des FMH2S-sz ähnlich zu http://www.fhemwiki.de/wiki/EnOcean-PTM-210-Taster
Ich finden den Sender nun in der Kategorie "Everything" direkt als type "Switch" angelegt-> EnO_FEFC160B

Der Taster kann zwei verschiedene Events erzeugen: Diese werden in FHEM als B0/B1 abgebildet. Diese Stati werden nun auf dem sw_pocket01 mit einer EventMap umgeschrieben auf ON OFF: attr eventmap B0:off BI:on
Ich benenne den Sensor nun um mit einem Schalter-Präfix rename EnO_FEFC160B sw_pocket01 und erstelle die SubDef attr sw_pocket01 subDef getNextID (wozu die SubDef?)

Ziel:
Ich will mit dem Taster meine virtuelle Testlampe aus http://www.fhemwiki.de/wiki/Erste_Schritte_in_fhem schalten. Die Lampe heisst "lamp01"
Dazu erstelle ich ein Notify, um den Schalterdruck auszuwerten define n_pocket01 notify sw_pocket01 set lamp01 $EVENT
Der Sensor sw_pocket01 wird nun mit dem Notify n_pocket01 ausgewertet.

Das Verhalten ist nun wie folgt:
Wenn ich auf der Wippe den Taster 1 runterdrücke, schaltet die Lampe ein, sobald ich den Taster loslasse, schaltet der Status auf "buttons: released"
Dito wenn ich auf der Wippe den Taster 0 runterdrücke, schaltet die Lamep aus, sobald ich den Taster loslasse, schaltet der Status auf "buttons: released"

Wie kann ich das so ändern, dass ich mit 1 die Lampe ein- und mit 0 die Lampe ausschalte?
Ich habe da einiges gelesen von Notify mit SetState und Toggle aber das ist etwas steil für mich  ::) https://forum.fhem.de/index.php?topic=21201.0




Exkurs Wippe/Taster: Die B0/B1 Wippe mit zwei Tastern lässt z.B. folgende Aktion/Konfigurationen zu wobei ich zum Anfangen mit der ersten Zeile schon glücklich bin:
B0 kurz = aus, B0 lang = ein
B0 kurz = aus, B1 kurz = ein
B0 = dimmt runter, B1 = dimmt hoch
(mein uralten 2-Kanal Berker Funkdimmer funktionieren von Haus aus so: kurz = ein bzw. aus und lang dimmt hoch bzw. runter. Mir gefällt das Konzept, welches für EnOcean hier dargestellt wird http://www.fhemwiki.de/wiki/Enocean_Dimmer_mit_kurzem_und_langem_Tastendruck_ansteuern)

gadget

Hallo,

attr sw_pocket01 subDef getNextID

ist sinnlos. Die ID mit der der Schalter sendet (in Deinem Fall FEFC160B) steckt in dessen Firmware und ist nicht änderbar.
Wenn Du den Schalter direkt beim Aktor einlernst wird diese ID verwendet.

Anders schaut es aus wenn Du den Aktor von fhem aus steuern willst. Dazu könntest Du einen virtuellen Dummyschalter in fhem erzeugen der dann eine eigene ID braucht. Hierfür wäre das obige Kommando dann ggf. sinnvoll. Du kannst einem virtuellen Schalter in fhem auch nicht einfach die gleiche ID geben die Dein Handschalter hat. Die IDs die Du in fhem vergeben kannst sind abhängig von der Basis-ID des Enocean-Moduls an fhem.

Normalerweise  ist aber auch das nicht erforderlich. Wenn Du den Aktor lt. Wiki in fhem anlernst wird das i.d.R. alles schon automatisch richtig erzeugt. Wichtig ist nur dass du beim Aktor zuvor die Bestätigungstelegramme aktivierst. Sonst bekommt fhem den Schaltzustand nicht mit.

Auswertung von Tastendrücken siehe z.B. hier https://forum.fhem.de/index.php?topic=22289.0 -> sequence mit trigger_partial

Das was Du zuerst verlinkt hast brauchst du nur bei 2-kanaligen Aktoren.

Grüße, gadget

krikan

Zitat von: mjpmotw am 08 April 2016, 23:17:17
define n_pocket01 notify sw_pocket01 set lamp01 $EVENT
...
Wenn ich auf der Wippe den Taster 1 runterdrücke, schaltet die Lampe ein, sobald ich den Taster loslasse, schaltet der Status auf "buttons: released"
Dito wenn ich auf der Wippe den Taster 0 runterdrücke, schaltet die Lamep aus, sobald ich den Taster loslasse, schaltet der Status auf "buttons: released"

Wie kann ich das so ändern, dass ich mit 1 die Lampe ein- und mit 0 die Lampe ausschalte?
regExp des notify ist so definiert, dass das notify bei JEDEM Event des Tasters reagiert und genau diesen Event per set $EVENT an den Dummy weitergibt. Damit landen sämtliche Events des Tasters (http://www.fhemwiki.de/wiki/EnOcean-PTM-210-Taster#Logbeispiel) nacheinander im Dummy. Zuletzt eben "buttons: released". Die Events kann man auch im http://www.fhemwiki.de/wiki/Event_monitor sehen.
Abhilfe: regExp des notify einschränken, das es nur beim passenden Event abgearbeitet wird "n_pocket01:(on|off)" oder (mMn schlechter) per if-Bedingung im notify nur bei passenden Events set aufrufen.

Zu dem Gedankenfehler SenderIDs und subDef hat gadget bereits einiges geschrieben. Hast Du vorher http://www.fhemwiki.de/wiki/EnOcean_Starter_Guide gelesen? Falls ja, gibt es Verbesserungsvorschläge, damit solche Mißverständnisse verhindert werden können?

Gruß, Christian

mjpmotw

Hallo Christian, Gadget

Ich habe nun meinen FSR70-S mit der Nacht-Tischlampe verbandelt (also physisch). Den Handsender habe ich direkt am Aktor eingelernt. Beim einmaligen Drücken der Wippe 1 schaltet die Lampe ein, erneutes Drücken 1 schaltet die Lampe aus. Ausserhalb von FHEM funktioniert es also. Ein erster Erfolg  ;)

1) Bestätigungstelegramme
Ich sollte beim Aktor FSR-70S wohl nicht die Bestätigungstelegramme einschalten (laut Wiki und gadget), laut Anleitung hat aber weder der Aktor noch der Handsender eine solche Möglichkeit. Somit sind beide wohl nur Unidirektional, oder?
Konsequenz: Was der Aktor macht, taucht also nie im FHEM auf (fire and forget), oder?

Quote aus der Anleitung zum FSR70 (Hutschiene):
Zitat
"Bestätigungs-Telegramme einschalten:
Bei der Lieferung ab Werk sind die Bestätigungs-Telegramme ausgeschaltet. Stellen Sie den oberen Drehschalter auf CLR. Die LED blinkt aufgeregt. Nun innerhalb von 10 Sekunden den unteren Drehschalter 3-mal zu dem Linksanschlag (Drehen gegen den Uhrzeigersinn) und wieder davon weg drehen. Die LED hört auf zu blinken und erlischt nach 2 Sekunden. Die BestätigungsTelegramme sind eingeschaltet.
Bestätigungs-Telegramme ausschalten:
Stellen Sie den oberen Drehschalter auf CLR. Die LED blinkt aufgeregt. Nun innerhalb von 10 Sekunden den unteren Drehschalter 3-mal zu dem Linksanschlag (Drehen gegen den Uhrzeigersinn) und wieder davon weg drehen. Die LED erlischt sofort. Die Bestätigungs-Telegramme sind ausgeschaltet.


2) Aktor einlernen
Vermutlich liegt bei mir noch ein Denkfehler vor:
Ich sehe den Aktor als Objekt, dass ich "einlerne".  So wie ich ein Inventar erstelle aus Sensoren und Aktoren.
Aber nun habe ich dein Eindruck, dass ich gar nicht den Aktor einlernen kann/muss (bei unidirektional nicht mal "kann") sondern in unserem EnOcean Fall einen virtuellen Schalter (der sendet) am Aktor direkt einlerne, sowie wie ich es mit Sender/Aktor ausserhalb von FHEM gemacht habe. Oder drehe ich den Denkfehler 2x um? Ich lese mich wund, aber lesen,denken und verstehen ist halt ein Prozess, ein Weg für mich.

So weit ich sehe, funktioniert dann die Lampe unabhängig von FHEM, weil ich der Lampe zwei Sender einlerne: a) den Handsender und b) den virtuellen FHEM Schalter. Korrekt?

3) regExp
Ans regExp wage ich mich noch nicht. Chique ist, dass der Aktor in Stellung "ER" (relais) nur Licht gibt, solange ich drücke aber in "ES" (stoss) dann schön ein- und ausschaltet. Ich wollte ja (theoretisch), dass die Wippe mit 1 einschaltet und mit 0 ausschaltet. Aber für mich ist der Betrieb ein/aus über die 1 genauso ok. Ich bin da immer noch im Verständnissaufbau, was Kanäle und Zustände betrifft, meine Handsender ist nur 1-Kanal, aber mit 0 und 1, somit kann ich ja damit auch (ohne FHEM) zwei Lampen ein/aus schalten.

Mhh...Somit habe ich zwei Szenarien:

Szenario A)
Der Handsender wird in FHEM und am Aktor eingelernt, damit funktioniert die Lampe auch wenn FHEM down ist. Dafür ist der Zustand der Lampe nicht zwingend bekannt, da diese keine Bestätigungstelegramm schickt.
Würde die Lampe ein Bestätigungtelegramm schicken, könnte man den Status synchronisieren aber nicht über die gleiche ID, wie Gadget erklärt. Obwohl es ja die Möglichkeit gibt physischen und virtuellen Schalter zusammenzulegen (irgendwie).

Szenario B)
Im Aktor wird nur ein virtueller Schalter eingelernt. Der Handsender hingehen wird nur in FHEM angelernt. Dadurch beeinflusst der Handsender nie die Lampe direkt, aber FHEH muss halt immer laufen.
Korrekt?

Ich habe nun also so einen virtuelle Schalter (vswitch) angelegt und ihm das Attribut "switch" verpasst. Der hat die Statu A0 bis DI und released.

define sw_v1 EnOcean getNextID
attr sw_v1 subtype switch

Dann am Aktor selbst auf LRN geschaltet, B0 gedrückt set sw_v1 B0 und schon habe ich Licht. Die Lampe schaltet ein aber nicht mehr aus, wenn ich wiederholt set sw_v1 B0 :-X
Spannend ist nun, wenn ich den Handsender/Wippe betätige, funktioniert ein/aus sauber. Wenn ich aber nun per virtuellen Schalter einschalte, dann führt der erste Druck auf die Wippe nicht zum ausschalten, erst der zweite Druck.

Einlernmöglichkeiten Eltako FSR-70S, somit kann ich z.B. ja kein "aus" einlernen sondern nur ein "ein/aus". Das Zentral ein/aus verstehe ich nicht. Bei Berker habe ich eine "alles ein/aus"-Taste für alle Teilnehmer, ist dies das Gleiche bei Eltako?
Zitat
1 = Taster 'ein / aus' einlernen;
2 = 'zentral aus' einlernen;
3 = 'zentral ein' einlernen;
4 = FBH als Bewegungsmelder...

Den StarterGuide habe ich gelesen, aber ich lerne schlecht aus der Theorie, ich brauche Praxis-Beispiele (Eigentümer A hat 5 Lebewesen Gattung X mit je 4 peripheren Aktoren -> Der Bauer hat 5 schöne Kühe  8) ). Keine Kritik an der Anleitung, jeder hat halt seine eigene Art und bei mir muss es reifen, indem ich denke und schreibe.

Danke und frohe Weekendgrüsse!
Matthias

BaseID: FFAC5500 RemainingWriteCycles: 0A

krikan

Hallo Matthias!

ZitatIch sollte beim Aktor FSR-70S wohl nicht die Bestätigungstelegramme einschalten (laut Wiki und gadget), laut Anleitung hat aber weder der Aktor noch der Handsender eine solche Möglichkeit. Somit sind beide wohl nur Unidirektional, oder?
Der FSR70S ist mWn immer unidirektional und die Anleitung sollte es wissen. Taster senden grundsätzlich nur und sind somit unidirektional.

ZitatWas der Aktor macht, taucht also nie im FHEM auf (fire and forget), oder?
Nicht gesichert durch eine Aktorrückmeldung. Korrekt. Man kann den tatsächlichen Status des Aktors aber durch einen Abgleich von Taster-Device und Aktor-Device in FHEM ermitteln:
http://www.fhemwiki.de/wiki/EnOcean_Starter_Guide#Physischer_EnOcean-_und_virtueller_Fhem-Schalter_zu_einem_Device_zusammenfassen
Zitat
So weit ich sehe, funktioniert dann die Lampe unabhängig von FHEM, weil ich der Lampe zwei Sender einlerne: a) den Handsender und b) den virtuellen FHEM Schalter. Korrekt?
Ja, in den Aktor ist dann der Handsender und FHEM zur Steuerung angelernt.
Jedes EnOcean-Gerät, also auch FHEM, das den Aktor direkt steuern soll, muss in den Aktor eingelernt werden.
Zitat
Würde die Lampe ein Bestätigungtelegramm schicken, könnte man den Status synchronisieren aber nicht über die gleiche ID, wie Gadget erklärt. Obwohl es ja die Möglichkeit gibt physischen und virtuellen Schalter zusammenzulegen (irgendwie).
Man braucht dann (bei bidi) nichts zu synchronisieren. Der Aktor schickt das Bestätigungstelegramm egal, ob er von FHEM oder physischen Schalter geschaltet wird. FHEM bekommt also vom Aktor immer seinen korrekten Zustand geschickt.
Das FHEM-Device für bidi-Aktoren hat im define die SenderID des Aktors und im Attribut subDef die SenderID des TCM (FHEM). FHEM kann das Bestätigungstelegramm anhand der SenderID des Aktors dem richtigen FHEM-Device zuordnen und FHEM steuert mit dem gleichen FHEM-Device mit der SenderID des TCM im subDef den Aktor.
Zusammenlegen/Syncronisieren ist nur bei unidi-Aktoren notwendig (siehe oben)

Szenario A ist direkte Steuerung und Szenario B indirekte Variante. A würde ich immer wegen Ausfallsicherheit vorziehen.

Kritik ist erwünscht  :) . Wenn es mir nicht passt, kann ich ignorieren  ;) .

Gruß, Christian