Plot als Balkendiagramm

Begonnen von thn1966, 11 März 2013, 11:24:18

Vorheriges Thema - Nächstes Thema

thn1966

Hallo

ich habe am Wochenende bei mir einen Füllstandmesser KFM100 von der ELV eingebunden. Das klappt auch alles. Jetzt suche ich nach einer Möglichkeit, den aktuellen Füllstand (in Liter oder in %) als Balken darzustellen. Meine Vorstellung wäre Min:0, Max:5000l und aktuell halt dazwischen. In andFHEM ist das schön gelöst, aber gibt es so etwas auch im normalen Webinterface bzw. Floorplan?

Danke
Thomas

MisterEltako

HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

justme1968

das geht zum beispiel so:

define balken weblink htmlCode {my $v=Value("tank"); my $p=int($v*100/5000);  return '<div align="bottom" style="width:20px;height:'.$p.'px;margin-top:'.(100-$p).'px;border: 1px solid #000;background-color:#8F8;"></div>'}
am einfachsten gibst du erst mal nur define balken weblink htmlCode {} ein und dann im web interface unter '/fhem?detail=balken' auf DEF klicken und den ausdruck in der klammer rein kopieren. dann gibt es keine probleme mit maskieren von zeichen.

das 'Value("tank")' mußt du natürlich durch anpassen das es den inhalt deines tanks zurück liefert, die 5000 auf den maximalen füllstand und die 100 auf die gesamt höhe die der balken haben soll.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

thunder

... eine geniale Lösung, die ich mittlerweile mittels dem "devStateIcon" Befehls direkt an das Device gebunden habe:

{my $p=int(ReadingsVal("zi_level","level",0)*2.62);'<div align="bottom" style="width:68px;height:'.$p.'px;margin-top:'.(100-$p).'px;background-color:#4F81BD"></div>'}

nur ein Problem hab ich dabei nach einem shutdown restart fehlt alles nach der in Hex codierten Farbangabe...  gebe ich z.B. "blue" anstelle "#4F81BD" an funktioniert alles...

Was mache ich falsch?

justme1968

ich vermute fhem interprtiert das # als kommentarzeichen wenn die konfig files zurueckgelesen werden.

als workaround leg dir eine funktion meinFuellstandBalken() in 99_myUtils.pl an die genau das '<div...></div>' mit return zurueck liefert und setze das devStateIcon als aufruf deiner funktion. also attr devStateIcon {meinFuellstandBalken()}

und wenn es in einer eigenen funktion steckt kannst du natürlich auch noch mehr machen. z.b. die farbe ändern wenn es unter 10% ist oder was auch immer...

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Billy

Zitat von: thunder schrieb am Do, 14 März 2013 11:56... eine geniale Lösung, die ich mittlerweile mittels dem "devStateIcon" Befehls direkt an das Device gebunden habe:
Hallo Thunder
an dieser genialen Lösung bin ich auch interessiert!
Könntest du den Zisternenanteil KFM100 deiner Config hier einstellen?
Da müsste ja dann auch die Anbindung mit "devStateIcon" ersichtlich sein.

Schon mal vielen Dank
Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

thunder

Hallo Billy,
ich benutze keinen KFM100 sondern den neuen Homematic Füllstandsmesser.

Leider habe ich noch keinen Weg gefunden den Sensor ohne HM config adapter zu kalibrieren daher nutze ich ein userReadings um eine Skalierung des Levels zwischen 0 und 100 durchzuführen. Die Erzeugung des Balkens habe ich wie von Andre empfohlen in eine Perl Routine ausgelagert da ich eine spezielle Farbe des Balkens im Floorplan haben wollte...


fhem.cfg Fragment[/b]
define zi_level CUL_HM 123456
attr zi_level actCycle 028:00
attr zi_level actStatus alive
attr zi_level devStateIcon {zi_balken();;}
attr zi_level firmware 1.0
attr zi_level fp_Zisterne 499,218,0,
attr zi_level model HM-Sen-Wa-Od
attr zi_level peerIDs 00000000,
attr zi_level subType sensor
attr zi_level userReadings level { (substr(ReadingsVal("zi_level","state",0),0,-1)-16)*0.66;;;; }


99_myUtils.pm Fragment
sub zi_balken()
{
my $p=int(ReadingsVal("zi_level","level",0)*2.62);
return '<div align="bottom" style="width:68px;height:'.$p.'px;margin-top:'.(100-$p).'px;background-color:#4F81BD"></div>';
}



mehr ist es nicht...

Viele Grüße,
Uwe

Billy

Vielen Dank Uwe, damit kann ich schon etwas anfangen.

Gute Nacht
Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

thn1966

Hallo,

jetzt möchte ich mich als Initiator des Threads mal bedanken. Habe endlich mal Zeit gefunden, mich damit zu befassen. Es funktioniert auch soweit, allerdings bin ich mit dem Aussehen nicht so zufrieden. Was mir vorschwebte war schon ein Diagramm über gplot, allerdings sollte nur der letzte (aktuelle) Wert gezeigt werden und die Skalen dazu fest (also nicht skallierbar) sein. Hintergrund: Soviel passiert bei 5000 Liter nicht am Tag, daß sich ein Verlaufsdiagramm lohnt.

Danke nochmal für die bishherigen Beiträge, ich habe zumindest einiges dabei gelernt.

Gruß
ThN

FEHMPiDi

Hallo,

auch wenn der Thread schon sehr alt ist. Ich habe genau das gleiche Thema und bei mir nun implementiert.
Den Balken bekomme ich jetzt auch angezeigt, aber der Zahlenwert ist jetzt weg. Gibt es eine Möglichkeit den Balken und den Zahlenwert darzustellen?

Danke
FHEM5.7@RaspPi.3|NanoCUL868-HM|NanoCUL868-Max|SDuino|DS18B20|1xHM-Sen-MDIR-WM55|   
2xHM-LC-Sw1PBU-FM|HM-LC-SW4-DR|I2C_MCP23017|2xMAX-ShutterContact|11xHM-LC-Bl1PBU-FM|CTW600|VCONTROL|1xHM-Sen-MDIR-O|2xMilight

justme1968

das geht z.b. etwa so:sub zi_balken()
{
my $p=int(ReadingsVal("zi_level","level",0)*2.62);
return '<div align="bottom" style="width:68px;height:'.$p.'px;margin-top:'.(100-$p).'px;background-color:#4F81BD">'.$p.'</div>';
}


oder du schaust mal im wiki: http://www.fhemwiki.de/wiki/ReadingsGroup#Einfache_Balkendiagramme

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968