Heizöl-Tankstand-(oder Verbrauchs) Fernablesung mit RasPi - die 2.

Begonnen von Kusselin, 19 Februar 2017, 16:20:19

Vorheriges Thema - Nächstes Thema

Kusselin

Hallo Zusammen,
habe nun mal den gelieferten Ultraschallsensor verlötet und mit Steckern verbunden (wollte nicht die GPIO´s verlöten.

Hier mal ein paar Bilder:

Danach habe ich auf dem Raspi (Speicherkarte) das Raspbian installiert.

dann mit:
nano ultrasonic.py

diesen Code reinkopiert:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# import required modules
import time
import datetime
import RPi.GPIO as GPIO

# define GPIO pins
GPIOTrigger = 18
GPIOEcho    = 17

# function to measure the distance
def MeasureDistance():
  # set trigger to high
  time.sleep(0.2)
  GPIO.output(GPIOTrigger, True)

  # set trigger after 10Ã,µs to low
  time.sleep(0.0001)
  GPIO.output(GPIOTrigger, False)

  # store initial start time
  StartTime = time.time()

  # store start time
  while GPIO.input(GPIOEcho) == 0:
    StartTime = time.time()

  # store stop time
  while GPIO.input(GPIOEcho) == 1:
    StopTime = time.time()

  # calculate distance
  TimeElapsed = StopTime - StartTime
  Distance = (TimeElapsed * 34400) / 2
 
  return Distance

# main function
def main():
  try:
#    while True:
      Distance0 = MeasureDistance()
      Distance01 = MeasureDistance()
      Distance02 = MeasureDistance()
      Distance03 = MeasureDistance()
      Distance04 = MeasureDistance()
      Distance05 = MeasureDistance()
      Distance06 = MeasureDistance()
      Distance07 = MeasureDistance()
      Distance08 = MeasureDistance()
      Distance09 = MeasureDistance()
      Distance10 = MeasureDistance()
      Distance11 = MeasureDistance()
      Distance12 = MeasureDistance()
      Distance13 = MeasureDistance()
      Distance14 = MeasureDistance()
      Distance15 = MeasureDistance()
      Distance16 = MeasureDistance()
      Distance17 = MeasureDistance()
      Distance18 = MeasureDistance()
      Distance19 = MeasureDistance()
      Distance20 = MeasureDistance()
      Distance_sum = Distance01 + Distance02 + Distance03 + Distance04 + Distance05 + Distance06 + Distance07 + Distance08 + Distance09 + Distance10 + Distance11 + Distance12 + Distance13 + Distance14 + Distance15 + Distance16 + Distance17 + Distance18 + Distance19 + Distance20
      Distance = round(Distance_sum / 20,1)
#    Meine Tanks haben Maximal 8.000 Liter bei 147 cm Füllhöhe
#    Zusätzlich 4 cm Offset vom Einbauort des Sensors
      Fuelstand = 147 - Distance
      Liter = 8000 / 150 * Fuelstand
      Zeit = time.time()
      ZeitStempel = datetime.datetime.fromtimestamp(Zeit).strftime('%Y-%m-%d_%H:%M:%S')
      print (ZeitStempel),("Entfernung: %.1f cm" % Distance),(" Fuelhoehe: %.1f cm" % Fuelstand),(" Liter: %.0f l" % Liter)
      time.sleep(2)

  # reset GPIO settings if user pressed Ctrl+C
  except KeyboardInterrupt:
    print("Measurement stopped by user")
    GPIO.cleanup()

if __name__ == '__main__':
  # use GPIO pin numbering convention
  GPIO.setmode(GPIO.BCM)

  # set up GPIO pins
  GPIO.setup(GPIOTrigger, GPIO.OUT)
  GPIO.setup(GPIOEcho, GPIO.IN)

  # set trigger to false
  GPIO.output(GPIOTrigger, False)

  # call main function
  main()


den Füllstand habe ich durch meinen erstetzt,nämlich 137cm, genauso wie die Literanzahl von 8000l.
ich hoffe das stimmt alles soweit??
was ist mit dem /150 * Fuellstand gemeint???

danach habe ich die datei gespeichert und noch folgenden Befehl abgesetzt:
chmod 0755 ultrasonic.py

danach gestartet mit:
sudo ./ultrasonic.py

dann sieht das ganze so aus:
2017-02-19_16:17:05 Entfernung: 111.5 cm  Fuelhoehe: 42.5 cm  Liter: 2295 l
habe den Sensor jetzt nur mal so zum testen aufgehängt....bis zum Boden messe ich 113cm....

also kann man doch sagen das der Sensor und das anschließen schon mal funktioniert hat, oder?

wie gehts jetzt weiter?

Gruss

wie komme ich jetzt an die Messdaten heran..wo schreibt der Sensor die jetzt hin???

Und nachdem auf der Konsole der Wert ausgegeben wurde und ich nochmal sudo ./ultrasonic.py eingegeben habe kommt das:
./ultrasonic.py:86: RuntimeWarning: This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.
  GPIO.setup(GPIOTrigger, GPIO.OUT)
2017-02-19_16:31:49 Entfernung: 111.5 cm  Fuelhoehe: 42.5 cm  Liter: 2295 l

Bracew

Hi,

Zitatwas ist mit dem /150 * Fuellstand gemeint???

Bei mir ist die Höhe der max. Füllung in den Tanks vom Fußboden ca. 150 cm, oder andersrum, wenn der Tank leer wäre, müsst der Sensor 150 cm messen bis zum letzten Tropfen im Tank. => Dreisatz!
Du müsstes den Wert Deiner Tanks für die 150 cm einsetzen.

Zitat...Sensor und das anschließen schon mal funktioniert hat, oder?

Sieht gut aus. Du kannst ja mal den ersten Schritt vor dem zweiten tun und das Script aus: http://www.gtkdb.de/index_36_2272.html in eine Datei test.py kopieren, test.py ausführbar machen und mit dem Sensor gegen verschiedene Oberflächen messen, sowie einfach mal mit dem Zollstock oder dem Meterbandmaß nachmessen, ob der Sensorwert mit dem Zollstock-Wert übereinstimmt.

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

Bracew

Hi,

Zitateingegeben habe kommt das:

das kommt, weil das Script in einer endlos Schleife läuft und vor einem 2. Aufruf zunächst mit Strg+C gestoppt werden müsste.

Im Script steht deshalb:
  # reset GPIO settings if user pressed Ctrl+C
  except KeyboardInterrupt:
    print("Measurement stopped by user")
    GPIO.cleanup()


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

Kusselin

Hi Bracev...ist doch schritt eins vor zwei...

Muss ich denn eine test.py anlegen?

Habe mit der ultrasonic.py doch jetzt schon gemessen...manchmal stimmts manchmal nicht!!
Habe aber noch ein anderes prob..müsste das Kabel verlängern..gibt es beim Con... Ein verlängerungskabel oder kann man da die stecker kaufen (männlein und weiblein)??

Gruss



Gesendet von iPhone mit Tapatalk Pro

Kusselin

Zitat von: Bracew am 19 Februar 2017, 17:35:36
Hi,

das kommt, weil das Script in einer endlos Schleife läuft und vor einem 2. Aufruf zunächst mit Strg+C gestoppt werden müsste.

Im Script steht deshalb:
  # reset GPIO settings if user pressed Ctrl+C
  except KeyboardInterrupt:
    print("Measurement stopped by user")
    GPIO.cleanup()


Gruß Bracew
Ok verstanden..muss man auch erstmal wissen..danke


Gesendet von iPhone mit Tapatalk Pro

Bracew

Hi,

Zitat...muss man auch erstmal wissen...

eben, deshalb meinte ich zunächst das Script aus: http://www.gtkdb.de/index_36_2272.html , da es dort zunächst geübt wird.

Leider kann ich Dir nichts zu Verlängerungskabeln sagen. Auch nicht, ob dann die Messwerte zum Beispiel aufgrund erhöhtem Kabelwiderstand sich verändern. Aber, nur Mut und ausprobieren, Versuch macht Klug!

Viel Spaß am weiteren Basteln.
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

M.Piet

Ich habe meine Kabel mit geschirmten Kabeln verlängert, wäre auch mit CAT6/7 Kabel machbar.
Ich habe vom Pi zur Zisterne ca. 20m Kabel, vom Pi zum Öltank ca. 15m Kabel.

Am Anfang hatte ich viele Störungen gehabt (Messfehler um ein vielfaches). Ich hatte zuerst ein Script, welches 10 Messungen macht und dann den Durchschnitt bildet. Ich denke weil viele aufeinander folgende Messungen gemacht wurden, kam es dazu.

Ich mache jetzt nur noch eine Messung (und das nur alle paar Stunden) und seitdme habe ich Ruhe.

Kusselin

Das ist schon mal gut...cat 7 Kabel hätte ich noch...
Wie hast du das mit dem Stecker genacht? Hast das Kabel einfach festverlötet?
Gruss


Gesendet von iPhone mit Tapatalk Pro