Seite 1 von 11

Ultraschallsensor in OpenHAB intigrieren

Verfasst: 27. Jun 2020 11:37
von Pepe1907
Servus liebe Gemeinde,
Ich habe seit Anfang dieser Woche endlich meinen Ultraschallsensor angeschlossen und am Teich installiert.
Dieser fragt die Distanz zwischen Wasser und dem Sensor ab.
Darüber möchte ich den Teich bzw seinen Wasserstand im Auge behalten.
Über folgendes Skript kann ich per Putty die Distanz abfragen.

Code: Alles auswählen

#Bibliotheken einbinden
import RPi.GPIO as GPIO
import time
 
#GPIO Modus (BOARD / BCM)
GPIO.setmode(GPIO.BCM)
 
#GPIO Pins zuweisen
GPIO_TRIGGER = 18
GPIO_ECHO = 24
 
#Richtung der GPIO-Pins festlegen (IN / OUT)
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
 
def distanz():
    # setze Trigger auf HIGH
    GPIO.output(GPIO_TRIGGER, True)
 
    # setze Trigger nach 0.01ms aus LOW
    time.sleep(0.00001)
    GPIO.output(GPIO_TRIGGER, False)
 
    StartZeit = time.time()
    StopZeit = time.time()
 
    # speichere Startzeit
    while GPIO.input(GPIO_ECHO) == 0:
        StartZeit = time.time()
 
    # speichere Ankunftszeit
    while GPIO.input(GPIO_ECHO) == 1:
        StopZeit = time.time()
 
    # Zeit Differenz zwischen Start und Ankunft
    TimeElapsed = StopZeit - StartZeit
    # mit der Schallgeschwindigkeit (34300 cm/s) multiplizieren
    # und durch 2 teilen, da hin und zurueck
    distanz = (TimeElapsed * 34300) / 2
 
    return distanz
 
if __name__ == '__main__':
    try:
        while True:
            abstand = distanz()
            print ("Gemessene Entfernung = %.1f cm" % abstand)
            time.sleep(1)
 
        # Beim Abbruch durch STRG+C resetten
    except KeyboardInterrupt:
        print("Messung vom User gestoppt")
        GPIO.cleanup()
Ich würde jetzt gerne ein Item erstellen, welches die Abfrage in einem bestimmten Intervall abfragt.
Diesen Wert würde ich mir zudem auch gerne in der Sitemap ansehen können.

Vielen Dank für eure Unterstützung

Re: Ultraschallsensor in OpenHAB intigrieren

Verfasst: 27. Jun 2020 12:59
von sonic
Hallo,

ich habe eine ähnliche Lösung für meinen Heizöltank und die Regentonnen.
Der Ultraschallsensor ist hierbei an eine NodeMCU angeschlossen die mit Tasmota geflasht ist.
So kann man ganz einfach die Distanz via MQTT an Openhab senden.

Dies erschien mir die einfachste Lösung.

Wie ist ein Sensor angeschlossen?

Re: Ultraschallsensor in OpenHAB intigrieren

Verfasst: 27. Jun 2020 15:19
von udo1toni
Kurze Frage dazu: Wie stellt ihr sicher, dass der Sensor nicht nass wird? Ich habe eine Regenwasserzisterne, die ebenfalls gemessen werden will. Wenn es allerdings richtig schüttet, kann das Wasser schon mal bis zum Deckel steigen (überschüssiges Wasser wird ausschließlich über Bodenversickerung abgeleitet, da an dieser Stelle kein Kanalanschluss vorhanden ist.)

Re: Ultraschallsensor in OpenHAB intigrieren

Verfasst: 27. Jun 2020 15:37
von Pepe1907
sonic hat geschrieben: 27. Jun 2020 12:59 Hallo,

ich habe eine ähnliche Lösung für meinen Heizöltank und die Regentonnen.
Der Ultraschallsensor ist hierbei an eine NodeMCU angeschlossen die mit Tasmota geflasht ist.
So kann man ganz einfach die Distanz via MQTT an Openhab senden.

Dies erschien mir die einfachste Lösung.

Wie ist ein Sensor angeschlossen?
Würde ungern noch ein Modul zwischenschalten da ich dort kein WLAN in der Nähe habe.
Sensor ist direkt am raspberry angeschlossen mit 40m Kabel.

Re: Ultraschallsensor in OpenHAB intigrieren

Verfasst: 27. Jun 2020 15:39
von Pepe1907
udo1toni hat geschrieben: 27. Jun 2020 15:19 Kurze Frage dazu: Wie stellt ihr sicher, dass der Sensor nicht nass wird? Ich habe eine Regenwasserzisterne, die ebenfalls gemessen werden will. Wenn es allerdings richtig schüttet, kann das Wasser schon mal bis zum Deckel steigen (überschüssiges Wasser wird ausschließlich über Bodenversickerung abgeleitet, da an dieser Stelle kein Kanalanschluss vorhanden ist.)
Habe den sensor in einer ip66 verteilerdose gelegt. Und die den sensor von außen mit silikon verfügt.
Er ist unten am steg befestigt. Heißt von oben kann kein Wasser kommen von unten wenn nur Spritzwasser. Kann dir gerne Bilder zukommen lassen.

Re: Ultraschallsensor in OpenHAB intigrieren

Verfasst: 27. Jun 2020 16:02
von udo1toni
Auch wenn der Sensor direkt am Raspberry angeschlossen ist, führt der bequemste Weg über mqtt :) Du richtest z.B. ein Python Script ein, welches alle x Minuten eine Messung vornimmt. Das Script sichert die Messung in einer lokalen Variablen und schreibt den Wert bei Änderung über mqtt.
Alternativ kannst Du natürlich auch die REST API nutzen, aber für mqtt gibt es eine fertige Bibliothek (z.B. paho mqtt) welche das Ganze echt komfortabel macht.
Oder Du schreibst ein Script, welches Du per exec Binding ausführen lässt. Das hat aber einen gewaltigen Nachteil: exec kann ausschließlich mit Strings als Rückgabewert umgehen, und es gibt auch keine Möglichkeit, das zu umgehen. Das heißt, der Rückgabewert des Scripts wird IMMER als String entgegengenommen.
Also brauchst Du in openHAB eine separate Rule, welche den Status des String Items über NumberItem.postUpdate(Float::parseFloat(StringItem.state.toString)) in ein Number Item überführt, und diese Rule muss bei jeder Änderung triggern.
Strenggenommen musst Du noch sicherstellen, dass der String auch einen gültigen Zahlenwert repräsentiert. Falls die Zahl mit Komma als Dezimaltrenner kommt, musst Du das Komma noch durch einen Punkt ersetzen usw... Und zyklisches polling aus openHAB ist bäh. ;)

Re: Ultraschallsensor in OpenHAB intigrieren

Verfasst: 27. Jun 2020 16:19
von EmptySoft
Ich habe auch einen Ultraschallsensor für den Wasserstand in meinem Pool verbaut (2 Löcher in den Skimmerdeckel gebohrt und den Ultraschallsensor dort reingesteckt. Zusätzlich ist der Ultraschallsensor in einem 3d gedruckten Gehäuse, Schutz von oben falls Kondenswasser herunter tropft). Der gesamte Pool inklusive Technikraum ist in einer Halle. Allerdings habe ich immer wieder grobe Fehlmessungen, kann ich also nicht empfehlen. Habe jetzt einen Drucksensor bestellt und werde mit dem versuchen den Wasserstand zu messen. Mal sehen, ob das besser funktioneirt

Re: Ultraschallsensor in OpenHAB intigrieren

Verfasst: 27. Jun 2020 19:04
von Pepe1907
udo1toni hat geschrieben: 27. Jun 2020 16:02 Auch wenn der Sensor direkt am Raspberry angeschlossen ist, führt der bequemste Weg über mqtt :) Du richtest z.B. ein Python Script ein, welches alle x Minuten eine Messung vornimmt. Das Script sichert die Messung in einer lokalen Variablen und schreibt den Wert bei Änderung über mqtt.
Alternativ kannst Du natürlich auch die REST API nutzen, aber für mqtt gibt es eine fertige Bibliothek (z.B. paho mqtt) welche das Ganze echt komfortabel macht.
Das hört sich doch vielsprechend an.
Könntest du mir da bei Erstellung des scripts und der Einbindung weiter helfen?

Re: Ultraschallsensor in OpenHAB intigrieren

Verfasst: 27. Jun 2020 20:20
von udo1toni
Das Grundgerüst kann ich Dir gleich mal raussuchen.

Gesendet von meinem SM-G973F mit Tapatalk


Re: Ultraschallsensor in OpenHAB intigrieren

Verfasst: 27. Jun 2020 21:01
von Pepe1907
udo1toni hat geschrieben: 27. Jun 2020 20:20 Das Grundgerüst kann ich Dir gleich mal raussuchen.

Gesendet von meinem SM-G973F mit Tapatalk
Bist mit Gold nicht zu bezahlen