My smart home built on a Raspberry Pi 4 Model B (4GB) running Home Assistant OS, with a connected ConBee II.
๐จ Home Security | ๐ฑ Mobile control | ๐ก Smart adaptive lighting | ๐ Motion & occupancy sensing | ๐ Smart curtains & blinds | โก Energy & solar monitoring | ๐ก Smart heating & cooling | ๐ Multi-room audio | ๐ Local control
Raspberry Pi 4B | ConBee II | Synology DS718+ | Philips Hue Bridge v2 | Hue HDMI Sync Box | SwitchBot Hub Mini | Apple TV 4K |
---|---|---|---|---|---|---|
Runs Home Assistant OS and it's add-ons like SSH and SMB from a Kingston A400 SSD | USB-gateway connected through a USB2.0 Extension cable to connect all my Zigbee nodes. | Stores SMB backups and contains a Homebridge instance for devices Home Assistant doesn't support. | In use to control the entertainment area in conjuction with the HDMI Sync Box and OTAU Hue devices. | In use for the Ambilight behind the tv and the rest of the entertainment area in conjuction with the Hue Bridge. | In use to connect to SwitchBot Curtains, runs through HomeBridge to Home Assistant. | In use as HomeKit Home Hubs to run location automations and control the Home app when away. |
Icons by Icons8
In general, whenever I built something in Home Assistant it uses the following structure: an Automation to control a Switch, which triggers a Script(s). Major exceptions to this rule are:
Globally, my Home Assistant config follows a State path during the day, which controls how certain Automations, and thus Switches and Scripts run: โ
๏ธ Morning
โข โ๏ธ Day
โข ๐ Evening
โข ๐ Night
Each Home State is controlled by a Switch and corresponding Input Select, which run Scripts in the background. All of these either run automatically through Automations, or can be called through a Home app or a physical controller. Roughly, the corresponding actions are as following:
Morning
turns off outside lights, and opens all the blinds except the bedroomDay
ensures the Home
Occupancy is set, opens all curtains and runs certain bedroom automationsEvening
turns on outside and living room lights, and closes all curtainsNight
ensures the Sleeping
Occupancy is set and turns off lights & devicesWhile Home States are mostly based on time and/or sun-position, I've also created Home State Occupancy as an additional variable based on location data. Similarly, these are controlled by Switches and an Input Select, which runs Scripts. Some of these, like Away
and On vacation
run automatically through Automations. Others, like Sleeping
need to specifically be called, either through a Home app or physical controller. The following occupancy state transitions are possible:
Home
โข ๐ค Sleeping
turns security on, dims lights, adjusts heating and runs certain bedroom automationsHome
โข ๐ Away
turns security on, turns off lights & devices and lowers heatingAway
โข โฑ๏ธ On vacation
ensures Home State automations will run as if someone's homeSleeping
| ๐ Away
| โฑ๏ธ On vacation
โข ๐ Home
turns security off, adapts lights and turns on heatingAdditionally, there are a couple of Modes which can be manually turned on depending on the situation. Turning them off runs the corresponding script actions of the currect Home State to ensure a smooth transition back to the status quo.
Cinema Mode
ensures the ideal movie watching experience, by turning on the tv, closing the curtains and turning off or dimming certain lightsParty Mode
ensures no automations are run that interfere with guests, like curtains opening, alarms triggering or lights dimmingPrivacy Mode
ensures the living room is secured against prying eyes from outside, by closing the curtains, dimming lights, disabling camera's and playing music