Zigbee

Which Smart Home Controller to Choose: My Setup

People often ask: “What should I base my smart home on?” Over the years, I’ve settled on a setup that’s reliable, local, and efficient. Here’s why I run a Raspberry Pi 4 inside a fanless case combined with a Zigbee USB dongle, and why I steer clear of Wi‑Fi devices.

What matters most

When choosing a smart home controller, I focus on a few key points:

  • Local control: The system should work without relying on the internet.
  • Reliability: It needs to run smoothly with minimal restarts and no hidden cloud dependencies.
  • Expandability: It should be easy to add components like Zigbee2MQTT, ESPHome, databases, and dashboards.
  • Energy efficiency: Since it runs 24/7, it must stay quiet.

Why Raspberry Pi 4 with a fanless case?

For the “brain” of my smart home, the Raspberry Pi 4 hits the sweet spot. It’s powerful enough to run Home Assistant, Zigbee2MQTT, and a few other services without breaking a sweat. To keep things silent and dust-free, I use a fanless aluminum case that doubles as a heatsink. For example, this fanless aluminum case for Raspberry Pi 4 works great.

Automating Blinds with Zigbee and Home Assistant

I have blinds on my window and for a long time, I was wondering how to integrate them into my Home Assistant setup. The blinds are operated by a standard three-position switch that controls a motor to either open or close the blinds. The challenge was to make these blinds smart without using any dedicated position sensors, which would normally tell me whether the blinds are fully open, fully closed, or somewhere in between.

Zigbee turn on Level

Sometimes, you may encounter a situation where a Zigbee light turns on at its minimum brightness by default. After a bit of research, it turns out there’s a setting that defines the brightness level of the light upon turning on. Interestingly, among several lights, one had its brightness level set to 1 at startup.

Here’s how to set it up:

action: mqtt.publish
data:
  topic: zigbee2mqtt/celing_lamp1/set
  payload: "{\"level_config\": {\"on_level\": \"previous\"}}"

As implied by the command, this mode sets the light to its previous brightness level upon turning on.