Es gibt ja das dynamische Icon Batterylevel. Dies gefällt mir ganz gut.
Jetzt liefert mir der Sensor aber einen Volt Wert. Und das dynamische Icon Batterylevel funktioniert nur richtig mit Prozentangaben.
Wie kann man die Werte am besten in openHAB umrechnen lassen?
Gesetzt sind:
2,7V Batterie leer. Also alles darunter und gleich 2,7V -> 0%
5,1V Batterie voll. Also alles darüber und gleich 5,1V -> 100%
Die Bereiche dazwischen Prozentual aufgeteilt.
Mathematisch würde ich erst die Range nehmen, und diesen Bereich Prozentual aufteilen, um auf die Prozente zu kommen.
(IstWert - MinWert)*100/(MaxWert-MinWert)
Beispiel 3V gemessen:
(3-2,7)*100/(5,1-2,7)=12,5 //Also 12,5%
Beispiel 4V gemessen:
(4-2,7)*100/(5,1-2,7)=54,167 //Also 54,167%
Natürlich könnte ich das im Wemos im Sketch einfach berechnen und mitsenden. Aber ich würde mir gern auch die Spannung als Wert anzeigen lassen. Dann müsste ich wieder zurück rechnen. Oder ich sende einfach beide Werte auf unterschiedlichen Topics und erstelle so zwei Items in openHAB. Aber vielleicht gibt es auch eine einfache Methode in openHAB?
Gibt es die Möglichkeit, das dynamische Icon zur Anzeige zu verwenden und gleichzeitig dananeben den Voltwert auszugeben? Vermutlich nicht, oder?
Batterylevel, Volt in % umrechnen
- udo1toni
- Beiträge: 14038
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Batterylevel, Volt in % umrechnen
Ich würde eher einen nichtlinearen Bezug annehmen, allerdings ist der natürlich viel schwieriger zu berechnen. Solange die Ungenauigkeit bei der Anzeige nicht stört, wird es mit linear schon passen.
Tatsächlich solltest Du die Berechnung im Wemos erledigen lassen und als zusätzliches Topic übertragen.
Warum:
Tatsächlich solltest Du die Berechnung im Wemos erledigen lassen und als zusätzliches Topic übertragen.
Warum:
- Es handelt sich um Größen aus dem Wemos. Das Gerät sollte am besten wissen, wie entladen die Batterie ist.
- Du bekommst den Wert schon in mqtt als Klartext angezeigt.
- In openHAB brauchst Du ohnehin ein eigenes Item, welches den Wert als Prozentwert verwenden muss - Number oder Dimmer(!) kommen dafür infrage.
- Falls Du irgendwann mal auf die Idee kommst, openHAB den Rücken zu kehren, musst Du diesen Teil des Codes nicht erneut anlegen.
- Wenn Du nächstes Jahr openHAB auf OH3.0 updatest, könnte ebenfalls ein Neu Schreiben der Rules fällig werden.
- (ich spare mir jetzt noch weitere Argumente)
Code: Alles auswählen
rule "Volt zu Prozent"
when
Item Batt_Volt changed // Rule bei Wertänderung ausführen
then
val Number nMax = 5.1 // Maximum
val Number nMin = 2.7 // Minimum
var Number nVolt = 0 // Falls kein gültiger Wert vorliegt, soll 0 Volt angenommen werden
var Number nProz = 0 // 0% als verläufiger Wert
if(Batt_Volt.state instanceof Number) // Falls Batt_Volt.state eine Zahl ist
nVolt = Batt_Volt.state as Number // setze nVolt auf diese Zahl
if(nVolt >= nMax) // falls nVolt >= nMax
nProz = 100 // setze nProz auf 100
else if(nVolt > nMin) // ansonsten, falls nVolt > nMin
nProz = (nVolt-nMin)/(nMax-nMin)*100 // setze nProz auf den errechneten Wert
// trifft keine der beiden Bedingungen zu, ist nVolt <= nMin, also bleibt nProz 0
Batt_Proz.postUpdate(nProz.intValue) // abschließend den Wert ins Item übernehmen.
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet