mit einem Shelly Uni Plus und einem Drucksensor, welcher je nach Höhe einen anderen mV Wert ausgibt, möchte ich den Wasserstand von meinem Brunnen anzeigen.
Die Google KI hat mir eine mögliche Lösung mit einem Template Sensor ausgegeben, mit welchem es aber nicht funktioniert.
Der mV-Wert ändert sich um 1,8mV/cm. Außerdem wird noch ein mV-Wert benötigt, welcher bei 0 cm Tiefe gemessen wird. Dieser ist bei mir 0 mV.
Folgende Formel habe ich in die configuration.yamel unter template eingefügt:
- sensor:
- name: "Brunnen Wassertiefe"
unique_id: brunnen_wassertiefe_cm
unit_of_measurement: "cm"
device_class: "distance"
state: >
{{ ( (states('sensor.brunnen_wassertiefe_voltmeter') | float(0) - 0) / 1.8 ) | round(2) }}
# Annahme: 0mV bei 0 cm Tiefe, 1.8 mV pro 1 cm
Leider funktioniert es so nicht richtig. Wenn ich die Sensorhöhe im Wasser verändere, bleibt im “Übersicht”-Dashboard beim Sensor die Höhe bei 0 cm. Wenn ich dann auf diesen Sensor klicke kann man aber sehen, dass sich der Verlauf ändert.
Habe in der Formel auch das - 0 weg gelassen und es funktoniert auch nicht:
rein und erweitere das, bis du das hast, was Du brauchst.
(Bei state_attr musst Du xxx durch ein geeignetes Attribut ersetzten. Gebe dazu in Entwicklerwerkzeuge>Template in “Entitäten filtern” sensor.brunnen_wassertiefe_voltmeter ein und suche in der Spalte Attribute)
Dann lege einen Helfer (Einstellungen Geräte & Dienste > Helfer) vom Typ Template>Sensor) an und kopiere da dein gefundenes Template rein.
Ich komme mit dem erstellen des Template nicht zurecht.
Wenn ich den 1. oberen Code im Template-Editor eingebe, wird der aktuelle mV angezeigt. Ich bekomme es aber nicht hin, dass dieser in cm umgerechnet wird.
Dies sollte wahrscheinlich mit dem 2. oberen Code funktionieren.
Hier scheitere ich an dem Ersetzen der xxx mit dem geeigneten Attribut.
Unter “Entwicklerwerkzeuge>Template” finde ich keine “Entitäten filtern”. Dies hätte ich aber unter Zustände gefunden und finde dort auch meinen sensor.brunnen_wassertiefe_voltmeter. In der Spalte Attribute sind auch welche vorhanden. Aber was muß ich mit diesen machen. Ich hätte sie im Template-Editor schon mit die die Formel kompiert aber hier kam nur eine Fehlermeldung.
Hier die Entitäten von dem Sensor (ist derzeit auf unavailable, weil er nicht angeschlossen ist; normalerweise steht hier die mV Zahl):
Oder muß ich erste eine bestimmte Erweiterung installieren?
Update:
Jetzt hat es funktioniert. So sieht jetzt der Code aus.
Hätte noch eine Frage, welche jetzt nicht direkt mit HA zu tun hat aber für diese Berechnung wichtig ist. Nämlich, ob ich den Faktor 0.0201 richtig gemessen habe.
Folgende Messwerte habe ich getestet:
0,78 V bei 50 cm
2,79 V bei 150 cm
Berechnung:
2,79 - 0,78 = 2,01 V
150 - 50 = 100 cm
2,01 / 100 = 0,0201 V/cm
Ist hier die Berechnung so richtig?
by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
Ich meine nein: Du hast die nur die Steigung (genauer deren Kehrwert) ausgerechnet, aber du brauchst auch den Offset.
Ich bin auf folgende Formel gekommen:
Höhe = 49,751 cm/V* Spannung + 11,195 cm
Proben:
49,751 cm/V* 0,78V + 11,195 cm = 50,001 cm
49,751 cm/V* 2,79V + 11,195 cm = 150,000 cm
Bei float gibt man in der Klammer den Ersatzwert an, der verwendet wird, wenn der String nicht in eine Zahl gewandelt werden kann.
Ich würde es daher mal so versuchen, damit werden dann 0,0 cm ausgegeben.:
Könntest Du mir bitte erklären, wie Du zu der Formel kommst. Vor allem auch woher die 11,195 und die 49,751 kommen.
Denke nämlich dass Deine Berechnung richtig ist.
Hatte noch einen anderen Messwert (1,80 V bei 100 cm) und hier kommt nach deiner Berechnung auch das richtige Ergebnis (100,75) heraus.
Die Formel bzw. meine Berechnung hat mir die Google-KI so vorgeschlagen als ich allgemein nach der Umrechnung gesucht habe.
Zwei Gleichungen mit zwei Unbekannten: 50 = a * 0,78 + b und 150 = a * 2,79 + b
Aus der ersten Gleichung folgt b = 50 - a * 0,78
Das habe ich in die zweite Gleichung eingesetzt: 150 = a * 2,79 + 50 - a * 0,78
Daraus ergibt sich 100 = a * 2,79 0 - a * 0,78 = a * ( 2,79 - 0,78) = a * 2,01
Also ist a = 100 / 2,01 = 49,751
Und damit b = 50 - a * 0,78 = 50 - (49,751 * 0,78) = 11.195
Das ergibt die Formel Höhe = 49,751 cm/V* Spannung + 11,195 cm
Das haben mir in den 80ern meine Mathe-Lehrer beigebracht, ganz ohne KI