Homenode

TypeScriptAngularNodeJSRustC/C++Redis

A custom home automation platform linking from and to all sorts of sensors and services. Homenode is my personal long term project (started in 2018) driven by the need to automate as much of the world as possible at a low cost.

Project goals
  • Connect to hardware from different vendors using a variety of communication protocols.
  • Ability to take advantage of off-the-shelf solutions (Google Assistant/Home).
  • Low cost and maintenance.
Why?

There are a variety of home automation solutions on the market. However the cost of some of these solutions is high and others do not interconnect too well. Projects like Home Assistant and IFTT have made linking various devices a lot easier.
However, I wanted to take this one step further and come up with a solution that offered more flexibility albeit through more code. I also wanted automation to be a priority as opposed to just moving light switches from a wall onto an app.

Integrations
  • Zigbee switches, door sensors and cubes
  • Shelly wifi dimmers and Yeelight bulbs
  • Custom BLE devices
  • Expose RS48 to Wifi
  • 433mhz RF devices
  • Solar panels using Modbus over TCP
  • Spotify integration
  • Ring integration
  • Other various APIs (TV's, sound systems, etc)
  • Custom built devices running on ESP32/ESP8266/Pi Pico
  • Various cameras over Wifi
  • Google Assistant/Actions
The hardware

The brains of the operations runs on a Raspberry Pi as a set of microservices. Connectors can be offloaded to secondary devices if necessary and connect to the main module using MQTT. Custom devices can talk via MQTT directly or on any of the other various connectors available (Zigbee, RF, BLE, etc). The user interface is built in Angular and communications to the main server are predominantly using websockets.

In addition to off-the-shelf devices I have built various devices to integrate with closed systems. For example, a power meter reader to measure current usage at the switchboard or hacking into the RS485 communications of a HVAC system to send and receive data.

Most useful features
  • Dimmable "smart" lights. Brightness is automatically controlled based on conditions.
  • Real time power monitoring of both grid and solar usage.
  • Saying "Ok Google, it's bedtime" to turn off the TV and turn on lights at lower power to get to the bedroom.
  • Getting notified when the washing is done.
  • Alerts if the side gate opens when nobody is home.
  • Turning on the TV and continuing what was last playing with a single command.
  • Automatically having front door lights turn on when you arrive home after dark.
  • Not having to pay for a Ring doorbell chime.