[Gelöst] Heizöl-Tankstand-(oder Verbrauchs) Fernablesung mit RasPi und FHEM

Begonnen von Bracew, 02 November 2014, 12:49:34

Vorheriges Thema - Nächstes Thema

Bracew

Hallo an alle Heizöl-Fans und für alle Interessierte,

zu dem Thema: Heizöl-Tankstand-(oder Verbrauchs) Fernablesung mit RasPi und FHEM habe ich im: Deutsches Raspberry Pi Forum einen Beitrag http://www.forum-raspberrypi.de/Thread-haussteuerung-heizoel-tankstand-oder-verbrauchs-fernablesung-mit-raspi?pid=115200#pid115200 mit meiner Lösung beschrieben.

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Grisu

Hoi Bracew

Eine Frage: Sind die Widerstände 330/470 Ohm oder kOhm?
Mein Raspberry hat soeben den geist aufgegeben.

Grus Grisu
2x RPI B+ 1x FritzBox7390 1x USV
1x HM-Lan 1x cul433 1x cul868
9x HM Türkontakt 1x Heizzyklen Überw. 1x Ultraschall Öl Pegel 1x Regens. 15x IT Z.stecker 2x HM Dimmer 6x FS20 Dimmer 1x Stromzähler 1x FS20 to Infrarot 3x HM Rauchmelder 3x Temp 10x Sender
Alarmanlage Aquariumst. Terrariumst.

Bracew

Hallo Grisu,

es sind Ohm / keine KiloOhm Wiederstände.
Korrekt ist: 330Ω und 470Ω

Zur unabhängigen Bestätigung nutze Big Brother Google mit dem Schlagwort: "Raspberry Pi 330 470".
Du findest dann zum Beispiel dieses:
http://www.tutorials-raspberrypi.de/gpio/entfernung-messen-mit-ultraschallsensor-hc-sr04/

Gruß Bracew

P.S.: Gruß in die Schweiz ?!?
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

kvo1

Hallo Bracew,

SUPER ,danke für den Betrag ,so etwas hab ich auch noch gesucht  ;)

klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Bracew

Hallo kvo1,

schön, wenn es Dir gefällt  :).

Ich komme jedoch leider mit der Verbesserung nicht weiter  :'(, siehe:
http://forum.fhem.de/index.php/topic,28891.msg217097.html#msg217097

Ich suche noch Ideen das Problem zu lösen, falls Dir was einfällt?

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Grisu

Hoi Bracew

Ist ja der hammer  8) funktioniert einwandfrei. Besten Dank für deine Beschreibung. Leider hat mich die Aktion einen raspy gekostet! Merke: Stecker der GPIO nie unter Strom ein ausstecken! (Solle man eigentlich wissen) dafür habe ich nun 3 neue Raspy  ;D
Die untere Kurve sind die Schaltzyklen der Heizung. Hab ich am Ölventil abgegriffen

Gruss Grisu
2x RPI B+ 1x FritzBox7390 1x USV
1x HM-Lan 1x cul433 1x cul868
9x HM Türkontakt 1x Heizzyklen Überw. 1x Ultraschall Öl Pegel 1x Regens. 15x IT Z.stecker 2x HM Dimmer 6x FS20 Dimmer 1x Stromzähler 1x FS20 to Infrarot 3x HM Rauchmelder 3x Temp 10x Sender
Alarmanlage Aquariumst. Terrariumst.

Bracew

Hallo Grisu,

schaust Du Dir bei Gelegenheit mal dieses:
http://forum.fhem.de/index.php/topic,28891.msg228208.html#msg228208
an. Es geht um Verbesserungen im Plot-Bereich (Der Tages-Verbrauch wird nun auch angezeigt)

Auch das eigentliche ultrasonic.py Mess-Script habe ich mit numerischen Verfahren noch ein wenig genauer hinbekommen.

Den RasPi kannst Du als "Lehrgeld" einordnen. Nun weißt Du, dass Strom Aua machen kann.

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

CQuadrat

#7
Hallo Zusammen,

da es wohl besser hier hinpasst, poste ich nochmal hier:
Ich habe die obige Beschreibung genau befolgt. Leider "messe" ich immer nur 0,2 cm. Vermutlich das minmal mögliche Delta zwischen StopTime und StartTime -> also kein Messimpuls.

Ist es normal, dass die grüne LED immer blinkt? Auch wenn nicht gemessen wird?
Und für was ist der Drehregler? Lässt sich da vielleicht etwas kalibrieren?

Da die Pins an der Platine bei der Anlieferung etwas verbogen waren, will ich einen Hardwaredefekt auch nicht ausschließen.

Anbei auch ein Bild von meinem Aufbau.


Danke für Tips und Grüße

Christoph


PS: Wenn ich den Sensor ans Ohr halte höre ich ca. zwei Klicks pro Sekunde - auch ohne gestarteten Messvorgang.
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), KM271 (per ser2net), SONOS (div. Gimmicks), OneWire, Hue

Bracew

Hallo CQuadrat,

ich bin gerade einige male in den Heizöl-Keller gelaufen. Die grüne LED an der Sensor Platine ist bei mir immer an. Diese blinkt bei mir nie. Egal, ob der Sensor vom RasPi gerade angesteuert wird oder nicht. Jedenfalls habe ich kein Blinken beobachten können, egal ob gerade gemessen wird oder nicht.

Das mit dem Drehregler habe ich mich auch schon gefragt, aber auch nicht näher hinterfragt. Ich habe ihn so gelassen, wie er war. Wenn Du dazu etwas herausfindest, wäre es nett dies hier zu posten.

Dein Bild ist nicht besonders scharf anzusehen um was darauf beurteilen zu können. Ich vermute, dass die grüne LED blinkt, weil etwas nicht in Ordnung ist. Ist der Sensor "richtig rum" eingesteckt?

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Franz Tenbrock

Hallo
da mein dougie counter bzw der srf02 defekt ist ( Feuchtigkeit ? )
interessiere ich mich nun für Alternativen.
Interessant finde ich die Verwendung von Sensoren die auch be PKW PDC Sytemen eingesetzt werden, hier sind Feuchtigkeitsprobleme Geschichte?!
Wie lang darf das Kabel zwischen Sensor und Platine sein.
Mein Tank ist ca 15 Meter entfernt und nur dafür einen extra Raspi?

Geht das prinzipiell auch mit einem cubietruck3 ?
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Bracew

Hallo Franz Tenbrock,

das Kabel ist mit Stecker und Sensor an je einem Ende vorkonfektioniert auf ca. 2,5-3,0 m Länge.
Eine Auskunft zur zulässigen Länge, falls Du es verlängern willst, kann ich Dir nicht geben. Auch zu Deiner Frage zu cubietruck3 kann ich Dir nicht helfen.
Ggf. hat schon jemand anderes Erfahrungen diesbezüglich.

Gruß Bracew

P.S.: Bemüh mal Google.
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Raven

Vielen Dank für diese Lösung.
Die Kabeldurchführung im Tankdeckel (Kunstoff wahrscheinlich) habt ihr sicherlich abgedichtet. Mit Sillikon o.ä.? Danke vorab.
Cubietruck-Prod: HM-LAN, Heizung, Rolläden, Schalter, Viessmann (optolink)
Cubietruck-DEV:
Fritzbox 7490

Bracew

Hallo Raven,

ich habe Kabelverschraubungen z.B.:https://www.google.de/search?q=kabelverschraubung&biw=1280&bih=903&tbm=isch&tbo=u&source=univ&sa=X&ei=_pMhVeC9OMiQsgG8nID4BA&sqi=2&ved=0CFcQsAQ genommen, siehe auch die Bilder in der Anlage.

Die erhöhte Montage in der Entlüftungsleitung hat den Vorteil des größeren Abstandes zur Heizöloberfläche bei vollem Tank, da der Sensor einen Mindestabstand zum Messen benötigt.

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Raven

Dankeschön Bracew für diesen guten Tip!
Ich schau mir morgen meine vorhandenen Rohre an.
Nochmals vielen Dank. mike
Cubietruck-Prod: HM-LAN, Heizung, Rolläden, Schalter, Viessmann (optolink)
Cubietruck-DEV:
Fritzbox 7490

pallago

Hallo,
anbei auch ein Skript (eine Modifizierung von dem obigen - vielen Dank übrigens), das:
- Messwerte ausliest (kann als Argument angegeben werden wie oft ausgelesen werden soll) (bsp. "$ ./uschall.py --100)
- Median bzw. Mittelwert bildet
- in eine Logdatei automatisch die Werte einträgt (mit Datum und Uhrzeit)
- per Telnet an FHEM die Werte übergibt.

Der Code zur Übergabe an FHEM ist vom Feuchtigkeitssensor DHT22 Skript.

Die folgenden Zeilen Code sollten in fhem.cfg eingefügt werden:
define Zisterne dummy
attr Zisterne stateFormat H: Hoehe V: Volumen F: Fuellstand

define FileLog_Zisterne FileLog ./log/Zisterne-%Y-%W.log Zisterne
attr FileLog_Zisterne logtype text


Bracew

Hallo pallago,

ich habe mittlerweile das Script auch ein wenig verbessert und mir dabei überlegt mit welchem Ansatz aus der Statistik ich "DEN" Ergebnis-Ultraschall-Messwert bestimme.
Zum Beispiel über Mittelwert, gestutzten Mittelwert, Median und auch Modalwert.

Bei vielen Test auch über Testreihen mit vielen hunderten bis tausenden Einzelmessungen ist dabei herausgekommen, was auch die theoretische Statistik sagt, zum Beispiel hier aus Excel: "Bei einer symmetrischen Verteilung einer Zahlengruppe sind diese drei Masse der zentralen Tendenz identisch. Bei einer schiefen Verteilung einer Zahlengruppe koennen die Masse abweichen."

Bei meinen Messungen haben sich Mittelwert, gestutzter Mittelwert, Median und Modalwert immer mehr angeglichen je mehr Einzelmessungen in die Statistischen Werte eingegangen sind, bis sie in den signifikanten Stellen gleich waren. Mit anderen Worten, es ist eigentlich also egal, welchen der Statistik-Werte man benutzt, solange man eine ausreichend hohe Anzahl von Messwerte ermittelt.

Bei sehr langen Testreihen ist mir aufgefallen, dass zwischen Start und Ende es eine Entnahme gegeben haben könnte und dies bereits wiederum die Messung verzerrt.

Nicht ganz sicher bin ich mir bezüglich der Wartezeit (sleep) zwischen einzelnen Ultraschall-Messungen, ob diese die Genauigkeit beeinflusst, zum Beispiel aufgrund von Echos, welche noch im Tank rumschwirren von der vorhergehenden Ultraschall-Messung. Du verwendest     
Zitat# Warte zwischen den Messungen 20ms
    time.sleep(0.02)
Ich hatte zum Schluss time.sleep(0.4) verwendet und bin allein wegen des vielen Wartens schon sehr langsam. Ich werde auch mal ein paar Tests mit 0,02 versuchen. Ob es da Erfahrungswerte gibt, wie weit der Wert nach unten gesetzt werden kann?

Ein erster Test über 600 Messungen mit time.sleep(0.02) scheint zu funktionieren. Ergebnis nach 3m32.609s:
Max: 42.911 cm  Min: 42.471 cm  Mittel: 42.633 cm Median: 42.633 cm Modal: 42.633 cm TrimMean_50: 42.633 cm

Bei time.sleep(0.4) hatte ich mit 300 Messungen ein Ergebnis erst nach ca. einer halben Stunde.

Gruß Bracew

FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

pallago

Hallo Bracew,
ehrlich gesagt habe ich mir da nicht so viele Gedanken gemacht. Ich dachte mir, dass man mit wenigen Messungen und dem Median zum richtigen Ergebnis gelangt. Für eine hinreichend große Anzahl der Wiederholungen, denke ich auch, dass alle 4 Werte zu "DEM" Ergebnis konvergieren.
Bezüglich Timing: Wahrscheinlich kommt es darauf an, welche Entfernungen man messen möchte. Überschlagsmäßig würde ich es folgendermaßen abschätzen:
t = 2* weg[m]/330 s,  (2x, weil der Schall "hin" und "zurück" muss; 330m/s = Schallgeschwinigkeit in der Luft) bsp.
wenn der Tank/Brunnen etc. 5m tief ist: 0,03s
=> Jetzt sehe ich das Problem; danke  :)

Sobald der Sensor verbaut ist, werde ich mich an dem timing spielen.

Aber dann muss der Fehler irgendwo anders liegen, wenn du das Warten verdoppelst und die Anzahl der Messungen halbierts, sollte ungefähr auch 3,5min dauern?

Bracew

Hallo pallago,

das mit dem "Warten" und dem "verdoppeln" ist nicht ganz so. Ich hatte 0,4 und Du 0,02 Sekunden genommen, also rund 20mal so lange Wartezeit. Außerdem habe ich zusätzlich eine doppelt kaskadierte Messung vorgeschaltet. Soll heißen, nur wenn 2 Messungen auf ±10% gleich sind, werden sie zur nächsten Prüfung auf 10% mit dem nächsten Messpaar weiterverwendet. Es müssen bei mir also für eine Messung, welche in die Statistik eingeht, mindesten 4 reale Messungen vorgenommen werden. Somit erhöht sich die Wartezeit auf mehr als das 4x20=80-fache.

Aber, aufgrund Deiner Angabe time.sleep(0.02), habe ich nun den Zeitaufwand reduziert. Danke dafür!

Trotz aller Statistik und Messkaskaden schwanken die Messung für den Füllstand im Öltank bei vier Läufen in 24 Stunden, bei mir immer noch um ca. ±2mm. Bei dem Inhalt meines Öltanks habe ich also eine Ungenauigkeit von ca. 10-15 Litern, welche ich wahrscheinlich nicht eliminiert bekomme.

In der jetzigen Übergangszeit verbrauchen wir ca. zwischen 5 und 20 Litern Heizöl pro Tag (Wetterabhängig aufgrund Außentemperatur Tag bzw. Nacht, Nutzerabhängig aufgrund Warmwasserverbrauch). Ein absoluter Tagesverbrauch lässt sich also nicht genau ermitteln, aber eine Tendenz erkennen.

In meinem Skript habe ich noch eine Benachrichtigung per E-Mail eingebaut falls das Warnlevel unterschritten wird. Dann bleibt mir immer noch genug Zeit zum Nachbestellen von Heizöl bzw. noch ca. ein Monat um den Ölpreis zu beobachten und einen guten Bestellzeitpunkt mir auszusuchen.

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Bracew

Hallo,

ich habe nochmals ein wenig mit time.sleep(x.y) experementiert. Hintergrund ist, dass ich mit 0.02 unregelmäßige Aussetzer im Skript beobachtet habe.
Je näher ich an 0.00 komme und auch mit 0.00, desto öfter bleibt das Skript mittendrin stehen und bleibt hängen.

Im Moment habe ich die Einstellung auf 0.05 angehoben. Mal sehen, ob das so ohne Hänger weiterhin läuft.

Gruß Bracew
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

Bracew

FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

u.becker

Moin,
selbst wenn dieser Thread etwas älter ist, inhaltlich ist das ganze noch interessant, ich bin auch jetzt erst darauf gestoßen.
Nach Installation des Scriptes V1.4 von hier https://forum-raspberrypi.de/forum/thread/7428-heizoel-tankstand-oder-verbrauchs-fernablesung-mit-raspi-geloest-beitrag-21/?postID=301057#post301057 hatte ich mich gewundert, warum beim Aufruf nur der Zeitstempel angezeigt wurde. Die auskommentierten Debug print Befehle zeigten ebenfalls nur jeweils den 1. Wert.
Abhilfe war, in der print Funktion alles in eine große Klammer zu setzen, dann funktioniert die Ausgabe. Hat wohl damit zu tun, das das Originalscript noch für Python 2.x geschrieben war.
Hier ist ein aktuelles RaspianOs mit Python 3.9.2 installiert.

Dies als Hinweis für Menschen, die sich jetzt erst mit dem Thema beschäftigen und sich evtl. über eine fehlende Ausgabe wundern...
Die fragliche Zeile läuft so unter Python 3.?
Zeile 214

  print (ZeitStempel,"Entfernung: %.1f cm" % Abstand," Fuelhoehe: %.1f cm" % Fuelstand," Liter: %.0f l" % Liter, " Liter-Neg.: -%.0f l" % Liter)


Gruß
Außerdem muß noch in Zeile 153 xrange mit range ausgetauscht werden, damit es unter Python 3 läuft

Bracew

Hallo,

der thread ist schon relativ alt und die Welt hat sich unterdessen weiter gedreht. Das Script habe ich unter der damals aktuellen Python Version, ich glaube Python 2.7.3, geschrieben.

Ich hatte mich später auch mal an einer Version unter Python 3.x versucht oder auch mal an einer Version unter Verwendung der gpiozero-Bibliothek.

Die Python 2 zu 3 Differenzen sind zum Beispiel in: https://lerneprogrammieren.de/python-2-vs-3/ unter: "5. Python 2 und Python 3 haben eine unterschiedliche Syntax für die print" zu sehen.

Letztendlich bin ich jedoch im 2.7er Zweig geblieben, da die Zuverlässigkeit gelitten hat und ich nicht für jedes Update irgendeines Programms des RasPi wieder neue Anpassungen und Bastelei machen wollte, frei nach dem Slogan "Never change a runnig system".

Der RasPi und das Skript messen bei mir noch heute. Da das die Hauptaufgabe ist, bekommt er auch keine Updates mehr.

Für die Umstellung des Skripts auf Python 3.x hatte ich damals noch zusätzlich zu den von u.becker bereits dankenswerter Weise genannten Änderungen festgestellt, dass verschiedene Werte dediziert auf FLOAT umgestellt werden müssen, zum Beispiel MaxTankLiter, MinTankLiter und MaxFuellHoehe in dem ein ".0" an den ganzahligen Wert gehängt wird.

MaxTankLiter  = 4500.0    # Gesamtfuellmenge des Oeltanks
MinTankLiter  = 1200.0    # Untere Fuellmengengrenze fuer Warnung per E-Mail
MaxFuellHoehe = 150.0     # Tankhoehe in cm von LEER bis VOLL


FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe