FHEM Forum

FHEM => Frontends => readingsGroup / readingsHistory => Thema gestartet von: Peedy2495 am 21 Februar 2017, 16:12:18

Titel: valueFormat: Vergleich mit anderem Reading [gelöst]
Beitrag von: Peedy2495 am 21 Februar 2017, 16:12:18
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
Titel: Antw:valueFormat: Vergleich mit anderem Reading
Beitrag von: Peedy2495 am 21 Februar 2017, 17:31:58
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 ...
Titel: Antw:valueFormat: Vergleich mit anderem Reading
Beitrag von: Peedy2495 am 22 Februar 2017, 10:24:31
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}\
  } \
}


Titel: Antw:valueFormat: Vergleich mit anderem Reading (Icon bei dayTemp und nightTemp)
Beitrag von: Peedy2495 am 22 Februar 2017, 18:34:49
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)"\
}