Water leakage automation with watermeter

Aim of this share is to show You how I managed to get semi water-leak automation.
First thing You have to get is reading from Your watermeter. I do recommend this (addon available) plus rtl-sdr or CUL(less CPU USAGE) device. You should also create daily “utility meter” for that meter. It is not precise but there were few times when garden hose got loose and I spent few cubic meters on behalf of this…

First You have to set up 7 helpers “input_number” type “number” lets say waterX (x = from 1 to 7).
OK then we have to get this automations that will cascade (is that right word ?) values before end of the day:

- id: '1609184636677'
  alias: Woda zapis stanu z kolejnych dni
  description: ''
  trigger:
  - platform: time
    at: '23:59:00'
  condition: []
  action:
  - service: input_number.set_value
    entity_id: input_number.water7
    data:
      value: '{{ states(''input_number.water6'') | float }}'
  - service: input_number.set_value
    data:
      value: '{{ states(''input_number.water5'') | float }}'
    entity_id: input_number.water6
  - service: input_number.set_value
    data:
      value: '{{ states(''input_number.water4'') | float }}'
    entity_id: input_number.water5
  - service: input_number.set_value
    data:
      value: '{{ states(''input_number.water3'') | float }}'
    entity_id: input_number.water4
  - service: input_number.set_value
    data:
      value: '{{ states(''input_number.water2'') | float }}'
    entity_id: input_number.water3
  - service: input_number.set_value
    data:
      value: '{{ states(''input_number.water1'') | float }}'
    entity_id: input_number.water2
  - service: input_number.set_value
    data:
      value: '{{ states(''sensor.weekly_wodomierz'') | float }}'
    entity_id: input_number.water1
  mode: single

Simple right ?

Ok then We have to send notification when today value exceeds by 5% (You can adjust that, this is stored in 1.05 ) mean value from previous week:

- id: '1609181281068'
  alias: Wodomierz przekroczenie zużycia średniego o 5 % #watermeter exceeded usage by %5
  description: ''
  trigger:
  - platform: time_pattern
    minutes: /20
  condition:
  - condition: template
    value_template: '{{ (states(''sensor.daily_wodomierz'') | float) > ((((states(''input_number.water1'')
      | float) + (states(''input_number.water2'')| float) + (states(''input_number.water3'')|
      float) + (states(''input_number.water4'')| float) + (states(''input_number.water5'')|
      float) + (states(''input_number.water6'')| float) + (states(''input_number.water7'')|
      float)) / 7) * 1.05) }}'
  action:
  - service: notify.telefony #notify phones
    data:
      title: Możliwy wyciek #possible leakage 
      message: Zużycie  wody o {{ ((((states('sensor.daily_wodomierz') | float) -
        ((states('input_number.water1') | float) + (states('input_number.water2')|
        float) + (states('input_number.water3')| float) + (states('input_number.water4')|
        float) + (states('input_number.water5')| float) + (states('input_number.water6')|
        float) + (states('input_number.water7')| float)) / 7) * 1000 ) | int) }} litrów
        większe niż średnia z ostatniego tygodnia. # Water use X liters higher than mean value form previous week.
  - delay: 02:00:00
  mode: queued
  max: 5

This of course will not fully replace having… a leak sensor but still, better than nothing.

1 Like

Exactly what I was looking for.
Ill check this out. Thanks!