Schalten des physikalischen Schalters mit readingsProxy synchronisieren

Begonnen von wla, 15 März 2015, 13:26:33

Vorheriges Thema - Nächstes Thema

wla

!!! Der aktuelle Stand ist unter Antwort 18 beschrieben !!!

Hallo,
folg. Zustand: (eigentlich viele) EnOcean 4-fach Taster, jeder der 4 Tasten steuert einen anderen Aktor (FAM12, alles unidirektional). FHEM hängt via FAM12RS232 mit auf dem Bus.

# der physikalische Schalter
define kueche.sw EnOcean 00253CE4
attr kueche.sw IODev FAM12RS232
attr kueche.sw comment EnO_switch_00253CE4
attr kueche.sw room EnOcean
attr kueche.sw subType switch
define FileLog_kueche.sw FileLog ./log/kueche.sw-%Y.log kueche.sw
attr FileLog_kueche.sw logtype text
attr FileLog_kueche.sw room EnOcean

(Um die 4 Taster im Webfrontend darstellen zu können, 4x readingsProxy je Schalter)
# zugeröriger readingsProxy
define kueche.licht.spots readingsProxy kueche.sw:state
attr kueche.licht.spots room Ansicht_1
attr kueche.licht.spots setFn {"A0"}
attr kueche.licht.spots setList on off
attr kueche.licht.spots valueFn {$LASTCMD}
attr kueche.licht.spots webCmd toggle

Funktioniert eigentlich, aber wenn ich mit dem physikalischen Schalter schalte, wechselt im Webfrontend das Lampen-Icon im readingsProxy nicht den Zustand.
Schalte ich direkt auf dem Icon des readingsProxy funktioniert dies.

Kann mir hier jemand weiterhelfen?
Danke.

Gruß,
Walter

wla



wla

Ich habe es gelesen. Passt allerdings nicht ganz, da ich kein virtuelles device habe. Ich kann direkt mit der Kennung des Tasters schalten, da ich fhem nicht über Funk, sondern seriell über FAM12RS232 angebunden habe.
Ich betreibe also nur den physikalischen Schalter mit 4 readingsProxy.

krikan

Kannst du denn nicht mit einem notify auf Events A0 vom phys. Schalter reagieren und per setreading den Zustand vom readingsProxy Device entsprechend ändern? Habe es nicht probiert, aber vielleicht ist das ein Ansatz.

justme1968

die version mit $LASTCMD in der valueFn ist für geräte die keine rückmeldung über den tatsächlichen status liefern.

wenn du eine rückmeldung bekommst musst du den readingsProxy auf das reading konfigurieren in dem die rückmeldung steht und valueFn so anpassen das dieses reading auf den zustand des readingsProxy umgesetzt wird.

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

krikan

@justme1968 (andre):
Er toggelt mit A0 und bekommt keine Rückmeldung über den tatsächlichen Zustand. Darum wäre mein Ansatz, damit das readingsProxy immmer den richtigen Zustand hat, beim Toggeln mit dem phys. Schalter den Zustand vom Proxy mit einem notify auf phy. Schalterevents und setreading (auf state?) in den entgegengesetzten Zustand zu bringen: Wenn readingsProxy "on", dann auf "off" und umgekehrt. Keine Ahnung, ob das mit readingsProxy funktioniert; hab es nicht getestet.

justme1968

dazu gibt das lastCmd reading im readingsProxy. hier 'merkt' sich der readingsProxy den aktuellen zustand.  $LASTCMD ist nur eine abkürzung und wird automatisch über ReadingsVal gefüllt. ohne es selber aufrufen zu müssen.

es solle also möglich sein aus einem entsprechenden notify das lastCmd reading selber zu toggeln.

ich habe keine EnOcean devices und kann es nicht wirklich selber testen da ich das verhalten nicht wirklich verstehe :). könntet ihr einen 'simulator' aus drei normalen dummys und den passenden notifys bauen der sich so verhält wie das echte device? also einen dummy der einen zweifach taster in fhem repräsentiert und an den ich hinterher meinen readingsProxy hängen kann und zwei zusätzliche dummys die die lokale bedienung über die beiden tasten simulieren und den ersten dummy beeinflussen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

wla

Danke für die vielen Rückmeldungen.
Kann jemand, basierend auf meinem Code, Codeschnipsel liefern?

Ich kenne den Guide, die commandref, Wiki, muss aber gestehen, dass ich damit nicht ganz klar komme.

krikan

Bitte testen und berichten:
define nProxyAbgleich notify kueche.sw:A0 {if (Value("kueche.licht.spots") eq "on") {fhem "setreading kueche.licht.spots lastCmd off"} else {fhem "setreading kueche.licht.spots lastCmd on"}}

wla

Getestet: passt so 100%, danke vielmals.
Nun kann ich schonmal alle Schalter konfigurieren ...

Gibt es eigentlich einen einleuchtenden Grund, weshalb dies nicht automatisch passiert?

justme1968

sollte man das noch im wiki ergänzen oder ist das ein sonderfall?

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

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

krikan

Hallo Andre!
Ist nach meiner Meinung eigentlich ein Sonderfall; Wiki schadet aber nicht  ;).
Wenn Du es nicht selbst machen möchtest, dann schreib ob es im Artikel zu readingsProxy oder EnOcean landen soll und ich kümmere mich darum.
Gruß, Christian

justme1968

da ich die EnOcean spezislität immer noch nicht wirklich verstanden habe wäre es mit lieb wenn du die 1-2 sätze dazu schreiben kannst.

passen würde es zum EnOcean beispiel auf der readingsProxy seite.

wenn es von der EnOcean seite noch keine verlinkungen gibt wäre die vermutlich auch sinnvoll oder?

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

krikan

Verlinkung ist immer inklusive  ;). Kümmere mich in Kürze...