-
Notifications
You must be signed in to change notification settings - Fork 2
/
watermeter.yaml
94 lines (83 loc) · 2.84 KB
/
watermeter.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# usage example of beam_binary_sensor for a water meter
# beam binary sensor is similar to a gpio_binary_sensor
# beam binary sensor will alternate an output (e.g. ir led) on and off, and only publish 'on' if during the cycle both:
# 1. sensor is activated when drive is on
# 2. sensor is deactivated when drive is off
# this ensures that the sensor is not activated erroneously by ambient light (e.g. sunlight)
# may be useful for sensors such as electricity meters (where a red led is used, and might be badly affected by ambient light), outdoor ir beams or reflective sensors, etc.
esphome:
name: watermeter_example
esp8266:
board: esp01_1m
# load the custom external components from my repo
external_components:
source:
type: git
url: https://github.com/grob6000/esphome-externalcomponents
# Enable logging
logger:
#baud_rate: 0
level: DEBUG
# Enable Home Assistant API with encryption
api:
encryption:
key: !secret encryption1
# over-the-air connection password; secret
ota:
password: !secret ota_password1
# wifi details - more secrets!
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_password
hidden: true
domain: !secret domain
fast_connect: true
# global storage for the pulse count
globals:
- id: pulsecount
type: int
restore_value: no
initial_value: '0'
# water meter sensor for use by home assistant
# for this water meter, the factor (1.0f) is L/pulse; adjust as needed
# in home assistant, you can set up 'utility_meter' entities with this as the source; e.g.
#
# utility_meter:
# utility_meter_water:
# name: Water Utility Meter
# unique_id: utility_meter_water
# source: sensor.water_meter_total
# cycle: daily
sensor:
- platform: template
id: watermeter
name: Water Meter Total
update_interval: 60s
lambda: |-
return (float)id(pulsecount) * 1.0f;
unit_of_measurement: L
state_class: total_increasing
# beam binary sensor example
# for use by esphome only (thus internal=true - set this to false if you want it in the UI)
# TROUBLESHOOTING TIP: if you get one of the sensor or driver pins inverted, the sensor will always be off. if you invert both, it will... work fine (this is symmetric).
beam_binary_sensor:
id: pulsesensor
name: Water Meter Pulse Sensor
internal: true
on_click:
min_length: 10ms
then:
- lambda: |-
id(pulsecount) += 1;
# sensor pin: connect to the phototransistor output. in my case, this is active low, so inverted=true
pin_sensor:
number: 14
inverted: true
# driver pin: connect to the ir led (via resistor). in my case, this is active high, so inverted=false (default)
pin_driver:
number: 12
# output pin: this pin mirrors the raw sensor state. in my case this is esp12 led, which is active low, so inverted=true
pin_output:
number: 2
inverted: true