############################################################################### # @author : Jeffrey Stone # @date : 06/12/2020 # @package : Appliances # @description : Package for handling Smart Applicances and or automation to make dumb appliances seem smart. ############################################################################### sensor: # MQTT Sensor for DishWasher Status. - platform: mqtt name: "DishWasher Status" state_topic: "house/dishwasher/status" # MQTT Sensor for Washing Machine Status. - platform: mqtt name: "Washer Status" state_topic: "house/washer/status" - platform: mqtt name: "Washer Last Complete" state_topic: "house/washer/time_complete" - platform: mqtt name: "Washer Last Emptied" state_topic: "house/washer/time_emptied" utility_meter: washer_daily_kwh: source: sensor.washer_switch_electric_consumed_kwh cycle: daily washer_weekly_kwh: source: sensor.washer_switch_electric_consumed_kwh cycle: weekly automation: - id: washer_running alias: Washer Running trigger: - above: 5 entity_id: sensor.washer_power_consumed_w platform: numeric_state condition: condition: or conditions: - condition: state entity_id: sensor.washer_status state: idle - condition: state entity_id: sensor.washer_status state: complete action: - service: mqtt.publish data: topic: house/washer/status payload: running retain: true initial_state: true - id: washer_complete alias: Washer Complete trigger: - below: 3 entity_id: sensor.washer_power_consumed_w platform: numeric_state condition: - condition: state entity_id: sensor.washer_status state: running action: - service: mqtt.publish data: topic: house/washer/status payload: complete retain: true - service: mqtt.publish data: topic: house/washer/time_complete payload: '{{ now().timestamp() }}' retain: true initial_state: true - id: washer_notification initial_state: true alias: Washer Notification trigger: - platform: state entity_id: sensor.washer_status from: running to: complete action: # - service: script.status_annc # data: # who: '{{ states.sensor.room_presence.state }}' # call_interuption: 1 # speech_message: It appears the washing machine has completed its cycle. - service: script.speech_engine data: who: '{{ states(''sensor.room_audio'') }}' message: 'Just a quick heads up, It appears the washing machine has completed its cycle' - service: script.turn_on entity_id: script.washer_finished_notification_audible - id: washer_emptied initial_state: true alias: Washer Emptied trigger: - platform: state entity_id: binary_sensor.washer_door from: 'off' to: 'on' action: - service: mqtt.publish data: topic: house/washer/status payload: idle retain: true - service: script.turn_off entity_id: script.washer_finished_notification_audible - service: mqtt.publish data: topic: house/washer/time_emptied payload: '{{ now().timestamp() }}' retain: true - id: e1cb26fe-0423-11eb-adc1-0242ac120002 initial_state: true alias: Dryer Notification trigger: - platform: state entity_id: binary_sensor.dryer_dry_completed from: 'off' to: 'on' action: - service: script.status_annc data: who: '{{ states.sensor.room_presence.state }}' call_interuption: 1 speech_message: It appears the dryer has finished. - delay: minutes: 15 # - service: script.turn_on # entity_id: script.dryer_finished_notification_audible - id: dishwasher_idle initial_state: true alias: Dishwasher Idle trigger: - platform: state entity_id: device_tracker.dishwasher to: 'not_home' action: - service: script.dishwasher_idle # When dishwasher connects to network assume it is running cycle. - id: dishwasher_running initial_state: true alias: Dishwasher Running trigger: - platform: state entity_id: device_tracker.dishwasher to: 'home' action: - service: script.dishwasher_running - id: e1cb2640-0423-11eb-adc1-0242ac120002 alias: 3D Printing Notifications trigger: - platform: state entity_id: binary_sensor.octoprint_printing to: "on" id: printing_started - platform: state entity_id: binary_sensor.octoprint_printing to: "off" id: printing_ended action: - choose: - conditions: - condition: trigger id: printing_started - condition: state entity_id: sensor.octoprint_current_state state: 'Printing' sequence: - service: script.status_annc data: who: '{{ states.sensor.room_presence.state }}' call_interuption: 1 speech_message: The three d printer is printing. - conditions: - condition: trigger id: printing_started - condition: state entity_id: sensor.octoprint_current_state state: 'Sending file to SD' sequence: - service: script.status_annc data: who: '{{ states.sensor.room_presence.state }}' call_interuption: 1 speech_message: Uploading file to three d file has started. - conditions: - condition: trigger id: printing_ended sequence: - service: script.status_annc data: who: '{{ states.sensor.room_presence.state }}' call_interuption: 1 speech_message: The three d printer has completed its job. script: appliances_on: sequence: - service: switch.turn_on data: entity_id: switch.box_fans appliances_off: sequence: - data: entity_id: switch.incense service: switch.turn_off - data: entity_id: switch.artemis service: switch.turn_off washer_finished_notification_audible: sequence: - repeat: while: - condition: state entity_id: sensor.washer_status state: 'complete' sequence: - delay: minutes: 45 #- service: script.washer_audible - service: script.simplified_washer_audible # dryer_finished_notification_audible: # sequence: # - repeat: # while: # - condition: state # entity_id: sensor.washer_status # state: 'complete' # sequence: # - service: script.dryer_audible # - delay: # minutes: 45 washer_audible: sequence: - condition: state entity_id: group.family state: 'home' - condition: state entity_id: sensor.washer_status state: complete - service: script.status_annc data_template: who: '{{ states(''sensor.room_audio'') }}' call_interuption: 1 call_washer_needs_emptying: 1 simplified_washer_audible: sequence: - condition: state entity_id: group.family state: 'home' - condition: state entity_id: sensor.washer_status state: complete - service: script.speech_engine data: who: '{{ states(''sensor.room_audio'') }}' message: > {{ [ 'Pardon me, ', 'Excuse me, ', 'I do not mean to interrupt, but,', 'I hate to interrupt, but,', 'I beg your pardon, ', 'I do not mean to intrude, but, ', 'I am sorry to interrupt, but. ', 'Just a quick heads up, ' ] | random }}
The washing machine completed its cycle {% set seconds = now().timestamp() - as_timestamp(states.sensor.washer_status.last_changed) %} {% if (seconds / ( 60 * 60 )) | int == 1 %} over an hour ago. {{ [ 'Do not forget to rotate the clothes.', 'Was someone going to rotate the laundry?', 'Once you rotate the laundry I will stop reminding you to do it. So if you want me to stop. Its up to you.' ] | random }} {% elif (seconds / ( 60 * 60 )) | int > 1 and (seconds / ( 60 * 60 )) | int < 6 %} over {{ (seconds // ( 60 * 60 )) | int }} hours ago. {{ [ 'Much longer and you are going to need to wash them again.', 'Someone needs to rotate the laundry.', 'Do not forget about the clothes in the washing machine.', 'Surely you did not mean to forget about the clothes. Mistakes happen. But you can still fix it.', 'Do you like your clothes smelling like mildew? Becasue that is what is happening right now.' ] | random }} {% elif (seconds / ( 60 * 60 )) | int > 6 %} over {{ (seconds // ( 60 * 60 )) | int }} hours ago. {{ [ 'That is a crazy amount of time.', 'Did you decide you want those clothes to suffer?', 'You might as well just rewash those clothes.', 'I can smell the mildew. Virtually that is.', 'Surely you did not mean to forget about the clothes.' ] | random }} {% else %} {{ (seconds // 60) | int }} minutes ago. {{ [ 'Do not forget to rotate the clothes.', 'Someone forgot to move the clothes to the dryer. I am not going to name names, but there is a camera in there. Do I need to publically shame someone?', 'You might want to move them to the dryer.' ] | random }} {% endif %}
washer_idle: sequence: - service: mqtt.publish data: topic: house/washer/status payload: idle retain: true washer_running: sequence: - service: mqtt.publish data: topic: house/washer/status payload: running retain: true washer_complete: sequence: - service: mqtt.publish data: topic: house/washer/status payload: complete retain: true - service: mqtt.publish data: topic: house/washer/time_complete payload: '{{ now().timestamp() }}' retain: true dishwasher_idle: sequence: - service: mqtt.publish data: topic: house/dishwasher/status payload: idle retain: true dishwasher_running: sequence: - service: mqtt.publish data: topic: house/dishwasher/status payload: running retain: true