Reading in prozent anzeigen

Begonnen von hankyzoolander, 15 August 2017, 15:42:45

Vorheriges Thema - Nächstes Thema

hankyzoolander

Hallo,
kein Plan wo das jetzt hingehört. Ich erstelle es einfach mal hier. Falls das nicht richtig is, bitte verschieben.

Also, vorweg die Frage braucht man das? Ich für mich sage ja ich möchte es.

Ich habe an einem Raspberry Pi einen Arduino Nano Clone mit Firmata_USB.
Am Arduino hängt ein Helligkeits-Sensor. Dieser ist auf so einer kleinen Platine wo digital und analog ausgibt(glaube jeder kennt das Teil)
Im Fhem eingerichtet bringt der Sensor Werte von 1023=dunkel (Nacht), und 11=Hell (Tag,volle Sonne).
Jetzt möchte ich nicht mit Werten arbeiten wie etwa 700 Licht. Deshalb der Gedanke den Wert in prozent auszugeben.

Habe im Forum ewig gesucht aber nichts für mich brauchbares gefunden.

Hier einmal mein Lösungsweg. Vielleicht kann ich damit jemanden helfen.

Also,

1. Analog-Sensor in Fhem integrieren.
2. Umrechnungs-Code als userReading anlegen

reading {ReadingsVal("helligkeit","reading",0)-11}, wert1 {sprintf "%.1f", ReadingsVal("helligkeit","reading",0)*-0.0977517106549365+100;; }


im ersten Teil korrigiere ich meinen Analogwert. Da volle Sonne bei mir den Wert 11 hat und nicht 0, ziehe ich vom Analogwert einfach die 11 ab, und schon habe ich bei voller Sonne den Wert 0.
Im zweiten Teil lege ich das userReading wert1 an(kann natürlich benannt werden wie ihr möchtet).
In dieses Reading wird vom "Gerät" helligkeit(Sensor) das Reading vorher korrigierte"reading"(Analogwert) genommen und mit 0.0977517106549365 multipliziert,dann multipliziert mit (-1) und dann noch plus 100.
Das sprintf"%.1f" sagt nimm eine Stelle hinter dem Komma.
Dann unter stateFormat habe ich wert1% stehen und schon sieht das ganze aus wie auf dem Bild.
Hoffe ich kann damit dem ein oder anderen etwas helfen.
betateilchen  <--- my personal hero

betateilchen

#1
Wobei die Frage ist, ob man Helligkeit wirklich linear umrechnen sollte.

Zitat von: hankyzoolander am 15 August 2017, 15:42:45
und mit 0.0977517106549365 multipliziert,dann multipliziert mit (-1)

Da kannst Du auch gleich mit -0.0977517106549365 multiplizieren und sparst eine Berechnung.

Zitat von: hankyzoolander am 15 August 2017, 15:42:45
kein Plan wo das jetzt hingehört. Ich erstelle es einfach mal hier. Falls das nicht richtig is, bitte verschieben.

für sowas gibts die Rubrik "Codeschnipsel" und das Thema dorthin verschieben kannst Du selbst machen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!