Dummy/ReadingProxy Wert ändern ohne Event auszulösen?

Begonnen von moelski, 21 Oktober 2016, 06:48:14

Vorheriges Thema - Nächstes Thema

moelski

Moin !

Ich habe eine WLAN Kerze (http://www.logview.info/Temp/WifiCandle.mp4) gebaut die ich nun gerne über FHEM einstellen möchte. Dafür gibt es 4 Elemente:
* ReadingProxy für die Farbe
* je ein Dummy für Helligkeit, Kerzentyp und Defaultfarbe

Soweit so gut, der ReadingProxy hat eine setFN und löst letztlich eine Methode aus die aus den oberen 4 Einstellungen einen HTTP GET Request baut und das an die Kerze schickt. Die Dummies werden über Notifikationen abgefangen.

Das ganze funktioniert auch sehr gut. Nun möchte ich aber die Einstellungen der Kerze auch in FHEM darstellen und zwar wenn die Einstellung nicht in FHEM gemacht wird. Die Kerze nutzt ESPEasy und hat eine eigene kleine Webseite zur Konfiguration. Dort kann ich ebenfalls Farbe, Heligkeit, ... usw. einstellen (siehe Video). Die eingestellten Daten werden per MQTT auch bis an FHEM weitergereicht.

Wenn ich nun aber die MQTT Werte in die Readings vom RedingProxy bzw. in die States von den Dummies eintrage wird wieder das Event (setFN, Notification) ausgelöst was die Kerze einstellt. Das würde ich gerne unterbinden - weil unnütz.

Kann mir jemand sagen wie man das realisieren kann? Hatte schon an einen Dummy gedacht der auf FALSE gesetzt wird wenn Daten per MQTT kommen. Und in der Methode die letztlich an die Kerze sendet diesen Dummy abfragen. Bin mir aber nicht sicher ob das so sinnvoll ist.

Vielleicht hat jemand noch eine (andere) Idee dazu?
Grüße Dominik

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

moelski

Moin !

Hmm soweit ich das sehe kann man damit die Kerze steuern. Das klappt ja bei mir auch.
Nur ist in deinem Code Schnibsel auch das Sperren der Events wenn du die Werte (z.B. RGB) von aussen (z.B. über MQTT) bekommst?
Kann ich jedenfalls nicht finden  ???
Grüße Dominik

justme1968

warum verwendest du readingsProxy und dummys?

du kannst alle readings in einem readingsProxy unterbringen. in der fhem.cfg.demo gibt es ein beispiel.

da dann keine notifys zwischen unterschiedlichen devices mehr beteiligt sind kannst du diese readings mit setreading von außen setzen ohne das etwas ausgelöst wird.

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

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

moelski

Moin !

Zitatwarum verwendest du readingsProxy und dummys?
Hauptsächlich weil ich die Einstellungen auch unter FHEM halbwegs komfortabel haben wollte.
Wenn ich alles in ein readingsProxy packe ... Ist dann nicht alles in eine Zeile gequetscht in FHEM?

Zitatvon außen setzen ohne das etwas ausgelöst wird
Habe das gerade mal mit meinem RGB readingsProxy getestet ... Wenn ich dort von aussen (z.B. FTUI) die Farbe setze dann wird aber die setFn ausgeführt.
Grüße Dominik

justme1968

wenn du die kommandos im device selber hat steht alles auf einer zeile. aber wie viele parameter sind es denn? um das ganze anders zu formatieren kannst du readingsGroup verwenden.

die setFn wird ausgeführt wenn du das set kommando nimmst. nicht bei setreading.

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

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

moelski

Moin !

Ich bin endlich dazu gekommen hier weiter zu "bauen"  :) Bin allerdings nicht nicht weiter gekommen.
Zunächst sollte ich noch vorweg schicken das ich kein Device in FHEM für meine Kerze habe.
Die Idee war das ich einfach ein Notify z.B. auswerte und dann der Kerze ein neues Setting schicke.

Dazu habe ich nun folgenden readingsProxy erstellt:
define RGB readingsProxy RGB
attr RGB alias RGB Farbe
attr RGB comment light with the ability to change RGB color
attr RGB group Candle_1
attr RGB room HW_Candle
attr RGB setFn {\
Log (1,"Command : $CMD  -  Arguments : $ARGS");;    \
return undef;;\
}
attr RGB setList on:noArg off:noArg rgb:colorpicker,RGB state2:aktiv,passiv state3:slider,0,1,255
attr RGB sortby 1
attr RGB webCmd rgb:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffffff:state2:state3


Frage mich nur gerade wie ich die zusätzlichen Readings state2 & state3 auch unter den Readings sehe.
Dort habe ich nach wie vor nur "hue, rgb, state und lastcmd".  ???

Kann mir jemand da einen Tip geben wie das geht? Und ob das überhaupt geht..?

Dominik
Grüße Dominik

justme1968

die readings sind erst dann da wenn du sie in der setFn mit erzeugst/befüllst. z.b. mit setreading.

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

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