Hallo,
ich versuche mich schon länger an einer Benachrichtigung wenn Batterien sich dem Ende nähern!
Alle Devices sind HmIP haben aber keine einheitliche Namesstruktur.
Teilweise funktioniert es:(((["^:voltage"] > 1.5) and (["^:voltage"] < 2.2)) or (["^:voltage"] < 1.2))
(
{DebianMail('beo.bachter@gmx.at', 'Smarthome: Batteriestand', 'Der Batteriestand von $DEVICE ist '.ReadingsVal("$DEVICE","voltage",0).'V' , '');
Log 0, "$DEVICE: Batteriewarnung ".ReadingsVal("$DEVICE","voltage",0).'V EVENT = $EVENT EVENTS = $EVENTS'}
)
DOELSEIF ([12:00])
Sinn ist es, dass bei allen Devices die das Reading voltage haben eine Mail verschickt wird bei 1,5V kommt unter 1,2V und bei 3,0V unter 2,2V eine Mail!
Das ganze wird einmal Täglich aufgerufen.
Ein Teil meines Problemes, die Auswahlbedingungen werden nicht erkannt und der andere Teil, dass er nur eine findet auch wenn mehrere vorhanden sind!
Im voraus Danke,
Johann
Würde ich so nicht machen. Die Definition reagiert auf alle Events (da keine Devices eingeschränkt) und produziert unnötig viel Systemlast.
Ich würde eher einmal am Tag per Zeittrigger die Aggregationsfunktion aufrufen, die dir alle verdächtigen Geräte liefert.
lt. Docu dürfte die Routine nur einmal um 12:00 Uhr aufgerufen werden DOELSEIF ([12:00])
oder verstehe ich da auch was falsch.
Zitatlt. Docu dürfte die Routine nur einmal um 12:00 Uhr aufgerufen werden
Das glaube ich nicht.
Zitat?
Das ist der wiki Eintrag von dem ich ausgegangen bin:
https://wiki.fhem.de/wiki/DOIF/do_always_Alternative_am_Beispiel_einer_Batteriewarnung_via_Telegram (https://wiki.fhem.de/wiki/DOIF/do_always_Alternative_am_Beispiel_einer_Batteriewarnung_via_Telegram)
Vielleicht ist auch das was für dich: https://forum.fhem.de/index.php/topic,82637.0.html
Gruß, Joachim
ZitatZum täglichen 'Rücksetzen' des DOIF wird eine 2., zeitbasierte Bedingung definiert, welche das DOIF von state cmd1 (nach einer ausgelösten Warnung) auf cmd2 wechseln lässt. So wird führt das nächste Event wieder zu einer Warnung.
Zitatlt. Docu dürfte die Routine nur einmal um 12:00 Uhr aufgerufen werden
Da steht eben, dass das DOIF um 12:00 zurückgesetzt wird, die Meldung wird beim nächsten folgenden Event ausgelöst.
Bin immer noch am Lesen in dem Thread die du mir geschickt hast!
Ich habe den Satz falsch Interprediert, da währe dann doch ein at besser!
@MadMax-Fhem, so, bin mittlerweile mit den Threads von durch und zu der Erkentniss gekommen,
um das zu bekommen was ich will muss ich selber ran!
@Damian und @rabehd, mein Aufbau ist jetzt in ein at um die Systemlast zu reduzieren.
Ich weiss leider nicht wie ich die Liste der Geräte durchgehen soll.
Werde weitersuchen, vielleicht kann mir ja jemand noch einen Kick geben.
LG
Johann
Zitat von: Johann.S am 25 September 2019, 12:43:12
@MadMax-Fhem, so, bin mittlerweile mit den Threads von durch und zu der Erkentniss gekommen,
um das zu bekommen was ich will muss ich selber ran!
@Damian und @rabehd, mein Aufbau ist jetzt in ein at um die Systemlast zu reduzieren.
Ich weiss leider nicht wie ich die Liste der Geräte durchgehen soll.
Werde weitersuchen, vielleicht kann mir ja jemand noch einen Kick geben.
LG
Johann
Du brauchst doch nur das Beispiel aus der Commandref auf deine Anwendung anpassen:
Zitat(push "In folgenden Zimmern ist zu kalt [@"^Rooms":temperature:$_ < 20,"keine"]")
Du musst nur das Reading und den Grenzwert anpassen, mit [@"": kannst du alle Geräte checken.
Hey,
sowas interessiert mich auch. Wäre schön, wenn du das fertige Ergebnis hier mal posten könntest. Ich bin gerade für ein paar Wochen auf einem Roadtrip und habe keine Zeit für FHEM. ;)
Viele Grüße Hoppel
Hier mal ein Einzeiler in DOIF-Perl als Raw Definiton:
defmod di_battery DOIF {[18:00];;fhem_set("pushbullet message Batteriewechsel für folgende Geräte:".[?@"":value:$_ < 2.2]) if ([?#"":value:$_ < 2.2,0])}
kann jeder für seine Bedürfnisse anpassen :)
Im Klartext: Um 18:00 Uhr wird geprüft, ob es Geräte gibt, die im Reading value (falls existent) einen Wert kleiner 2.2 haben, wenn ja, dann werden die Gerätenamen per pushbullet versendet
Informative Links:
https://fhem.de/commandref_DE.html#DOIF_aggregation
https://fhem.de/commandref_DE.html#DOIF_Perl_Modus
Danke für den Einzeiler, ich bin erst jetzt dazu gekommen ihn auszuprobieren!
Bei zwei 1.5V Batterien funktioniert es aber ich habe auch einzelne 1.5V Batterien (HMIP-SWDO).
Wie kann ich diese in das DOIF bringen!
if ([?@"":value:$_ < 1.2]) or (([?@"":value:$_ > 1.5]) and ([?@"":value:$_ < 2.2])
Einer meiner Versuche sieht so aus:
In folgenden Geräten ist die Batterie zu wechseln: [@"":voltage:$_ < 1.2 or [@"":voltages:$_> 1.5 and [@"":voltage:$_ < 2.4 ]]]
Fehler: error in aggregate function: Can't find string terminator '"' anywhere before EOF, line 1
In folgenden Geräten ist die Batterie zu wechseln: [@"":voltage:$_ < 1.2] or ([@"":voltages:$_> 1.5 ] and [@"":voltage:$_ < 2.4 ])
absoluter Schuss in den Ofen
In folgenden Geräten ist die Batterie zu wechseln: [@"":voltage:$_ < 1.2 or ((AttrVal($name,"voltage",0) > 1.5) and (AttrVal($name,"voltage",0) < 2.4))]
Hier kommen nur die kleiner 1.2
Ich habe mir in der Referenz die Aggregationsbedingungen angesehen und komme auf keinen grünen Zweig.
Meine RAW Definition:
defmod di_battery DOIF ([18:00])
attr di_battery do always
attr di_battery room EG->Buero
attr di_battery state In folgenden Geräten ist die Batterie zu wechseln: [@"":voltage:$_ < 1.2 or ((AttrVal($name,"voltage",0.0) > 1.5 ) and (AttrVal($name,"voltage",0.0) < 2.4 ))]
setstate di_battery In folgenden Geräten ist die Batterie zu wechseln: Eugen_Fenster_links,Wohnzimmer_Fenster_rechts,Wohnzimmer_Steckdose
setstate di_battery 2019-10-09 22:28:30 cmd 1
setstate di_battery 2019-10-09 22:28:30 cmd_event set_cmd_1
setstate di_battery 2019-10-09 22:28:30 cmd_nr 1
setstate di_battery 2019-10-09 22:04:54 mode enabled
setstate di_battery 2019-10-09 22:46:36 state In folgenden Geräten ist die Batterie zu wechseln: Eugen_Fenster_links,Wohnzimmer_Fenster_rechts,Wohnzimmer_Steckdose
setstate di_battery 2019-10-09 22:04:54 timer_01_c01 10.10.2019 18:00:00
Vieleicht kann mich jemand in die richtige Richtung schubsen!
[?@"":value:$_ < 2.2]
?@"" => Aggregation
value => Reading
$_ < 2.2 => Condition
Da musst Du nur die Condition ändern:
[?@"":value:$_ < 2.2 or ($_ > 1.5 and $_ < 2.4)]
Hallo,
das doif bringt einen Fehler, wenn in value ein string "5 V" steht.
Da braucht man den numerischen Wert.
Wie wäre das dann zu ändern?
Gruß
Carlos
hier steht https://fhem.de/commandref_DE.html#DOIF_aggregation wie man auf numerische Werte (nach Zahl gefilterten Werte) zugreifen kann.
Zitat von: Johann.S am 09 Oktober 2019, 22:51:17
Danke für den Einzeiler, ich bin erst jetzt dazu gekommen ihn auszuprobieren!
Bei zwei 1.5V Batterien funktioniert es aber ich habe auch einzelne 1.5V Batterien (HMIP-SWDO).
Wie kann ich diese in das DOIF bringen!
Moin
Zur Not wuerde es auch ein zweites DOIF tun!?
Gruss Christoph
Hallo,
@amenomade, danke das funktioniert.
@pc1246, wäre mit der jetzigen Version möglich aber nicht mehr notwendig!
Für alle die es Interessiert, meine RAW Definition
defmod di_battery DOIF (([12:00]) and ([?#"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )]))\
(\
{ DebianMail('beo.bachter@gmx.at', 'Smarthome: Batteriestand', 'In folgenden Geräten ist die Batterie zu wechseln: [?@"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )]', '') }\
)
attr di_battery do always
attr di_battery room EG->Buero
attr di_battery state In folgenden Geräten ist die Batterie zu wecnseln: [?@"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )]) if ([?#"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )])
@Alle, Danke für die Hilfe.
Zitat von: Johann.S am 11 Oktober 2019, 12:24:24
Hallo,
@amenomade, danke das funktioniert.
@pc1246, wäre mit der jetzigen Version möglich aber nicht mehr notwendig!
Für alle die es Interessiert, meine RAW Definition
defmod di_battery DOIF (([12:00]) and ([?#"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )]))\
(\
{ DebianMail('beo.bachter@gmx.at', 'Smarthome: Batteriestand', 'In folgenden Geräten ist die Batterie zu wechseln: [?@"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )]', '') }\
)
attr di_battery do always
attr di_battery room EG->Buero
attr di_battery state In folgenden Geräten ist die Batterie zu wecnseln: [?@"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )]) if ([?#"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )])
@Alle, Danke für die Hilfe.
Das kann man so machen, allerdings werden die Unzulänglichkeiten des FHEM-Modus sichtbar: hier wird unnötig bis zu vier mal eine aufwändige Routine aufgerufen.
Im Perl-Modus kann man elegant über das ganze Modul Variablen nutzen, die man mehrfach verwenden kann.
Diese Definition tut das Gleiche, dürfte aber mit wesentlich weniger Systemlast auskommen (auch wenn es nur einmal am Tag passiert):
define di_battery DOIF {
[12:00];
if ([?#"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )]) {
$_dev=[?@"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )];
DebianMail('beo.bachter@gmx.at', 'Smarthome: Batteriestand', "In folgenden Geräten ist die Batterie zu wechseln: $_dev",'');
set_State ("In folgenden Geräten ist die Batterie zu wechseln: $_dev");
}
}
Wo liegt der Unterschied?
Zitat von: amenomade am 11 Oktober 2019, 18:56:33
Wo liegt der Unterschied?
Das müsste dir eigentlich auffallen. In seiner Version wird mindestens zwei mal [?#"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )] aufgerufen und wenn es wahr ist, dann noch mal zwei mal [?@"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )]
In meiner Version wird nur einmal [?#"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )] für die Prüfung genutzt und wenn es wahr ist nur einmal [?@"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )]
Zu bedenken ist, dass bei einer Aggregationsfunktion in zwei ineinander geschachtelten Schleifen das komplette System durchleuchtet wird.
Hinzukommt, dass im Perl-Modul bereits bei der Definition alles in Perl übersetzt wird. Im FHEM-Modus dagegen wird der Ausführungsteil und auch State bei jedem Aufruf erst mal in Perl übersetzt.
Es handelt sich hier sicherlich insgesamt um ein paar hundert Millisekunden, aber die summieren sich bei jeder Definition. Aus dem Bauchgefühl dürfte die Perl-Version Faktor 3-5 weniger Systemlast beim Aufruf produzieren, als die FHEM-Version.
Ahja, das im state hatte ich übersehen. Danke dir!
ZitatDiese Definition tut das Gleiche, dürfte aber mit wesentlich weniger Systemlast auskommen (auch wenn es nur einmal am Tag passiert):
Ich bin da ganz deiner Meinung und habe es gleich übernommen.
Leider kommt eine Fehlermeldung:
2019.10.11 21:38:00 4 : di_battery: condition c01: Undefined subroutine &DOIF::DebianMail called, line 5. in perl block 1
2019-10-11 21:38:00 DOIF di_battery block_01: condition c01: Undefined subroutine &DOIF::DebianMail called, line 5.
Ich interpretiere die Meldung so, dass er DebianMail nicht findet.
defmod di_battery DOIF { [12:00];; \
if ([?#"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )]) {\
$_dev=[?@"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )];;\
set_State ("In folgenden Geräten ist die Batterie zu wechseln: $_dev");;\
DebianMail('beo.bachter@gmx.at', 'Smarthome: Batteriestand', 'In folgenden Geräten ist die Batterie zu wechseln: $_dev','');;\
}\
}
Ich habe nur die Zeile set_State vor DebianMail gesetzt um ein Ergebnis zu sehen!
ja, da es sich hier um eine Funktion aus dem main-package handelt, musst du :: davorsetzen, ansonsten ist man im gekapselten DOIF-package:
::DebianMail(..
so funktioniert es, ich musste nur die Variable $_dev noch aus den String nehme!
defmod di_battery DOIF { [12:00];; \
if ([?#"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )]) {\
$_dev=[?@"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 )];;\
set_State ("In folgenden Geräten ist die Batterie zu wechseln: $_dev");;\
::DebianMail('beo.bachter@gmx.at', 'Smarthome: Batteriestand', 'In folgenden Geräten ist die Batterie zu wechseln: '. $_dev ,'');;\
}\
}
Danke noch mal für die Unterstützung!
Gruß Johann
Zitat von: Damian am 11 Oktober 2019, 18:52:45Im Perl-Modus kann man elegant über das ganze Modul Variablen nutzen, die man mehrfach verwenden kann.
Kann man im DOIF-Mode doch mittels DOIF_Readings machen, oder?
Zitat von: Per am 15 Oktober 2019, 10:12:34
Kann man im DOIF-Mode doch mittels DOIF_Readings machen, oder?
ja, aber eine Perl-Variable zu nutzen, ist um einiges effizienter als ein Reading über Funktionen zu setzen oder auszulesen, zumal die Variable hier nur temporär gebraucht wird. Noch schlimmer wird es, wenn man ein Reading über setreading setzt, da der FHEM-Befehl erst über einen Parser erkannt werden muss ;)
Hier noch mal eine Version für "Fanatiker". Sie ist kürzer und produziert noch weniger Last:
defmod di_battery DOIF { [12:00];; \
if (($_dev=[?@"":voltage:$_ < 1.2 or ($_ > 1.5 and $_ < 2.3 ),"keine"]) ne "keine") {\
set_State ("In folgenden Geräten ist die Batterie zu wechseln: $_dev");;\
::DebianMail('beo.bachter@gmx.at', 'Smarthome: Batteriestand', 'In folgenden Geräten ist die Batterie zu wechseln: '. $_dev ,'');;\
}\
}
Kannst du das Beispiel in die Wiki packen?
Gesendet von meinem MI 9 mit Tapatalk
Zitat von: sash.sc am 20 Oktober 2019, 11:29:24
Kannst du das Beispiel in die Wiki packen?
Gesendet von meinem MI 9 mit Tapatalk
Finde ich recht speziell, ich habe z. B. keine Sensoren mit dem Reading Voltage.
Dann besser Sensoren anzeigen, deren Reading battery nicht ok ist oder Ausfall von Sensoren, wie eben gepostet: https://forum.fhem.de/index.php/topic,104569.msg985397.html#msg985397
Hallo Damian,
ich frage mal in diesem Topic und vllt hast du eine schnelle Idee. Kann man bei der Abfrage des Device auch irgendwie filtern "alles, außer HM_ Devices" zum Beispiel
Hintergrund ist und ich habe das noch nicht direkt gefunden. Es gibt ja Geräte mit Battery "low bzw. ok" oder die HUE Geräte mit Prozent Zahl.
Oder anders gefragt, man könnte auch nur nach Zahlen im Reading suchen. Aber mit $number geht das auch nicht.. Am besten wäre natürlich eine kombinierte Abfrage. Steh da gerade auf dem Schlauch und wäre für Hilfe dankbar.
{ [12:00];
if (($_dev=[?@"":battery:$_ < 30,"keine"]) ne "keine") {
set_State ("In folgenden Geräten ist die Batterie zu wechseln: $_dev");
}
}
{ [12:00];
if (($_dev=[?@"":battery:$number < 30,"keine"]) ne "keine") {
set_State ("In folgenden Geräten ist die Batterie zu wechseln: $_dev");
}
}
Kleines Update:
Geht leider doch nicht, zeigt alle Geräte von HUE an.
Ich habe eine Lösung gefunden, aber evtl. gibt es ja noch eine bessere Abfrage:
{ [12:00];
if (($_dev=[?@"":battery:$_ < 30 and $TYPE eq "HUEDevice","keine"]) ne "keine") {
set_State ("In folgenden Geräten ist die Batterie zu wechseln: $_dev");
}
}
Zitat von: stera am 20 Januar 2022, 08:42:30
Hallo Damian,
ich frage mal in diesem Topic und vllt hast du eine schnelle Idee. Kann man bei der Abfrage des Device auch irgendwie filtern "alles, außer HM_ Devices" zum Beispiel
Hintergrund ist und ich habe das noch nicht direkt gefunden. Es gibt ja Geräte mit Battery "low bzw. ok" oder die HUE Geräte mit Prozent Zahl.
Oder anders gefragt, man könnte auch nur nach Zahlen im Reading suchen. Aber mit $number geht das auch nicht.. Am besten wäre natürlich eine kombinierte Abfrage. Steh da gerade auf dem Schlauch und wäre für Hilfe dankbar.
Du kannst auch Verneinungen beim Trigger definieren, siehe: https://forum.fhem.de/index.php/topic,125545.msg1201935.html#msg1201935
Sonst kanns du als Bedingung definieren:
$TYPE ne "HUEDevice" and $_ ne "ok" or $TYPE eq "HUEDevice" and $number < 30
Danke für die schnelle Antwort. Ich habe nun für mich eine gute Lösung gefunden.
Bekomme immer noch Logs im 10s Takt und komischerweise ist ja ein Zeittrigger hinterlegt.?
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146052) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146053) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146054) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146055) line 1.
defmod doif_SensorUeberwachung DOIF { [12:00];; \
if (($_batt1=[?@"HUE|BWM":battery:$_ < 30,"keine"]) ne "keine") {\
fhem("setreading doif_SensorUeberwachung battery_low_percent $_batt1;;")\
} else { fhem("setreading doif_SensorUeberwachung battery_low_percent keine;;") };;;;\
\
if (($_batt2=[?@"HM":battery:$_ ne "ok","keine"]) ne "keine") {\
fhem("setreading doif_SensorUeberwachung battery_low_static $_batt2;;")\
} else { fhem("setreading doif_SensorUeberwachung battery_low_static keine;;") }\
}
attr doif_SensorUeberwachung room SensorÜberachung
attr doif_SensorUeberwachung verbose 0
Zitat von: stera am 20 Januar 2022, 15:38:10
Danke für die schnelle Antwort. Ich habe nun für mich eine gute Lösung gefunden.
Bekomme immer noch Logs im 10s Takt und komischerweise ist ja ein Zeittrigger hinterlegt.?
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146052) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146053) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146054) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146055) line 1.
Dann ist es keine Gute Lösung wenn man "ok" mit > vergleicht
Kann dir aber nicht sagen, woher es kommt, es scheint aber nicht vom geposteten DOIF zu sein, es muss ein Größer-Zeichen > vorkommen.
Hallo Damian,
danke für die Rückmeldung. Das waren doch Meldungen von einer Readingsgroup, die ich auch mit angelegt hatte.
Hast du eine Idee wie in die Warnung hier am besten wegbekomme im ValueFormat?
defmod ReadingGroup_Battery readingsGroup .*:[Bb]attery
attr ReadingGroup_Battery room SensorÜberwachung
attr ReadingGroup_Battery valueFormat { return undef if( $VALUE > 50 );;;; return undef if( $VALUE eq "ok" );;;;}
attr ReadingGroup_Battery valueIcon {'battery.low' => 'unknown@red','battery.ok' => 'general_ok@green','battery' => '{if ($VALUE <= 25) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@red"} else {if ($VALUE <= 50) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@orange"} else {if ($VALUE <= 75) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@yellow"} else {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@green"}}}}'}\
attr ReadingGroup_Battery verbose 0
Zitat von: stera am 20 Januar 2022, 21:54:07
Hallo Damian,
danke für die Rückmeldung. Das waren doch Meldungen von einer Readingsgroup, die ich auch mit angelegt hatte.
Hast du eine Idee wie in die Warnung hier am besten wegbekomme im ValueFormat?
defmod ReadingGroup_Battery readingsGroup .*:[Bb]attery
attr ReadingGroup_Battery room SensorÜberwachung
attr ReadingGroup_Battery valueFormat { return undef if( $VALUE > 50 );;;; return undef if( $VALUE eq "ok" );;;;}
attr ReadingGroup_Battery valueIcon {'battery.low' => 'unknown@red','battery.ok' => 'general_ok@green','battery' => '{if ($VALUE <= 25) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@red"} else {if ($VALUE <= 50) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@orange"} else {if ($VALUE <= 75) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@yellow"} else {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@green"}}}}'}\
attr ReadingGroup_Battery verbose 0
Readingsgroup ist nicht meine Baustelle, da musst du im Readingsgroup-Board anfragen.