Ich wollte in meinen Reading-Groups nicht nur stumpf den Batteriezustand darstellen, sondern wenn die HM-CC-RT-DN schon eine Spannung liefern, diese etwas aufbereiteter darstellen.
Definition sieht dann zB so aus:
<%sani_heating>,<Soll>,<Ist>,<Regler>,<Modus>,<Lock>,<Bat>
.*_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@{getDevice($DEVICE)},<{batAverageLevel($DEVICE)}>
sub batToLevel($) {
my $device = shift;
$device = InternalVal($device,"device",$device);
my $val = ReadingsVal($device,"batteryLevel",0 );
return '%measure_battery_100@green' if $val > 3.0;
return '%measure_battery_75@green' if $val > 2.7;
return '%measure_battery_50@green' if $val > 2.4;
return '%measure_battery_25@orange' if $val > 2.1;
return '%measure_battery_0@red';
}
Da gelegentlich, gerade im Grenzbereich die Werte auch gerne mal zappeln, nutze ich die myAverage-Funktion die ich irgendwo aus dem Wiki gezogen habe, um das Ergebnis etwas zu glätten.
sub batAverageLevel($) {
my $device = shift;
$device = InternalVal($device,"device",$device);
my $val = myAverage("10800", "FileLog_Battery", "4:$device\\sbatteryLevel::");
return '%measure_battery_100@green' if $val > 3.0;
return '%measure_battery_75@green' if $val > 2.7;
return '%measure_battery_50@green' if $val > 2.4;
return '%measure_battery_25@orange' if $val > 2.1;
return '%measure_battery_0@red';
}
Ein Beispiel wie es ausschaut ist angehängt.
Hi moemoe,
sieht hut aus ;)
woher hast Du di ecoolen icon´s
könntest Du nach die restlichen attr... posten ?
danke
kvo
Die Icons sind mitgeliefert ;)
Ich habe hier gerade leider keinen weiteren Zugriff auf die Config und auswendig weiß ich weitere attrs auch nicht.
Danke für den Anstoss, nette Idee, gleich mal umgesetzt (aber ohne myUtils :) )
ZitatDie Icons sind mitgeliefert ;)
wo liegen diese den ? :'(
Kannst ja die config später mal posten !
gruss
kvo1
Scroll mal in fhem in einem device ganz nach unte und klick mal 'select icon' :)
http://www.fhemwiki.de/wiki/Icons
oder im fhem ordner www/images
Cool sieht das aus moemoe,
ob das mit meinen Stellreglern auch geht? Wo gibst Du den Code eigentlich ein? In der myUtils?
Gruß
Micha
Zitat von: chris1284 am 19 Dezember 2014, 16:09:09
Scroll mal in fhem in einem device ganz nach unte und klick mal 'select icon' :)
http://www.fhemwiki.de/wiki/Icons
oder im fhem ordner www/images
schon klar ...... ich habe wohl das falsche Verzeichnis / den falsche Path ... aber in Default stehen die nicht ! ???
attr WEB iconPath default:kvo
scheinbar nicht klar: http://www.fhemwiki.de/wiki/Icons#Mehr_Icons_zur_Auswahl (http://www.fhemwiki.de/wiki/Icons#Mehr_Icons_zur_Auswahl)
Hallo Andre
danke, ich vermute das es sich hier um svg-Datei handelt und
diese kann ich nicht , wie vom Chris1284 beschrieben (Scroll mal in fhem in einem device ganz nach unte und klick mal 'select icon')
auswählen (liegt sicher an mir , nur woran).?
kvo1
hast du den link gelesen? da steht was du tun musst um die SVG icons zu bekommen ...
laut wiki müste er die schon haben
ZitatGrundsätzlich sind bei aktuellen fhem-Installationen die meisten Icons standardmäßig aktiviert. Die Ordner default, openautomation und fhemSVG sind standardmäßig aktiviert,
wie bei mir auch zb. die batterie liegt auch in fhemSVG...
da seine clima-channels auch noch climart tr heissen vermute ich eine sehr alste fhem version. ich hatte ja schon in readingsgroup zu einem update geraten.
weisst du obman 2 farben für icons definieren kann? der schwarze rand der oben genommenen batterie ist etwas doof bei schwarzem background. ich habe im svg selbst schon die randfarbe auf weiss gesetzt, wird aber offensichtlich durch fhem überschrieben
Zitatda seine clima-channels auch noch climart tr heissen vermute ich eine sehr alste fhem version. ich hatte ja schon in readingsgroup zu einem update geraten.
sorry , aber die Fhem Version ist aktuell.
Das mit dem clima-channels wird beim Update ja nicht automatisch umgestellt !? nur wenn Du neue RT´s anlegst !
@chris1284: er hat die icons aber sein iconPath ist falsch:
Zitatattr WEB iconPath default:kvo
man kann nur eine farbe setzen und das ist auch die der umrandung die sonst automatisch style abhängig gesetzt wird.
ich sehe gerade das das bei diesen 5 batterie icons nicht so ist sondern hier die füllfarbe automatisch angepasst wird. das 25% icon wird gar nicht gefüllt. das habe ich eben korrigiert.
wenn die rahmenfarbe nicht zu deinem style passt musst du dir die icons kopieren und die farben anpassen.
gruss
andre
Hallo Andre, chris1284
Zitat von: justme1968 am 19 Dezember 2014, 16:52:57
hast du den link gelesen? da steht was du tun musst um die SVG icons zu bekommen ...
klar hatte ich den Link gelesen, hat das Problem auch erkannt.
Ich habe meine WEB-Definitionen (auch WEBphone und WEBtablet) in einen web.cfg ausgelagert und
per include geladen.
Dort steht attr WEB iconPath fhemSVG:openautomation:default:icons_small ... was aber nicht geladen wird.
Wenn ich das in die fhem.cfg packe, dann tut´s !
Danke nochmal !
Klaus
danke andre! noch besser war die Kontur in Pfad umzuwandeln, nun passt sich das ganze icon an.
ich habe die geänderten mal angehängt
Hi chris1284,
das sieht echt Super COOL aus , ich bin begeistert , hätte ich auch gern so.
Würdest Du die RG hier bereitstellen ?
gruss
kvo1
@chris1284: dafür war ich zu faul :). habe deine version eingecheckt.
gruss
andre
@andre: danke
@kv01: gerne. hier der auszug aus der fhem.cfg da ich keine myUtils nutze ist der define recht "komplex" oder auch unübersichtlich ;D
define HeizungRg readingsGroup <%sani_heating>,<>,<Soll>,<>,<Soll neu>,<>,<Ist>,<>,<Ventil>,<>,<Modus>,<>,<Batterie>,<>,<Boost>,<>,<Auto On>,<>,<Manu On>\
.*._Clima:,<>,desired-temp,<>,<sollsetz>,<>,measured-temp,<>,ValvePosition,<>,controlMode,<>,<{if(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"batteryLevel","0")>=3.0){"%my_battery_100\@green"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"batteryLevel","0")>=2.7){"%my_battery_75\@green"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"batteryLevel","0")>=2.5){"%my_battery_50\@green"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"batteryLevel","0")>=2.2){"%my_battery_25\@orange"}else{"%my_battery_0\@red"}}>,<>,<%sani_heating_boost>,<>,<%sani_heating_automatic>,<>,<%sani_heating_manual>
attr HeizungRg commands {'HeizungRg.sollsetz'=>'desired-temp:5.0,16.0,18.0,19.0,20.0',"HeizungRg.sani_heating_boost"=>"set %DEVICE controlMode boost","HeizungRg.sani_heating_automatic"=>"set %DEVICE controlMode auto","HeizungRg.sani_heating_manual"=>"set %DEVICE controlMode manual"}
attr HeizungRg fp_02_Heizung 75,125,0,
attr HeizungRg mapping {az_hz_Clima => "Büro",bz_hz_Clima => "Bad",ku_hz_Clima=> "Küche",sz_hz_Clima=> "SZ",wz_hz_Clima=> "WZ",'desired-temp' => ''}
attr HeizungRg nameStyle style="text-align:left;;"
attr HeizungRg noheading 1
attr HeizungRg nolinks 1
attr HeizungRg room 30_Heizung,99_Floorplans
attr HeizungRg valueFormat {if(($READING eq "measured-temp")or( $READING eq "desired-temp") ){ "$VALUE °C"}elsif(($READING eq "ValvePosition" && $VALUE ne "0")){$VALUE = 1}}
attr HeizungRg valueIcon {'controlMode.manual' => 'sani_heating_manual','controlMode.auto' => 'sani_heating_automatic','ValvePosition.0' => 'sani_heating@blue','ValvePosition.1' => 'sani_heating@red'}
@chris1284
herzlichen Dank!
kvo1
Zitat von: chris1284 am 19 Dezember 2014, 19:47:33
danke andre! noch besser war die Kontur in Pfad umzuwandeln, nun passt sich das ganze icon an.
ich habe die geänderten mal angehängt
Guten Abend,
habe die RG gleich mal bei mir eingepflegt und sieht schon ganz gut aus. Funktionieren tut alles soweit. Das einzige was fehlt sind die Bezeichnungen der Thermostate. Habe das og. Script meiner Knorrig angepasst. Hab ich etwas falsch gemacht.
define HeizungRg readingsGroup <%sani_heating>,<>,<Soll>,<>,<Soll neu>,<>,<Ist>,<>,<Ventil>,<>,<Modus>,<>,<Batterie>,<>,<Boost>,<>,<Auto On>,<>,<Manu On>\
.*._Clima:,<>,desired-temp,<>,<sollsetz>,<>,measured-temp,<>,ValvePosition,<>,controlMode,<>,<{if(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"batteryLevel","0")>=3.0){"%my_battery_100\@green"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"batteryLevel","0")>=2.7){"%my_battery_75\@green"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"batteryLevel","0")>=2.5){"%my_battery_50\@green"}elsif(ReadingsVal(substr("$DEVICE",0,length("$DEVICE")-6),"batteryLevel","0")>=2.2){"%my_battery_25\@orange"}else{"%my_battery_0\@red"}}>,<>,<%sani_heating_boost>,<>,<%sani_heating_automatic>,<>,<%sani_heating_manual>
attr HeizungRg commands {'HeizungRg.sollsetz'=>'desired-temp:5.0,16.0,18.0,19.0,20.0,21.0,22.0',"HeizungRg.sani_heating_boost"=>"set %DEVICE controlMode boost","HeizungRg.sani_heating_automatic"=>"set %DEVICE controlMode auto","HeizungRg.sani_heating_manual"=>"set %DEVICE controlMode manual"}
attr HeizungRg mapping {HZ.Kueche_Clima => "Küche", HZ.Wohnzimmer_Clima => "Wohnzimmer", HZ.TV_Clima=> "TV", HZ.Bad_Clima=> "Bad", HZ.Marvin_Clima=> "Marvin", 'desired-temp' => ''}
attr HeizungRg nameStyle style="text-align:left;;"
attr HeizungRg noheading 1
attr HeizungRg nolinks 1
attr HeizungRg room Heizung
attr HeizungRg valueFormat {if(($READING eq "measured-temp")or( $READING eq "desired-temp") ){ "$VALUE °C"}elsif(($READING eq "ValvePosition" && $VALUE ne "0")){$VALUE = 1}}
attr HeizungRg valueIcon {'controlMode.manual' => 'sani_heating_manual','controlMode.auto' => 'sani_heating_automatic','ValvePosition.0' => 'sani_heating@blue','ValvePosition.1' => 'sani_heating@red'}
Wie schaut es denn aus , wenn Du
Zitatattr HeizungRg mapping {HZ.Kueche_Clima => "Küche", HZ.Wohnzimmer_Clima => "Wohnzimmer", HZ.TV_Clima=> "TV", HZ.Bad_Clima=> "Bad", HZ.Marvin_Clima=> "Marvin", 'desired-temp' => ''}
mal wegläst ?
Du kannst ja auch ein alias für jeden Kanal (hier 4) definieren
also ein alias Namens Küche für HZ.Kueche_Clima.
gruss
kvo1
Guten Morgen,
danke die Namen sind jetzt drin doch leider auch desired Temp. Bekomme ich das irgendwie weg?
über das mapping
attr HeizungRg mapping {'desired-temp' => ''}
Perfekt. Danke.
@coolice:
Zitatattr HeizungRg mapping {HZ.Kueche_Clima => "Küche", HZ.Wohnzimmer_Clima => "Wohnzimmer", HZ.TV_Clima=> "TV", HZ.Bad_Clima=> "Bad", HZ.Marvin_Clima=> "Marvin", 'desired-temp' => ''}
die keys (das was jeweils links vom => operator steht) müssen in anführungszeichen stehen. also so:
attr HeizungRg mapping {'HZ.Kueche_Clima' => "Küche", 'HZ.Wohnzimmer_Clima' => "Wohnzimmer", 'HZ.TV_Clima'=> "TV", 'HZ.Bad_Clima'=> "Bad", HZ.Marvin_Clima=> "Marvin", 'desired-temp' => ''}
die einzige ausnahme ist wenn dort ein string steht der mit einem buchstaben beginnt und nur buchstaben und zahlen enthält.
gruss
andre
Hallo Andre,
danke für den Tipp, hätte ich letztens brauchen können , habe das dann halt über die alias gelöst, nicht sooo elegant!
klaus
gibt es auch noch andere Devices bei denen man die Spannung der Batterie bekommt?
... oder ist das Heizkörperthermostat bisher das einzige?
Mindestens Wandthermostate liefern auch die aktuelle Spannung.
und der Universal-Sensor von Dirk !
Danke für die Ideen ;)
Ich habe etwas weitergebastelt, um auch meine Wandthermostate miteinbeziehen.
Bei Interesse poste ich auch den Code.
(http://forum.fhem.de/index.php?action=dlattach;topic=27399.0;attach=24068;image)
ab ins wiki damit :)
Ach, herrje... Na für so gelungen habe ich es auch nicht gehalten. ???
Aber gut, mache ich. Die (eigenerstellten) Icons soll ich dann wohl am besten einchecken... Unter fhemSVG?
auch ohne gelungen zu sein zeigt es was alles geht :)
im ernst: ich glaube es ist ein gutes beispiel weil es ganz unterschiedlcihe dinge mischt.
Bitt' schön ;)
http://www.fhemwiki.de/wiki/ReadingsGroup#Heizungsteuerung_f.C3.BCr_HM_Wand-_und_Heizk.C3.B6rperthermostate
Icons checke ich noch ein.
danke
Super
Zitat von: hexenmeister am 30 Dezember 2014, 23:11:21
Bitt' schön ;)
http://www.fhemwiki.de/wiki/ReadingsGroup#Heizungsteuerung_f.C3.BCr_HM_Wand-_und_Heizk.C3.B6rperthermostate
Icons checke ich noch ein.
Sehr hübsch, um das erweitert, wofür ich bisher noch keine Zeit gefunden habe ;)
(Nebenbei finde ich es interessant, dass der Thread 3 Monate gammelt und dann auf einmal so Leben bekommt. Dachte schon das interessiert keinen...)
Hi Alex,
super Beispiel, und danke auch für den Wiki-Eintrag.
@moemoe: manchmal braucht´s eben nur einen keinen Anstoss (von Dir und chris1284)
und so tolle Dinge wir Andre´s readingsGroup.
werd dann meine Konfig auch noch etwas aufhübschen ;)
Da geht bestimmt noch vieles andere !
gruss
klaus
Danke für die Blümen ;)
Ich will bei Gelegenheit noch Fensterstatus einbauen und Boost-Befehl. Werde ggf. WIKI aktualisieren.
Hi Alex
eines ist mir noch unklar. Schaltest Du mit
"controlMode.manual"=>"set %DEVICE controlMode auto","controlMode.auto"=>"set %DEVICE controlMode manual",
jeweils zwischen manual und auto um ?
gruss
klaus
Frohes Neues! :)
Zitat von: kvo1 am 31 Dezember 2014, 18:03:32
Schaltest Du mit
[...]
jeweils zwischen manual und auto um ?
Genau so ist es. Immer von aktuellem zum jeweils anderen Zustand wechseln.
Zunächst hatte ich noch vor, hier auch noch Boost mit einzubeziehen, dann war mir dass dann doch zu unübersichtlich.
Grüße,
Alexander
Hi Alex,
Die und allen anderen hier ..ebenfalls frohes Neues Jahr und viele gute Ideen.
Ich hatte / habe das bisher so wie es Chris1284 vorgestellt hat, aber Deine Variante ist
im Hinblick auf die Übersichtlichkeit vielleicht besser. Boost brauche ich eigentlich nicht, zumindest
fällt mir da kein Anwendungsfall ein.
Gruß klaus
Zitat
"controlMode.manual"=>"set %DEVICE controlMode auto","controlMode.auto"=>"set %DEVICE controlMode manual",
Danke Hexenmeister, dank dem snipped konnte ich 2 spalten bei mir rausnehmen. manchmal denkt man doch etwas kompliziert.
@kv01: dann nimm einfach boost raus :-)
Zitat@kv01: dann nimm einfach boost raus :-)
habe / hatte ich garnicht erst drin ;-)
klaus
Hallo zusammen,
der Wiki Artikel, hat das sogar für einen Newbi verständlich gemacht, auch wenn ich die Details nicht verstehe :-(
Wäre es sehr kompliziert das ganze auch für Max Stellantriebe zu nutzen? Ich vermute allerdings das diese nicht so komfortabel den Batteriestand übersenden ? Ich habe auch noch keine Möglichkeit gefunden ein lock zu setzen :-( Vielleicht sollte ich doch von MAX auf HM umsteigen?
Gruß
Micha
Hallo,
ich habe mal versucht, das nachzubauen und bekomme es für Ventilstellungen unter 10% einfach nicht hin. Sobald ich für diesen Fall eine 0 zurückgebe, steht der vom Ventil gelieferte Wert drin. Gebe ich testweise für diesen Fall einen String "slkdlaskj" zurück, so wird dieser korrekt dargestellt, aber mit der 0 klappt's irgendwie nicht :-( (War das verständlich?)
Ronny
Ist dein Fhem aktuell?
Zitat von: mfeske am 01 Januar 2015, 21:14:15
Wäre es sehr kompliziert das ganze auch für Max Stellantriebe zu nutzen?
Vemutlich nicht (evtl. mit Einschränkungen), ich habe jedoch keine Max und kenne die Dinger nicht. Kann daher keinen Vorschlag machen.
Grüße,
Alexander
Zitat von: RoBra81 am 01 Januar 2015, 23:18:38
ich habe mal versucht, das nachzubauen und bekomme es für Ventilstellungen unter 10% einfach nicht hin.
Kann ich nachstellen... Ist ja lustig, scheinbar ein Bux im ReadingsGroup. Verstehe nicht wirklich, was da passieren kann.
Also, wenn der Wert aus dem Aktor z.B. 7 ist (also kleiner 10 aber größer 0), dann funktioniert valueFormat {$VALUE=1} wunderbar und setzt brav 1. Ein {$VALUE=0} funktioniert dagegen nicht. Daher klappt meine Rundung (int($VALUE/10)*10) auch nicht und somit auch nicht die Icon-Zuordnung.
Andre, hast Du eine Idee?
Grüße,
Alexander
Hier klappt das bei 0 % mit dem Icon
Bei mir auch, aber nicht bei 1 bis 9.
Wegen der Ventilstellung von 1-9 habe ich mir mit $VALUE = int(($VALUE+10)/10)*10
geholfen.
Weil ich 0% und 100% explizit (also als separtes Icon) angezeigt bekommen möchte, brauche ich insgesamt 11 unterschiedliche Icons.
Für 90-99%: Ventilstellung benutze ich 'ValvePosition.100' => 'sani_heating_level_100@E50005'
und für 100% Ventilstellung: 'ValvePosition.110' => 'sani_heating_level_100@ff0006'
Den Code von hexenmeister (Herzlichen Dank dafür!!!) habe ich etwas modifiziert, damit automatisch meine Heizkörperthermostate HM-CC-RT-DN als auch teilweise vorhandenen Wandthermostate HM-TC-IT-WM-W-EU dargestellt werden.
Nun suche ich noch nach einer Möglichkeit, dass bei den Räumen, in denen zusätzlich ein Wandthermostat vorhanden ist, bei den zugehörigen Heizkörperthermostate kein Auswahldialog für <Soll neu> erscheint (siehe Kreise im Screenshot). Ich habe schon einiges ausprobiert, aber leider nicht mal annäherungsweise Erfolge erzielt.
Hat jemand vielleicht eine Idee? Danke!
define heatingInfo readingsGroup <Ferienwohnung>,<Ist>,<Soll>,<Soll neu>,<Ventil/RH>,<Modus>,<Lock>,<Batterie>,<Kommando>,<> \
(CUL_HM_|)HM_(CC_RT_DN_......_Clima|TC_IT_WM_W_EU_......_Climate):measured-temp,desired-temp,<sollsetz>,humidity,ValvePosition,controlMode,R-btnLock@{rg($DEVICE."§device")},batteryLevel@{rg($DEVICE."§device")},state@{rg($DEVICE."§device")},<%getConfig> \
<>,<>,<>,<>,<>,<>,<>,<>
attr heatingInfo cellStyle { "r:1"=>'style="font-weight:bold;;font-size:16px;;color:yellow"',"c:0"=>'style="font-weight:bold"',"c:1"=>'style="font-weight:bold"'}
attr heatingInfo commands {'controlMode' => 'trigger ntfy_rg $DEVICE controlMode', 'R-btnLock' => 'trigger ntfy_rg $DEVICE R-btnLock','heatingInfo.getConfig' => 'set $DEVICE getConfig','heatingInfo.sollsetz'=>'desired-temp:5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0'}
attr heatingInfo mapping { 'desired-temp' => ''}
attr heatingInfo room Ferienwohnung
attr heatingInfo sortDevices 1
attr heatingInfo valueFormat {if($READING eq "ValvePosition" && $VALUE ne "0"){$VALUE = int(($VALUE+10)/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 heatingInfo valueIcon {'controlMode.manual' => 'sani_heating_manual@795CFF', 'controlMode.auto' => 'sani_heating_automatic@FFC13A', 'controlMode.boost' => 'sani_heating_boost@FB0C02', 'humidity'=>'humidity@6FD9FB', 'R-btnLock.on'=>'secur_locked@F7301D', 'R-btnLock.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','ValvePosition.110' => 'sani_heating_level_100@ff0006','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-btnLock.set_on' => 'hourglass','R-btnLock.set_off' => 'hourglass'}
attr heatingInfo 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 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)"}
Grüße, Heiko
Genau deswegen (und noch wegen der Reihenfolge) habe ich die Devices manuell angegeben. :)
schaut mal bitte ob sich bei den problematischen werten 1-9 ein leerzeichen im reading eingeschlichen hat.
ein device wird dann ausgeblendet wenn valueFormat undef zurück gibt. d.h. du kannst dein dein valueFormat so bauen das es bei den HM-CC-RT-DN schaut ob es einen HM-TC-IT-WM-W-EU im gleichen raum gibt und gibst dann undef zurück. wenn du das device trotzdem anzeigen und nur das eine reading auslassen möchtest gibts du z.b. zurück.
sortieren kannst du die devices dann per passendem sortDevices attribut.
Man kann den Fehler auch provozieren in dem man aus
int($VALUE/10)*10
für Werte zwischen 11 und 19 macht
int(($VALUE-10)/10)*10
Es wird dan valueFormat nicht ausgewertet wenn $VALUE=0 als ergebnis raus kommt
Ich habe jetzt erstmal
$VALUE = int($VALUE/10)*10
gegen
$VALUE = sprintf("%d0",$VALUE/10)
ausgetauscht, dadurch wird von 0 bis 9 eine 00 zurückgegeben und die sani_heating_level_0.svg in sani_heating_level_00.svg umbenannt
ich hab es eben im readingGroup modul repariert.
gruss
andre
bekommt man diese tolle Anzeige mit den Icons mit Boardmitteln auch ohne Readingsgroup hin? Also Definition im Device (Hier MAX) selbst
readingsGroup sind bordmittel :)
es geht nur mit readingGroup.
gruss
andre
Habe neue Version aus dem SVN geholt (# $Id: 33_readingsGroup.pm 7403 2015-01-02 10:55:09Z justme1968 $)
Leider habe ich immer noch das gleiche Problem.
Habe zum Testen ein Dummi angelegt und die notwendigen Readings gesetzt:
fhem> l test
Internals:
NAME test
NR 1110
STATE ???
TYPE dummy
Readings:
2015-01-01 23:34:30 R-globalBtnLock on
2015-01-01 23:32:48 ValvePosition 7
2015-01-01 23:34:11 batteryLevel 3.0
2015-01-01 23:34:49 controlMode boost
2015-01-01 23:35:34 desired-temp 30.0
2015-01-01 23:41:29 humidity 0
2015-01-01 23:35:23 measured-temp 18.0
Attributes:
Im ReadingsGroup habe ich entsprechend eine Zeile ergänzt:
test:desired-temp,<>,measured-temp,ValvePosition,controlMode,R-globalBtnLock,batteryLevel
Es wird leider Zahl 7 angezeigt. valueFormat wird wohl immer noch nicht korrekt ausgewertet :(
Leerzeichen sind im Reading nicht drin.
Grüße,
Alexander
Habe auch einmal meine Heizung verwurstet ...
dargestellt wurden: Wandthermostat (Alt und Neu); alter Stellentrieb (letzte Zeile); neue Stellthermostate (Standalone als auch Autonom); Fensterkontakte
(http://forum.fhem.de/index.php?action=dlattach;topic=27399.0;attach=24204)
meine Definition sieht folgendermaßen aus:
DEF
<%sani_heating>,<Soll>,<Soll neu>,<Ist>,<Ventil / RH>,<Modus>,<G-Lock>,<B-Lock>,<Bat>,<Fenster>
hm.thermo.5.climate:desired-temp,<sollsetz>,measured-temp,humidity,controlMode,R-globalBtnLock@hm.thermo.5,R-btnLock@hm.thermo.5,batteryLevel@hm.thermo.5,state@hm.sec.1
hm.thermo.6.clima:desired-temp,<>,measured-temp,ValvePosition,controlMode,R-globalBtnLock@hm.thermo.6,R-btnLock@hm.thermo.6,batteryLevel@hm.thermo.6,<>
hm.thermo.7.clima:desired-temp,<>,measured-temp,ValvePosition,controlMode,R-globalBtnLock@hm.thermo.7,R-btnLock@hm.thermo.7,batteryLevel@hm.thermo.7,<>
hm.thermo.4.clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-globalBtnLock@hm.thermo.4,R-btnLock@hm.thermo.4,batteryLevel@hm.thermo.4,state@hm.sec.3
hm.thermo.10.clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-globalBtnLock@hm.thermo.10,R-btnLock@hm.thermo.10,batteryLevel@hm.thermo.10,state@hm.sec.6
hm.thermo.9.clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-globalBtnLock@hm.thermo.9,R-btnLock@hm.thermo.9,batteryLevel@hm.thermo.9,state@hm.sec.5
hm.thermo.1.clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-globalBtnLock@hm.thermo.1,R-btnLock@hm.thermo.1,batteryLevel@hm.thermo.1,<>
hm.thermo.2.clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-globalBtnLock@hm.thermo.2,R-btnLock@hm.thermo.2,batteryLevel@hm.thermo.2,<>
hm.thermo.8.clima:desired-temp,<sollsetz>,measured-temp,ValvePosition,controlMode,R-globalBtnLock@hm.thermo.8,R-btnLock@hm.thermo.8,batteryLevel@hm.thermo.8,state@hm.sec.4
hm.thermo.3.climate:desired-temp,<sollsetz>,measured-temp@hm.thermo.3,humidity@hm.thermo.3,controlMode@hm.thermo.3,<>,R-btnLock@hm.thermo.3,<>,<>
hm.stellantrieb.2:ValveDesired,<>,<>,ValvePosition@hm.stellantrieb.2,<>,<>,<>,battery@hm.stellantrieb.2,<>
Attribute:
commands
{ 'HeizungInfo.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-globalBtnLock.on"=>"set %DEVICE regSet globalBtnLock off", "R-globalBtnLock.off"=>"set %DEVICE regSet globalBtnLock on", "R-btnLock.on"=>"set %DEVICE regSet btnLock off", "R-btnLock.off"=>"set %DEVICE regSet btnLock on"}
mapping
{'hm.thermo.1.clima'=>"Dusche",'hm.thermo.2.clima'=>"Badezimmer",'hm.thermo.3.climate'=>"Keller",'hm.thermo.4.clima'=>"Küche",'hm.thermo.5.climate'=>"Wohnzimmer",'hm.thermo.6.clima'=>" Regler Fenster",'hm.thermo.7.clima'=>" Regler Tür",'hm.thermo.8.clima'=>"Schlafzimmer",'hm.thermo.9.clima'=>"Arbeit Mitte",'hm.thermo.10.clima'=>"Arbeit Links",'hm.stellantrieb.2'=>"Regler Keller",'desired-temp'=> ""}
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}}}
valueIcon
{'controlMode.manual' => 'sani_heating_manual@795CFF', 'controlMode.auto' => 'sani_heating_automatic@FFC13A', 'controlMode.boost' => 'sani_heating_boost@FB0C02', 'humidity'=>'humidity@6FD9FB', 'R-btnLock.on'=>'secur_locked@F7301D', 'R-btnLock.off'=>'secur_open@0CFB0C', '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', 'R-btnLock.set_on' => 'hourglass','R-btnLock.set_off' => 'hourglass','state.closed' => 'fts_window_1w','state.open'=>'fts_window_1w_open@F7301D'}
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);;"'}}}
valueSuffix
{"desired-temp"=>" °C", "measured-temp"=>" °C", "ValvePosition"=>" (".ReadingsVal($DEVICE,$READING,0)." %)", "humidity"=>" ".ReadingsVal($DEVICE,$READING,0)." % RH", "batteryLevel"=>" (".ReadingsVal($DEVICE,$READING,0)." V)"}
sorry. habe es jetzt richtig gefixed...
@justme1968: Vielen Dank für deine Hinweise. Die von dir vorgeschlagene Vorgehensweise, zu prüfen ob in einem Raum neben dem HM-CC-RT-DN zusätzlich ein HM-TC-IT-WM-W-EU existiert, habe ich zwar nicht hinbekommen, stattdessen habe ich es vorerst über eine alias-Abfrage realisiert: In den Räumen in den sowohl HM-CC-RT-DN als auch HM-TC-IT-WM-W-EU installiert sind, gebe ich dem HM-CC-RT-DN alias den String 'Regler' mit an. Anhand diesem Kriterium erfolgt dann die Ausblendung des Pull-Down-Dialogs.
define heatingInfo readingsGroup <%sani_heating@green>,<Ist>,<Soll>,<Soll neu>,<Ventil/RH>,<Modus>,<Lock>,<Batterie>,<Kommando>,<> \
(CUL_HM_|)HM_(CC_RT_DN_......_Clima|TC_IT_WM_W_EU_......_Climate):measured-temp,desired-temp,<{if(($DEVICE=~/HM_CC_RT_DN/)&&(AttrVal($DEVICE,"alias","none")=~/Regler/)){" "}else{"sollsetz"}}>,humidity,ValvePosition,controlMode,R-btnLock@{rg($DEVICE."§device")},batteryLevel@{rg($DEVICE."§device")},state@{rg($DEVICE."§device")},<%getConfig> \
<>,<>,<>,<>,<>,<>,<>,<>
attr heatingInfo cellStyle {"r:1"=>'style="font-weight:bold;;font-size:16px;;color:yellow"',"c:0"=>'style="font-weight:bold"',"c:1"=>'style="font-weight:bold"',"c:9"=>'style="font-weight:bold"'}
attr heatingInfo commands {'controlMode' => 'trigger ntfy_rg $DEVICE controlMode', 'R-btnLock' => 'trigger ntfy_rg $DEVICE R-btnLock','heatingInfo.getConfig' => 'set $DEVICE getConfig','heatingInfo.sollsetz'=>'desired-temp:5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0'}
attr heatingInfo mapping {'desired-temp' => ''}
attr heatingInfo room 01_Übersicht
attr heatingInfo sortDevices 1
attr heatingInfo 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 heatingInfo valueIcon {'controlMode.manual' => 'sani_heating_manual@795CFF', 'controlMode.auto' => 'sani_heating_automatic@FFC13A', 'controlMode.boost' => 'sani_heating_boost@FB0C02', 'humidity'=>'humidity@6FD9FB', 'R-btnLock.on'=>'secur_locked@F7301D', 'R-btnLock.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-btnLock.set_on' => 'hourglass','R-btnLock.set_off' => 'hourglass'}
attr heatingInfo 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);;"'}}elsif($VALUE ~~ /CMDs_pending/ || $VALUE ~~ /CMDs_processing/ || $VALUE ~~ /TIMEOUT/){'style="color:Yellow"'}}
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)"}
define ntfy_rg notify ntfy_rg {rg($EVENT)}
99_myUtils.pm
(Hinweis: HM-CC-RT-DN Firmware 1.4, Änderung bei 'btnLock' )
sub rg($){
my @input = split(/[§\s]+/,shift);
my $device = $input[0];
my $function = $input[1];
if($function eq "device"){
return InternalVal($device,"device","device error");
}
elsif($function eq "controlMode"){
my $controlMode = ReadingsVal($device,"controlMode","controlMode error");
if($controlMode =~ /manual/)
{fhem("set $device controlMode auto")}
elsif($controlMode =~ /auto/)
{fhem("set $device controlMode manual")}
}
elsif($function eq "R-btnLock"){
my $btnLock = ReadingsVal($device,"R-btnLock","btnLock error");
if($btnLock =~ /off/){
{fhem("set $device regSet btnLock on")};
{fhem ("set $device getConfig")}
}
elsif($btnLock =~ /on/){
{fhem("set $device regSet btnLock off")};
{fhem ("set $device getConfig")}
};
}
elsif($function eq "state"){
my $state = Value($device);
if($state =~ /off/){
{fhem("set $device on")}
}
elsif($state =~ /on/){
{fhem("set $device off")}
}
}
}
Zitat von: justme1968 am 02 Januar 2015, 16:02:39
sorry. habe es jetzt richtig gefixed...
Vielen Dank! Funktioniert :)
Zitat von: hexenmeister am 02 Januar 2015, 22:40:42
Vielen Dank! Funktioniert :)
Hallo Alex,
ich glaube Deine Farbzuordnung klappt nicht so ganz (s.Bild)
gruss
klaus
Wieso, was passt denn nicht?
Die verschiedenen Farben bei Batterie und Regler sollten Verlauf darstellen von Grün zu Rot bzw. von Blau zu Rot. Die Einzelfarben kann man bestimmt noch optimieren, habe nur mal schnell ausgewählt.
Grüße,
Alexander
Habe gerade festgestellt, dass folgende Definition FHEM komplett und sofort abstürzen lässt:
<%heizung>,<>,<Batterie>,<>,<Ventil>,<>,<Modus>,<>,<Auto On>,<>,<Manu On>,<>,<Ist-Temp.>,<>,<Soll-Temp.>
^(?!FileLog).*._Clima:,<>,batteryLevel@{InternalVal($DEVICE,'device',undef)},<>,ValvePosition,<>,controlMode,<>,<%sani_heating_automatic>,<>,<%sani_heating_manual>,<>,measured-temp,<>,<sollsetz>
Unmatched ( in regex; marked by <-- HERE in m/^batteryLevel@{InternalVal( <-- HERE $DEVICE$/ at ./FHEM/33_readingsGroup.pm line 1006.
bitte bau mal in zeile 1005 ein log auf $regex ein. da geht beim parsen der zeile etwas schief.
gruss
andre
Komma ist wohl ein Problem... Die Expression wird anscheinend nicht als Ganzes erkannt.
habe Log eingbaut: Log3 $hash->{NAME}, 3, $hash->{NAME} .": ". "---------> REGEX --->".$regex."<---";
Hier ist die Ausgabe:
2015.01.04 15:24:33.834 3: RG_FAULT: ---------> REGEX ---><---
2015.01.04 15:24:33.835 3: RG_FAULT: ---------> REGEX --->batteryLevel@{InternalVal($DEVICE<---
Und auf Err wieder:
Unmatched ( in regex; marked by <-- HERE in m/^batteryLevel@{InternalVal( <-- HERE $DEVICE$/ at ./FHEM/33_readingsGroup.pm line 1006.
ein komma darf eigentlich in der liste der readings ausser zum trennen der readings selber gar nicht vorkommen. für die <> ausdrücke kann ich das erkennen und halbwegs automatisch reparieren.
ich muss mal schauen on ich das für die @{...} version auch hin bekomme.
ansonsten statt InternalVal erst mal eine eigene sub aufrufen die nur das DEVICE übergeben bekommt und so ohne komma auskommt.
gruss
andre
Zitat von: hexenmeister am 04 Januar 2015, 12:54:12
Wieso, was passt denn nicht?
Die verschiedenen Farben bei Batterie und Regler sollten Verlauf darstellen von Grün zu Rot bzw. von Blau zu Rot. Die Einzelfarben kann man bestimmt noch optimieren, habe nur mal schnell ausgewählt.
Grüße,
Alexander
Hallo Alexander,
die Farben bei Batterie und Regler meinte ich auch nicht , sondern bei "
Ist"
15,9 ist blau ... okay
19,5 ist rot aber dafür ist dann 21,8 grün ?
Oder habe ich einen Denkfehler ?
Gruss
Klaus
war doch einfacher als gedacht. hab es eben eingecheckt.
gruss
andre
Zitat von: kvo1 am 04 Januar 2015, 16:20:27
15,9 ist blau ... okay
19,5 ist rot aber dafür ist dann 21,8 grün ?
Ich habe das so realisiert, dass die Farben die ABweichung von Soll darstellen, Grün: +/- 1 Grad, Blau: mehr als 1 Grad niedriger als Soll, Rot: 1 Grad mehr als Soll.
Zitat von: justme1968 am 04 Januar 2015, 16:29:52
war doch einfacher als gedacht. hab es eben eingecheckt.
Funktioniert :)
Vielen Dank!
Zitat von: hexenmeister am 04 Januar 2015, 16:47:32
Ich habe das so realisiert, dass die Farben die ABweichung von Soll darstellen, Grün: +/- 1 Grad, Blau: mehr als 1 Grad niedriger als Soll, Rot: 1 Grad mehr als Soll.
Verstanden ;)
Das Modul ist echt genial !
@Andre , danke nochmal dafür
@Alex: ....dir für Deine Geduld und Hilfe
klaus
Hallo Zusammen,
ich würde gern die Spalten "Batterie" und Ventilöffnung" rechtsbündig formatieren ,
ist mir aber bisher weder mit valueStyle noch mit cellstyle gelungen ! Geht das überhaupt (wenn ICON + Wert)?
die bisherige Formatierung schaut so aus
attr heatingInfo2 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 heatingInfo2 valueIcon {'controlMode.manual' => 'sani_heating_manual@lightgreen','controlMode.auto' => 'sani_heating_automatic', 'controlMode.boost' => 'sani_heating_boost@FB0C02','ValvePosition'=>'ValvePosition@6FD9FB', 'ValvePosition.0' => 'Heizung.0%','ValvePosition.10' => 'Heizung.10%','ValvePosition.20' => 'Heizung.20%','ValvePosition.30' => 'Heizung.30%','ValvePosition.40' => 'Heizung.40%','ValvePosition.50' => 'Heizung.50%','ValvePosition.60' => 'Heizung.60%','ValvePosition.70' => 'Heizung.70%','ValvePosition.80' => 'Heizung.80%','ValvePosition.90' => 'Heizung.90%','ValvePosition.100' => 'Heizung.100%','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 heatingInfo2 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);;"'}}}
gruss
kvo1
Hallo,
ich habe mal versucht das Codeschnispel in meine CFG einzubauen. Irgendwie bin ich zu blöd dazu. Bei mir ist immer nur die Überschrift zu sehen. Kann mir hier jemand auf die Sprünge helfen? Ich bin blutiger Anfänger und möchte gerne verstehen was ich falsch mache.
Beste Grüße
Ohne Glaskugel geht das ganze nicht ....
zeig uns was Du hast ...
mach ein LIST von dem Device und zeige die Fehlermeldung :-)
Guten Morgen,
sorry, hat ein bisschen gedauert. Jeden Abend nach der Arbeit am PC rumhängen gibt irgendwann Ärger ;D
Ich habe einen HM-Lan Adapter und zwei HM-CC-RT-DN. FHEM läuft auf einem RASPI.
Die Thermostate habe ich umbenannt in wz_HeizungEssen bzw. wz_HeizungSofa. Der Channel_04 heisst jeweils Heizung_Essen und Heizung_Sofa. Das kann man bestimmt auch schöner machen und ich denke da liegt auch das Problem.
Internals:
DEF 3B0D81
HMLAN1_MSGCNT 1360
HMLAN1_RAWMSG E3B0D81,0000,1DF551AF,FF,FFB8,0C86103B0D810000000A9CD1100200
HMLAN1_RSSI -72
HMLAN1_TIME 2015-11-20 07:43:30
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 1360
NAME wz_HeizungEssen
NR 51
STATE CMDs_done
TYPE CUL_HM
channel_01 HM_3B0D81_Weather
channel_02 HM_3B0D81_Climate
channel_03 HM_3B0D81_WindowRec
channel_04 Heizung_Esstisch
channel_05 HM_3B0D81_ClimaTeam
channel_06 HM_3B0D81_remote
lastMsg No:0C - t:10 s:3B0D81 d:000000 0A9CD1100200
protLastRcv 2015-11-20 07:43:30
protSnd 29 last_at:2015-11-19 13:05:03
protState CMDs_done
rssi_at_HMLAN1 max:-64 avg:-72.1 lst:-72 cnt:1360 min:-93
Readings:
2015-11-17 23:22:37 Activity alive
2015-11-17 23:30:29 CommandAccepted yes
2015-11-13 09:37:59 D-firmware 1.4
2015-11-13 09:37:59 D-serialNr MEQ0450562
2015-11-17 23:20:32 PairedTo 0x2CD8CD
2015-11-13 09:41:14 R-backOnTime 10 s
2015-11-13 09:41:14 R-burstRx on
2015-11-13 09:41:14 R-cyclicInfoMsg on
2015-11-13 09:41:14 R-cyclicInfoMsgDis 0
2015-11-13 09:41:14 R-pairCentral 0x2CD8CD
2015-11-17 23:20:32 RegL_00: 01:01 02:01 09:01 0A:2C 0B:D8 0C:CD 0E:0A 0F:01 11:00 12:15 16:01 18:00 19:00 1A:00 00:00
2015-11-20 07:43:30 actuator 2
2015-11-15 21:19:31 battery ok
2015-11-20 07:43:30 batteryLevel 3.1
2015-11-20 07:43:30 desired-temp 19.5
2015-11-20 07:43:30 measured-temp 20.9
2015-11-20 07:43:30 motorErr ok
2015-11-19 13:05:03 state CMDs_done
2015-11-19 13:05:03 time-request -
Regl_07::
VAL
Helper:
HM_CMDNR 12
PONtest 1
cSnd 012CD8CD3B0D810603,012CD8CD3B0D8106040000000001
mId 0095
rxType 140
Expert:
def 1
det 0
raw 1
tpl 0
Io:
newChn +3B0D81,00,00,00
nextSend 1448001810.62029
prefIO
rxt 2
vccu
p:
3B0D81
00
00
00
Mrssi:
mNo 0C
Io:
HMLAN1 -70
Prt:
bErr 0
sProc 0
sleeping 1
Rspwait:
Q:
qReqConf
qReqStat
Role:
dev 1
prs 1
Rssi:
At_hmlan1:
avg -72.1014705882354
cnt 1360
lst -72
max -64
min -93
Shregw:
07 04
Attributes:
IODev HMLAN1
actCycle 000:10
actStatus alive
autoReadReg 4_reqStatus
expert 2_full
firmware 1.4
icon sani_heating_temp
model HM-CC-RT-DN
serialNr MEQ0450562
subType thermostat
webCmd getConfig:clear msgEvents:burstXmit
Wäre schön, wenn Ihr mir weiterhelfen könntet. Das Codesnipped habe ich inzwischen wieder gelöscht. Ich kann es aber nochmal zusammen basteln.
LG
Dominik
Hallo zusammen,
ich hab´s dann auch endlich mal geschafft weiter zu probieren. Leider bekomme ich das nicht hin. Ich glaube mir fehlt hier was grundsätzliches.
Hier mal mein Eintrag in der Config:
#ReadingsGoup anlegen.
define heatingInfo readingsGroup <%sani_heating>,<Soll>,<Soll neu>,<Ist>,<Ventil / RH>,<Modus>,<Lock>,<Bat>\HM_3B0D81_Climate:desired-temp,<sollsetz>,measured-temp,humidity,controlMode,R-globalBtnLock@HM_3B0D81_Climate,batteryLevel@HM_3B0D81_Climate\<>,<>,<>,<>,<>,<>,<>,<> \
#eg_wz_wt01
#Schrift fett setzen etc.
attr heatingInfo cellStyle { "r:1"=>'style="font-weight:bold;;font-size:16px"',"r:2,c:0"=>'style="font-weight:bold"',"r:6,c:0" =>'style="font-weight:bold"',"r:9,c:0"=>'style="font-weight:bold"',"r:12,c:0"=>'style="font-weight:bold"'}
#Heizungssteuerung ermöglichen
attr heatingInfo commands {'heatingInfo.sollsetz'=>'desired-temp:5.0,12.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-globalBtnLock.on"=>"set %DEVICE regSet globalBtnLock off","R-globalBtnLock.off"=>"set %DEVICE regSet globalBtnLock on"}
#Gewünschte Namen definieren.
attr heatingInfo mapping {HM_3B0D81_Climate=>"Wohnzimmer",'desired-temp' => }
#Werte vorformatieren (für die Icon-Zuordnung).
attr heatingInfo 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}}}
#Icons zuordnen.
attr heatingInfo valueIcon {'controlMode.manual' => 'sani_heating_manual@795CFF','controlMode.auto' => 'sani_heating_automatic@FFC13A', 'controlMode.boost' => 'sani_heating_boost@FB0C02','humidity'=>'humidity@6FD9FB', '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'}
#Farben (zu kalt: blau, zu warm: rot, ok: grün).
attr heatingInfo 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);;"'}}}
#Messeinheiten und Zahlenwerte.
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)"}
Das Einzige was ich sehe ist ein heatingInfo
Ich sehe den Fehler nicht und würde es gerne verstehen. :(
Guten Morgen,
fehlt Euch noch irgendwas, oder bin ich einfach zu ungeduldig?
:)
Ich hatte am Wochenende Zeit und hatte wohl auch einen Geistesblitz. Jedenfalls hab ich´s hinbekommen :) Nur die Tastensperre bekomme ich nicht angezeigt
Hallo
ist ... HM_3B0D81_Climate das Device selbst oder cannel 02 ?? (das "_Climate" deutet m.E. auf cannel 02 hin)
die Tastensperre geht doch auf das Device ??
http://www.fhemwiki.de/wiki/HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat (http://www.fhemwiki.de/wiki/HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat)
Hi,
das ist Channel02.
Also ich hab´s nicht hinbekommen mit der Tastensperre. Laut diesem Forumseintrag, ist es z.Zt. nicht möglich die Readings auszulesen.
http://forum.fhem.de/index.php/topic,42535.0.html (http://forum.fhem.de/index.php/topic,42535.0.html)
Das wäre natürlich das Sahnehäubchen. Wenn ich es nicht sofort hinbekomme, ist das aber auch kein Beinbruch :)
Zitat von: moemoe am 26 September 2014, 12:28:14
Ich wollte in meinen Reading-Groups nicht nur stumpf den Batteriezustand darstellen, sondern wenn die HM-CC-RT-DN schon eine Spannung liefern, diese etwas aufbereiteter darstellen.
Nur zum Verständnis:
Die Heizkörper Thermostate liefern als Reading die Batteriespannung?
Zitat von: chr2k am 24 Dezember 2015, 14:58:15
Nur zum Verständnis:
Die Heizkörper Thermostate liefern als Reading die Batteriespannung?
Ja genau, es gibt am Device selbst zwei Readings
battery liefert einen Status
batteryLevel liefert die Spannung
Gruß
Kvo1