substitutions: waterlevel_current_init: '4.06' # mA at 0mm waterlevel_range: '1000' # mm waterlevel_density: '1' # water globals: - id: waterlevel_current_init type: float restore_value: yes initial_value: ${waterlevel_current_init} - id: waterlevel_range type: float restore_value: yes initial_value: ${waterlevel_range} - id: waterlevel_density type: float restore_value: yes initial_value: ${waterlevel_density} ads1115: - address: 0x49 id: ads1115_waterlevel sensor: - platform: ads1115 ads1115_id: ads1115_waterlevel id: waterlevel_tank_voltage internal: true #name: "Waterlevel Tank: Voltage" multiplexer: 'A0_GND' gain: 4.096 # max: 3.0V update_interval: 5s accuracy_decimals: 5 <<: !include filter.yaml - platform: ads1115 ads1115_id: ads1115_waterlevel id: waterlevel_system_voltage internal: true #name: "Waterlevel System: Voltage" multiplexer: 'A1_GND' gain: 4.096 # max: 3.0V update_interval: 5s accuracy_decimals: 5 <<: !include filter.yaml # - platform: template # name: "Waterlevel System: Current" # id: waterlevel_tank_current # unit_of_measurement: "mA" # accuracy_decimals: 2 # update_interval: 5s # lambda: !lambda 'return id(waterlevel_tank_voltage).state * 1024.0 / 120.0;' # V->mV, Sense Resistor: 120ohm' # - platform: template # name: "Waterlevel Tank: Current" # id: waterlevel_system_current # unit_of_measurement: "mA" # accuracy_decimals: 2 # update_interval: 5s # lambda: !lambda 'return id(waterlevel_system_voltage).state * 1024.0 / 120.0;' # V->mV, Sense Resistor: 120ohm - platform: template name: "Waterlevel: Tank" id: waterlevel_tank unit_of_measurement: "cm" accuracy_decimals: 2 update_interval: 5s lambda: |- float dataCurrent = id(waterlevel_tank_voltage).state * 1024.0 / 120.0; // Sense Resistor: 120ohm float depth = (dataCurrent - id(waterlevel_current_init)) * (id(waterlevel_range) / id(waterlevel_density) / 16.0) / 10; return depth; - platform: template name: "Waterlevel: System" id: waterlevel_system unit_of_measurement: "cm" accuracy_decimals: 2 update_interval: 5s lambda: |- float dataCurrent = id(waterlevel_system_voltage).state * 1024.0 / 120.0; // Sense Resistor: 120ohm float depth = (dataCurrent - id(waterlevel_current_init)) * (id(waterlevel_range) / id(waterlevel_density) / 16.0) / 10; return depth; prometheus: relabel: waterlevel_system: id: waterlevel_system name: "Waterlevel System" waterlevel_tank: id: waterlevel_tank name: "Waterlevel Tank"