A data driven, mesh networked home automation project
Humes is a set of programs and hardware designed to run as a distributed environment monitor and control system.

The Mesh


A Raspberry Pi Zero W acts as a Hub Node for the devices in the area and can save data to an IPFS drive. This can be accessed from any Hub and used to update devices which are on seperate mesh networks.


Shards are based around EPS-12F WiFi boards, they are Arduino-compatible which makes them easy to program. Depending on the software loaded the Shards can perform a variety of tasks which are detailed below. Every Shard is able to join a Mesh network to send and recive data from other Shards.

Mesh Mode

Shards are flashed with a program which allows devices to communicate with each other without the need for a central routing device.

Each Shard can run in Mesh Mode and pass data along to a hub to be uploaded to the IPFS drive. The Mesh will accept commands from physical switches on a Hub or via Remotes on the Mesh. An API will be exposed to allow desktop or web apps to create and control tasks as well as access the admin console.

Example: OES  IES  Hub


OES | Outdoor Environment Sensor


A small circuit board holding an ESP-12F with a BME680 sensor, a TSL2591 Light sensor and a Raindrop Detector. All the components are housed in a small enclosure and placed outside with a solar panel and on-board battery. OES data is uploaded to OpenWeatherMap to help with weather station coverage and copied to an IPFS folder to inform Remotes.

IES | Indoor Environment Sensor


This board hosts a ESP-12F connected to a TCN75A Temp sensor and a CCS811 air quality sensor. The name for each room can be entered on the admin page of the Hub.

Remote | Data Controlled Switches


Remotes contain an ESP-12F to interface with the Mesh and a relay to activate/deactivate equipment. They can be hidden inside the body of a device to toggle power and forward basic commands, provided the device allows serial communication.


Automated Activation


Have remotes publish tags such as 'Lights' or 'Fan' and allow automatic activation based on time of day or output from another Shard. For example a fan could be turned on when a IES detects that the temperature is too high, or lights could be turned on when an OES detects that the light level has dropped below a certain point.