ESPHome - Ultraschallsensor Füllstandmessung

Ich habe beim suchen was gefunden, bekomme aber nicht die korrekte Syntax in die YAML ohne Fehler.

Hier das Beispiel:

YAML:
sensor:
  - platform: pulse_counter
    pin:
      number: GPIO27
      allow_other_uses: true
    update_interval : 6s
    name: "water pulse"
    id: water_pulse

  - platform: pulse_meter
    pin:
      number: GPIO27
      allow_other_uses: true
    name: "Water Pulse Meter"
    unit_of_measurement: "liter/min"
    icon: "mdi:water"
    total:
      name: "Water Total"
      unit_of_measurement: "liter"
 
Die Vorab Validierung schau ich mir mal an.

Ich stelle jetzt aber fest, dass die Formel, die ich in meiner YAML habe zur Berechnung der Liter habe, nicht den richtigen Wert liefert!

Das nutze ich:

YAML:
    filters:
      - lambda: return ((((x*100)-20)-(168-20))/(168-20))*-1000;
      - filter_out: nan

Der Oilfox zeigt 814l, der ESP -66l

Wo habe ich denn da einen Denkfehler?
 
Hallo @SkyWalker2_D,

Du hast doch nach meiner Meinung, doch noch keine Kalibrierung vom Sensor von cm.
Oder habe ich das über sehen?
1,68 cm minus 20 cm = 100% oder so.
Das heißt 1,68 cm sind 100%
1,48 cm sind 0%
Das heißt 2_Punkt linear Kalibrierung.
Schau mal im Internet YouTube wie das geht und schreiben musst.
 
Sorry! Ich befürchte, ich verstehe nicht was gemeint ist.

Ich hatte gedacht man bekommt mit der Messung des Sensors und der korrekten Berechnung eine Menge ... Liter, cm, Prozent

In einem Link zu einer Anleitung steht was von

- calibrate_linear:
- 0.23 -> 1.86
- 2.41 -> 0.0

Ich denke, das ist was ich berücksichtigen muss, oder?
 
Zuletzt bearbeitet:
Vermutlich ja.
Der Sensor kann ja nur Entfernung messen.
Die Entfernung entspricht dann einer bestimmten Literzahl.
Das muss Du dann in der yaml berechnen.
 
Hallo @SkyWalker2_D,

gib mal bei youtube das ein:
"Entfernungsmesser z.B. für Tischhöhe, Tankinhalt, Fensterstatus uvm. Über ESPHome in Home Assistant"
Da wird das ziemlich toll erklärt, was Du tun sollst.

Hier noch der Original Link zu ESPHome...
https://esphome.io/components/sensor/ultrasonic

Hier habe ich noch eine Anleitung gefunden zum kalibrieren des Tankes.
https://community.home-assistant.io/t/calibrate-linear-more-suitable-alternative/429183
Ich glaube, das kannst fast 1:1 übernehmen und testen.
Nur halt Deine Pin an die Farben von den Kabeln vom Sensor anpassen, notfalls auch kurz umstecken.

Ich hoffe, das bringt Dich Deinem Ziel etwas näher.

 
Zuletzt bearbeitet:
Vielen Dank für die Links! Ich muss mich dann doch deutlich mehr damit beschäftigen.
Es hörte sich zu Beginn so einfach an.
 
Hallo @SkyWalker2_D,

ja so ist es.
Aber danach haben es alle anderen User etwas einfacher und Du bist Stolz, wenn es perfekt läuft.
Und wir beide haben eine steile Lernkurve dabei erhalten....
 
Moin!

So, tatsächlich bin ich einen Schritt weiter. Ich war sogar der Meinung, Ich bin final durch.

Ich habe eine vorhandene YAML genommen und auf meinen Tank angepasst. Ich hatte eine Volumentabelle vom Hersteller bekommen und hinterlegt.

Aber:

Im ausgebauten Zustand liefert der Sensor korrekte Werte. Gemessen mit einem Zollstock gegen eine Wand.

Im eingebauten Zustand aber, zeigt der Sensor einen zu geringen Wert an.

Woran kann das liegen? Ist die Bauweise des Tanks Schuld? Oder muss der Sensor noch kalibriert werden?

Grüße
Sky
 
Hallo @SkyWalker2_D,

hilft Dir der Link weiter?
https://www.reichelt.de/magazin/projekte/fuellstandsanzeige-mit-ultraschallsensor-hc-sr04/

Es darf nichts in Weg sein.
Für eine möglichst genaue Messung sollten sich keine anderen Gegenstände im Sendekegel von 15° befinden. Die systembedingte Messgenauigkeit beträgt ca. 3mm und hängt mit der internen Abtastrate des Moduls zusammen. Ein weiterer Faktor ist die Temperaturabhängigkeit der Schallgeschwindigkeit in Luft.

Ganz unten im Link steht die Formel zur Berechnung.
https://edistechlab.com/ultraschallsensor-hc-sr04-einfach-erklaert/?v=5f02f0889301
 
Zuletzt bearbeitet:
Ich befürchte, dann ist irgendwas im Weg in meinem Tank was das Signal stört.

Das werde ich nicht ändern können und leider wird das dann bei mir nicht funktionieren.

Schade!
 
Hallo @SkyWalker2_D,

schade für die ganze Aktion.
Bist Du Dir ganz sicher, dass da was im Weg sein soll?
Du hast doch das mit Sicherheit in den Deckel / Einfüllstutzen eingebaut?
Kannst uns mal ein paar Bilder davon einstellen?
Du bist doch nicht der einzige, der eine solche Lösung baut.
Alle anderen beschreiben den Vorgang als Easy zum nachbauen.

Kannst Du uns den yaml Code hier einstellen, welcher mit der Wand funktioniert?

Hast Du mal den Test mit dem Schalter vom Video das mit dem Schreibtisch gemacht.
Wo er die Tischhöhen Veränderung genau auf die Sekunde sieht, gemacht?
Der Skript fängt so bei 7 Minuten an, wie er den schreibt.
youtube: "Entfernungsmesser z.B. für Tischhöhe, Tankinhalt, Fensterstatus uvm. Über ESPHome in Home Assistant"
 
Zuletzt bearbeitet:
Moin!

Ich habe die Abfrage des Sensors auf 5 bzw. vorher auf 1 Sek für den Test eingestellt. Wie gesagt, im ausgebauten Zustand liefert er auch vermeidlich präzise Werte. Im Einbau hingegen nicht.

Dies ist meine YAML für den Sensor

YAML:
sensor:
 - platform: ultrasonic
   trigger_pin: D1
   echo_pin: D2
   name: 'Füllstand in cm'
   id: fuellstand_in_cm
   update_interval: 5s
   #pulse_time: 10us
   #timeout: 2.0m
   accuracy_decimals: 2
   unit_of_measurement: cm
   filters:
      - filter_out: nan
      - max:
          window_size: 24
          send_every: 12
          send_first_at: 1

 - platform: template
   name: "Ölstand"
   id: oelstand
   unit_of_measurement: "L"
   device_class: "volume_storage"
   state_class: "measurement"
   icon: "mdi:hydraulic-oil-level"
   update_interval: 5s
   accuracy_decimals: 0
   lambda: |-
     return 1.500  - id(fuellstand_in_cm).state;
   filters:
     - calibrate_polynomial:
        degree: 1
        datapoints:
         - 0.10 -> 98.0
         - 0.20 -> 160.0
         - 0.30 -> 233.0
         - 0.40 -> 299.0
         - 0.50 -> 375.0
         - 0.60 -> 446.0
         - 0.70 -> 515.0
         - 0.80 -> 590.0
         - 0.90 -> 666.0
         - 1.00 -> 740.0
         - 1.10 -> 816.0
         - 1.20 -> 888.0
         - 1.30 -> 957.0
         - 1.40 -> 1000.0
         - 1.50 -> 1021.0

Anbei auch Fotos des Tanks. Direkt daneben verläuft ein Rohr, welches leider nicht abänderbar ist. Ich denke, das könnte der Grund sein.
 

Anhänge

  • PXL_20241020_055404933.jpg
    PXL_20241020_055404933.jpg
    417,9 KB · Aufrufe: 4
  • PXL_20241020_055714978.MP.jpg
    PXL_20241020_055714978.MP.jpg
    396,4 KB · Aufrufe: 4
  • PXL_20241020_065557754.MP.jpg
    PXL_20241020_065557754.MP.jpg
    591,8 KB · Aufrufe: 4
Hallo @SkyWalker2_D,

hast Du die Möglichkeit, den Sensor quer zum Rohr einzubauen?
Oder kommt der nur irgendwo zum stehen, wenn das Gewinde am Ende ist?
Verstehst Du das wie ich es meine?

Oder Du musst auf die andere Lösung wie am Anfang vorgeschlagen ausweichen.
Da haben wir schon Vorarbeit geleistet.
 
Das Gewinde greift nicht ganz. Ich habe schon versucht parallel und quer zum Rohr den Sensor zu positionieren. Gleiches Ergebnis leider.

Mit der Lösung vom Anfang meinst du einen Drucksensor zu nutzen?
 
Ja, genau.
Das andere Projekt kannst ja für den Schreibtisch nehmen.....;)

Oder für einen Wassertank, ohne Füllrohr in der Nähe.
 
"Versuch macht kluch", oder so.

Ich bestelle mir Mal eine TL-136, lese mich durch den dazugehörigen Beitrag und gehe Dir dann weiter auf die Nerven 😉
 
Hallo @SkyWalker2_D,

was mir noch einfällt. Der Sensor kann doch vermutlich auch durch das Plastik messen, oder liege ich das falsch?
https://www.amazon.de/Ultraschall-A...ng-Fahrzeugdetektor/dp/B0BYKSQ8CQ/ref=sr_1_7?
Kannst Du den mal weiter weg legen, nur oben auf legen und testen ob das dann ohne Fehler funktioniert?
Ist ja nur so eine Idee...
Wir haben ja nichts mehr zu verlieren.

Hier habe ich noch was gefunden, vielleicht bringt Dich das weiter.

Nachdem ich erfolglos einen optisch identischen Sensor eines anderen Anbieters erworben und getestet hatte, hab ich dann diesen hier bestellt. Er hat, wie die anderen auch, nicht sofort funktioniert. Nach einigem Debugging war dann aber klar, dass es sich nicht um die verkaufte "UART auto" sondern um die "UART controlled" Variante handelte. Nach entsprechenden Code-Änderungen (man muss vor dem Lesen an den RX port eine H-L Flanke schicken z.B. durch das Senden irgendeiner Zahl) hat er dann erwartungsgemäß funktioniert. Generell ist zu befürchten, dass es vielen Verkäufern schwer fällt die insgesamt 9 verschiedenen optisch identischen Varianten dieses Sensors zu unterscheiden und man eine mehr oder weniger zufällige Variante erhält. Meine war eine A0221AU die vermutlich einem DYP-A02YYT oder A02YYTW entspricht.

Nachtrag:
Hast Du so verkabelt?
Vielleicht sind die anderen PINs (GPIO) zu empfindlich.
1729503076406.png
Hier habe ich das geklaut, oder ausgeliehen:
https://www.smarthomeundmore.de/home-assistant-dein-einstieg-in-esphome-und-dyi-auch-fuer-anfaenger/

Vielleicht mal das mal noch ausprobieren.


Hier hat einer das gleiche gebaut, mit fast dem gleichen Abstand wie Du.

https://forum.iobroker.net/topic/30434/ölstandsmesser-selfmade

Bringt Dich das weiter?
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.880
Beiträge
57.453
Mitglieder
5.813
Neuestes Mitglied
Blacksnofru
Zurück
Oben