LevelSender - Tankfüllstand mit JeeLink empfangen

Begonnen von HCS, 04 Mai 2014, 12:03:46

Vorheriges Thema - Nächstes Thema

HCS

Falls jemand gerne den Füllstand in z.B. seinen Regenwassertanks erfassen möchte, hätte ich hier ein "Bastel-Projekt".

Da ich LaCrosse IT+ Sensoren im Einsatz habe, habe ich das Ganze so implementiert, dass es mit dem dafür eh schon verwendeten JeeLink und dem Modul 36_JeeLink.pm zusammen arbeitet. Für den Füllstand gibt es ein neues Modul 36_Level.pm

Eine genaue Beschreibung findet sich in dem angehängten ZIP, im Ordner Documentation, hier einige Eckdaten:
- Batteriebetrieben, eine Laufzeit von zwei Jahren sollte möglich sein
- Sendet Pegel, Temperature und die Batteriespannung
- Messung wahlweise mit "low cost" Ultraschall Sensor HC-SR04 oder SRF02
- Basis ist ein JeeNode
- Mit etwas Löt- und Elektronik-Erfahrung machbar

Das 36_JeeLink.pm muss nicht geändert werden, ich verwende das neue Attribut "Clients".

Das komplette Projekt als ZIP, mit Beschreibung, Schaltplan, Layout, ... findet man hier:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/36_LevelSender.zip

Inzwischen ist das Modul 36_Level.pm im trunk von FHEM eigecheckt, es muss also nicht mehr manuell zur FHEM-Installation hinzugefügt werden.

Das angehängte Beispiel (LevelSender3.jpg) sagt: 510 Liter im Tank, es hat 15 °C und die Batterie hat 6,3 Volt

Letzte Aktualisierung: 25.07.2014 -> Das komplette Projekt ist in FHEM eingecheckt.

Billy

Tolle Arbeit, leider habe ich für meine Zisterne schon seit 2 jahren den KFM100 im Einsatz.

Noch ein Hinweis. Beim dauerhaften Einsatz in einer Zisterne würde ich den feuchtigkeitsdichten Einbau empfehlen.

Gruss Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

HCS

Ja, gegen Feuchtigkeit sollte man es schützen. Ich habe einen Sensor einfach auf einen Schraubdeckel vom Tank gepackt, da dieser Tank im Trockenen steht.

Der im Garten vergrabene Tank ist schwer zugänglich, hier bietet es sich an, nur den HC-SR04 in den Tank zu setzen und mit einem vieradrigen Kabel an eine trockene und zugängliche Stelle zu fahren, wo die Elektronik sitz. Dann hat man es auch leichter, wenn man mal Batterien wechseln oder Firmware aufspielen will.

Noch kurz zur Genauigkeit: der HC-SR04 misst auf ca. 0,5cm genau, was bei meinem 1000l Tank ca. 5 Liter sind.

tpm88

sehr, sehr cool - auch sehr schön dokumentiert.

Ich freue mich schon auf den Nachbau - vor allem wenn ich den Preis mit dem eines KFM100 vergleiche... Zuerst muss aber der georderte Wandwassertank geliefert und aufgestellt werden.

Gruss
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

tpm88

Hallo HCS,

inzwischen habe ich den LevelSender nachgebaut, hat auf Anhieb funktioniert. Danke nochmal für das tolle Projekt.

Zwei Kleinigkeiten sind mir aufgefallen:

- im Configuration Teil des Sketches wird der VOLTAGE_DIVIDER definiert - im Abschnitt "Globals" bei der Deklaration von Voltage steht aber noch hartverdrahtet 10.8 drin - sollte also durch VOLTAGE_DIVIDER ersetzt werden

- der TMP36 misst bei mir stets ca 3 Grad Celsius zu viel. Das ist zwar gerade noch innerhalb der Herstellerspezifikation, wundert mich aber etwas. Ok - bei meinem 300l Regentank macht das auch nur ca 1 Liter Abweichung aus, also zu vernachlässigen.  Ich habe  mir mal den Quellcode zur TMP36 Messung angesehen. Was ich da nicht verstehe - warum wird die Messung mit der referenceVoltage Voltage::ReferenceVoltage11 aufgerufen? Am TMP36 liegen doch 5.0 V vom StepUp Regler an. Wäre da nicht referenceVoltage50 korrekt??

Gruss
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

T.ihmann

Zitat von: HCS am 05 Mai 2014, 22:48:39
Ja, gegen Feuchtigkeit sollte man es schützen. Ich habe einen Sensor einfach auf einen Schraubdeckel vom Tank gepackt, da dieser Tank im Trockenen steht.
Der im Garten vergrabene Tank ist schwer zugänglich, hier bietet es sich an, nur den HC-SR04 in den Tank zu setzen und mit einem vieradrigen Kabel an eine trockene und zugängliche Stelle zu fahren, wo die Elektronik sitz. Dann hat man es auch leichter, wenn man mal Batterien wechseln oder Firmware aufspielen will.

Wie lang darf denn das Kabel zwischen HC-SR04 und Arduino / Jeelink sein ? Hat da jemand Erfahrungen ?

HCS

Freut mich, das es funktioniert hat.

Zitat von: tpm88 am 10 Juli 2014, 22:08:58
- im Configuration Teil des Sketches wird der VOLTAGE_DIVIDER definiert - im Abschnitt "Globals" bei der Deklaration von Voltage steht aber noch hartverdrahtet 10.8 drin - sollte also durch VOLTAGE_DIVIDER ersetzt werden
Ja, das ist definitiv falsch so. Werde ich korrigieren.

Zitat von: tpm88 am 10 Juli 2014, 22:08:58
- der TMP36 misst bei mir stets ca 3 Grad Celsius zu viel. Das ist zwar gerade noch innerhalb der Herstellerspezifikation, wundert mich aber etwas. Ok - bei meinem 300l Regentank macht das auch nur ca 1 Liter Abweichung aus, also zu vernachlässigen.  Ich habe  mir mal den Quellcode zur TMP36 Messung angesehen. Was ich da nicht verstehe - warum wird die Messung mit der referenceVoltage Voltage::ReferenceVoltage11 aufgerufen? Am TMP36 liegen doch 5.0 V vom StepUp Regler an. Wäre da nicht referenceVoltage50 korrekt??
Das Problem beginnt damit, dass der AREF Pin auf dem JeeNode nicht herausgeführt ist.
Somit kann man AREF nicht reingeben sondern nur die interne Referenz von 1,1V verwenden.
In setup() wird diese mit analogReference(INTERNAL); gesetzt und die TMP36 Routine muss mit 1,1V arbeiten.
1,1V entspricht 60°C, mehr kann nicht gemessen werden, aber das reicht ja für diese Anwendung auch aus.
Nicht besonders schön, aber was Besseres ist mir nicht eingefallen und ich wollte keinen JeeNode voraussetzen, bei dem der AREF Pin zusätzlich irgendwie rausverdrahtet sein muss.

Ich habe auch festgestellt, dass mehrere TMP36, die ich getestet habe, zwischen 1 und 2 °C zu hoch messen.
Eventuell wäre ein Offset und/oder ein Korrekturfaktor im Sketch sinnvoll, dass man seine TMP36 "kalibrieren" kann.
Für die Schallgeschwindigkeit ist das eher undramatisch, aber wenn einem die Temperatur als solche interessiert, wäre es schon schön, wenn man sie etwas genauer bekommt.
     
Was ich auch noch einbauen will, ist eine Plausibilitätsprüfung der empfangenen Daten (auf FHEM-Seite).
Selten kommt es vor, dass trotz korrektem CRC unsinnige Werte emfangen werden (Paket auf dem HF-Weg ruiniert).
Beispiel: Temperatur muss zwischen -40 und +60 °C liegen
 
Wenn ich die nächsten Tage mal mehr Zeit habe, werde ich das angehen und dann auch das 36_Level.pm in FHEM einchecken.

HCS

Zitat von: T.ihmann am 11 Juli 2014, 11:20:04
Wie lang darf denn das Kabel zwischen HC-SR04 und Arduino / Jeelink sein ? Hat da jemand Erfahrungen ?

Aktuell habe ich 2 Meter geschirmtes Kabel zwischen dem HC-SR04 und der Elektronik.

tpm88

Zitat von: HCS am 11 Juli 2014, 11:24:06

Ich habe auch festgestellt, dass mehrere TMP36, die ich getestet habe, zwischen 1 und 2 °C zu hoch messen.
Eventuell wäre ein Offset und/oder ein Korrekturfaktor im Sketch sinnvoll, dass man seine TMP36 "kalibrieren" kann.
Für die Schallgeschwindigkeit ist das eher undramatisch, aber wenn einem die Temperatur als solche interessiert, wäre es schon schön, wenn man sie etwas genauer bekommt.
     
Was ich auch noch einbauen will, ist eine Plausibilitätsprüfung der empfangenen Daten (auf FHEM-Seite).
Selten kommt es vor, dass trotz korrektem CRC unsinnige Werte emfangen werden (Paket auf dem HF-Weg ruiniert).
Beispiel: Temperatur muss zwischen -40 und +60 °C liegen
 
Wenn ich die nächsten Tage mal mehr Zeit habe, werde ich das angehen und dann auch das 36_Level.pm in FHEM einchecken.
Ich habe jetzt einen Offset für die Temperaturmessung im Sketch eingetragen, obwohl ich die Temperatur ohnehin nicht weiter benötige. Das Regenfass steht nachmittags auf der Terrasse in der Sonne - da kommen schnell Temperaturen jenseits der 40 Grad zusammen.

Die weiteren Ergänzungen (Plausibiltät) und Einchecken - zumindest in contrib - wären prima.

Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

tpm88

#9
Zitat von: tpm88 am 10 Juli 2014, 22:08:58
inzwischen habe ich den LevelSender nachgebaut, hat auf Anhieb funktioniert. Danke nochmal für das tolle Projekt.

Leider zu früh gefreut. Solange der Regentank (fast) voll war, hat der LevelSender perfekt gemessen. Jetzt mit halbleeren Tank gibt er immer eine Distanz von knapp 40cm zurück. Bei Tests gegen eine Zimmerwand oder Decke misst er auch größere Entfernungen recht genau.

Offenbar verfälschen die auch innen vorstehenden Rippen meines Regentanks (siehe Abbildung) die Messung, weil laut Spezifikation wohl auch Echos bis 45 Grad ausgehend von der Messachse aufgefangen werden.

Da fürchte ich, kann ich nicht viel machen.... Sehr schade.

Tobias

Edit: PS: Eben mal Versuche mit einem 2m langen DN-100 KG Regenrohr gemacht. Senkrecht auf den Boden gestellt, LevelSender oben drauf und durch das Rohr gemessen mit 5s Messabstand. Die Messungen springen dann recht wild zwischen 100 und 150cm hin und her. Auch keine Lösung...
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

ext23

Hallo,

wie ist das eigentlich mit der Feuchtigkeit bei dem Ultraschall Sensor? Ich meine wenn man sowas im Dom installiert steht das Teil ja ständig im Kondenswasser. Wird das durch den Ultraschall "Abgeschüttelt" oder wie ist das? Hat da schon einer Erfahrung mit?

Gruß
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

HCS

Zitat von: tpm88 am 19 Juli 2014, 11:34:59Eben mal Versuche mit einem 2m langen DN-115 Regenrohr gemacht. Senkrecht auf den Boden gestellt, LevelSender oben drauf und durch das Rohr gemessen mit 5s Messabstand. Die Messungen springen dann recht wild zwischen 100 und 150cm hin und her. Auch keine Lösung...
Mit einem DN-50 HT-Rohr, das 140 cm lang ist, funktioniert das bei mir tadellos, damit steht der Sensor in einem meiner Tanks.
Die 400 Liter bis zum 7. Juli sind ca. 90cm Distanz vom HC-SR04 bis zur Wasseroberfläche.

Der Sensor ist so montiert, dass er mit der Platine auf dem Rand liegt, und somit die Schallwandler in das Rohr hineinragen.

Wie zu sehen, misst er (mit der kleinen Ausnahmen am 10. Juli) sehr konstant.

HCS

Zitat von: ext23 am 19 Juli 2014, 12:28:04
wie ist das eigentlich mit der Feuchtigkeit bei dem Ultraschall Sensor? Ich meine wenn man sowas im Dom installiert steht das Teil ja ständig im Kondenswasser. Wird das durch den Ultraschall "Abgeschüttelt" oder wie ist das? Hat da schon einer Erfahrung mit?
Wie auch immer es geht, es geht  :)
Ich habe das nun seit Anfang Mai mit konstanten Messwerten laufen. Da war es inzwischen kühl, heiß, randvoll, fast leer.
Wie viele Jahre der HC-SR04 das mitmacht und was er im Winter bei -20°C macht, bleibt noch abzuwarten.

Für die Ölstandmessung im Keller habe ich seit ca. 6 Jahren einen HC-SR02 mit der DN-50 Rohr Methode im Öltank stehen. Dem hat das bis heute nichts ausgemacht.

HCS

Falls jemand Lust hat, kann er mal nach Sensoren mit einer stärkeren Richtcharakteristik suchen. Falls technisch kompatibel schreibe ich gerne die Ansteuerung für verschiedene optionale Sensortypen um.

tpm88

Ganz interessant ist dieser Artikel zum Thema Fokussierung:

http://www.robot-electronics.co.uk/htm/reducing_sidelobes_of_srf10.htm

Damit werde ich mal experimentieren.

Laut http://www.robot-electronics.co.uk/htm/sonar_faq.htm hat der SRF235 die beste Richtcharakteristik, kommt mit > 100 EUR aber nicht in Frage. Der SRF02 hat zwar laut Datenblatt die gleiche Charakteristik wie der SRF04, ist aber in der Praxis wohl etwas "enger".

Der SRF02 kommt mit ca 13 EUR preislich in Frage. Der würde sich bei mir im DN 100 KG Rohr auch einfach zentrieren lassen, weil er nur einen Ultraschallsender hat. Du betreibst doch bereits einen SRF02 - benötigt die Schaltung und oder die Software dann Anpassungen?

Gruss
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT