Hallo Leute,
nach einigem Tüfteln und Googeln trete ich etwas auf der Stelle.
Ich will mit valueFormat die im Thermostat vorgegebene Tagestemperatur mit der aktuellen Temperaturvorgabe vergleichen und die Ausgabe somit umformatieren, um im nächsten Schritt statt dem Numerischen Wert in diesem Falle das passende Icon anzeigen zu lassen.
Hier stehe ich gerade (3. Zeile):
attr ae_hz_ku valueFormat { \
if($READING eq "ValvePosition" && $VALUE ne "0"){$VALUE = int($VALUE/10)*10} \
elsif($READING eq "desired-temp" && $VALUE." C" eq {ReadingsVal("ae_hz_ku","R-dayTemp","0")}){$VALUE = "day"} \
... usw.
Ich habe an $Value noch " C" angefügt, da dieses beim Reading R-dayTemp noch am Wert angehängt ist.
Danke im vorraus für's mitmachen :-)
Peedy
Ich bin jetzt etwas weiter ... hatte ich den falschen Wert abgefragt
ich glaube ich hänge nur noch daran, dass die Abfragefunktion noch nicht richtig "eingebaut" ist:
elsif($READING eq "desired-temp" && $VALUE eq substr(ReadingsVal("hz_ku_Clima","R-dayTemp","0"), 0 ,-2)){$VALUE = "day"} \
die Funktion substr(ReadingsVal("hz_ku_Clima","R-dayTemp","0"), 0 ,-2) liefert schon den richtigen Rückgabewert ...
Bei der Webrecherche habe ich auch kein vergleichbares Beispiel gefunden ...
Ich habe die meissten Fehler ausgemerzt, jedoch bleibe ich bei diesem Test/Beispiel hängen:
if($READING eq "desired-temp"){$VALUE="day"};; \
... nun müsste ja ->day<- als String angezeigt werden ... tut es aber nicht :-(
So sieht es nun mit homogenen Variablenwerten aus:
attr ae_hz_ku valueFormat { \
if($READING eq "ValvePosition" && $VALUE ne "0"){$VALUE = int($VALUE/10)*10};; \
if($READING eq "desired-temp" && (sprintf("%.1f",substr(ReadingsVal("hz_ku_Clima","R-dayTemp",""), 0 ,-2))) eq $VALUE){$VALUE="day"};; \
if($READING eq "batteryLevel"){\
if($VALUE>=3){$VALUE=100} \
elsif($VALUE>=2.7){$VALUE=75}\
elsif($VALUE>=2.5){$VALUE=50}\
elsif($VALUE>=2.2){$VALUE=25} \
else{$VALUE=0}\
} \
}
An alle die es interessiert ... es funzt ...
Hier für alle, die etwas ähnliches vorhaben, hier der komplette Code des readingsgGroup:
define ae_hz_ku readingsGroup <%pm_Heizung>,<Soll>,<Setze>,<Ist>,<Ventil>,<Modus>,<Lock>,<Batterie> \
hz_ku_Clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-btnLock@hz_ku,batteryLevel@hz_ku \
### set font
attr ae_hz_ku cellStyle { "r:1"=>'style="font-weight:bold;;font-size:14px"', \
"r:2,c:0"=>'style="font-weight:bold"'}
attr ae_hz_ku commands { \
'ae_hz_ku.sollsetz'=>'desired-temp:5.0,12.0,17.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0', \
"controlMode.manual"=>"set %DEVICE controlMode auto", \
"controlMode.auto"=>"set %DEVICE controlMode manual", \
"R-btnLock.on"=>"set %DEVICE regSet btnLock off", \
"R-btnLock.off"=>"set %DEVICE regSet btnLock on" \
}
attr ae_hz_ku group Heizung Küche
attr ae_hz_ku mapping { \
hz_ku_Clima=>"Thermostat", \
'desired-temp' => }
attr ae_hz_ku noheading 1
attr ae_hz_ku room EG Küche
attr ae_hz_ku nolinks 1
attr ae_hz_ku valueFormat { \
ValvePosition => '{$VALUE = int($VALUE/10)*10}', \
'desired-temp' => '{\
if($VALUE eq (sprintf("%.1f",substr(ReadingsVal("hz_ku_Clima","R-dayTemp",""), 0 ,-2)))){$VALUE="day"} \
elsif($VALUE eq (sprintf("%.1f",substr(ReadingsVal("hz_ku_Clima","R-nightTemp",""), 0 ,-2)))){$VALUE="night"} \
}', \
batteryLevel => '{\
if($VALUE>=3){$VALUE=100} \
elsif($VALUE>=2.7){$VALUE=75} \
elsif($VALUE>=2.5){$VALUE=50} \
elsif($VALUE>=2.2){$VALUE=25} \
else{$VALUE=0}\
}' \
}
attr ae_hz_ku valueIcon { \
'controlMode.manual' => 'info_manual', \
'controlMode.auto' => 'info_auto', \
'controlMode.boost' => 'info_boost', \
'R-btnLock.on'=>'lock_closed', \
'R-btnLock.off'=>'lock_open', \
'desired-temp.day'=>'pm_Day', \
'desired-temp.night'=>'pm_Night', \
'batteryLevel.100'=>'measure_battery_100', \
'batteryLevel.75'=>'measure_battery_75', \
'batteryLevel.50'=>'measure_battery_50@F5FF10', \
'batteryLevel.25'=>'measure_battery_25@FB5909', \
'batteryLevel.0'=>'measure_battery_0@E50005', \
'controlMode.set_boost' => 'hourglass', \
'controlMode.set_auto' => 'hourglass', \
'controlMode.set_manual' => 'hourglass', \
'controlMode.set_day' => 'pm_Day', \
'controlMode.set_night' => 'pm_Night', \
'R-btnLock.set_on' => 'hourglass', \
'R-btnLock.set_off' => 'hourglass'\
}
attr ae_hz_ku valueSuffix { \
'desired-temp' => '{ return "" if( $VALUE eq "day" || $VALUE eq "night" );; return "°C";;}',\
'measured-temp'=>' °C',\
'ValvePosition'=>' %',\
"batteryLevel"=>"(".ReadingsVal($DEVICE,$READING,0)." V)"\
}