[gelöst] readingsProxy: Wert kann nicht geändert werden

Begonnen von FHEM_newbie, 20 Februar 2023, 10:14:45

Vorheriges Thema - Nächstes Thema

FHEM_newbie

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?

JoWiemann

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
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

FHEM_newbie

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).


frober

#3
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.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

FHEM_newbie

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.

frober

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

Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

FHEM_newbie

#6
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.

frober

Kannst mal testen mit
attr Kinderzimmer_Offset valueFn $VALUE
ob sich der Slider aktualisiert.

Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

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.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

FHEM_newbie

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...

frober

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.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

FHEM_newbie

#11
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"?

frober

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.


Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...