FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Sailor am 09 Oktober 2014, 12:03:31

Titel: readingsgroup und valueformat bei Batterylevel
Beitrag von: Sailor am 09 Oktober 2014, 12:03:31
Hallo zusammen,

ich habe neuerdings das Phaenomen, das ich bei den Homematic Battery-Level nicht mehr nur OK und LOW bekomme sondern auch den Spannungswert.

Da habe ich mir gedacht, das kannste doch auch mit einem Batteriesymbol verbinden, welches den Fuellstand auch gleich anzeigt.

Und zwar so:


###START###### Define RedingsGroup for Battery-Status ##########################################################START###
######This block must be at the end of all blocks defining the devices since the device must be initialised first!######
define rg_AS_battery readingsGroup AS_.*:[Bb]attery,[Bb]atteryLevel
attr rg_AS_battery alias Art Studio
attr rg_AS_battery mapping %ALIAS
attr rg_AS_battery room Battery Status

attr rg_AS_battery valueFormat {($VALUE eq "low" || $VALUE <= 2.1)?"Battery-020":($VALUE > 2.1 && $VALUE <= 2.3)?"Battery-040":($VALUE > 2.3 && $VALUE <= 2.5)?"Battery-060":($VALUE > 2.5 && $VALUE <= 2.7)?"Battery-080":($VALUE eq "ok" || $VALUE > 2.7)?"Battery-100"}
attr rg_AS_battery valueIcon %VALUE
####END####### Define RedingsGroup for Battery-Status ###########################################################END####


Nur scheinbar habe ich da zu einfach gedacht und es kommen nur die Standard-Werte raus... Siehe Dateianhang.  :o

Koennt Ihr mir sagen, wo mein Denkfehler liegt?  :-[

Danke vom "hintern-Deich"

Gruss
    Sailor

@Puschel: Bitte verschieben, wenn dieses Thema in einem anderen Board besser aufgehoben ist.  ;)
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Puschel74 am 09 Oktober 2014, 13:08:43
Hallo,

schau dir mal das an
http://forum.fhem.de/index.php/topic,27399.0.html (http://forum.fhem.de/index.php/topic,27399.0.html)

Grüße
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: justme1968 am 09 Oktober 2014, 13:20:13
du kannst den ?: nicht auf diese art schachteln. da fehlen diverse klammern. ausserdem wird es dann sehr schnell unübersichtlich.

einfacher und übersichtlicher ist es wie im oben verlinkten thread. aber selbst wenn du es direkt ins attribut einträgst ist es so besser:attr rg_AS_battery valueFormat {return "Battery-020" if( $VALUE eq "low" || $VALUE <= 2.1 ); return "Battery-100" if( $VALUE eq "ok" || $VALUE > 2.7 ); return "Battery-040" if( $VALUE < 2.3 ); return "Battery-060" if( $VALUE < 2.5 ); return "Battery-080";}

gruss
  andre
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Sailor am 09 Oktober 2014, 14:24:46
Hallo Andre,

das wars nicht ganz... Bekomme leider die Fehlermeldung

ERROR:
Unknown command return, try help. Unknown command return, try help. Unknown command return, try help. Unknown command return, try help. Unknown command }, try help.
zurueck und die Ausgabe sieht wie folgt aus:

Siehe Anhang.

Gruss
    Sailor
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Sailor am 09 Oktober 2014, 14:26:46
Zitat von: Puschel74 am 09 Oktober 2014, 13:08:43
Hallo,

schau dir mal das an
http://forum.fhem.de/index.php/topic,27399.0.html (http://forum.fhem.de/index.php/topic,27399.0.html)

Grüße

Hallo Puschel

Das werde ich gleich mal tun

Sailor
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: justme1968 am 09 Oktober 2014, 14:28:04
du musst alles zwischen den beiden {} im web frontend ins attr text feld eingeben. nicht direkt ins config file eintragen. dann müsstest du die ; verdoppeln.

wie gesagt: die im link beschriebene methode nur eine sub in 99_myUtils.pm aufzurufen ist sauberer und weniger fehler anfällig.

gruss
  andre
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Sailor am 09 Oktober 2014, 16:11:09
Hallo justme

Das mit den ;; ist Mir nach neu em post auch aufgefallen. Funktioniert so weit bis auf die Tatsache, dass du battery=ok noch mit Battery020 angezeigt wird.

batteryLevel=2.8V wird aber schon mal richtig mit Battery100 angezeigt.

Gruß
   Sailor


Gesendet mit Tapatalk
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: justme1968 am 09 Oktober 2014, 16:12:47
du musst schauen was wirklich in value steht. vielleicht is vor oder hinter dem ok noch ein leerzeichen.

mach den teil der prüfung mal so:... $VALUE =~ m/ok/ ...

gruss
  andre
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Sailor am 09 Oktober 2014, 16:37:54
Hallo andre

Die Zeile
attr rg_AS_battery valueFormat {return "Battery-020" if( $VALUE =~ m/low/ || $VALUE <= 2.1 );; return "Battery-100" if( $VALUE =~ m/ok/ || $VALUE > 2.7 );; return "Battery-040" if( $VALUE < 2.3 );; return "Battery-060" if( $VALUE < 2.5 );; return "Battery-080";;}

brachte leider keine Änderung.

Kann es vielleicht sein, dass wir hier Zahlen mit Strings vergleichen?

Gruß
   Sailor


Gesendet mit Tapatalk
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Puschel74 am 09 Oktober 2014, 16:42:19
Grüße

Schau doch mal ins Logfile  ;)
Was hält dich übrigens davon ab es so zu lösen wie im verlinkten Beitrag?

Grüße

Edith: Man muss nicht jedes Rad neu erfinden in der Hoffnung das es noch runder wird  ;D
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Sailor am 12 Oktober 2014, 23:09:17
Zitat von: Puschel74 am 09 Oktober 2014, 16:42:19
Was hält dich übrigens davon ab es so zu lösen wie im verlinkten Beitrag?

Edith: Man muss nicht jedes Rad neu erfinden in der Hoffnung das es noch runder wird  ;D

Ja ja, ist ja gut. Habe ich ja nun auch so gemacht. Wenn auch etwas auf Umwegen.  ;D

Mein fhem-Config Auszug fuer das Schlafzimmer


###START###### Define ReadingsGroup for Battery Status #########################################################START###
######This block must be at the end of all blocks defining the devices since the device must be initialised first!######
define rg_BR_battery readingsGroup BR_.*:,<{batDeviceIndicator($DEVICE)}>,<{batLevelIndicator($DEVICE)}>
attr rg_BR_battery room Battery Status
attr rg_BR_battery noheading 1
attr rg_BR_battery group Bedroom
attr rg_BR_battery style style="border:0px;background:none;box-shadow:none"
####END####### Define ReadingsGroup for Battery Status ##########################################################END####


Mein 99_myUtils-Auszug

###START########## Define Sub for binding battery symbol to battery status/level ###############################START###
sub batDeviceIndicator($) {
my $device = shift;
my $myBatLevel = ReadingsVal($device,"batteryLevel", "" );
my $myBatStatus = ReadingsVal($device,"battery", "" );

# In case of device with emtpy battery status and battery level or being a child (by having a second "_" in the name), ignore device
if (($myBatLevel eq "" && $myBatStatus eq "") || (index($device, "_", 3) > 0)) {
return;
}
else {
return ("%".$device);
}
}


sub batLevelIndicator($) {
my $device = shift;
my $myBatLevel = ReadingsVal($device,"batteryLevel", "" );
my $myBatStatus = ReadingsVal($device,"battery", "" );

# In case of device with emtpy battery status and battery level or being a child (by having a second "_" in the name), ignore device
if (($myBatLevel eq "" && $myBatStatus eq "") || (index($device, "_", 3) > 0)) {
return;
}
else {
if ($myBatLevel eq ""){
if    ( $myBatStatus =~ m/ok/                       ) {return ("%Battery-100");}
elsif ( $myBatStatus =~ m/low/                      ) {return ("%Battery-020");}
}
else {
if    ( $myBatLevel                           <= 2.1) {return ("%Battery-020");}
elsif ( $myBatLevel  > 2.1    && $myBatLevel  <= 2.3) {return ("%Battery-040");}
elsif ( $myBatLevel  > 2.3    && $myBatLevel  <= 2.5) {return ("%Battery-060");}
elsif ( $myBatLevel  > 2.5    && $myBatLevel  <= 2.7) {return ("%Battery-080");}
elsif ( $myBatLevel                           >  2.7) {return ("%Battery-100");}
   }
}
}
####END########### Define Sub for binding battery symbol to battery status/level ################################END####


Die Anzeige erfolgt wie Bildschirmauszug im Anhang.

Zwei Fragen habe ich dazu dennoch:

a) Wieso spuckt fhem mir beim abspeichern die Fehlermeldung Unknown command background:none, try help. Unknown command box-shadow:none", try help. aus.
Er macht doch genau was ich will. Lasse ich hingegen die Befehle fuer "background" und "shadow" weg, dann sind zwar die Fehlermeldungen weg aber dafuer siehts haesslich aus.
Ist das wieder so ein Fall gemaess dem Motto: "Man kann nicht alles haben" oder mache ich wieder einen Syntax-Fehler?

b) Nur zum Lernen: wie kann ich den Aufruf von 2 Funktionen unterdruecken und alles nur mit einem Funktionsaufruf "vereinfachen"?

Danke
   Gruss
       Sailor
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Puschel74 am 13 Oktober 2014, 06:11:32
Hallo,

zu a kann ich dir nichts sagen - sorry.

Zu b:
Schreib doch nur eine Funktion und ruf auch nur diese eine auf.
Du übergibst ja beidemale sowieso das selbe - $DEVICE
Aber ich vermute du hast das schon versucht und es hat nicht geklappt  8)

Grüße
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: justme1968 am 13 Oktober 2014, 09:27:40
zu a: wenn das so in dienen config file steht must du die ; verdoppeln.

gruss
  andre
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Sailor am 13 Oktober 2014, 14:16:10
Zitat von: justme1968 am 13 Oktober 2014, 09:27:40
zu a: wenn das so in dienen config file steht must du die ; verdoppeln.

gruss
  andre

AAAARGH!!!

Danke justme

Ja neee is klar! Versuche ich heute Abend mal und melde mich zurück!

An dieser Stelle vermisse ich den "Kopf-gegen-Wand" - Smiley!  ::)

Gruß
    Sailor

Nachtrag 22:19: Jau das wars. Danke justme!
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Sailor am 13 Oktober 2014, 14:17:57
Zitat von: Puschel74 am 13 Oktober 2014, 06:11:32
Zu b:
Schreib doch nur eine Funktion und ruf auch nur diese eine auf.
Du übergibst ja beidemale sowieso das selbe - $DEVICE
Aber ich vermute du hast das schon versucht und es hat nicht geklappt  8)

Hallo Puschel

ja, habe ich versucht und mir die Zähne ausgebissen. Entweder gibt er mir den Device-Namen zurück oder das Battery - Symbol.
Aber nie beides...  :'(

Was solls, irgendwas ist immer!

Gruss
    Sailor
   
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Sailor am 14 Oktober 2014, 16:34:26
Moin zusamen

Nachtrag: Falls noch jemand an meinen netten Batterie-Bildchen hat anbei als Attachment.

Diese sind selbstgemacht und dürfen auch gerne mit in das fhem repository aufgenommen werden.  8)

Gruß
   Sailor

Nachtrag: Vergessen Transparenz zu aktivieren. Jetzt sogar mit besserer Auflösung
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Puschel74 am 14 Oktober 2014, 16:37:04
Hallo,

coole Icons.
Ich überlege gerade meine FHT zu verkaufen und auch auf HM umzusteigen  8)

Zu "Kopf-gegen-Wand":
Bearbeite nicht die fhem.cfg sonst macht dir dann dein Köpfchen weh  :P

Grüße
Titel: Antw:readingsgroup und valueformat bei Batterylevel
Beitrag von: Sailor am 14 Oktober 2014, 20:05:46
Hi Puschel

6601 Beitraege... wieviele schreibts Du eigentlich so am Tag?  ;)

Gruss
   Sailor

PS: Danke fuer die Blumen  :)