Hallo,
ich möchte über multistate symbol den Batteriestatus ausgeben. Das device hat ein battery reading das mir den Ladestatus mit % zurückgibt. Z.B. 75 %
Somit passen meine state definitionen nicht.
Bei label kriege ich es mit
data-substitution="toString().replace(' %','')"
weg. Gibt es sowas bei symbol oder muß man das mit einem dummy umgehen?
<div data-type="symbol" data-device="Sensor_WZ"
data-get="battery"
data-states='["0","26","51","76","90"]'
data-icons='["oa-measure_battery_0 fa-blink","oa-measure_battery_25 fa-blink","oa-measure_battery_50","oa-measure_battery_75","oa-measure_battery_100"]'
data-colors='["red","red","orange","green","green"]'>
</div>
<div data-type="label" data-device="Sensor_WZ" data-get="battery" data-substitution="toString().replace(' %','')" class="small top">Wohnzimmer</div>
Gruß
Eisix
Hallo,
habe es jetzt wie wohl die meisten anderen über readingsgroup gemacht. Funktioniert zumindest, gefällt mir aber nicht wirklich.
FTUI
<div data-type="readingsgroup" data-device="Batterien" data-max-update="86400"></div>
Auszug fhem.cfg
define Batterien readingsGroup .*:battery
attr Batterien mapping $ALIAS
attr Batterien noheading 1
attr Batterien valueFormat {return "<i class='oa oa-measure_battery_0 red large blink'><span class='myhidden'>0</span></i>" if( $VALUE eq "low" );;;; return "<i class='oa oa-measure_battery_100 green large'><span class='myhidden'>100</span></i>" if( $VALUE eq "ok" );;;; return "<i class='oa oa-measure_battery_25 red large blink'><span class='myhidden'> 25</span></i>" if( $VALUE < 2.1 );;;; return "<i class='oa oa-measure_battery_50 orange large'><span class='myhidden'> 50</span></i>" if( $VALUE < 2.3 );;;; return "<i class='oa oa-measure_battery_75 green large'><span class='myhidden'> 75</span></i>" if( $VALUE < 2.5 );;;; return "<i class='oa oa-measure_battery_0 red large blink'><span class='myhidden'> 25</span></i>" if( $value < 25 );;;; return "<i class='oa oa-measure_battery_50 orange large'><span class='myhidden'> 50</span></i>" if ( $value < 50 );;;; return "<i class='oa oa-measure_battery_75 green large'><span class='myhidden'> 75</span></i>" if( $value < 75 );;;; return "<i class='oa oa-measure_battery_100 green large'><span class='myhidden'>100</span></i>";;}
Gruß
Eisix
Ein data-substitution für symbol oder Switch ist grundsätzlich keine schlechte Idee, um Werte etwas "vorzubehandeln", bevor ich Vergleiche damit anstelle. Was ist bei dir der genaue Beweggrund? Das % stört für den größer-gleich Vergleich und mit RegEx ist dir das zu kompliziert die richtigen Icons zu mappen?
Der Vergleich zur Auswahl des Icons hat mit dem % dran nicht funktioniert und ich habe keine Möglichkeit gefunden es wegzuschneiden.
Ein dummy + notify mit $EVTPART1 wäre jetzt mein normaler Weg gewesen.
In wie weit kann ich mit RegEx direkt vom widget in den readings arbeiten?
Oder wird das in den data-states gemacht?
Das wurde schon mal hier besprochen.
https://forum.fhem.de/index.php/topic,59071.0.html
In die regex müssen nur noch die % rein, bzw. Wildcards damit es matched.
Denn Thread kenne ich und auch die Beispiele von Github. Mit % hatte ich auch probiert. Werde morgen nochmal Testen vielleicht hab ich mit den klammern was falsch gemacht.
Kaum macht man's richtig geht's! :( ;D
data-states='["[0-9] %","[1-3][0-9] %","[4-5][0-9] %","[6-7][0-9] %","[8-9][0-9] %","100 %"]'
Und ich hätte gewettet das ich das schon probiert hatte.
Danke für das beharrliche schubsen in die richtige Richtung.
Gruß
Eisix