Simple home automation balcony setup
I’ve been getting into some home automation for our apartment for a while, ever since my father got us an Amazon Alexa device to call home with. Since then we expanded our setup to include smart plugs, Philips Hue lighting, and some Broadlink IR controllers.
Whilst these products can function well in their respective eco-systems. The real power comes when leveraging a product such as Home Assistant to bring it all together into a single unified platform.
One thing we recently introduced in our setup was to include a very simple balcony watering system that can be controlled remotely and automated via timers and other triggers.
This post documents the equipment required outside of the standard Home Assistant setup and the configuration required to get going.
Parts
Setup
The setup with these components was straight forward, with the components pretty much connecting and screwing together and just working.
The only complicated thing was flashing custom firmware onto the smart plug as I wanted to have a purely offline setup. I went with espurna for this but you could also try esphome which provides a nice API and easy YAML configuration.
Home Assistant configuration
The automation currently consists of 3 parts.
- A daily watering schedule which is triggered based on the time
- Secondary schedule, triggered by time and temperature forecast
- Manual invocation and automatic off after defined duration
- Safety mechanism to ensure switch is off, for cases when reboot occurs during watering cycle.
For the first one I also decided to use Push Bullet to notify my devices when it was triggered, I wanted this to be notified easily whilst on vacation.
timers.yaml
For this setup you will need to setup two timers
# The main timer for automation triggers
balcony_water:
duration: '00:02:00'
# Secondary timer for manual invocation
balcony_water_max:
duration: '00:02:00'
Next configure the following automations.
- alias: 'Balcony water automatic (start)'
trigger:
- platform: time
at: '21:30:00'
action:
- service: script.balcony_water_start
- alias: 'Balcony water hot day (start)'
trigger:
- platform: time
at: '09:30:00'
condition:
condition: and
conditions:
- condition: numeric_state
entity_id: sensor.yr_temperature
above: 25
action:
- service: script.balcony_water_start
- alias: 'Balcony water automatic (stop)'
trigger:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.balcony_water
action:
- service: switch.turn_off
entity_id: switch.socket_balcony
- service: notify.pushbullet_chi
data:
message: 'Balcony watering finished'
- alias: 'Balcony water manual (start)'
trigger:
- platform: state
entity_id: switch.socket_balcony
to: 'on'
action:
- service: timer.start
entity_id: timer.balcony_water_max
- alias: 'Balcony water manual (stop)'
trigger:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.balcony_water_max
action:
- service: switch.turn_off
entity_id: switch.socket_balcony
- alias: 'Ensure balcony is off on reboot'
initial_state: 'on'
trigger:
- platform: homeassistant
event: start
action:
service: switch.turn_off
entity_id: switch.socket_balcony
Improvements
As the title says this setup is very basic right now and gives no feedback on the water remaining in the tank, the moisture in the soil, or outside air temperature.
All these points are things I would love to improve in the future, especially the first point.
Photos