Aufteilung der Kanäle des subType switch in unabhängige Devices (readingsProxy)

Begonnen von klaus.schauer, 09 März 2014, 08:42:46

Vorheriges Thema - Nächstes Thema

klaus.schauer

Mit Hilfe des Kommandos "readingsProxy" können die Kanäle eines EnOcean Schalters (subType switch) in unabhängige Schalter aufgeteilt werden. Hier die Grundkonfiguration für die Kanäle A und B:

define <device_channelA> readingsProxy <refDevice>:channelA
attr <device_channelA> eventMap A0:on AI:off
attr <device_channelA> setFn ""
attr <device_channelA> setList A0:noArg AI:noArg
attr <device_channelA> valueFn ""
attr <device_channelA> webCmd on:off

define <device_channelB> readingsProxy <refDevice>:channelB
attr <device_channelB> eventMap B0:on BI:off
attr <device_channelB> setFn ""
attr <device_channelB> setList B0:noArg BI:noArg
attr <device_channelB> valueFn ""
attr <device_channelB> webCmd on:off


djhans

Hallo Klaus,
das klappt 1a. Habe es mal mit meinem Eltako FMS61NP ausprobiert.

Was mir allerdings auffällt ist, das der Schaltbefehl fast zeitgleich am Aktor ausgeführt wird, wenn man auf on/off drückt, es aber "relativ" lange dauert, bis die Rückmeldung im Webinterface (Lampensymbol) sich ändert (halbe bis 1 sec.) Dieses Verhalten zeigt sich m.E.  nicht, wenn das Device nicht aufgeteilt ist.

Die Frage ist, ob die Verzögerung sich vergrößert wenn mehrere Aktoren zum Einsatz kommen. Bislang ist der o.a. Aktor das einzige Device (außer Sonos) was bei mir im fhem läuft.

Gruß,
djhans.

nabbl

Hm.. Jemand ein Beispiel wie genau das aussehen muss?

Habe mal so konfiguriert (Schalter ist Licht + Rollo, beide noch nicht am Aktor eingelernt)


define EnO_switch_Licht_Buero_Daniel readingsProxy EnOcean 008B5BE9:channelA
attr EnO_switch_Licht_Buero_Daniel alias Schalter Büro Daniel
attr EnO_switch_Licht_Buero_Daniel eventMap AI:off A0:on
attr EnO_switch_Licht_Buero_Daniel group Schalter
attr EnO_switch_Licht_Buero_Daniel setFn ""
attr EnO_switch_Licht_Buero_Daniel setList A0:noArg AI:noArg
attr EnO_switch_Licht_Buero_Daniel valueFn ""
attr EnO_switch_Licht_Buero_Daniel webCmd on:off
attr EnO_switch_Licht_Buero_Daniel room OG_Buero_Daniel



define EnO_switch_Rollo_Buero_Daniel readingsProxy EnOcean 008B5BE9:channelB
attr EnO_switch_Rollo_Buero_Daniel alias Schalter Rollo Büro Daniel
attr EnO_switch_Rollo_Buero_Daniel eventMap B0:open BI:close
attr EnO_switch_Rollo_Buero_Daniel group Schalter
attr EnO_switch_Rollo_Buero_Daniel setFn ""
attr EnO_switch_Rollo_Buero_Daniel setList B0:noArg BI:noArg
attr EnO_switch_Rollo_Buero_Daniel valueFn ""
attr EnO_switch_Rollo_Buero_Daniel webCmd on:off
attr EnO_switch_Rollo_Buero_Daniel room OG_Buero_Daniel


Bei mir zeigt er ausserdem nicht den Status an ob Licht aus oder an: Rollladen oben oder unten.
Bin noch völlig neu auf dem Gebiet.

Edit: Denke ich habe jetzt verstanden, dass readingsproxy von einem bestehenden Gerät "erbt" und ich den Sensor vorher noch definen muss.
Daheim kann ich das mal testen.

djhans

Hallo,
ich habe den Aktor nun räumlich versetzt und dabei vom Strom getrennt. Das Schalten mit dem aufgeteilten Device funktioniert einwandfrei und ohne Verzögerung, allerdings werden die Schaltzustände des Icons jetzt falsch bzw. gar nicht angezeigt.
Habe fhem nicht neu gestartet, aber ich denke, es müsste auch ohne Neustart funzen, oder? Woran kann das liegen?

djhans
NACHTRAG:
es scheint tatsächlich an der Funkreichweite zu liegen! Was bleibt ist aber die große Verzögerung beim Anzeigen der Stati in der Weboberfläche

justme1968

in welchem raum sind die readingsProxy device die die verzögernd in der anzeige haben?

zumindest für den raum unsorted gibt es aktuell ein problem mit longpoll: http://forum.fhem.de/index.php/topic,22753.msg161726.html#msg161726.

ansonsten schau dir mal das beispiel in dem thread oben an. da ist die verwendung von setFn und valueFn etwas anders umgesetzt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

pst

Hi Klaus,

ich verstehe das setup so, dass Du einen 4-Kanal Schalter AI / AO / BI / BO so konfigurierst, dass AI und AO einen Schalter simulieren (an/aus) und B0 und BI einen anderen.  Jetzt kann man im toggel modus ja mit enem Kanal ...(also z.B. BI) einen Lampe an und aus machen.
Kann man das mit readingsProxy definieren?

Vielen Dank im Voraus
Stephan 

krikan

Hallo Klaus,

kann es sein, dass Dein Beispiel nur bei einem physischen Switch als Sensor oder bidi-Aktoren funktioniert? Bei einem FHEM-TCM-Switch habe ich das Reading "channelA" usw. nicht.
Ich muss hier ein readingsProxy mit Bezug auf das Reading "state" anlegen, damit es funktioniert:

define Schalter_channelA_A0 readingsProxy Schalter:state
attr Schalter_channelA_A0 eventMap A0:toggle
attr Schalter_channelA_A0 room EnOcean
attr Schalter_channelA_A0 setFn ""
attr Schalter_channelA_A0 setList A0:noArg
attr Schalter_channelA_A0 valueFn {(ReadingsVal("Schalter_channelA_A0","state",0) eq "off")?"on":"off"}
attr Schalter_channelA_A0 verbose 5
attr Schalter_channelA_A0 webCmd toggle


@Stephan: das obige Toggle-Beispiel ist vermutlich auch das, was Dir helfen könnte (Achtung: ist mein erstes readingsProxy)

Gruß, Christian

pst

Hallo Christian,

vorab... das erste Bier geht auf mich,.. falls man sich mal treffen sollte.

Definiert habe ich das so,.. wie Du geschrieben hast,.. nur mit B0:

define Schalter_channelB_B0 readingsProxy LichtDeckeStephan:state
attr Schalter_channelB_B0 eventMap B0:toggle
attr Schalter_channelB_B0 room EnOcean
attr Schalter_channelB_B0 setFn ""
attr Schalter_channelB_B0 setList B0:noArg
attr Schalter_channelB_B0 valueFn {(ReadingsVal("Schalter_channelB_B0","state",0) eq "off")?"on":"off"}
attr Schalter_channelB_B0 verbose 5
attr Schalter_channelB_B0 webCmd toggle

zusätzlich noch
define LichtDeckeStephan EnOcean xxxxxx
...

Im log habe ich das:

2014.05.01 19:55:52 4: Schalter_channelB_B0: set hash->{DEVICE} B0
2014.05.01 19:55:52 2: EnOcean set LichtDeckeStephan B0
2014.05.01 19:55:52 4: Schalter_channelB_B0: set hash->{DEVICE} B0
2014.05.01 19:55:52 2: EnOcean set LichtDeckeStephan B0
2014.05.01 19:07:46 4: Schalter_channelB_B0: set hash->{DEVICE} B0

Ich sehe auf FHEMHome (Enocean) unter readingsProxy den Schalter
Schalter_channelB_B0, eine Glühbirne und die Schaltfläche toggle.
Auf toggel gedrückt ändert die Glühbirne ihren Zustand. WAS auch passiert, wenn ich
den physischen Schalter drücke. DAS IST DOCH SCHON WAS :-)
Nun muss ich mir noch einen virtuellen EnOcean(FHEM) schalter machen und ihn
indirekt verbinden.

Dazu dann später mehr...

Euch allen einen schönen Abend,
Stephan

pst

Hi,

jetzt schnell noch das selbe definiert für BI.
...
Leider funktioniert dies nun nicht mehr wie gewollt.
Zweiter Eintrag bei readingsProxy. OK. Nun habe ich 2 Glühbirnen und zwei Schaltflächen mit toggle.
Soweit so gut.
Wenn ich nun BI oder  B0 schalte (egal ob über Schaltfläche oder pysischen Schalter) verändern sich BEIDE
Glühbirnen.
Beide readingsProxy reagieren auf BI und B0.

Wie muss ich readingsProxy definieren, dass nur auf ein Kanal gehört wird?

Gruss,
Stephan

justme1968

du darfst den state nicht aus dem original device lesen (da ist es ja mit beiden tasten verknüpft) sondern musst state aus dem proxy device lesen (da ist es ja getrennt) und auch im proxy device setzen. der setzten teil geht so wie hier: http://forum.fhem.de/index.php/topic,22753.msg161542.html#msg161542

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

krikan

@pst: Sorry Stephan, das es nicht klappt.  :-[

@justme: Andre könntest Du das als Beispiel liefern. Bekomme es trotz Deines Forums-Verweises nicht umgesetzt. Stephans Problem ist, dass ein Kanal 2. Lampen schaltet. Der state "B0" schaltet eine Lampe an und aus genauso wie "BI" eine andere Lampe. Das Originaldevice schickt also immer den gleichen set-Befehl zum an- und auschalten.

Danke, Christian

krikan

Bastelstunde (Trial-and-error)/ Hiermit habe ich anscheinend Erfolg:

define Schalter_channelA readingsProxy Schalter:state
attr Schalter_channelA eventMap A0:toggle
attr Schalter_channelA room EnOcean
attr Schalter_channelA setFn {readingsSingleUpdate($defs{$name}, "state", (ReadingsVal("Schalter_channelA","state",0) eq "off")?"on":"off", 1);; {"A0"};;}
attr Schalter_channelA setList A0:noArg
attr Schalter_channelA valueFn {undef}
attr Schalter_channelA verbose 5
attr Schalter_channelA webCmd toggle


Stephan und Andre: Kommentare ;)

justme1968

sorry kann gerade nicht wirklich schauen aber auf den ersten blick ist das genau die richtung.

den Umweg über die eventmap kannst du dir eigentlich sparen und in der setList direkt toggle angeben.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

pst

Hi,

definition für B0 (dementsprechend auch BI) sieht nun so aus:

define Schalter_channelB_B0 readingsProxy LichtDeckeStephan:state
attr Schalter_channelB_B0 room EnOcean
attr Schalter_channelB_B0 setFn {readingsSingleUpdate($defs{$name}, "state", (ReadingsVal("Schalter_channelB_B0","state",0) eq "off")?"on":"off", 1);; {"B0"};;}
attr Schalter_channelB_B0 setList toggle
attr Schalter_channelB_B0 valueFn {undef}
attr Schalter_channelB_B0 verbose 5
attr Schalter_channelB_B0 webCmd toggle

Damit funktioniert das toggeln der Glühbirnen für B0 und BI über das FHEMHome sehr schön.
Über den physischen Schalter passiert ABER nix mehr auf FHEMHome. 
... was vorher einen Einfluss hatte.auf FHEMHome.

Muss da was für valueFn gesetzt werden?

Gruss Stephan

PS.: wie Andre geschrieben hat:
eventMap A0:toggle + setList A0:noArg   <=> setList toggle


krikan

Hallo,

habe keine Ahnung, wie man den physischen Taster über valueFn im Proxydevice abbilden könnte. Würde das über ein notify, das auf Events vom physischen Taster reagiert und mittels setreading den state des Proxydevices ändert, lösen. Zudem würde ich das Proxydevice sowieso vom Fhem-switch ableiten und nicht vom Device für den physischen Taster.

Mit Klaus´ Beispiel habe ich immer noch Probleme:
Wenn ich das ReadingsProxy-Beispiel auf einen Fhem-Switch anwende, der unidi-Aktoren steuert, wird der state im Proxydevice nicht korrekt auf on/off sondern auf A0/AI aktualisiert. Das Lampensymbol devStateIcon funktioniert dann bei Steuerung über das Proxydevice eben nicht.

Gruß, Christian