Doppelwippe Eltako liefert keinen Status in FHEM

Begonnen von suchard, 20 September 2015, 18:35:51

Vorheriges Thema - Nächstes Thema

suchard

Dann versuche ich es dank des Hinweises von krikan direkt hier.
Worauf krikan im Forum Anfängerfragen hingewiesen hat, habe ich schon durchgeführt. Das löst aber nicht mein Problem:



Habe FHEM auf einem Raspberry mit EnOcean-Modul am laufen, klappt soweit auch alles prima.

Kann auch einen Taster mit einer Wippe nach folgenden Vorgehen definieren:

define fSBuero_Licht EnOcean getNextID;
attr fSBuero_Licht eventMap BI:off B0:on;
attr fSBuero_Licht icon icoBELEUCHTUNG.png;
attr fSBuero_Licht subType switch;

define Buero_Licht EnOcean 001EF589;
attr Buero_Licht eventMap BI:off B0:on;
attr Buero_Licht room EnOcean;
attr Buero_Licht subType switch;
attr Buero_Licht dummy;

define Gr_Buero_Licht structure room fSBuero_Licht Buero_Licht;
attr Gr_Buero_Licht eventMap BI:off B0:on;
attr Gr_Buero_Licht room Büro;
attr Gr_Buero_Licht clientstate_behavior last;

Im der Web-Anwendung wird dann der Status, egal ob im Web geändert oder direkt durch Betätigung des Tasters, aktualisiert angezeigt.
Sobald ich nun aber versuche eine Doppelwippe ans Laufen zu bringen klappt es einfach nicht mehr.
Ich habe schon alles mögliche versucht, was hier im Forum und auch im Web oder dem Starter Guide zu finden ist.
Das Betätigen der Schaltwippen wird mir einfach nicht in FHEM angezeigt.
Die Signale der Wippen kommen laut LOG schon an, es wird aber weder ein fSxxxxxxx_Licht noch die Gr_xxxxxxx_Licht auf on oder off gesetzt.

Versuche mit:

#Kanal A zur Steuerung mit on und off
define fhemSchalterKanalA readingsProxy fhemSchalter:state
attr fhemSchalterKanalA setFn {($CMD eq "on")?"A0":"AI";;}
attr fhemSchalterKanalA setList on off
attr fhemSchalterKanalA valueFn {$LASTCMD}
attr fhemSchalterKanalA webCmd on:off
#Kanal B zur Steuerung mit on und off
define fhemSchalterKanalB readingsProxy fhemSchalter:state
attr fhemSchalterKanalB setFn {($CMD eq "on")?"B0":"BI";;}
attr fhemSchalterKanalB setList on off
attr fhemSchalterKanalB valueFn {$LASTCMD}
attr fhemSchalterKanalB webCmd on:off

oder:

define nAbgleich notify EnO_switch_0021E4BB:(on|off) setreading fhemSchalter state $EVENT

schlagen alle fehl.

Einen Aktor habe ich bisher noch nicht eingelernt. Mir geht es erst mal darum alle Schaltwippen in FHEM anzulegen und dort den Status entsprechend "aktuell" zu halten.

Ich habe leider noch das Alt-System von Eltako FSA12/FSB12.

Gibt es denn irgendwo ein durchgängiges Beispiel, wie eine Doppelwippe in FHEM angelegt werden muss?

Vielen Dank für eure Hilfe!

krikan

Verschieben wäre besser gewesen. Habe meinen/diesen Post im Anfängerbereich gelöscht:
ZitatWenn ich das richtig interpretiere, dann willst Du doch erst einmal nur den phys. Taster PTM in Fhem als Device anzeigen lassen!?
Dafür musst Du nichts manuell definieren, sondern nur so vorgehen: http://www.fhemwiki.de/wiki/EnOcean_Starter_Guide#Schalter.2FSwitch

PS: EnOcean-Fragen besser im entsprechenden  Unterforum stellen, dann hast Du bessere Chancen.


krikan

Mögliche  Vorgehensweise für das Zusammenfassen von  virtuellen Devices und phys.Schalter Device für Doppeltaster:
Fhem-Device für den phys. Taster anlegen lassen, bspw:
define EnO_switch_FFC54500 EnOcean FFC54500
attr EnO_switch_FFC54500 room EnOcean
attr EnO_switch_FFC54500 subType switch
attr EnO_switch_FFC54500 eventMap AI:off A0:on BI:an B0:aus

Das eventMap bitte manuell ergänzen.

Dann die 2 virtuellen Fhem-Switches zur Steuerung der Aktoren (Aktordevice1 und Aktordevice2) anlegen.
Bei Aktordevice1 "eventmap AI:off A0:on" und bei Aktordevice2 "BI:an B0:aus" ergänzen.

Dann 2 notify:
define nAktordevice1Abgleich notify EnO_switch_FFC54500:(on|off) setreading Aktordevice1 state $EVENT
define nAktordevice2Abgleich notify EnO_switch_FFC54500:(an|aus) setreading Aktordevice2 state $EVENT


Die gesetzten eventMap habe ich aus Vereinfachungsgründen (einfache notify) so gewählt. In Praxis würde ich beim Fhem-Device für den phys. Taster keine eventMap setzen und bei den Aktordevices gleiche eventMap nehmen. Die notify müsste man dann anpassen.

Hoffe, dass das Deinem Problem näher kommt. Ich begreife nicht, warum Du einen dummy hast oder readingsProxy nutzen willst...

suchard

Danke Dir für die schnelle Antwort, ich werde es morgen versuchen.

Das mit dem Dummy habe ich in einem Codeschnipsel gefunden. Mir war selbst überhaupt nicht klar wofür das gut sein sollte.
Den möglichen Lösungsansatz mit readingsProxy hatte im FHEM-Wiki irgendwo aufgeschnappt. Wahrscheinlich habe ich ein Verständnisproblem.
Eigentlich erschien mir alles ganz klar und logisch, bis zu dem Zeitpunkt als die Doppelwippe ins Spiel kam.
Ich verstehe einfach nicht, warum bei nur einem Taster das Event korrekt in FHEM ankommt und der Status On/Off auch richtig angezeigt wird, dies bei der Doppelwippe aber nicht mehr klappt.
Irgendwo habe ich da einen Gedankenfehler.  :-\

krikan

Zitat von: suchard am 20 September 2015, 20:44:31
Den möglichen Lösungsansatz mit readingsProxy hatte im FHEM-Wiki irgendwo aufgeschnappt.
Wenn Du Dich hierauf http://www.fhemwiki.de/wiki/EnOcean_Starter_Guide#Virtuelle_Schalter_f.C3.BCr_unidirektionale_Aktoren beziehst, dann beachte, dass das readingsProxy von einem virtuellen Fhem-Switch abgeleitet ist. Dieses readingsProxy bekommt nicht mit, wenn Du den virtuellen Schalter selbst zum Steuern nutzt. Das Device für den phy. Fhem-Switch müsstest Du dann per notify wie oben mit den readingsProxy syncronisieren. Das ist mMn zu komplex. Im Unterschied zu meiner Variante von oben, könntest Du eine freie SenderIDs des TCM einsparen: in der Regel nicht notwendig. Ich würde grds. immer eine SenderID pro zu steuernden Kanal nehmen.

Eine structure-Lösung für Dein Doppelwippen-Problem fällt mir nicht ein. Bis heute konnte mich aber auch noch nicht einmal jemand vom Vorteil der structure- im Vergleich zur notify-Variante für eine Einfach-Wippe überzeugen....

An Deiner Stelle würde ich mal einen Aktor anlernen, das erleichtert mMn das Verständnis.

suchard

Hallo krikan,

habe nun Zeit gefunden meinen ersten Aktor einzulernen, prima, klappt hervorragend, bin begeistert!
Jetzt habe ich (vorläufig) nur eine Frage: Meine Taster sind PTM200 und als Aktor habe ich FSA12.
Ist dir bekannt das man sowohl

set  AktordeviceBuero B0;

als auch

set  AktordeviceBuero BI;

einlernen muss?

Oder gibt es da eine andere Möglichkeit?

Habe nochmals vielen Dank!

krikan

Mir ist nur bekannt, dass es noch eine andere Anlernvariante für den FSA12 gibt:
Suche mal nach FSA12 in der commandref von EnOcean. Der zugehörige Entwicklungs-Thread ist http://forum.fhem.de/index.php?topic=21271.0.
Mir ist aber anhand der Angaben nicht klar, ob man damit immer alle Kanäle steuert oder auch einzelne Kanäle steuern kann und wie anzuleren ist. Müsstest Du ggfs. ausprobieren und bitte berichten, wenn niemand Infos dazu liefern kann.

suchard

Danke, das hatte ich auch schon gefunden. Schande über mich, aber ich verstehe das überhaupt nicht:

Ich kann das Profil gateway/switching durch eine modellspezifische Variante ergänzen:

attr <name> model FSA12

off >> 01000008 (wie normal) oder muss es doch 01000009 sein?
on >> 0100000E
teach >> 01000000 oder geht auch E047FF80


Bedeutet dies, dass ich beim AktordeviceBuero das model FSA12 zusätzlich definieren sollte und dann?

Was bitte hat es damit auf sich:

zentral ein 4BS 01 00 00 09
zentral aus 4BS 01 00 00 0E

Lerntelegramm ist 4BS 01 00 00 00


Komme da gerade nicht mit. :-[

krikan

Die Rohtelegramme (Code-Infos) sind nur für die Einbindung ins Modul notwendig gewesen. Suche mal in der Commandref FSA12.
Danach legst Du an:
In Eingabefeld und Enter:
define Test EnOcean getNextID
Dann in Detailansicht zuweisen:
attr subType gateway
attr gwCmd switching
attr model FSA12
attr manufID 00D


Dann Aktor in Lernmodus und anschließend in Eingabefeld und Enter:
set Test teach

Soweit die Theorie und jetzt darfst Du praktisch meine Fehler suchen  :).

suchard

Verstehe ich nicht, ist mir zu hoch, aber nicht schlimm, funktioniert soweit alles (Licht/Dimmer/Rollo).

Eine Frage hätte ich aber noch.

Bei mir kommen teilweise Telegramme nicht an, wenn ich einen Schalter betätige.
Entsprechend wird dann das notify natürlich nicht ausgelöst und schon passt Zustand FHEM mit tatsächlichem Zustand nicht mehr zusammen.
Wenn ich mir dann das LOG des betroffenen Schalters ansehe stelle ich fest, dass in FHEM nichts registriert wird. Der Aktor selbst schaltet das Licht aber sauber.
Empfangsqualität ist auch sehr gut.

Hast du eine Idee was das sein kann?

krikan

Zitat von: suchard am 27 September 2015, 12:37:55
Verstehe ich nicht, ist mir zu hoch, aber nicht schlimm, funktioniert soweit alles (Licht/Dimmer/Rollo).
Du musst einfach nur das Fhem-Device so anlegen und entsprechend anlernen. Da ich aber Vor-/Nachteil auch nicht begreife, ist es wohl letztlich uninteressant.

ZitatBei mir kommen teilweise Telegramme nicht an, wenn ich einen Schalter betätige.
Entsprechend wird dann das notify natürlich nicht ausgelöst und schon passt Zustand FHEM mit tatsächlichem Zustand nicht mehr zusammen.
Wenn ich mir dann das LOG des betroffenen Schalters ansehe stelle ich fest, dass in FHEM nichts registriert wird. Der Aktor selbst schaltet das Licht aber sauber.
Empfangsqualität ist auch sehr gut.

Hast du eine Idee was das sein kann?
Nadel im Heuhaufen!?
Liest sich wie Empfangsproblem mit Gateway, trotz sehr guter Empfangsqualität. Kannst Du das auf bestimmte Taster eingrenzen oder tritt das bei allen Tastern auf?
Falls eingrenzbar: Empfangseigenschaften sind nicht immer gleich; schon geringere Änderungen auf der Funkstrecke können Verluste verursachen. "Blödes" Bsp: geöffnete bzw. geschlossene Feuerschutztür, usw.

suchard

Nein bisher nur bei zwei. Bin aber noch lange nicht fertig ;)

Die beiden Taster sind aber auf gleicher Etage und auch nur wenige Meter entfernt, sehr merkwürdig.
Hatte hier im Forum bereits gelesen, dass dieses Problem wohl auch schon dem ein- oder anderen widerfahren ist, eine Lösung konnte ich aber nicht finden.

Habe auch das Problem, wenn ich über structures verschiedene Lichtquellen zusammenfasse um z.B. das Licht komplett im Haus auszuschalten, das dann beim 'set "structure" off' einige Lichtquellen an bleiben. Ob es hier zu Überlagerungen von Telegrammen kommt? Gibt es eine Möglichkeit dies zu umgehen, z.B. verzögerte Telegrammversendung an die Aktoren? Fragen über Fragen...  8)

krikan

Zitat von: suchard am 27 September 2015, 18:32:49
Nein bisher nur bei zwei. Bin aber noch lange nicht fertig ;)

Die beiden Taster sind aber auf gleicher Etage und auch nur wenige Meter entfernt, sehr merkwürdig.
Hatte hier im Forum bereits gelesen, dass dieses Problem wohl auch schon dem ein- oder anderen widerfahren ist, eine Lösung konnte ich aber nicht finden.
Da gibt es vermutlich auch keine Pauschallösung. Bei mir (mit Unterputzeinbauaktoren) habe ich das nach einigen Problemen mit einem Pegelmesser durchgemessen und optimiert. Seitdem ohne Unmengen Repeater keine Probleme mehr.

Zitat
Habe auch das Problem, wenn ich über structures verschiedene Lichtquellen zusammenfasse um z.B. das Licht komplett im Haus auszuschalten, das dann beim 'set "structure" off' einige Lichtquellen an bleiben. Ob es hier zu Überlagerungen von Telegrammen kommt? Gibt es eine Möglichkeit dies zu umgehen, z.B. verzögerte Telegrammversendung an die Aktoren? Fragen über Fragen...  8)
Ja, dazu gibt es einmal das Attribut sendInterval beim TCM und structure hat mMn auch ein Attribut zur Verögerung.

suchard

Hallo krikan,

nochmals vielen Dank für deine wertvollen Tipps, soweit läuft jetzt alles  :)

Ich habe nur noch ein Problem:
Wenn ich z.B. eine geöffnete Jalousie durch Betätigen eines Tasters schließe, so wird im Web-Frontend die Jalousie auch als geschlossen dargestellt.
Mein Problem bei meinen switches ist aber nun, dass ich durch nochmaliges Drücken in selber Fahrtrichtung die Jalousie anhalten kann.
So kann sie natürlich dann z.B. in halb geöffneter Postion verbleiben. Im Frontend wird die Jalousie aber als geschlossen angezeigt, da ja zwei "closes" gesendet wurden.
Gibt es da irgend einen Tipp, wie FHEM das beizubringen ist?

krikan

Theoretisch ist das simpel, praktisch ....
Beim ersten Tastendruck einen Timer mit der Laufzeit der kompletten Schliesszeit starten. Bei einem 2. Tastendruck innerhalb der Laufzeit, aus der offenen Restlaufzeit den Zustand ermitteln und bspw. mit setreading setzen.
Vielleicht gibt es noch simplere Loesungen, da Du aber ohne konkrete Angaben schreibst, faellt mir nichts besseres ein.

Bitzer

Hallo suchard,

ich hatte die gleiche Frage bezüglich der Positionsbestimmung der Rollos und habe es mit Hilfe dieses Threads hinbekommen:

http://forum.fhem.de/index.php/topic,29219.0.html

Beim ersten Tastendruck wird ein Timer gestartet und beim 2. Tastendruck wird dann über die abgelaufene Zeit die Position des Rollos errechnet. Erfolgt kein 2. Tastendruck (weil der Rollo ganz hoch oder runter fährt) wird nach einem Timeout die Position entsprechend der Fahrrichtung auf 0 oder 100 gesetzt.
Funktioniert bei mir auch relativ zuverlässig.

Viele Grüße,
Oli

suchard

Prima, vielen Dank für den Hinweis. Bin da zwischenzeitlich auch drüber gestolpert.
Werde ich dann mal testen.

Nochmals Dank an Euch!

krikan

Wiki-Promotion:  ;)
Der von Oli genannte Thread ist im fhemwiki zum fsb12 auch entsprechend unter den Beispielen angegeben.

suchard

Da bin ich auch drüber gestolpert, FHEMwiki ist schon prima.  :D