Files
esphome/templates/mystrom.yaml
T
artem 184181e959 Remove Hall Effect sensor
The data was less useful than I hoped,
and it's a waste of resources right now.
2024-08-17 14:21:44 +02:00

135 lines
2.7 KiB
YAML

substitutions:
# Change this via CLI with:
# $ esphome -s name tools -s friendly_name Tools run mystrom.yaml
name: "spare-power-meter"
friendly_name: "Spare power meter"
esphome:
name: "${name}"
friendly_name: "${friendly_name}"
project:
name: "dasfoo.${name}"
version: "1.0"
esp32:
board: esp32doit-devkit-v1
framework:
type: esp-idf
packages:
mqtt: !include mqtt.yaml
ota: !include ota.yaml
wifi: !include wifi.yaml
uptime: !include uptime.yaml
restart: !include restart.yaml
logger:
i2c:
sda: 22
scl: 19
scan: false
status_led:
# Red LED on the front panel.
pin: GPIO16
light:
- platform: binary
name: "Identify LED (white)"
id: mystrom_led_identify
restore_mode: ALWAYS_OFF
output: mystrom_led_white
output:
- id: mystrom_led_white
platform: gpio
pin: GPIO17
inverted: true
binary_sensor:
- platform: gpio
id: mystrom_side
name: "Side button (plus) pressed"
pin:
number: GPIO23
mode:
input: true
pullup: true
inverted: true
- platform: gpio
id: mystrom_bottom
name: "Bottom button (power) pressed"
pin:
number: GPIO18
mode:
input: true
pullup: true
inverted: true
on_press:
then:
- switch.toggle: mystrom_relay
sensor:
- platform: pulse_counter
pin: 4
update_interval: 10s
id: mystrom_power_consumption
name: "Power relay consumption"
device_class: "power"
state_class: "measurement"
unit_of_measurement: "W"
accuracy_decimals: 0
filters:
# Map from sensor -> measured value (pulse/min -> W),
# taken from https://github.com/mightea/esphome-mystrom-devices
- calibrate_linear:
- 0.0 -> 1.55
- 2698.5 -> 85
- 4397.25 -> 146
- 30900 -> 1005
- 44634.56 -> 1439
- 59643.75 -> 1930
# Correct 1.55W for the power usage of the plug.
- offset: -1.55
# Make everything below 1W appear as just 0W.
- lambda: if (x < 1) return 0; return x;
- platform: integration
sensor: mystrom_power_consumption
name: "Power consumption total"
time_unit: "h"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total_increasing"
accuracy_decimals: 2
filters:
- multiply: 0.001
- platform: tmp102
id: mystrom_temperature
name: "Internal temperature"
update_interval: 60s
entity_category: diagnostic
address: 0x48
on_value_range:
above: 80
then:
- switch.turn_off: mystrom_relay
- platform: duty_time
id: continuous_on_time
name: Continuous on time
lambda: "return id(mystrom_relay).state;"
switch:
- platform: gpio
name: None # Main entity for the device.
pin: GPIO27
id: mystrom_relay
restore_mode: RESTORE_DEFAULT_ON
device_class: outlet
on_turn_off:
- sensor.duty_time.reset: continuous_on_time