Please STAR this project if you find it useful or interesting.
This repo contains (the shareable part of) my smart-home configuration. Orchestration is handled by Home Assistant.
What is Gullburet? It's the nickname of our apartment, and it means "the gold-cage".
A tablet has been wall-mounted in the entry hall to serve easy control. It reduces the need to control everything with a mobile, which is also a lot easier for guests.
The interface has been custom-made to fit the daily needs of the persons living there.
Screenshots of the different tab-views:
The smarthome-system is compromised of many hardware devices, obviously.
- Raspberry Pi 4 model B 2GB
- OS: Raspbian Lite 64-bit
- Home Assistant is running as Container, in a stack with
zwave-js-ui
(previously zwave2mqtt) andvscode
in Docker - PSU: 5V/3A USB-C
- Storage: Kingston KC600 256GB SSD, connected to RPi with SATA-to-USB3 adapter
- Network: CAT-6 networking to router
- SMLIGHT SLZB-06M (PoE Zigbee coordinator)
- USB: Aeotec Z-Stick 7 (as Z-Wave-controller)
- Unifi Cloud Gateway Ultra
- Unifi Switch Lite 8 PoE
- Unifi U6 Pro
- Mill Heat panel heaters, movable floor-unit
- Sonos speakers: Play:1, One, Beam, Move
- Roborock S7 Plus, robot vacuum
- Samsung The Frame 55" TV
- Lenovo Tab M10 FHD Plus wall-mounted tablet
- Shelly Plug Plus S for binary control and power-monitoring
- Tibber Pulse - Realtime apartment power consumption meter. Uses the HAN-port.
- Fibaro Dimmer Switch 2, Switch 2
- Heat-it Z-TRM3 Thermostat for floor heating
- IKEA TRÅDFRI: Transformers, lightbulbs, smart plugs, switches
- Aqara Temperature & Humidity T1 sensors
- Namron Temperature & Humidity sensors. Wall-mounted panel heaters.
- Philips Hue (bulbs, switches, sensors)
The host system for Home Assistant incorporates the following services running as containers:
- Home Assistant Container
- VSCode
- Z-Wave JS UI
- Zigbee2MQTT
- Mosquitto
To display relevant info about life in Oslo, here are some public APIs that are being consumed:
- Entur (Ruter): Public transportation
- Met.no (Yr): Weather
- Tibber: Local electricity ratings, including fees
- Elvia: Electrical grid usage, variable and fixed price rating, including fees
- Switched to a PoE Zigbee coordinator, to escape the previous USB-stick solution which is at the mercy reliability-wise of its host's power management - which in the case of the RPi is horrible
- Switched from ZHA to Zigbee2MQTT because it is compatible with more devices. Check the compatibility list for Zigbee devices here, and it is more configurable.
- Intentionally chose a specific Zigbee-channel to reduce interference with Wi-Fi. This article explains overlapping channels between Wi-Fi and Zigbee. I use Wi-Fi channels 6 and 11 for guest and IoT 2.4GHz Wi-Fis respectively, so I chose Zigbee channel 11 (equal to Wi-Fi channel 1) to be as away from these as possible.
- Connected the Zigbee coordinator with a 3m cable away from the host, as well as away from Wi-Fi APs and big metal objects.
- Added relaying devices first to the network (devices powered by wire), starting with the closest ones to the coordinator first. Then addd edge devices (powered by battery) last. Its a best practice for a strong mesh-network.
- With Z2M instead of ZHA, I could move Philips Hue-devices off its own bridge into the Zigbee-network, reducing interference.
The Floorplan-view is built up of different layers of pre-rendered PNGs. Take a look in the /www/floorplan
-directory of the repo to see the images. Images was created like this:
- Download and install the free software, Sweet Home 3D. Also get the available furniture/interior model packages that are also available for free, that must be downloaded separately.
- Create the 2D floor plan of the house, and place furniture to cover your desired level of fidelity.
- In the 3D view, edit heights, depths, widths, material, shinyness, elevation, rotation and so on for furniture, walls, floors as your heart desires. Also add light sources.
- Find a nice point of view and save it. It will serve as the POV to make all renderings from.
- Edit environment settings, such as location and elevation of the home. This will impact sunlight in the renderings.
- Choose a standard date and time for the renders. I use 202X-03-23, since it is in the middle between the darkest and lightest in Norway. I also use 18:30 as time for when it is getting fairly dark.
- Turn off all light sources (edit light source and set light brightness to 0, or deactivate the light) and create the first render: A completely dark base-image of the home. The less light sources are active on in the images, the faster the renders take to generate.
- Then go one-light at a time, adjust the light source brightness, and keep all other sources dark. Create renders of all light sources.
- Use GIMP (free) or Photoshop, and import all images as layers.
- Add alpha-channel to all images/layers. We will make anything that is not interesting for each image/layer transparent.
- Crop all images into the same desired size.
- Use Free-select tool to mark areas of each image/layer that is affected by that image light source, clearing everything else and making the other parts of image transparent.
- Export a base, dark image and each light source as their own indpendent PNG.
This project has been directly implemented by myself, but I want to extend some big, warm and grateful thank yous to the following resources on the internet:
- @lukevink's HA-config on GitHub: His clean tablet-dashboard has served as a huge inspiration for my tablet UI
- @HomeAutomationGuy on YouTube: Great, in-depth guides on many HA-related topics.
- @EverythingSmartHome: A fantastic general resource on HA-related news and topics.
- @My_Smart_Home on YouTube: To-the point and well-made vidoes on configuring components, down to the nitty-gritty details. Has taught me new things and provided inspiration!