FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: moemoe am 26 September 2014, 12:28:14

Titel: Batteriestand prozentual statt ok/bad.
Beitrag 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.

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.
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 19 Dezember 2014, 00:47:44
Hi moemoe,

sieht hut aus  ;)
woher hast Du di ecoolen icon´s
könntest Du nach die restlichen attr... posten ?

danke
kvo
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: moemoe am 19 Dezember 2014, 11:19:20
Die Icons sind mitgeliefert ;)

Ich habe hier gerade leider keinen weiteren Zugriff auf die Config und auswendig weiß ich weitere attrs auch nicht.
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: chris1284 am 19 Dezember 2014, 11:48:31
Danke für den Anstoss, nette Idee, gleich mal umgesetzt (aber ohne myUtils  :) )
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 19 Dezember 2014, 15:44:12
ZitatDie Icons sind mitgeliefert ;)

wo liegen diese den ?   :'(

Kannst ja die config später mal posten !

gruss
kvo1
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag 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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: mfeske am 19 Dezember 2014, 16:19:07
Cool sieht das aus moemoe,

ob das mit meinen Stellreglern auch geht? Wo gibst Du den Code eigentlich ein? In der myUtils?

Gruß
Micha
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 19 Dezember 2014, 16:22:34
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 19 Dezember 2014, 16:24:13
scheinbar nicht klar: http://www.fhemwiki.de/wiki/Icons#Mehr_Icons_zur_Auswahl (http://www.fhemwiki.de/wiki/Icons#Mehr_Icons_zur_Auswahl)
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 19 Dezember 2014, 16:46:26
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag 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 ...
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: chris1284 am 19 Dezember 2014, 18:06:31
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 19 Dezember 2014, 18:12:54
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 !

Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 19 Dezember 2014, 18:42:20
@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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 19 Dezember 2014, 19:39:24
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

Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag 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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 19 Dezember 2014, 20:04:35
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 19 Dezember 2014, 20:29:18
@chris1284: dafür war ich zu faul :). habe deine version eingecheckt.

gruss
  andre
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: chris1284 am 19 Dezember 2014, 21:23:58
@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'}
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 19 Dezember 2014, 21:38:44
@chris1284

herzlichen Dank!

kvo1
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: coolice am 27 Dezember 2014, 20:20:53
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'}
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 27 Dezember 2014, 20:56:27
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: coolice am 28 Dezember 2014, 12:22:30
Guten Morgen,

danke die Namen sind jetzt drin doch leider auch desired Temp. Bekomme ich das irgendwie weg?
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: chris1284 am 28 Dezember 2014, 12:45:40
über das mapping
attr HeizungRg mapping {'desired-temp' => ''}
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: coolice am 28 Dezember 2014, 12:49:45
Perfekt. Danke.
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 28 Dezember 2014, 13:01:26
@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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 29 Dezember 2014, 00:40:05
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: PichlAlex am 29 Dezember 2014, 19:57:12
gibt es auch noch andere Devices bei denen man die Spannung der Batterie bekommt?

... oder ist das Heizkörperthermostat bisher das einzige?
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 29 Dezember 2014, 20:04:59
Mindestens Wandthermostate liefern auch die aktuelle Spannung.
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 29 Dezember 2014, 21:21:00
und der Universal-Sensor von Dirk !
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 30 Dezember 2014, 21:33:10
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)
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 30 Dezember 2014, 21:37:13
ab ins wiki damit :)
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 30 Dezember 2014, 22:06:27
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?
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 30 Dezember 2014, 22:16:18
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.
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag 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.
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 31 Dezember 2014, 10:59:07
danke
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: E. am 31 Dezember 2014, 10:59:48
Super
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: moemoe am 31 Dezember 2014, 11:28:00
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...)
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 31 Dezember 2014, 12:13:07
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


Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 31 Dezember 2014, 17:25:39
Danke für die Blümen ;)

Ich will bei Gelegenheit noch Fensterstatus einbauen und Boost-Befehl. Werde ggf. WIKI aktualisieren.
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 31 Dezember 2014, 18:03:32
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 01 Januar 2015, 01:15:24
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 01 Januar 2015, 10:48:18
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: chris1284 am 01 Januar 2015, 13:25:22
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 :-)

Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 01 Januar 2015, 14:46:37
Zitat@kv01: dann nimm einfach boost raus :-)

habe / hatte ich garnicht erst drin ;-)

klaus
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: mfeske am 01 Januar 2015, 21:14:15
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: RoBra81 am 01 Januar 2015, 23:18:38
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: stromer-12 am 01 Januar 2015, 23:21:39
Ist dein Fhem aktuell?
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 01 Januar 2015, 23:25:11
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 02 Januar 2015, 00:00:57
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: stromer-12 am 02 Januar 2015, 00:20:06
Hier klappt das bei 0 % mit dem Icon
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 02 Januar 2015, 00:21:35
Bei mir auch, aber nicht bei 1 bis 9.
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: Saar1974 am 02 Januar 2015, 00:37:40
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 02 Januar 2015, 03:13:43
Genau deswegen (und noch wegen der Reihenfolge) habe ich die Devices manuell angegeben.  :)
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 02 Januar 2015, 11:03:08
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. &nbsp; zurück.

sortieren kannst du die devices dann per passendem sortDevices attribut.
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: stromer-12 am 02 Januar 2015, 11:20:01
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: stromer-12 am 02 Januar 2015, 11:48:22
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 02 Januar 2015, 11:55:15
ich hab es eben im readingGroup modul repariert.

gruss
  andre
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: Tobias am 02 Januar 2015, 13:16:45
bekommt man diese tolle Anzeige mit den Icons mit Boardmitteln auch ohne Readingsgroup hin? Also Definition im Device (Hier MAX) selbst
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 02 Januar 2015, 13:33:30
readingsGroup sind bordmittel :)

es geht nur mit readingGroup.

gruss
  andre
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 02 Januar 2015, 14:17:43
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: Wuppi68 am 02 Januar 2015, 14:36:34
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)"}
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 02 Januar 2015, 16:02:39
sorry. habe es jetzt richtig gefixed...
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: Saar1974 am 02 Januar 2015, 22:11:45
@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/)){"&nbsp"}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")}
  }
}
}
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 02 Januar 2015, 22:40:42
Zitat von: justme1968 am 02 Januar 2015, 16:02:39
sorry. habe es jetzt richtig gefixed...

Vielen Dank! Funktioniert :)

Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 04 Januar 2015, 10:41:13
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag 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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 04 Januar 2015, 13:36:47
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.



Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 04 Januar 2015, 14:51:20
bitte bau mal in zeile 1005 ein log auf $regex ein. da geht beim parsen der zeile etwas schief.

gruss
  andre
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 04 Januar 2015, 15:26:34
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.


Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 04 Januar 2015, 16:05:10
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 04 Januar 2015, 16:20:27
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: justme1968 am 04 Januar 2015, 16:29:52
war doch einfacher als gedacht. hab es eben eingecheckt.

gruss
  andre
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 04 Januar 2015, 16:47:32
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.
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: hexenmeister am 04 Januar 2015, 16:51:14
Zitat von: justme1968 am 04 Januar 2015, 16:29:52
war doch einfacher als gedacht. hab es eben eingecheckt.

Funktioniert :)
Vielen Dank!
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 04 Januar 2015, 17:30:11
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 05 Januar 2015, 21:13:43
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: Domjo75 am 18 November 2015, 16:05:09
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: Wuppi68 am 19 November 2015, 08:27:37
Ohne Glaskugel geht das ganze nicht ....

zeig uns was Du hast ...

mach ein LIST von dem Device und zeige die Fehlermeldung :-)
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: Domjo75 am 20 November 2015, 07:54:54
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
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: Domjo75 am 23 November 2015, 18:29:00
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.  :(
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: Domjo75 am 26 November 2015, 08:49:07
Guten Morgen,
fehlt Euch noch irgendwas, oder bin ich einfach zu ungeduldig?
:)
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: Domjo75 am 30 November 2015, 11:20:59
Ich hatte am Wochenende Zeit und hatte wohl auch einen Geistesblitz. Jedenfalls hab ich´s hinbekommen :) Nur die Tastensperre bekomme ich nicht angezeigt
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 30 November 2015, 22:47:52
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)
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: Domjo75 am 01 Dezember 2015, 10:50:59
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 :)
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: chr2k am 24 Dezember 2015, 14:58:15
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?
Titel: Antw:Batteriestand prozentual statt ok/bad.
Beitrag von: kvo1 am 24 Dezember 2015, 23:41:05
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