Batterylevel, Volt in % umrechnen

GUI Relevanten, PaperUI, BasicUI, HabPanel ...

Moderatoren: seppy, udo1toni

Antworten
N1d45
Beiträge: 121
Registriert: 5. Jan 2020 14:26
Answers: 2

Batterylevel, Volt in % umrechnen

Beitrag von N1d45 »

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?

Benutzeravatar
udo1toni
Beiträge: 14038
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Batterylevel, Volt in % umrechnen

Beitrag von udo1toni »

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:
  1. Es handelt sich um Größen aus dem Wemos. Das Gerät sollte am besten wissen, wie entladen die Batterie ist.
  2. Du bekommst den Wert schon in mqtt als Klartext angezeigt.
  3. In openHAB brauchst Du ohnehin ein eigenes Item, welches den Wert als Prozentwert verwenden muss - Number oder Dimmer(!) kommen dafür infrage.
  4. Falls Du irgendwann mal auf die Idee kommst, openHAB den Rücken zu kehren, musst Du diesen Teil des Codes nicht erneut anlegen.
  5. Wenn Du nächstes Jahr openHAB auf OH3.0 updatest, könnte ebenfalls ein Neu Schreiben der Rules fällig werden.
  6. (ich spare mir jetzt noch weitere Argumente)
Trotzdem - der Vollständigkeit halber - hier eine Rule für die Aufgabe. Voraussetzung ist ein ungebundenes Number Item, in dem der Prozentwert gespeichert wird. Ich nenne es hier mal Batt_Proz. Das andere Item soll Batt_Volt heißen und ebenfalls ein Number Item sein (Bitte nicht als Number:ElectricPotential definieren, mqtt versteht kein Units of Measurement).:

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

Antworten