G’day @Orion,
Please see below for my Washing Machine and Dryer YAML.
- This creates sensors to measure the volts, amps, watts etc.
- It also uses “templates” to calculate costs for “yesterday” and “todays” usage (@ 0.35cents AUD per KWh)
- It also notifies me (automation) through my SONOS via TTS (Bedroom and Living Room) when the cycle is complete
sensor:
# LAUNDRY SENSORS
# DRYER SONOFF POW R2
- platform: mqtt
name: "Dryer Volts"
state_topic: "dryer/tele/SENSOR"
value_template: '{{ value_json["ENERGY"]["Voltage"] }}'
unit_of_measurement: "volts"
- platform: mqtt
name: "Dryer Amps"
state_topic: "dryer/tele/SENSOR"
value_template: '{{ value_json["ENERGY"]["Current"] }}'
unit_of_measurement: "amps"
- platform: mqtt
name: "Dryer Watts"
state_topic: "dryer/tele/SENSOR"
value_template: '{{ value_json["ENERGY"]["Power"] }}'
unit_of_measurement: "watts"
- platform: mqtt
name: "Dryer Power Usage - TODAY"
state_topic: "dryer/tele/SENSOR"
value_template: '{{ value_json["ENERGY"]["Today"] }}'
unit_of_measurement: "kW"
- platform: mqtt
name: "Dryer Power Usage - YESTERDAY"
state_topic: "dryer/tele/SENSOR"
value_template: '{{ value_json["ENERGY"]["Yesterday"] }}'
unit_of_measurement: "kW"
# WASHING MACHINE SONOFF POW R2
- platform: mqtt
name: "Washing Machine Volts"
state_topic: "washing_machine/tele/SENSOR"
value_template: '{{ value_json["ENERGY"]["Voltage"] }}'
unit_of_measurement: "volts"
- platform: mqtt
name: "Washing Machine Amps"
state_topic: "washing_machine/tele/SENSOR"
value_template: '{{ value_json["ENERGY"]["Current"] }}'
unit_of_measurement: "amps"
- platform: mqtt
name: "Washing Machine Watts"
state_topic: "washing_machine/tele/SENSOR"
value_template: '{{ value_json["ENERGY"]["Power"] }}'
unit_of_measurement: "watts"
- platform: mqtt
name: "Washing Machine Power Usage - TODAY"
state_topic: "washing_machine/tele/SENSOR"
value_template: '{{ value_json["ENERGY"]["Today"] }}'
unit_of_measurement: "kW"
- platform: mqtt
name: "Washing Machine Power Usage - YESTERDAY"
state_topic: "washing_machine/tele/SENSOR"
value_template: '{{ value_json["ENERGY"]["Yesterday"] }}'
unit_of_measurement: "kW"
# DRYER Template COSTS
- platform: template
sensors:
dryer_power_today_cost:
friendly_name: "Dryer - Today's Cost"
unit_of_measurement: '$'
value_template: "{{ (states('sensor.dryer_power_usage_today')|float * 0.35)| round(2) }}"
dryer_power_yesterday_cost:
friendly_name: "Dryer - Yesterday's Cost"
unit_of_measurement: '$'
value_template: "{{ (states('sensor.dryer_power_usage_yesterday')|float * 0.35)| round(2) }}"
# WASHING MACHINE Template COSTS
- platform: template
sensors:
washing_machine_power_today_cost:
friendly_name: "Washing Machine - Today's Cost"
unit_of_measurement: '$'
value_template: "{{ (states('sensor.washing_machine_power_usage_today')|float * 0.35)| round(2) }}"
washing_machine_power_yesterday_cost:
friendly_name: "Washing Machine - Yesterday's Cost"
unit_of_measurement: '$'
value_template: "{{ (states('sensor.washing_machine_power_usage_yesterday')|float * 0.35)| round(2) }}"
binary_sensor:
# Washer and Dryer on/off status
- platform: template
sensors:
washer_status:
friendly_name: "Washing Machine Status"
#delay_on:
# seconds: 10
#minutes: 10
delay_off:
seconds: 5
#minutes: 3
value_template: >-
{{ states('sensor.washing_machine_watts')|float > 0 }}
dryer_status:
friendly_name: "Dryer Status"
# delay_on:
# minutes: 10
delay_off:
seconds: 5
value_template: >-
{{ states('sensor.dryer_watts')|float > 0 }}
automation:
#NOTIFY via Sonos TTS
#WASHING MACHINE
- id: washer_finished_notification
alias: Washing Machine Finished Notification
trigger:
platform: state
entity_id: binary_sensor.washer_status
to: 'off'
action:
- service: notify.android
data:
message: Washing Machine has finished its cycle
- service: media_player.volume_set
data:
entity_id: media_player.bedroom
volume_level: 0.5
- service: media_player.volume_set
data:
entity_id: media_player.living_room
volume_level: 0.5
- service: tts.google_say
data:
entity_id: media_player.bedroom
message: "The Washing Machine has finished its cycle"
- service: tts.google_say
data:
entity_id: media_player.living_room
message: "The Washing Machine has finished its cycle"
#DRYER
- id: dryer_finished_notification
alias: Dryer Finished Notification
trigger:
platform: state
entity_id: binary_sensor.dryer_status
to: 'off'
action:
- service: notify.android
data:
message: Dryer has finished its cycle
- service: media_player.volume_set
data:
entity_id: media_player.bedroom
volume_level: 0.5
- service: media_player.volume_set
data:
entity_id: media_player.living_room
volume_level: 0.5
- service: tts.google_say
data:
entity_id: media_player.bedroom
message: "The Dryer has finished its cycle"
- service: tts.google_say
data:
entity_id: media_player.living_room
message: "The Dryer has finished its cycle"
switch:
#WASHING MACHINE & DRYER ON/OFF POWER SWITCH
- platform: mqtt
name: "Dryer Power"
state_topic: "dryer/stat/POWER"
command_topic: "dryer/cmnd/POWER"
qos: 1
payload_on: "ON"
payload_off: "OFF"
retain: true
- platform: mqtt
name: "Washing Machine Power"
state_topic: "washing_machine/stat/POWER"
command_topic: "washing_machine/cmnd/POWER"
qos: 1
payload_on: "ON"
payload_off: "OFF"
retain: true