adorobis

water meters esphome

Dec 4th, 2025
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 4.42 KB | None | 0 0
  1. substitutions:
  2.   name: esp32-bluetooth-proxy-058694
  3.   device_name: esp32-bluetooth-proxy-058694
  4.   device_description: "Water Meters"
  5.   MCCGQ02HL_1_name: "Post Box"
  6. esp32:
  7.   board: esp32dev
  8.   framework:
  9.     type: esp-idf
  10. esphome:
  11.   name: ${name}
  12.   name_add_mac_suffix: false
  13.   friendly_name: Water Meters
  14.   on_boot:
  15.     then:
  16.       - lambda: |-
  17.           id(water_consumption).publish_state(0);
  18.       - lambda: |-
  19.           id(water_consumption_garden).publish_state(0);
  20.  
  21. wifi:
  22.   ssid: !secret wifi_ssid
  23.   password: !secret wifi_password
  24.  
  25.   manual_ip:
  26.     static_ip: 10.144.1.91
  27.     gateway: 10.144.1.1
  28.     subnet: 255.255.255.0
  29.  
  30. api:
  31. captive_portal:
  32. ota:
  33.   platform: esphome
  34. safe_mode:
  35.   reboot_timeout: 10min
  36.   num_attempts: 5
  37.  
  38. logger:
  39. #  level: VERBOSE
  40.  
  41. esp32_ble_tracker:
  42.   scan_parameters:
  43.     interval: 300ms
  44.     window: 300ms    
  45.  
  46. bluetooth_proxy:
  47.   active: true
  48.  
  49. button:
  50.   - platform: restart
  51.     name: "Restart"
  52.    
  53. text_sensor:
  54.   - platform: version
  55.     hide_timestamp: true
  56.     name: "ESPHome Version"
  57.   - platform: wifi_info
  58.     ip_address:
  59.       name: "IP Address"
  60.       icon: mdi:wifi
  61.     ssid:
  62.       name: "Connected SSID"
  63.       icon: mdi:wifi-strength-2
  64.  
  65. sensor:
  66.   - platform: wifi_signal
  67.     name: "WiFi Signal"
  68.     update_interval: 60s
  69.  
  70.  
  71.   - platform: pulse_meter
  72.     name: "Water Flow Meter Garden"
  73.     id: "water_flow_meter_garden"
  74.     pin:
  75.       number: GPIO4
  76.       inverted: true
  77.       mode:
  78.         input: true
  79.         pullup: true
  80.     internal_filter_mode: PULSE
  81.     unit_of_measurement: "L/min"
  82.     icon: "mdi:pump"
  83.     internal_filter: 50ms
  84.     timeout: 1min
  85.     filters:
  86.       - multiply: 1.0452
  87.  
  88.     total:
  89.       name: "Water Consumption Garden"
  90.       id: "water_consumption_garden"
  91.       unit_of_measurement: "m³"
  92.       state_class: "total_increasing"
  93.       icon: "mdi:water"
  94.       device_class: water
  95.       accuracy_decimals: 3
  96.       filters:
  97.         - multiply: 0.001
  98.         - multiply: 1.0452
  99.  
  100.   - platform: pulse_meter
  101.     name: "Water Flow Meter"
  102.     id: "water_flow_meter"
  103.     pin:
  104.       number: GPIO5
  105.       inverted: true
  106.       mode:
  107.         input: true
  108.         pullup: true
  109.     internal_filter_mode: PULSE
  110.     unit_of_measurement: "L/min"
  111.     icon: "mdi:pump"
  112.     internal_filter: 50ms
  113.     timeout: 1min
  114.     filters:
  115.       - multiply: 1.0111
  116.     total:
  117.       name: "Water Consumption"
  118.       id: "water_consumption"
  119.       unit_of_measurement: "m³"
  120.       state_class: "total_increasing"
  121.       icon: "mdi:water"
  122.       device_class: water
  123.       accuracy_decimals: 3
  124.       filters:
  125.         - multiply: 0.001
  126.         - multiply: 1.0111
  127.  
  128.   - platform: template
  129.     name: "Water Consumption Home"
  130.     id: "water_consumption_home"
  131.     unit_of_measurement: "m³"
  132.     state_class: "total_increasing"
  133.     icon: "mdi:water"
  134.     device_class: water
  135.     accuracy_decimals: 3
  136.     lambda: |-
  137.       if (isnan(id(water_consumption_garden).state)) {
  138.         return id(water_consumption).state;
  139.       } else {
  140.         return id(water_consumption).state - id(water_consumption_garden).state;
  141.       }
  142.      
  143.     update_interval: 60s
  144.  
  145.   - platform: adc
  146.     pin: GPIO34
  147.     id: water_pressure_volt
  148.     name: Water pressure voltage
  149.     update_interval: 1s
  150.     unit_of_measurement: "V"
  151.     accuracy_decimals: 2
  152.     attenuation: 12db
  153.     filters:
  154.       - exponential_moving_average:
  155.           alpha: 0.1
  156.           send_every: 10
  157.           send_first_at: 5
  158.     on_value:
  159.       then:
  160.         lambda: id(water_pressure_voltage_filtered).publish_state(x);
  161.  
  162.   - platform: template
  163.     id: water_pressure_voltage_filtered
  164.     name: "Water Pressure Voltage Filtered"
  165.     unit_of_measurement: "V"
  166.     device_class: "voltage"
  167.     state_class: "measurement"
  168.     accuracy_decimals: 2
  169.     #lambda: |-
  170.     #      return id(water_pressure_volt).state * 1;
  171.     filters:
  172.       - exponential_moving_average:
  173.           alpha: 0.05
  174.           send_every: 5
  175.           #send_first_at: 5
  176.  
  177.   - platform: template
  178.     id: water_pressure
  179.     name: "Water pressure"
  180.     unit_of_measurement: "bar"
  181.     device_class: "pressure"
  182.     state_class: "measurement"
  183.     accuracy_decimals: 2
  184.     lambda: |-
  185.           return (id(water_pressure_voltage_filtered).state - 0.43) * 4;
  186.     filters:
  187.       - throttle: 30s
  188.       - or:
  189.           - heartbeat: 300s
  190.           - delta: 0.04
  191.       - lambda: |-
  192.           if(x<0) return 0.00;
  193.           return x;
Advertisement
Add Comment
Please, Sign In to add comment