ReadingsGroup - Device im command ersetzen

Begonnen von SandroK, 20 Dezember 2016, 18:22:48

Vorheriges Thema - Nächstes Thema

SandroK

Hallo,

ich bin bald am verzweifeln, vielleicht ist es auch keine Anfängerfrage mehr  ;)

Wie kann ich im command einer Readingsgroup das Device mit regex vernüftig ersetzen ?
Beim füllen klappt das schon ganz gut, bspw. mit VMCtrl@{$DEVICE=~s/_TEMP/_HZK/;$DEVICE;}
aber beim command will es gar nicht. Habe auch schon mal das in die 99-Utils.pm ausgelagert, da hatte
es einmal geklappt, aber dann für alle und das ganze FHEM stürtzte ab.

Hier mal der Code, mit dem ich das ganze angelegt habe:

define HZK_Settings readingsGroup <Raum>,<Feuchte>,<Tist>,<Ventil>,<Heizen>,<Absenkung>,<Mode>,<Tsoll>,<-->,<->,<+>,<++>,<Batterie>\
(KUECHE|KIZI_M|KIZI_D|WZ|GWC|GALLERIE|FLUR|BUERO|BAD)_TEMP:humidity,temperature,VStatus@{$DEVICE=~s/_TEMP/_HZK/;;$DEVICE;;},VMode@{$DEVICE=~s/_TEMP/_HZK/;;$DEVICE;;},VACtrl@{$DEVICE=~s/_TEMP/_HZK/;;$DEVICE;;},VMCtrl@{$DEVICE=~s/_TEMP/_HZK/;;$DEVICE;;},state@{$DEVICE=~s/_TEMP/_SW_T/;;$DEVICE;;},<%18>,<%20>,<%22>,<%24>,battery
attr HZK_Settings cellStyle style = "text-align:left;;padding:1px 6px 1px 6px;; font-weight:bold;;"
attr HZK_Settings commands { 'HZK_Settings.18' => 'set {GetSetpointHZK($DEVICE)} state 18', 'HZK_Settings.20' => 'set {GetSetpointHZK($DEVICE)} state 20', 'HZK_Settings.22' => 'set {GetSetpointHZK($DEVICE)} state 22', 'HZK_Settings.24' => 'set {GetSetpointHZK($DEVICE)} state 24' }
attr HZK_Settings icon audio_playlist
attr HZK_Settings mapping %ALIAS
attr HZK_Settings nameStyle style="text-align:right;;font-weight:normal;;color:#606060"
attr HZK_Settings room Heizkreise
attr HZK_Settings valueFormat { 'temperature' => "%0.1f &deg;;C",'humidity' => "%.0f%%" }
attr HZK_Settings valueIcon {'battery.ok' => 'batterie@lightgreen', 'battery.low' => 'batterie@red', 'VStatus.ZU' => 'V_CLOSE_H.png',
'VStatus.AUF' => 'V_OPEN_H.png'}
attr HZK_Settings valueStyle { if($READING eq "temperature" && $VALUE > 20) { 'style="color:green"' }
elsif( $READING eq "temperature" && $VALUE <= 20 ) { 'style="color:blue"' }
elsif( $READING eq "temperature" && $VALUE > 22 ) { 'style="color:red"' }
elsif( $READING eq "state" ) { 'style="color:yellow"' } else { 'style="color:#ccc"' }}


der nachfolgende Screenshot zeigt das ganze mal.

Noch etwas, meine Heizungssteuerung besteht aus einem LaCrosse Sensor und 2 ModBus-Registern, deshalb benötige ich 3 "Devices"
je Heizkreis. Vielleicht gibt es ja noch ganz andere Lösungen oder Tipps.

VD und VG
Sandro

justme1968

so müsste es z.b. gehen:

'HZK_Settings.18' => '{"set ". GetSetpointHZK($DEVICE) ." state 18"}'

oder du baust dir mit cmdalias jeweils ein passendes set kommando für $DEVICE das dann das kommando auf GetSetpointHZK($DEVICE) umbiegt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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