@ossy-ha wrote:
Hello folks - seasons greetings!
I am having the most trouble getting some automations set up for my Zwave immersion heater controller (Horstmann SIR321). To all instents and purposes, it is a relay/switch so the only thing that can be done with its entity is Turn on/Turn off.
Background
I have most of the basic building blocks working but there are some niggles that I am struggling to debug. Most of what is working has been copy and pasted from the cookbook/the forum.
My primary goals for the water heater and HA are as follows:
- Have a button in Lovelace which when pressed puts the water heater on for 1 hour
- Trigger the water heater to come on for one hour at a different time each day of the week (also from Lovelace)
This screenshot shows what the front end looks like:
The code for the cards looks like this:
- badges: [] cards: - entities: - switch.horstmann_secure_meters_sir321_rf_countdown_timer_switch show_header_toggle: false title: Immersion Heater Status type: entities - entity: automation.hot_water_on_one_hour hold_action: action: none icon: 'mdi:thermometer-lines' name: Boost hot water for 1 hour show_icon: true show_name: true tap_action: action: call-service service: automation.trigger type: entity-button - entities: - entity: input_datetime.hws_mo - entity: input_datetime.hws_tu - entity: input_datetime.hws_we - entity: input_datetime.hws_th - entity: input_datetime.hws_fr - entity: input_datetime.hws_sa - entity: input_datetime.hws_su show_header_toggle: false title: Water heater schedule type: entities path: hot-water title: Hot Water
At the back end I have the following automations:
- Hot Water On - One Hour
Turns the heater on
[Send a notification to my phone for debugging]
Delays for an hour
Turns it off- Hot water - Monday
Use a template, a time sensor and input entitiy to evaluate the current time
Check a condition to see if it is the right day of the week
Trigger the Hot Water On - One Hour automation
[Send a notification to my phone for debugging]Once this is working, it is my intention to have further automations which cover the other days of the week
Automations.yaml looks like this:
- id: '1571092941517' alias: Hot Water On - One Hour description: Switches the water on for 1 hour at any time trigger: [] condition: [] action: - device_id: 75fb2ec189524b3c81012dde9cbe066c domain: switch entity_id: switch.horstmann_secure_meters_sir321_rf_countdown_timer_switch type: turn_on - data: message: automation triggered - Hot Water On - One Hour service: notify.notify - delay: 01:00:00 - device_id: 75fb2ec189524b3c81012dde9cbe066c domain: switch entity_id: switch.horstmann_secure_meters_sir321_rf_countdown_timer_switch type: turn_off - id: '1577119893046' alias: 'DEBUG: Hot water switch on' description: '' trigger: - device_id: 75fb2ec189524b3c81012dde9cbe066c domain: switch entity_id: switch.horstmann_secure_meters_sir321_rf_countdown_timer_switch platform: device type: turned_on condition: [] action: - data: message: water heater on service: system_log.write - id: '1577120792510' alias: 'DEBUG: Hot water switch off' description: '' trigger: - device_id: 75fb2ec189524b3c81012dde9cbe066c domain: switch entity_id: switch.horstmann_secure_meters_sir321_rf_countdown_timer_switch platform: device type: turned_off condition: [] action: - data: message: water heater off service: system_log.write - id: '1577124991290' alias: Hot water - Monday description: Monday day condition is in config.yaml you can't see it here trigger: - platform: template value_template: '{{ states(''sensor.time'') == (states.input_datetime.hws_mo.attributes.tim> | int | timestamp_custom(''%H:%M'', False)) }}' condition: - after: 00:00:01 before: '23:59:59' condition: time weekday: - mon action: - data: entity_id: automation.hot_water_on_one_hour service: automation.trigger - data: message: Monday automation triggered service: notify.notify
For debugging I have two extra automations that write to the log what the switch is doing.
All automations have been tested in isolation, if they are triggered by clicking the ‘Trigger’ button in the (i) card for each automation they work properly:
For reference this is my configurations.yaml file:
homeassistant: # Name of the location where Home Assistant is running name: Ossy # Location required to calculate the time the sun rises and sets latitude: !secret longitude: !secret # Impacts weather/sunrise data (altitude above sea level in meters) elevation: 0 # metric for Metric, imperial for Imperial unit_system: metric # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones time_zone: Europe/London # Customization file customize: !include customize.yaml # Configure a default setup of Home Assistant (frontend, api, etc) default_config: # Uncomment this if you are using SSL/TLS, running in Docker container, etc. # http: # base_url: example.duckdns.org:8123 # Discover some devices automatically discovery: # Sensors sensor: - platform: time_date display_options: - 'time' - 'date' - 'date_time' - 'time_date' - 'time_utc' - 'beat' # Weather prediction - platform: yr # Text to speech tts: - platform: google_translate group: !include groups.yaml automation: !include automations.yaml script: !include scripts.yaml #Entity Variables #Hot water timer inputs input_datetime: hws_mo: name: Set time for water heater (Monday) has_date: false has_time: true hws_tu: name: Set time for water heater (Tuesday) has_date: false has_time: true hws_we: name: Set time for water heater (Wednesday) has_date: false has_time: true hws_th: name: Set time for water heater (Thursday) has_date: false has_time: true hws_fr: name: Set time for water heater (Friday) has_date: false has_time: true hws_sa: name: Set time for water heater (Saturday) has_date: false has_time: true hws_su: name: Set time for water heater (Sunday) has_date: false has_time: true
- Hot Water On - One Hour - expected behaviour: water switch goes on, notification arrives to phone, water goes off after one hour
- Hot water - Monday - expected behaviour: water switch goes on, notification arrives to phone, water switch goes on, second notification arrives to phone from nested automation trigger, water goes off after time delay
I am aware that triggering in this way ignores conditions. The time based automation has also been tested and fires at the right time if the day is correct.
For reference I am running HA inside a docker container. Docker is running on Unbuntu 18 on an NUC, I got it up and running using this tutorial: Absolute Beginners guide to installing HA on Intel NUC using Docker and since then have added samba and git to the docker container where HA runs. I’m not sure if further details are relevant, please let me know if they might be useful.
The system is running Home Assistant 0.100.1
Frontend version: 20191002.2 - latestSystem Health
arch x86_64 dev false docker true hassio false os_name Linux python_version 3.7.4 timezone Europe/London version 0.100.1 virtualenv false Lovelace
mode storage resources 0 views 3 Issues
In practice, however, things are not so good. I currently have the following issues with my set up:
When pressing the ‘Boost hot water for 1 hour’ button in lovelace behaviour is inconsistent.
—Pressing the button causes the ‘Monday’ automation to fire, a ‘Monday’ notification arrives to my phone
------It would seem that the button is mapped to the wrong trigger but it isn’t
—Sometimes, the water switch does toggle over and sometimes it doesn’t
—When the switch does activate from this button press, three notifications arrive to my phone, one for ‘Monday’ and two for ‘one hour boost’ (I presume this is one from the actual entity call and one from the nested call inside the monday automation).When the ‘Monday’ automation is triggered by the correct date and time, sometimes it calls the ‘one hour boost’ automation trigger and sometimes it doesn’t.
Three notifications from one button press:
More simply:
- The entity card in lovelace seems to be calling the wrong automation
- The time based automation intermittently doesn’t call the 1 hour automation in its action
All of which results in some early morning cold showers that are pretty unpleasant!
Questions
All this in mind, I would really appreciate some pointers on the following things:
- Is there something wrong with my set up that I have missed?
- What might be causing the intermittent behaviour of automation making them unreliable?
- How do you go about debugging something like this, the logs and so on have no shown me anything that I can use to progress
- Would it be better to just have on-delay-off actions in each of my day-of-the-week automation, instead of calling another automation trigger (this feels like duplicating code but maybe that’s ok in this instance)
Any tips much appreciated!
Many thanks and warm regards,
D
Posts: 2
Participants: 2