After I decided on taking the plunge to setup a home automation system (see the page “Home Automation” for a discussion on the overview), I set about learning and installing the Home Assistant package. Since this is a large and well received open source project, I was able to find many resources on how to install and configure a range of devices. In the beginning, the custom outboard sensors had to be designed and coded myself, but now, using the ESPHome add-on package, a wide range of sensor devices can be attached to a ESP8266 micro controller board and the software for those boards can be merely configured with no coding required. This is a big improvement and now allows hobbyists who are not comfortable with coding to make the best use of this system. Home Assistant also has a cloud service connection to the Amazon Alexa infrastructure so that any of the devices can be controlled by voice command.
The user interface for Home Assistant is web based and very easy to build by using a specification file written in the YAML language. At the right is my implementation showing the home screen. There are 4 tabs showing the sunscreens – main, automation control, irrigation, and notifications. In the top row are icons for lamps and a person icon that shows green when I am home as detected by the presence of my iPhone. Bottom row shows the outdoor lights and the garage door status and the up/down button. At the bottom is the icon for the Nest thermostat. The outdoor lights are automated to go on at sundown and off at sunrise. The Nest has full control and an automation script sets the economy mode if I am out of the house as detected by the presence of my iPhone.

This screen shows the various settings for the irrigation system. There are 2 main identical sections, one for the front yard, and one for the back yard. At top is an indication (Relay 1 or Relay 2) that shows the valve is on and water is flowing. The top section allows for manual watering of any duration up to 60 minutes. The lower sub-section is for the timed watering. The start time and duration can be setup as well as the duration of watering. There is also a switch that enables the timed watering. In this way, the scheduled watering can be turned off if it has rained or will in the near future. In this screenshot of the interface, you can see that the front scheduled watering is ‘off’, but the back watering is set to ‘on’. In the future, I plan to add days of the week to the schedule so that watering can be scheduled on a weekly based, say for every day or every other day. I would also like to add a rain gauge and detector to automate the decision on when to water based on true need.
