Übersicht über Heizungswerte, Fragen zur Umsetzung

Begonnen von Unicorn, 20 November 2016, 02:38:54

Vorheriges Thema - Nächstes Thema

Unicorn

Hallo zusammen!

Als FHEM-Anfänger bastel ich gerade an meiner Heizungssteuerung mit Homematic Heizungsreglern und habe ich verschieden Code-Schnipsel aus dem Forum in Wiki zusammengetragen.

Die Aufgabe: Ich möchte eine übersichtliche Darstellung der wichtigsten Werte von 5 Heizungen und einem Wandthermostat. Außerdem möchte ich auch ein paar Werte setzen können.
Das meiste habe ich in einer ReadingsGroup hinbekommen, allerdings funktioniert noch nicht alles und ich habe keine Lösung gefunden, sodass ich etwas Hilfe benötige.

Die Fragen:

  • Die Tages- und Nachttemperatur möchte ich eigentlich auch einstellbar haben. Im Wiki habe ich als Parameternamen "dayTemp" bzw. "nightTemp" und als Befehl "dayTemp:" bzw. "nightTemp:" gefunden.
    Bei mir heißen die Parameter R-dayTemp und R-nightTemp. Weder mit R-dayTemp: noch mit dayTemp: habe ich das einstellbar bekommen. Wie heißt der richtige Befehl?

  • Anstatt der Anzeige der Ventilstellung als Symbol und Zahl möchte ich eine Balkenanzeige probieren. wie im Wiki beschrieben habe in eine Funktion Balkenanzeige in die 99_myUtils.pm eingebaut, was auch in einer eigenen Readingsgroup nur zur Anzeige der Ventilstellung funktioniert.
    Im Code für die Heizungswerte wird valueStyle aber auch für andere Formatierungen verwendet und dann klappt es nicht mehr mit der Balkenanzeige. Hat mir jemand einen Tip, was ich falsch mache?

  • in dem Zusammenhang: auch bei der eigenen ReadingsGoup wird manchmal der Code der Routine anstatt dem Balken angezeigt. Das schein mir immer nach dem Einlesen des Vertes vom Ventil zu passieren und ändert sich dann irgendwann wieder. Ist das normal?

  • Eigentlich möchte ich in der ersten Spalte nicht den Kanal, sondern den Gerätenamen stehen haben. Das hat am Anfang mit
              attr Heizungswerte mapping $DEVICE
    auch ganz gut geklappt, aber nun verwende ich auch andere mappings und bekomme das nicht mehr hin. Mein Versuch war u.a.
              attr Heizungswerte mapping {$DEVICE, 'desired-temp' => }.
    Wie muss ich das angeben?

Mein Code für die Übersicht:
# Übersicht Heizungswerte
define Heizungswerte readingsGroup <%sani_heating>,<Ist>,<Luftfeuchte>,<Soll>,<Ventil>,<Tagestemp.>,<Nachttemp.>,<Mode>,<Batterie> WZ.Thermostat_Climate:measured-temp,humidity@WZ.Thermostat_Weather,desired-temp,<>,R-dayTemp,R-nightTemp,controlMode,[Bb]atteryLevel@WZ.Thermostat \ WZ.Heizung_Clima:measured-temp,<>,desired-temp,ValvePosition,R-dayTemp,R-nightTemp,controlMode,[Bb]atteryLevel@WZ.Heizung \ SZ.Heizung_Clima:measured-temp,<>,desired-temp,ValvePosition,R-dayTemp,R-nightTemp,controlMode,[Bb]atteryLevel@SZ.Heizung \ AZ.Heizung_Clima:measured-temp,<>,desired-temp,ValvePosition,R-dayTemp,R-nightTemp,controlMode,[Bb]atteryLevel@AZ.Heizung \ KU.Heizung_Clima:measured-temp,<>,desired-temp,ValvePosition,R-dayTemp,R-nightTemp,controlMode,[Bb]atteryLevel@KU.Heizung \ BZ.Heizung_Clima:measured-temp,<>,desired-temp,ValvePosition,R-dayTemp,R-nightTemp,controlMode,[Bb]atteryLevel@BZ.Heizung
attr Heizungswerte nameStyle style="color:yellow"
attr Heizungswerte room Heizung,Wohnung
attr Heizungswerte valueFormat { if ($READING eq 'ValvePosition') {return   '0' if ($VALUE eq '0');; return  '10' if ($VALUE <=  10);; return  '20' if ($VALUE <=  20);; return  '30' if ($VALUE <=  30);; return  '40' if ($VALUE <=  40);; return  '50' if ($VALUE <=  50);; return  '60' if ($VALUE <=  60);; return  '70' if ($VALUE <=  70);; return  '80' if ($VALUE <=  80);; return  '90' if ($VALUE <=  90);; return '100' if ($VALUE <= 100) };; if ($READING eq 'batteryLevel') {return   '0' if ($VALUE < 1.9 );; return  '25' if ($VALUE < 2.1 );; return  '50' if ($VALUE < 2.3 );; return  '75' if ($VALUE < 2.5 );; return '100' if ($VALUE => 2.5 ) };; return $VALUE }
attr Heizungswerte valueIcon {'ValvePosition.0' => 'sani_heating_level_0@green','ValvePosition.10' => 'sani_heating_level_10@green','ValvePosition.20' => 'sani_heating_level_20@green','ValvePosition.30' => 'sani_heating_level_30@yellow','ValvePosition.40' => 'sani_heating_level_40@yellow','ValvePosition.50' => 'sani_heating_level_50@yellow','ValvePosition.60' => 'sani_heating_level_60@orange','ValvePosition.70' => 'sani_heating_level_70@orange','ValvePosition.80' => 'sani_heating_level_80@orange','ValvePosition.90' => 'sani_heating_level_90@red','ValvePosition.100' => 'sani_heating_level_100@red', 'batteryLevel.0' => 'measure_battery_0@red','batteryLevel.25' => 'measure_battery_25@red','batteryLevel.50' => 'measure_battery_50@orange','batteryLevel.75' => 'measure_battery_75@green','batteryLevel.100' => 'measure_battery_100@green', 'window.closed' => 'fts_window_1w@lightgreen', 'window.open' => 'fts_window_1w_open@red'}
attr Heizungswerte valueStyle { if ($READING eq "measured-temp") { if ($VALUE >  23){'style="color:red"'} elsif ($VALUE >  20){'style="color:green"'} elsif ($VALUE <= 20){'style="color:blue"'} else {'style="color:gray"'} }, if ($READING eq 'ValvePosition') {Balkenanzeige ($VALUE)} }
attr Heizungswerte valueSuffix {'ValvePosition' => '  '.ReadingsVal($DEVICE,$READING,0).' %', 'desired-temp' => ' °C', 'measured-temp' => ' °C', "humidity" => '% RH', "batteryLevel" => " ".ReadingsVal($DEVICE,$READING,0)." V"}
attr Heizungswerte commands {'desired-temp' => 'desired-temp:', 'controlMode' => 'controlMode:', 'R-dayTemp' => 'dayTemp:', 'R-nightTemp' => 'nightTemp:'}
attr Heizungswerte mapping {'desired-temp' => }


Die einzelne Übersicht der Ventilstellungen mit Balkenanzeige:
define Ventilstellungen readingsGroup .*:ValvePosition
attr Ventilstellungen icon sani_heating_temp
attr Ventilstellungen room Heizung
attr Ventilstellungen valueStyle {Balkenanzeige($VALUE)}