esphome:
name: xx-30bf5b
friendly_name: xx_30bf5b
esp8266:
board: d1_mini
# Enable logging
logger:
level: info
# Enable Home Assistant API
api:
encryption:
key: "hash"
reboot_timeout: 0s
ota:
password: "hash"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "xx-30Bf5B Fallback Hotspot"
password: "hash"
reboot_timeout: 0s
use_address: static
captive_portal:
switch:
- platform: restart
name: "restart"
dallas:
- pin: D7
sensor:
- platform: uptime
name: "uptime"
- platform: dallas
address: 0x17020b9177583c28
name: "inside_temperature"
resolution: 12
id: temp_sensor
- platform: ultrasonic
trigger_pin: D5
echo_pin: D6
update_interval: 100ms
accuracy_decimals: 3
timeout: 1.5m
pulse_time: 20us
id: ping_sensor
filters:
- lambda: |-
return x / 343.0 * (331.3 + 0.606 * id(temp_sensor).state);
- platform: copy
source_id: ping_sensor
name: "water_level"
unit_of_measurement: '%'
state_class: measurement
icon: mdi:water
accuracy_decimals: 0
id: water_level
filters:
- clamp:
min_value: 0.215
max_value: 1.32
ignore_out_of_range: true
- lambda: |-
return (1.32 - x) / 1.21 * 100.0;
- delta: 1.0
- debounce: 1s
- heartbeat: 1s
- platform: copy
source_id: water_level
name: "water_stream"
unit_of_measurement: '%/min'
state_class: measurement
icon: mdi:chart-timeline-variant
accuracy_decimals: 1
filters:
- throttle_average: 1min
- lambda: |-
static float tmp_p, tmp_c, delta;
tmp_c = x;
delta = tmp_c - tmp_p;
tmp_p = tmp_c;
return delta;
- lambda: |-
return (x > -2 && x < 6) ? x : 0;
binary_sensor:
- platform: analog_threshold
name: "measurement_status"
device_class: problem
icon: mdi:waves-arrow-up
sensor_id: ping_sensor
threshold: 0.215
filters:
- invert:
- delayed_on_off: 1s
commit
an advanced ultrasonic sensor water level monitor
feature
1.temperature compensation
2.humadity resistance (sensor value fluctuate when water warm inside tank)
3.error notify (something infront of sensor)
4.psedo distance filter (donβt respond to false distance)
5.optional water usage l/m info
stable
i was using this firmware from last 3 year never get false value (instead of false value it return last value), even temperature fluctuate inside tank +/-30 C (in cold it reach -2 C in hot it reach 60 C)
module
1.d1 mini
2.jsn-sr04t (at remote distance connected via 8m long wire)
adaptive code
filters:
- clamp:
min_value: 0.215
max_value: 1.32
ignore_out_of_range: true
- lambda: |-
return (1.32 - x) / 1.21 * 100.0;
modify this values -
1.32 Metre - water tank depth (top sensor placement)
1.21 Metre - water tank height
100.0 - tank max storage (ex. 1000L β 100, 7200L β 720)