ESP und Batterie schließt sich meist fast aus, über DeepSleep wäre es zumindest ein Versuch wert.
Alternativ irgendwas mit Solarzelle und Akku.
Ich habe im Deckel der Regentonne so einen Ultraschallsensor, momentan aber nicht in Betrieb. Mir fehlt die Platine.
Jup eben, darum ja die Frage ob schon jemand eine batteriebetriebene Lösung ohne ESP kennt.
Akku + Solarzelle mhm weiß auch nicht ob sich das wirklich lohnt
Servus,
Ich habe mir seit ein paar Tagen einen JSN-SR04T von AliExpr*** beatellt und kann einfach mittels Code ihn nicht einbinden. Bekomme immer eine ‘nan’ Messung in den ESP Logs.
Hardware:
1 x JSN-SR04T Sensor + Board
1 x Wemos D1 Mini Pro
Könnte hier jemand mal den Code posten mit dem sich der Sensor einbinden lässt?
Mit freundlichen Grüßen,
Emanuel
Hast du die suche schon benutzt?
Es gibt einen thread hier im Forum und bei esphome folgendes
Gruss
Servus,
Ich habe diesen Code bereits zig mal benutzt, auch andere 4 Code Snippets im Forum oder auf Github. Leider funktioniert keiner.
Sonst hätte ich auch nicht direkt nach dem Code gefragt…
Lg Emanuel
ich nutze den JSN-SR04T. Funktioniert super bei mir. Habe gleich einen input Number Helfer erstellt worüber ich den update_interval dynamisch steuern kann.
captive_portal:
button:
- platform: restart
id: Wasserstand_Zisterne_restart
name: "Refresh Wasserstand"
# Script für update_interval dynamisch
script:
- id: interval
mode: restart
then:
- component.update: update_time_test
- delay: !lambda "return id(update_interval).state * 1000;"
- script.execute: interval
sensor:
- platform: homeassistant
id: update_interval
entity_id: input_number.esp_zisterne_intervall_time
on_value:
then:
- script.execute: interval
#Ende
- platform: ultrasonic
id: update_time_test
trigger_pin: GPIO17
echo_pin: GPIO33
name: "Wasserstand_Zisterne"
update_interval: never
#update_interval: 5s
#pulse_time: 30us
unit_of_measurement: "%"
#accuracy_decimals: 0
filters:
- filter_out: nan
- lambda: return ((((x*100)-23.5)-(120-23.5))/(120-23.5))*-100;
- platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 1800s
entity_category: "diagnostic"
- platform: copy # Reports the WiFi signal strength in %
source_id: wifi_signal_db
name: "WiFi Signal Percent"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "%"
entity_category: "diagnostic"
Servus,
Danke nochmals für den Code Snippet. Hat leider mit dem auch nicht funktioniert:
Mit dem neuen Update wurde wohl etwas bei ESP Home geändert.
Das ist der aktuelle Code, mit dem ich vernünfige Werte zusammen bekomme:
sensor:
- platform: ultrasonic
trigger_pin:
number: D1
inverted: True
echo_pin:
number: D2
name: "Wasserstand_Zisterne"
update_interval: 1s
timeout: 4m
Hoffe es kann anderen mit der oben genannten Hardware helfen.
LG Emanuel
PS:
Ich benutze ein D1 Mini Pro mit dem AJ-SR04M Board und dem wasserdichten Ultraschallsensor.
Hallo zusammen,
auch wenn es vielleicht zu spät ist. Ich habe echt viel mit Füllstandsmessungen rum probiert und einiges gekauft und in Müll geworfen wegen der Fehlmessungen, Unbrauchbarkeit und Langlebigkeit.
Ich messe Füllstände in 6 Stück Heizöltanks (Heizöl) und 3 Zisternen (Wasser). Alles was ich berührungslos getestet habe war auf lange Sicht einfach nichts. Ultraschall ist in den schmalen Heizöltanks nicht einsetzbar, da die nicht bis zum Boden messen. Laser ToF Sensoren sind deutlich besser dafür, hab allerdings das Problem in den Heizöltanks bilden sich nach einiger Zeit Ablagerungen, dann messen die nicht mehr.
Das zuverlässigste, auch meine aktuelle Lösung die sich bewährt hat, Differenzdrucksensoren. Die messen den Druck der Wassersäule (Heizöl) über dem Sensor und geben einen Wert in mm zurück.
z.B. diese hier:
Ich verwende die RS485 Version, da dort der fertig Wert in mm zurückgemeldet wird und man etliche Sensoren an einem 4 Draht Bus anschliessen kann.
Ich kann diese Lösung nur empfehlen, dass läuft bei mir bisher am besten.
Gruss Toni
Hi, klingt gut. Gibt es dafür irgendwo eine Anleitung wie man das Ding anschließen muss und die Daten nach HA kommen?
Danke!!
Ich nutze diesen PoE to RS485 Converter:
RS485 ist einfach, 2 Draht zum Converter (A und B) und 12 oder 24 Volt DC für den Sensor.
Ich baue meine PoE Converter um, intern einen DC/DC Step Up Wandler von den internen 5 Volt auf 24 Volt DC. So muss ich nur den Converter an mein PoE Switch anschliessen und die ganzen Sensoren versorge ich dann gleich mit. Der Buss ist dann einfach ein 4 Draht Bus. A und B, +24VDC und GND, Ich verwende eine abgeschirmte 4 Draht Leitung. Meine Buslängen sind bis zu 30 Meter lang bei 9600 Baud.
Wenn man das Prinzip vom RS485 mal verstanden hat ist es echt sehr einfach und vor allem extrem zuverlässig. Das läuft einfach, im Gegensatz zu vielen Funk Sensoren. Mit denen hab ich immer wieder Probleme, dass Sie nicht mehr erreichbar sind.
kannst du bitte deine Modbus Konfig posten?
Hallo meloneA,
hier der Teil für die configuration.yaml
#TankRaum RS485
- name: modbus_hub
type: tcp
host: 192.168.222.55
port: 6845
delay: 0
message_wait_milliseconds: 30
timeout: 15
# Heizöltanks
- name: AltbauTank1_raw
unique_id: altbautank1_raw
unit_of_measurement: cm
slave: 11
address: 4
scale: 0.1
precision: 2
input_type: holding
data_type: uint16
- name: AltbauTank2_raw
unique_id: altbautank2_raw
unit_of_measurement: cm
slave: 12
address: 4
input_type: holding
data_type: uint16
scale: 0.1
- name: AltbauTank3_raw
unique_id: altbautank3_raw
unit_of_measurement: cm
slave: 13
address: 4
input_type: holding
data_type: uint16
scale: 0.1
- name: NeubauTank1_raw
unique_id: neubautank1_raw
unit_of_measurement: cm
slave: 14
address: 4
input_type: holding
data_type: uint16
scale: 0.1
- name: NeubauTank2_raw
unique_id: neubautank2_raw
unit_of_measurement: cm
slave: 15
address: 4
input_type: holding
data_type: uint16
scale: 0.1
- name: NeubauTank3_raw
unique_id: neubautank3_raw
unit_of_measurement: cm
slave: 16
address: 4
input_type: holding
data_type: uint16
scale: 0.1
- platform: template
sensors:
# Heizöltanks im Tankraum
tank1_liter:
friendly_name: "AltbauTank1 Liter"
unit_of_measurement: "L"
value_template: "{{states('sensor.altbautank1_raw')|float * 10 |round(0) }}"
icon_template: mdi:oil
tank1_prozent:
friendly_name: "AltbauTank1 Prozent"
unit_of_measurement: "%"
value_template: "{{states('sensor.altbautank1_raw')|float * 1 |round(0) }}"
icon_template: mdi:oil
tank2_liter:
friendly_name: "AltbauTank2 Liter"
unit_of_measurement: "L"
value_template: "{{states('sensor.altbautank2_raw')|float * 10 |round(0) }}"
icon_template: mdi:oil
tank2_prozent:
friendly_name: "AltbauTank2 Prozent"
unit_of_measurement: "%"
value_template: "{{states('sensor.altbautank2_raw')|float * 1 |round(0) }}"
icon_template: mdi:oil
tank3_liter:
friendly_name: "AltbauTank3 Liter"
unit_of_measurement: "L"
value_template: "{{states('sensor.altbautank3_raw')|float * 10 |round(0) }}"
icon_template: mdi:oil
tank3_prozent:
friendly_name: "AltbauTank3 Prozent"
unit_of_measurement: "%"
value_template: "{{states('sensor.altbautank3_raw')|float * 1 |round(0) }}"
icon_template: mdi:oil
tank4_liter:
friendly_name: "NeubauTank1 Liter"
unit_of_measurement: "L"
value_template: "{{states('sensor.neubautank1_raw')|float * 10 |round(0) }}"
icon_template: mdi:oil
tank4_prozent:
friendly_name: "NeubauTank1 Prozent"
unit_of_measurement: "%"
value_template: "{{states('sensor.neubautank1_raw')|float * 1 |round(0) }}"
icon_template: mdi:oil
tank5_liter:
friendly_name: "NeubauTank2 Liter"
unit_of_measurement: "L"
value_template: "{{states('sensor.neubautank2_raw')|float * 10 |round(0) }}"
icon_template: mdi:oil
tank5_prozent:
friendly_name: "NeubauTank2 Prozent"
unit_of_measurement: "%"
value_template: "{{states('sensor.neubautank2_raw')|float * 1 |round(0) }}"
icon_template: mdi:oil
tank6_liter:
friendly_name: "NeubauTank3 Liter"
unit_of_measurement: "L"
value_template: "{{states('sensor.neubautank3_raw')|float * 10 |round(0) }}"
icon_template: mdi:oil
tank6_prozent:
friendly_name: "NeubauTank3 Prozent"
unit_of_measurement: "%"
value_template: "{{states('sensor.neubautank3_raw')|float * 1 |round(0) }}"
icon_template: mdi:oil
So klappt das bei meinen 6 Tanks hervorragend.
Du musst die IP Adresse und den Port anpassen, wie es in Deinem Netz konfiguriert ist. Und die RS485 ID’s der einzelnen Sensoren anpassen wenn Du mehrere hast.
Bei mir sind es 6x1000 Liter in zwei Batterien, für zwei Hausteile. Der RS485 Bus im Tankraum ist ca. 30 Meter lang. Ausser den Sensoren wollte ich nichts elektrische oder elektronisches im Tankraum haben, wegen dem Brandschutz. Der RS485 Device Server ist in einem anderen Raum.
Hab noch einen Temperatur und Feuchte Sensor an dem Bus. Das wars.
Die Liter und Prozent Angaben stimmen natürlich nicht zu 100% da die Tanks unten und oben eine Wölbung haben. Die Abweichung ist aber minimal somit habe ich es vernachlässigt.
Gruss Toni
mir ist jetzt nicht ganz klar wie ich an der Sonde die Slave ID ändern kann?
Nachtrag:
Vielleicht noch ein paar Details:
- ich habe das Waveshare RS485 POE Ethernet im Modbus TCP Mode (port502) am laufen.
- die Pegelsonde hängt am Waveshare mit A und B
- +/- der Pegelsonde habe ich direkt mit einem passenden 24V Netzteil verbunden
by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)
Im Auslieferungszustand hat der Sensor die RS485 BUS ID 1.
Hast Du überhaupt mehrere? Wenn Nein, kannst Du die BUS ID1 verwenden. Wenn Ja, musst Du die Sensoren einzel anschliessen und jedem eine andere RS485 BUS ID geben.
Im Home Assist habe ich das noch nicht gemacht. Dazu hab ich einen NodeRed Server dort kann ich die ID Schnell programmieren und den Sensor testen.
Zum Ändern der ID musst Du das Register FC6 Preset Single 0 mit der neuen Bus ID beschreiben, 0-255 Wobei 0 immer der Device Server ist. Also effektiv 1-255.
Man kann sicherlich im HomeAssi den Wert in den Sensor schreiben, hab ich aber wie beschrieben noch nie so gemacht.
Das WaveShare Modul musst Du über das Webinterface konfigurieren.
Hier meine Einstellungen:
ok, aktuell habe ich nur eine Sonde angeschlossen.
über modpoll bekomme ich beim auslesen aber nur Timeouts. Ich vermute mal eher einen Fehler in meiner Verkabelung. Muss ich am Waveshare ebenfall die 24V anlegen? Aktuell habe ich ja nur PoE und 485A und 485B angeschlossen.
Ok, es lag am 24V Netzteil
by tarag: Beiträge zusammengeführt
Bei nur einem Sensor musst erst mal nix am Sensor umstellen.
Für den RS485 Bus solltest wenigsten noch den GND (Masse) anschliessen.
Im Code:
sensors:
# Heizöltanks
- name: AltbauTank1_raw
unique_id: altbautank1_raw
unit_of_measurement: cm
slave: 1
address: 4
scale: 0.1
precision: 2
input_type: holding
data_type: uint16
Die slave: auf 1 setzten. Das ist die default Adresse des Sensors.
Den richtigen Sensor mit RS485 hast Du aber schon gekauft?
Den gibt es in vielen verschiedenen Ausführungen 5-20mA, 0-5Volt, RS232 und RS485.
Anschluss des Sensors:
Rotes Kabel = +24Volt
Grünes Kabel = GND (Masse) auch an den GND Anschluss vom WaveShare Modul anschliessen
Blaues Kabel = 485A (vom WaveShare Modul)
Gelbes Kabel = 485B (vom WaveShare Modul)
Danke, es läuft mittlerweile auch mit 2 Sonden. Es ist etwas eigenartig, aber das Netzteil brach ein sobald ich via Modbus ein Register abfragen wollte. Mit einem anderen Netzteil läuft es jetzt absolut fehlerfrei.
Super freut mich das es klappt.
Wie hast Du die ID’s der Sensoren umgestellt? Über HomeAssistant?
Wenn es über HA gemacht hast, könntest es hier teilen, dann haben andere auch noch was davon
Eine Sache die leider nicht ganz schön ist. Wenn die Sensoren nicht online sind wenn HA startet, werden die Sensoren nachträglich nicht mehr initialisiert. Ist bei mir jedenfalls so.
Dann musst über die Entwicklerwerkzeuge HA neu starten.
Keine Ahnung ob das ein Bug ist.
Kannst ja mal schauen ob Du das gleiche Problem hast und kurz berichten.