157 lines
3.1 KiB
YAML
157 lines
3.1 KiB
YAML
esphome:
|
|
name: energy-meter
|
|
friendly_name: energy-meter
|
|
on_boot:
|
|
- priority: 600.0
|
|
then:
|
|
- output.turn_off: watchdog_state
|
|
- delay:
|
|
seconds: 30
|
|
- if:
|
|
condition:
|
|
lambda: "return !id(ota_running);"
|
|
then:
|
|
- output.turn_on: watchdog_state
|
|
|
|
esp8266:
|
|
board: esp01_1m
|
|
|
|
# Stop the device from sleeping while ota is running
|
|
globals:
|
|
- id: ota_running
|
|
type: bool
|
|
initial_value: "false"
|
|
restore_value: False
|
|
|
|
# Disable safe mode so the resets from
|
|
# the Attiny watchdog don't trigger safe mode
|
|
safe_mode:
|
|
disabled: true
|
|
|
|
# Enable logging
|
|
logger:
|
|
baud_rate: 0
|
|
level: INFO
|
|
|
|
mqtt:
|
|
discovery: true
|
|
# Set your MQTT broker IP here!
|
|
broker: 192.168.1.2
|
|
birth_message: # Empty - this prevents status reporting as unavailabile in HA
|
|
will_message: # Empty - this prevents status reporting as unavailabile in HA
|
|
on_message:
|
|
topic: energy-meter/sensor/current_power/state
|
|
then:
|
|
- delay:
|
|
seconds: 1
|
|
- if:
|
|
condition:
|
|
lambda: "return !id(ota_running);"
|
|
then:
|
|
- output.turn_on: watchdog_state
|
|
|
|
ota:
|
|
platform: esphome
|
|
password: !secret ota_password
|
|
on_begin:
|
|
then:
|
|
- globals.set:
|
|
id: ota_running
|
|
value: "true"
|
|
|
|
wifi:
|
|
ssid: !secret wifi_ssid
|
|
password: !secret wifi_password
|
|
domain: ".lan"
|
|
fast_connect: true
|
|
|
|
# Enable fallback hotspot (captive portal) in case wifi connection fails
|
|
ap:
|
|
ssid: "Energy-Meter Fallback Hotspot"
|
|
password: !secret hotspot_password
|
|
|
|
captive_portal:
|
|
|
|
web_server:
|
|
port: 80
|
|
|
|
uart:
|
|
id: uart_bus
|
|
rx_pin:
|
|
# RXD0 on ESP-01
|
|
number: 3
|
|
inverted: false
|
|
baud_rate: 9600
|
|
data_bits: 8
|
|
parity: NONE
|
|
stop_bits: 1
|
|
debug:
|
|
|
|
output:
|
|
# Communication with Attiny85 watchdog
|
|
- platform: gpio
|
|
id: watchdog_state
|
|
pin:
|
|
number: 1
|
|
|
|
sml:
|
|
id: mysml
|
|
uart_id: uart_bus
|
|
|
|
sensor:
|
|
- platform: sml
|
|
retain: False
|
|
name: "Total energy"
|
|
sml_id: mysml
|
|
obis_code: "1-0:1.8.0"
|
|
unit_of_measurement: kWh
|
|
accuracy_decimals: 4
|
|
device_class: energy
|
|
state_class: total_increasing
|
|
filters:
|
|
- multiply: 0.0001
|
|
|
|
- platform: sml
|
|
retain: False
|
|
name: "Total energy (Tarif 1)"
|
|
sml_id: mysml
|
|
obis_code: "1-0:1.8.1"
|
|
unit_of_measurement: kWh
|
|
accuracy_decimals: 4
|
|
device_class: energy
|
|
state_class: total_increasing
|
|
filters:
|
|
- multiply: 0.0001
|
|
|
|
- platform: sml
|
|
retain: False
|
|
name: "Total energy (Tarif 2)"
|
|
sml_id: mysml
|
|
obis_code: "1-0:1.8.2"
|
|
unit_of_measurement: kWh
|
|
accuracy_decimals: 4
|
|
device_class: energy
|
|
state_class: total_increasing
|
|
filters:
|
|
- multiply: 0.0001
|
|
|
|
- platform: sml
|
|
retain: False
|
|
name: "Current power"
|
|
sml_id: mysml
|
|
obis_code: "1-0:16.7.0"
|
|
unit_of_measurement: W
|
|
accuracy_decimals: 4
|
|
device_class: power
|
|
state_class: measurement
|
|
|
|
- platform: adc
|
|
pin: VCC
|
|
icon: "mdi:battery"
|
|
name: "Battery Voltage"
|
|
|
|
# The ESP's deep sleep is not being used, but adding it
|
|
# may prevent the device from showing as offline in Home Assistant
|
|
deep_sleep:
|
|
sleep_duration: 5min
|