Devices in einem Device zusammenführen und bedienbar machen

Begonnen von auto_home, 20 Mai 2017, 09:29:44

Vorheriges Thema - Nächstes Thema

auto_home

Hallo Zusammen,

auch ich wurde hier infiziert und habe mit fhem begonnen.

Ich möchte hier kurz meine Fall schildern - vielleicht kann mich jemand auf den richtigen Weg bringen.

Ich habe zwei Devices für meine Rolladensteuerung (Logo) Über ein Device schreibe ich mein Sollwert zur Steuerung und über das zweite Device lese ich meine aktuelle Position zurück.
Sollwert schreiben:
define Roll_SW_1 S7_AWrite db 1003 0 u32
attr Roll_SW_1 IODev 315
attr Roll_SW_1 event-on-change-reading state
attr Roll_SW_1 group Rolladen Sollwerte
attr Roll_SW_1 icon fts_shutter_updown
attr Roll_SW_1 stateFormat {sprintf("%.1f", ReadingsVal($name,"state",0))."  %"}


Position lesen:
define Roll_POS_1 S7_ARead db 1002 0 u32
attr Roll_POS_1 IODev 315
attr Roll_POS_1 event-on-change-reading state
attr Roll_POS_1 group Rolladen Position
attr 000_VISU_POS_32 stateFormat {sprintf("%.1f", ReadingsVal($name,"state",0))."  %"}


Soweit funktioniert das schreiben und lesen:

Mein anliegen ist es jetzt - die beiden Devices in einem zu vereinen und auf beide Werte Zugriff zu erhalten damit, die übersichtlicher dargestellt werden können und im Schritt 2 unter smartVISU unter einem GAD bedienen und visualisieren zu können.

Ich habe es bereits mit DUMMY und NOTIFY versucht habe es aber noch nicht geschafft beide Werte in einem Device zu vereinen.

define DUM_Rolladen_TEST dummy
attr DUM_Rolladen_TEST userReadings Sollwert{ ReadingsVal("Roll_SW_1","state","");; }


Der DUMMY liefert hier keinen Wert nur Fragezeichen.

über Notify:
define NOT_TEST notify DUM_Rolladen_TEST:state.* {fhem ("set DUM_Rolladen_TEST ".ReadingsVal("Roll_SW_1", "state",""))}


Im Moment habe ich mich etwas verlaufen  :-\ und finde keine passende Lösung bzw. ob ich hier auf dem richtigen Weg bin.

Gruß



schka17

Da bist du weit vom Weg abgekommen. Das erste Beispiel mit dem Dummy funktioniert so überhaupt nicht. Das notify musst du auf das Device triggern wo der Event erzeugt wird, ich habe null Erfahrung wie das mit der Logo funktioniert, am einfachsten du schaust mal im Event Monitor welche Events du bekommst, darauf kannst du ein notify triggern und Readings in einem dummy setzen. Umgekehrt, also wenn sich readings in diesem dummy ändern, also z.b. Sollwert, dann verwendest du ein zweites notify um den Sollwert in die Logo zu schreiben, ich vermute das geht über das setzten des Wertes im S7_AWrite device.


Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

justme1968

das lässt sich z.b. mit
einem readingsProxy lösen. such mal im forum. da gibt es beispiele für deinen anwendungsfall mit einer logo
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

auto_home

O.k. danke für die Hinweise - ich lese mich mal durch.

Zum generellen Verständnis - es ist aber möglich das Read und Write device in einem Device zusammen zu führen.

auto_home

Hallo,

ich habe mir nochmal readingsProxy angeschaut - hier finde ich aber nur Beispiele wie man aus einem  Mehrfachsensor einzelne readings separiert. Ich finde leider kein Beispiel - wie Mann zwei devices vereint !?

justme1968

du legst den readingsProxy auf das status/ist device an und verwendest in der setFn das soll device.

ich schaue mal ob ich die threads finde.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

auto_home

O.k. danke bin aktuell noch am tüfteln  :-[

Sollwert und Position sind aber jeweils Integer Werte von 0 bis 100.

justme1968

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

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

auto_home

#8
define EG_Rolladen_ESSZI_WEST readingsProxy Rol_POS_1:state
attr EG_Rolladen_ESSZI_WEST setFn {fhem("set Roll_SW_1 setList")}
attr EG_Rollladen_ESSZI_WEST setList state:0,25,50,75,100
attr EG_Rollladen_ESSZI_WEST room EG
attr EG_Rolladen_ESSZI_WEST group test1
attr EG_Rolladen_ESSZI_WEST event-on-change-reading state
attr EG_Rolladen_ESSZI_WEST webCmd state




Irgendwie drehe ich mich im Kreis. Es kommt auch kein Fehler im LogFile aber ich bekomme weder die Aktuelle Position noch kann ich den Sollwert auswählen.

auto_home

O.k. jetzt erhalte ich die aktuelle Position über das readingsProxy (Schreibfehler) nur steuern kann ich noch nicht.

justme1968

ist das set...setList wirklich das was du machen möchtest?

da muss das kommando hin das du in fhem von hand verwenden würdest. also etwas in der art:attr EG_Rolladen_ESSZI_WEST setFn {fhem("set Roll_SW_1 <kommando> $ARGS");;return undef}

das undef am ende ist dazu da das der readingsProxy nichts weiter macht da du das set kommando schon selber abgesetzt hast.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

auto_home

O.k.  - ich möchte, das nur die Werte 0, 25, 50, 75, 100 ausgewählt - und als Sollwert gesendet werden.


justme1968

das sollte gehen:attr EG_Rolladen_ESSZI_WEST setFn {fhem("set Roll_SW_1 $CMD");;return undef}
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

auto_home

define EG_Rolladen_ESSZI_WEST readingsProxy 100_VISU_POS_QM_00
attr EG_Rolladen_ESSZI_WEST setFn {fhem("set 100_VISU_SP_QM_00 $CMD");;return undef}
attr EG_Rollladen_ESSZI_WEST setList state:0,25,50,75,100
attr EG_Rollladen_ESSZI_WEST room EG
attr EG_Rolladen_ESSZI_WEST group test1
attr EG_Rolladen_ESSZI_WEST event-on-change-reading state
attr EG_Rolladen_ESSZI_WEST webCmd state


Wenn ich hier auf state Klicke kommt "unknown Argument state, chose one of

Was muss dann hier bei webCmd stehen ?

auto_home

O.k. ich kann jetzt die Werte auswählen aber im logFile steht dann " you have to Enter a numeric value " d.h. der Wert wird nicht gesendet.

justme1968

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

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

auto_home

Ich habe es jetzt hin bekommen den Sollwert zu schreiben und die Position zu lesen.

define EG_Rolladen_ESSZI_WEST readingsProxy 100_VISU_POS_QM_00
attr EG_Rolladen_ESSZI_WEST setFn {fhem("set 100_VISU_SP_QM_00 $ARGS");;return undef}
attr EG_Rolladen_ESSZI_WEST setList state:0,25,50,75,100
attr EG_Rolladen_ESSZI_WEST room EG
attr EG_Rolladen_ESSZI_WEST group test1
attr EG_Rolladen_ESSZI_WEST event-on-change-reading state


Jetzt muss ich noch schauen, das ich auf der Visu "Buttons" mit 0,25,50,75 und 100 hin bekomme damit ich nicht jedes mal den Umweg über das device gehen muss um den Sollwert zu senden.

Vielen Dank für deine Geduld und Unterstützung.