FHEM Forum

FHEM => Automatisierung => Thema gestartet von: FHEM_newbie am 20 Februar 2023, 10:14:45

Titel: [gelöst] readingsProxy: Wert kann nicht geändert werden
Beitrag von: FHEM_newbie am 20 Februar 2023, 10:14:45
Jetzt muss ich doch mal hier um Hilfe bitten, da ich aus der Commandref nicht ganz schlau werde:
Ich habe ein ReadingsProxy für einen Temperatur Offset angelegt, es kann positive, negative Werte oder Null annehmen. In der Commandref stehen einige Beispiele wie man bei einem Switch den Wert übergeben kann mit setFn oder valueFn. Wie würde ich jetzt einen beliebigen Wert an das Original Device übergeben?
attr proxy valueFn {($VALUE eq "on")?"off":"on"}
So funktioniert das ja nicht wirklich. Geht hier ein Platzhalter für den Wert, den man übergeben will?
Titel: Antw:readingsProxy: Wert kann nicht geändert werden
Beitrag von: JoWiemann am 20 Februar 2023, 12:25:48
Hm,

was ist den das originale Device. Am Besten mit List. Und an welches set im originalen Device soll denn ein Wert übergeben werden.

Grüße Jörg
Titel: Antw:readingsProxy: Wert kann nicht geändert werden
Beitrag von: FHEM_newbie am 20 Februar 2023, 23:07:09
Das Original Device ist ein Reading meiner Heizung, die per Modbus ausgelesen wird. Der List würde hier den Rahmen sprengen, da es doch recht viele Werte sind. Hier die betreffenden Zeilen:
obj-h213-reading Kinderzimmer_Offset
   obj-h213-set 1
   obj-h213-unpack s>

Der ReadingsProxy verweist dann eben auf Kinderzimmer_Offset bsher ohne Attribute (außer room).

Titel: Antw:readingsProxy: Wert kann nicht geändert werden
Beitrag von: frober am 21 Februar 2023, 20:10:59
Hier ein Bsp vor, wobei ich den Status anzeigen lasse und schalten kann, zusätzlich kann ich auch mittels Slider die percetage setzen.

defmod Beregnung_vorne readingsProxy MYSENSOR_2:status
attr Beregnung_vorne comment MySensor_2 (Brunnenschacht) Relais 1
attr Beregnung_vorne group Bewaesserung
attr Beregnung_vorne room Garten
attr Beregnung_vorne setFn {($CMD eq "percentage")?"$CMD $ARGS":($CMD eq "on")?"status on":"status off"}
attr Beregnung_vorne setList on off percentage:slider,0,1,100
attr Beregnung_vorne sortby 2
attr Beregnung_vorne valueFn {($VALUE eq "on")?"on":"off"}
attr Beregnung_vorne webCmd on:off:percentage


Anstelle slider kannst du alle widgetOverride nutzen.
Titel: Antw:readingsProxy: Wert kann nicht geändert werden
Beitrag von: FHEM_newbie am 22 Februar 2023, 23:57:20
Danke für das Beispiel, so richtig werde ich allerdings nicht schlau daraus, weil ich eben kein On oder Off habe:

defmod Kinderzimmer_Offset readingsProxy Heizung:Kinderzimmer_Offset
attr Kinderzimmer_Offset room Kinderzimmer
attr Kinderzimmer_Offset setFn {($CMD eq "setting")?"$CMD $ARGS":($CMD eq "on")?"status on":"status off"}
attr Kinderzimmer_Offset setList setting:slider,-3,1,3
attr Kinderzimmer_Offset valueFn {($VALUE eq "on")?"on":"off"}
attr Kinderzimmer_Offset webCmd setting


Jetzt bekomme ich einen Slider von -3 bis 3 hin, der aber weder den aktuellen Wert anzeigt, noch ans Original Device übergibt.
Titel: Antw:readingsProxy: Wert kann nicht geändert werden
Beitrag von: frober am 23 Februar 2023, 07:30:09
Laut deinem ersten Post möchtest du nur das Offset sehen uns setzen.

Funktioniert das setzen im Originaldevice und mit welchem Reading?

In der DEF beziehst du dich auf dieses. Dann solltest du den Offset schon einmal sehen.

valueFN brauchst bei Werten nicht.
Bei setFN sollte $ARGS alleine reichen.

Das was bei mir drin steht ist eine if elsif else Abfrage, damit ich Status und percetage setzen kann.

Bsp
defmod Kinderzimmer_Offset readingsProxy Heizung:setting
attr Kinderzimmer_Offset room Kinderzimmer
attr Kinderzimmer_Offset setFn $ARGS
attr Kinderzimmer_Offset setList setting:slider,-3,1,3
attr Kinderzimmer_Offset webCmd setting

Titel: Antw:readingsProxy: Wert kann nicht geändert werden
Beitrag von: FHEM_newbie am 24 Februar 2023, 14:58:17
Im Originaldevice funktioniert es mit z.B.:
set Kinderzimmer_Offset -2
Jetzt funktioniert es, vielen Dank!
Das $ARGS hatte mir gefehlt. Nochmal das gesamte ReadingsProxy:

defmod Kinderzimmer_Offset readingsProxy Heizung:Kinderzimmer_Offset
attr Kinderzimmer_Offset room Kinderzimmer
attr Kinderzimmer_Offset setFn $ARGS
attr Kinderzimmer_Offset setList Kinderzimmer_Offset:slider,-3,1,3


Der Slider zeigt jetzt nach Änderungen nicht den aktuellen Wert an, aber das ist eigentlich auch egal, der Offset an sich wird richtig gesetzt.
Titel: Antw:[gelöst] readingsProxy: Wert kann nicht geändert werden
Beitrag von: frober am 24 Februar 2023, 15:50:44
Kannst mal testen mit
attr Kinderzimmer_Offset valueFn $VALUE
ob sich der Slider aktualisiert.

Titel: Antw:[gelöst] readingsProxy: Wert kann nicht geändert werden
Beitrag von: frober am 24 Februar 2023, 19:46:15
Zitat von: frober am 24 Februar 2023, 15:50:44
Kannst mal testen mit
attr Kinderzimmer_Offset valueFn $VALUE
ob sich der Slider aktualisiert.

Das bringt nichts, aber mit einem
webCmd Kinderzimmer_Offset
siehst du den aktualisierten Slider im FHEMWEB.
Titel: Antw:[gelöst] readingsProxy: Wert kann nicht geändert werden
Beitrag von: FHEM_newbie am 24 Februar 2023, 21:45:29
Funktioniert so halbwegs, jetzt habe ich oben bei Device Overview einen Slider der sich aktualisiert und darunter einen zweiten, der immer wieder auf -3 springt, egal was man eingegeben hat.

Allerdings ist jetzt der Befehl den ich im ReadingsProxy Device setzen muss set Kinderzimmer_Offset Kinderzimmer_Offset -1
es wird also der Device Name / Readings Name gedoppelt...
Titel: Antw:[gelöst] readingsProxy: Wert kann nicht geändert werden
Beitrag von: frober am 24 Februar 2023, 21:59:48
Bei mir funktioniert das ohne Verdoppelung
defmod Test123 readingsProxy MYSENSOR_2:percentage
attr Test123 setFn $ARGS
attr Test123 setList percentage:slider,0,1,100
attr Test123 sortby 2
attr Test123 webCmd percentage


Der Slider hinter Set springt zurück, das hängt am readingsProxy. In meinem Originaldevice wird dieser auch aktualisiert.

Den Slider kannst du im FHEMWEB, nicht im Device, direkt setzen. Das Set wird auto. ausgeführt.
Titel: Antw:[gelöst] readingsProxy: Wert kann nicht geändert werden
Beitrag von: FHEM_newbie am 24 Februar 2023, 22:50:37
Okay, aber du musst auch "set Test123 percentage 15" ausführen, also ein Kommando mehr als im originalen Device, dort wäre es nur "set percentage 15"?
Titel: Antw:[gelöst] readingsProxy: Wert kann nicht geändert werden
Beitrag von: frober am 24 Februar 2023, 23:01:57
Nein, ist immer 'set Device Kommando Wert'

Einmal set Originaldevice Kommando
Einmal set readingsProxy Kommando

Im readingsProxy wird das dann intern auf das Original umgesetzt.