Hallo,
ich habe viele derartige Einträge im log mit
2015.10.18 00:23:15 2: Missing right curly or square bracket at (eval 954) line 2, at end of line
syntax error at (eval 954) line 2, at EOF
Ich vermute das kommt von meiner ReadingGroup
define Funkthermostate readingsGroup <%hc_wht_regler>,<Soll>,<Ist>,<Ventil>,<Modus>,<Lock>,<Batterie> \ HM_3XXX3_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@HM_3XXX3,batteryLevel@HM_3XXX3 \ <>,<>,<>,<>,<>,<>,<>,<> \ HM_3XXX3_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@HM_3XXX3,batteryLevel@HM_3XXX3 \ <>,<>,<>,<>,<>,<>,<>,<> \ HM_3XXX3_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@HM_3XXX3,batteryLevel@HM_3XXX3 \ <>,<>,<>,<>,<>,<>,<>,<> \ HM_3XXX3_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@HM_3XXX3,batteryLevel@HM_3XXX3
attr Funkthermostate commands {"controlMode.manual"=>"set %DEVICE controlMode auto","controlMode.auto"=>"set %DEVICE controlMode manual","R-globalBtnLock.on"=>"set %DEVICE regSet globalBtnLock off","R-globalBtnLock.off"=>"set %DEVICE regSet globalBtnLock on"}
attr Funkthermostate room Temperatur
attr Funkthermostate valueFormat {if($READING eq "ValvePosition" && $VALUE ne "0"){$VALUE = int($VALUE/10)*10} elsif($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}
attr Funkthermostate valueIcon {'controlMode.manual' => 'sani_heating_manual@795CFF','controlMode.auto' =>'sani_heating_automatic@FFC13A', 'controlMode.boost' => 'sani_heating_boost@FB0C02','R-globalBtnLock.on'=>'secur_locked@F7301D','R-globalBtnLock.off'=>'secur_open@0CFB0C','ValvePosition.0' => 'sani_heating_level_0@002AE0','ValvePosition.10' =>'sani_heating_level_10@F8D53D','ValvePosition.20' => 'sani_heating_level_20@FF9341','ValvePosition.30' =>'sani_heating_level_30@F17F3F','ValvePosition.40' => 'sani_heating_level_40@E46C3C','ValvePosition.50' =>'sani_heating_level_50@DE3B3A','ValvePosition.60' => 'sani_heating_level_60@A30D2D','ValvePosition.70' =>'sani_heating_level_70@B40A23','ValvePosition.80' => 'sani_heating_level_80@C40619','ValvePosition.90' =>'sani_heating_level_90@D4030F','ValvePosition.100' =>'sani_heating_level_100@E50005','batteryLevel.100'=>'measure_battery_100@0CFB0C','batteryLevel.75'=>'measure_battery_75@42BC0A','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','R-globalBtnLock.set_on' => 'hourglass','R-globalBtnLock.set_off' => 'hourglass'}
attr Funkthermostate valueStyle {if($READING eq "measured-temp"){my $t=$VALUE;;my $d=ReadingsVal($DEVICE,'desired-temp',0);;if($t-$d>=1){'style="color:rgb(251,63,11);;"'}elsif($t-$d<=-1){'style="color:rgb(79,58,251);;"'} else{'style="color:rgb(12,251,12);;"'}}}
attr Funkthermostate valueSuffix {"desired-temp"=>" °C", "measured-temp"=>" °C", "ValvePosition"=>" ".ReadingsVal($DEVICE,$READING,0)." %", "batteryLevel"=>" Volt"}
Leider finde ich den Fehler nicht, kann evtl. jemand helfen ?
Gruss
Ralf
deinem valueFormat fehlen zwei schliessende klammern:attr Funkthermostate valueFormat {if($READING eq "ValvePosition" && $VALUE ne "0"){$VALUE = int($VALUE/10)*10} elsif($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}}}
ich glaube diese variante wäre übersichtlicher:{ 'ValvePosition' => '{int($VALUE/10)*10}', 'batteryLevel' => '{return 100 if($VALUE>=3); return 75 if($VALUE>=2.7); return 50 if($VALUE>=2.5); return 25 if($VALUE>=2.2); return 0;}' }
gruss
andre
ps: nicht ins config file eintragen sondern im web frontend bei den attributen eingeben.
Vielen Dank !!
Gruss
Ralf
Also nochmals danke, Fehlermeldungen sind weg.
Noch eine Frage, nun wird die Batteriespannung nicht mehr angezeigt, nur noch das Symbol.
Was mache ich da noch falsch ?
(Ich versuche diese Readingsgroup anzupassen :
http://www.fhemwiki.de/wiki/ReadingsGroup#Heizungsteuerung_f.C3.BCr_HM_Wand-_und_Heizk.C3.B6rperthermostate )
Gruss
Ralf
zeig mal ein list auf die readingsGroup und einen screenshot.
gruss
andre
Hallo,
anbei der Code und ein Screenshot.
Nicht wundern, dass da nur ein Thermostat und das
gleich 4 mal auftaucht----das ist schon OK so - nur zum Testen....
Gruss
Ralf
##############################################
# Readings Group für Homematic-Thermostate #
##############################################
define Funkthermostate readingsGroup <%hc_wht_regler>,<Soll>,<Ist>,<Ventil>,<Modus>,<Lock>,<Batterie> \ HM_3XXX3_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@HM_3XXX3,batteryLevel@HM_3XXX3 \ <>,<>,<>,<>,<>,<>,<>,<> \ HM_3XXX3_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@HM_3XXX3,batteryLevel@HM_3XXX3 \ <>,<>,<>,<>,<>,<>,<>,<> \ HM_3XXX3_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@HM_3XXX3,batteryLevel@HM_3XXX3 \ <>,<>,<>,<>,<>,<>,<>,<> \ HM_3XXX3_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@HM_3XXX3,batteryLevel@HM_3XXX3
attr Funkthermostate alias Individuelle Einstellungen der Funkthermostate
attr Funkthermostate commands {"controlMode.manual"=>"set %DEVICE controlMode auto","controlMode.auto"=>"set %DEVICE controlMode manual","R-globalBtnLock.on"=>"set %DEVICE regSet globalBtnLock off","R-globalBtnLock.off"=>"set %DEVICE regSet globalBtnLock on"}
attr Funkthermostate room Heizung
attr Funkthermostate valueFormat {if($READING eq "ValvePosition" && $VALUE ne "0"){$VALUE = int($VALUE/10)*10} elsif($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}}}
attr Funkthermostate valueIcon {'controlMode.manual' => 'sani_heating_manual@795CFF','controlMode.auto' =>'sani_heating_automatic@FFC13A', 'controlMode.boost' => 'sani_heating_boost@FB0C02','R-globalBtnLock.on'=>'secur_locked@F7301D','R-globalBtnLock.off'=>'secur_open@0CFB0C','ValvePosition.0' => 'sani_heating_level_0@002AE0','ValvePosition.10' =>'sani_heating_level_10@F8D53D','ValvePosition.20' => 'sani_heating_level_20@FF9341','ValvePosition.30' =>'sani_heating_level_30@F17F3F','ValvePosition.40' => 'sani_heating_level_40@E46C3C','ValvePosition.50' =>'sani_heating_level_50@DE3B3A','ValvePosition.60' => 'sani_heating_level_60@A30D2D','ValvePosition.70' =>'sani_heating_level_70@B40A23','ValvePosition.80' => 'sani_heating_level_80@C40619','ValvePosition.90' =>'sani_heating_level_90@D4030F','ValvePosition.100' =>'sani_heating_level_100@E50005','batteryLevel.100'=>'measure_battery_100@0CFB0C','batteryLevel.75'=>'measure_battery_75@42BC0A','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','R-globalBtnLock.set_on' => 'hourglass','R-globalBtnLock.set_off' => 'hourglass'}
attr Funkthermostate valueStyle {if($READING eq "measured-temp"){my $t=$VALUE;;my $d=ReadingsVal($DEVICE,'desired-temp',0);;if($t-$d>=1){'style="color:rgb(251,63,11);;"'}elsif($t-$d<=-1){'style="color:rgb(79,58,251);;"'} else{'style="color:rgb(12,251,12);;"'}}}
attr Funkthermostate valueSuffix {"desired-temp"=>" °C", "measured-temp"=>" °C", "ValvePosition"=>" ".ReadingsVal($DEVICE,$READING,0)." %", "batteryLevel"=>" Volt"}
Ich gehe davon aus, dass du das Problem schon gelöst hast. Bin auf der Suche nach was anderem über deinen Post gestolpert ... Lösung deines Problems ist ganz einfach. Übernimm einfach alles aus dem Beispiel ...
Ich poste hier die Lösung weil es viele Postings zu Readingsgroup gibt aber nur wenige die Lösung derer Probleme.
"batteryLevel"=>" (".ReadingsVal($DEVICE,$READING,0)." V)"
und nicht wie du nur Bruchteile ...
"batteryLevel"=>" Volt"
wenn du Volt statt V willst ...
"batteryLevel"=>" (".ReadingsVal($DEVICE,$READING,0)." Volt)"
Komplettes Attribut aus der Vorlage:
attr heatingInfo valueSuffix {"desired-temp"=>" °C", "measured-temp"=>" °C",
"ValvePosition"=>" (".ReadingsVal($DEVICE,$READING,0)." %)",
"humidity"=>" ".ReadingsVal($DEVICE,$READING,0)." % RH",
"batteryLevel"=>" (".ReadingsVal($DEVICE,$READING,0)." V)"}