Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
de:tech:waterlevel [2022/11/11 16:51] – [Motivation] bullar | de:tech:waterlevel [2022/11/12 19:46] – [Downloads] bullar | ||
---|---|---|---|
Zeile 9: | Zeile 9: | ||
Fertige Lösungen sind wie immer sehr teuer und ausserdem ist ja auch der Weg das Ziel. Eine mechanische Lösung habe ich von vorne herein ausgeschlossen um wartungsfrei zu bleiben, | Fertige Lösungen sind wie immer sehr teuer und ausserdem ist ja auch der Weg das Ziel. Eine mechanische Lösung habe ich von vorne herein ausgeschlossen um wartungsfrei zu bleiben, | ||
- | Auch wollte ich keine Lösung, wo ich die Tanks unterhalb der max. Wasserlinie | + | Auch wollte ich keine Lösung, wo ich die Tanks unterhalb der max. Wasserstandshöhe |
- | Da die Geometrie der Tanks bekannt ist, bietet sich so eine Ultraschall-Abstandsmessung der Wasseroberfläche an. Selbst während des Pumpvorganges ist die Wasseroberfläche nicht so rau, das es zu deutlichen Fehlmessungen kommen wird. | + | Da die Geometrie der Tanks bekannt ist, bietet sich eine Ultraschall-Abstandsmessung der Wasseroberfläche an. Selbst während des Pumpvorganges ist die Wasseroberfläche nicht so rau, das es zu deutlichen Fehlmessungen kommen wird. |
Beispiele für DIY Lösungen sind auch hier zu finden (teilweise nach meiner Implementierung in 2021 erschienen): | Beispiele für DIY Lösungen sind auch hier zu finden (teilweise nach meiner Implementierung in 2021 erschienen): | ||
- [[https:// | - [[https:// | ||
Zeile 20: | Zeile 20: | ||
{{: | {{: | ||
- | Das AJ-SR04M hat einige gute Eigenschaften: | + | Das AJ-SR04M |
- wasserfester Sensorkopf | - wasserfester Sensorkopf | ||
- Messbereich von 20cm bis 450cm | - Messbereich von 20cm bis 450cm | ||
- gute Auflösung von 0.5cm | - gute Auflösung von 0.5cm | ||
- fünf Betriebsmodi (pulse width (default), low power pulse width, automatic serial port, serial port trigger, ASCII code output) | - fünf Betriebsmodi (pulse width (default), low power pulse width, automatic serial port, serial port trigger, ASCII code output) | ||
- | - geringe Stromaufnahme im Ruhebetrieb (< 20µA) | + | - geringe Stromaufnahme im Ruhebetrieb (<20µA) |
- | Vom HC-SR04 kennen wir die Pulseweitenmessung. Zur Bestimmung der Entfernung messen wir die Zeit vom Triggersignal bis zum eintreffenden Echosignal. Das AJ-SR04M Modul hat einen eigenen Microcontroller an Board und bietet diese Zeitmessung an und kann das Ergebnis seriell | + | Vom HC-SR04 |
^ Modus ^ R19 ^ Standby Current ^ Low Power Current ^ | ^ Modus ^ R19 ^ Standby Current ^ Low Power Current ^ | ||
Zeile 41: | Zeile 41: | ||
===== Umsetzung ===== | ===== Umsetzung ===== | ||
- | Ich habe mich für den Mode 4 entschieden bei dem serial ein Triggerbyte gesendet wird und anschliessend das Messergebnis seriell empfangen werden kann. Vorgesehen ist eine 0805 Bauform für R19 aber durch die großen Pads läßt sich auch leicht ein bedrahteter Widerstand | + | Ich habe mich für den Mode 4 entschieden bei mit der UART serial ein Triggerbyte gesendet wird und anschliessend das Messergebnis seriell empfangen werden kann. Dazu brauchen wir einen 47KΩ Widerstand. Vorgesehen ist eine 0805 Bauform für R19 aber durch die großen Pads läßt sich auch leicht ein bedrahteter Widerstand anlöten. |
- | {{ : | + | {{ : |
| | ||
Die Baudrate ist übrigens 9600 Baud und nach erfolgter Messung werden fünf Bytes mit folgendem Format übertragen: | Die Baudrate ist übrigens 9600 Baud und nach erfolgter Messung werden fünf Bytes mit folgendem Format übertragen: | ||
Zeile 70: | Zeile 70: | ||
===== Home Assistant Integration ===== | ===== Home Assistant Integration ===== | ||
- | Mit einem ESP8266 Modul und ESPHome gelingt die Integration in Home Assistant sehr einfach. Das serielle Protokoll läßt sich am einfachsten mit einem Custom Component auswerten. | + | Mit einem ESP8266 Modul und ESPHome gelingt die Integration in [[https:// |
- | Das folgende kleine C Programm schreibt das Trigger Byte beim Update Request und berechnet das Messergebnis in Meter anhand der empfangenen fünf Bytes. | + | Das folgende kleine C Programm schreibt das Trigger Byte beim Update Request und berechnet das Messergebnis |
<file C AJ_SR04M_Sensor.h> | <file C AJ_SR04M_Sensor.h> | ||
Zeile 103: | Zeile 103: | ||
</ | </ | ||
- | In ESPHome generieren wir ein neues Device und fügen den eigenen Code mit einem Include | + | In ESPHome generieren wir ein neues Device und fügen den eigenen Code mit einem // |
<code yaml> | <code yaml> | ||
Zeile 113: | Zeile 113: | ||
</ | </ | ||
- | Dann fügen wir die UART Schnittstelle hinzu. Falls wir keine Pins der Hardware UART verwenden wird automatisch eine Software UART implementiert. Da ich in meiner Lösung insgesamt 3 Module anschließe gehen mir sowieso die H/W UARTs aus. Zu guter Letzt die Implementierung der Sensoren. Der Sensor mit der ID '' | + | Dann fügen wir die UART Schnittstelle hinzu. Falls wir keine Pins der Hardware UART verwenden wird automatisch eine Software UART implementiert. Da ich in meiner Lösung insgesamt 3 Module anschließe, gehen mir sowieso die H/W UARTs aus. |
+ | Zu guter Letzt die Implementierung der Sensoren. Der Sensor mit der ID '' | ||
<code yaml> | <code yaml> | ||
Zeile 155: | Zeile 156: | ||
Der Sensorkopf hat am Rand Klemmlaschen und ist so für eine Öffnung von ca. 20mm geeignet. | Der Sensorkopf hat am Rand Klemmlaschen und ist so für eine Öffnung von ca. 20mm geeignet. | ||
- | {{ : | + | {{ : |
- | In dünnwandigen Tankgehäusen kann man mit einem passenden Leerrohrverbinder den Sensor stabil einbauen und gleichzeitig das Kabel ummanteln. | + | In dünnwandigen Tankgehäusen kann man mit einem passenden Leerrohrverbinder den Sensor stabil einbauen und gleichzeitig das Kabel mit einem Kabelschlauch |
- | {{ : | + | {{ : |
- | Hier die Montage oben auf unserem Dwell Tank. Der Sensor ist so gut gegen mechanischen Stress und Umwelteinflüsse geschützt. Bei uns hat er so jetzt mehr als 1 Jahr fehlerfrei überstanden. | + | Hier die Montage oben auf unserem Dwell Tank. Der Sensor ist so gut gegen mechanischen Stress und Umwelteinflüsse geschützt. Bei uns hat er so jetzt schon mehr als 1 Jahr fehlerfrei überstanden. |
- | {{ : | + | {{ : |
In den meisten Fällen wird wahrscheinlich das 2.5m lange Sensorkabel ausreichen. Bei mir war die Entfernung zu zwei Tanks leider größer. Versuche das Sensorkabel zu verlängern zogen Messungenauigkeiten mit sich. Deshalb habe ich die AJ-Steuerplatine abgesetzt und in einem kleinen, wasserdichten Gehäuse verstaut. Das Bild zeigt nur das innere 3D-gedruckte Gehäuse. | In den meisten Fällen wird wahrscheinlich das 2.5m lange Sensorkabel ausreichen. Bei mir war die Entfernung zu zwei Tanks leider größer. Versuche das Sensorkabel zu verlängern zogen Messungenauigkeiten mit sich. Deshalb habe ich die AJ-Steuerplatine abgesetzt und in einem kleinen, wasserdichten Gehäuse verstaut. Das Bild zeigt nur das innere 3D-gedruckte Gehäuse. | ||
Zeile 169: | Zeile 170: | ||
{{ : | {{ : | ||
- | Das ESPHome Modul ist in einem etwas größeren, wasserfesten Gehäuse untergebracht. Das Innenleben ist auf einem 3D-gedruckten Träger untergebracht. Für zwei Wassertanks kommt das serielle Signal über ein 4-adriges Kabel an die Schraubklemmen (der oben gezeigte Adapter ist ja dazwischen)) und der nahe gelegene Wassertank wird direkt an das Messmodul angeschlossen. Als Netzteil verwende ich übrigens immer diese Apple-ähnlichen USB Power Supplies. Der Eingang wurde von mir auf Schraubklemmen modifiziert. Diese Lösung ist recht zuverlässig, | + | Das ESPHome Modul ist in einem etwas größeren, wasserfesten Gehäuse untergebracht. Das Innenleben ist auf einem 3D-gedruckten Träger untergebracht. Für zwei Wassertanks kommt das serielle Signal über ein 4-adriges Kabel an die Schraubklemmen (der oben gezeigte Adapter ist ja dazwischen)) und der näher |
{{ : | {{ : | ||
Zeile 176: | Zeile 177: | ||
===== Ergebnisse ===== | ===== Ergebnisse ===== | ||
- | Nach getaner Arbeit kann man jetzt den Füllstand der Tanks beobachten und auch Aktionen daraus ableiten. Hier ein Blick auf das übersichtliche Panel für den Aussenbereich. Dort werden die Füllstände der Tanks live angezeigt. | + | Nach getaner Arbeit kann man jetzt den Füllstand der Tanks beobachten und auch Aktionen daraus ableiten. Hier ein Blick auf das übersichtliche Panel von Home Assistant |
{{ : | {{ : | ||
Zeile 185: | Zeile 186: | ||
Der unterschiedliche Füllstand liegt am manuelle Auffüllen, da der mechanische Endschalter bei der Erstellung des Artikels defekt war. | Der unterschiedliche Füllstand liegt am manuelle Auffüllen, da der mechanische Endschalter bei der Erstellung des Artikels defekt war. | ||
- | Mit Hilfe der Statistik Funktion in Home Assistant lässt sich daraus auch leicht ein Verbrauchssensor generieren. | ||
- | <code yaml> | ||
- | sensors: | ||
- | - platform: statistics | ||
- | entity_id: sensor.water_tank_volume | ||
- | name: Water Usage | ||
- | sampling_size: | ||
- | state_characteristic: | ||
- | </ | ||
+ | |||
+ | |||
+ | =====Links===== | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ===== Spenden ===== | ||
+ | |||
+ | Wenn ihr meine Arbeit unterstützen wollt, so könnt ihr mir gerne einen Cappuccino oder so spenden: . | ||
+ | |||
+ | < | ||
+ | |||
+ | <form action=" | ||
+ | <input type=" | ||
+ | <input type=" | ||
+ | <img alt="" | ||
+ | </ | ||
+ | |||
+ | </ | ||