FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: theo01 am 15 August 2020, 12:42:54

Titel: Batteriestatus anzeigen
Beitrag von: theo01 am 15 August 2020, 12:42:54
Hallo in die Runde,

ich habe eine Batterie (AGM Batterie) deren Ladezustand ich per % Werte und dem Batterieicons aus der Bibliothek anzeigen lassen möchte. Zu einem gewissen Spannungswert dann die Prozent und das Icon. Es soll ja über DevStateIcon gehen. Und dann halt irgendwie mit if / else. Ich weiß aber nicht wie ich das anstellen soll.
Ich habe euch mal ein Bild angehängt, wie ich die Batterie bis jetzt angelegt habe.

Könnte mir jemand da weiter helfen, evtl. mit einem Codeschnipsel oder einem Link ?
Ich habe auch in der Suche irgendwie nix richtiges gefunden.

Danke vorab !
Titel: Antw:Batteriestatus anzeigen
Beitrag von: amenomade am 15 August 2020, 19:10:14
https://wiki.fhem.de/wiki/DevStateIcon
Titel: Antw:Batteriestatus anzeigen
Beitrag von: Müller am 16 August 2020, 11:10:35
Hi,

bastel mal dies für dich um:

über stateFormat wird "batteryLevel" als Zahl angezeigt und über devStateIcon wird das ganze in ein Icon umgewandelt.

devStateIcon:
100:measure_battery_100@green 9[1-9]:measure_battery_100@green 8[1-9]:measure_battery_75@green 7[1-9]:measure_battery_75@green 6[1-9]:measure_battery_50@green 5[1-9]:measure_battery_50@green 4[1-9]:measure_battery_50@green 3[1-9]:measure_battery_25@green 2[1-9]:measure_battery_25@green 1[1-9]:measure_battery_25@red [1-9]:measure_battery_0@red

viele Grüße

Jochen
Titel: Antw:Batteriestatus anzeigen
Beitrag von: theo01 am 22 August 2020, 22:30:45
Hallo Jochen,
viele Dank das hat geklappt....

Wie bekomme ich denn jetzt noch dahinter dann auch den Prozentwert als Text ?

Danke vorab,
schöne grüße
Titel: Antw:Batteriestatus anzeigen
Beitrag von: Müller am 26 August 2020, 19:04:44
Im stateFormat zweimal den Ladezustand "batteryLevel" anzeigen lassen. Damit die zweite Zahl nicht in Icon umgewandelt wird, probiere mal direkt dahinter ein"%" setzen (ohne Leerzeichen).
Titel: Antw:Batteriestatus anzeigen
Beitrag von: Beta-User am 05 September 2020, 07:45:39
Da in einem anderen Thread hierher verwiesen wird:

Diese Lösung ist nur teilweise ideal, denn
- "10"-er Werte werden nicht erfaßt;
- mMn. fehlt der Hinweis, dass man zusätzlich zu dem "%" ein "\n" in stateFormat braucht (Multiicon-Option).

Ich würde empfehlen, das anders zu lösen und (sofern das überhaupt gebraucht wird) in stateFormat nur den Text formatieren und dann mit Perl-devStateIcon arbeiten: über eine ReadingsNum-if-elsif-größer/gleich-Kaskade den Wert abfragen und einem Symbol zuweisen.
Auf die Schnelle habe ich nur was für myUtils gefunden, das zu einem größeren Ding gehört, hoffe aber, es wird damit etwas klarer:
my $batval  = ReadingsNum($name,"batteryLevel","");
my $symbol_string = "measure_battery_";
my $command_string = "getConfig";
if ($batval >=3) {$symbol_string .= "100"} elsif ($batval >2.6) {$symbol_string .= "75"} elsif ($batval >2.4) {$symbol_string .= "50"} elsif ($batval >2.1) {$symbol_string .= "25"} else {$symbol_string .= '0@red'};

if ($state =~ m{CMDs_p}x) {
  $symbol_string = "edit_settings";
  $command_string = "clear msgEvents";
} elsif ($state =~ m{RESPONSE|NACK}x) {
  $command_string = "clear msgEvents";
  $symbol_string = 'edit_settings@red' ;
}
$ret .= "<a href=\"/fhem?cmd.dummy=set $name $command_string&XHR=1\">" . FW_makeImage($symbol_string,"measure_battery_50") . "</a>";