/HA4IoT

Open Source Home Automation system for .NET

Primary LanguageC#GNU General Public License v2.0GPL-2.0

Attention! This project is no longer maintained and obsolete. The successor of this project is called 'Wirehome.Core' (https://github.com/chkr1011/Wirehome.Core).

HA4IoT

HA4IoT (Home Automation for Internet of Things) is an Open Source Home Automation application running on Windows 10 IoT Core. It allows integration of different hardware actuators and sensors. It also provides a HTML/JavaScript based WebApp to control the system. But also other external services like Alexa, Twitter, Telegram etc. are supported.

Raspberry Pi

The core application of this project is running under Windows 10 IoT Core which is available for free and runs on a Raspberry Pi 2/3 for example. But any other compatible board is supported.

Amazon Alexa support

This project contains a Custom Skill for Amazon Alexa (Echo and Echo Dot) which allows controlling actuators via speech commands and ask for sensor status like open windows etc.

Demos

CCTools support

This project has build in support for many devices from CCTools (www.CCTools.eu) like I2C based relay boards and I2C port expanders. Support boards from CCTools are:

  • HSRel5
  • HSRel8(+8)
  • I2C-Port16-HS
  • PCF-Ports-HS

But also other compatible I2C boards based on PCF8574, PCA9555 or MAX7311 are supported.

433 MHz support

Controlling old 433 MHz devices is supported via using a I2C or WiFi -> 433 MHz sender bridge. The bridge is based on Arduino/ESP8266. Also recording 433 MHz signals like from a TV remote is supported.

Itead Studio Sonoff supported

This project has build in support for several Sonoff devices from Itead Studio (www.itead.cc). But it is necessary to replace the firmware with a different one. More information can be found here: https://github.com/arendst/Sonoff-Tasmota

LUA scripting support

Write your own scripts using the scripting language LUA to write powerful automations or interacting with your hardware.

Extensible

It is possible to add Adapters for different hardware. I2C bus and MQTT broker are already available in the project.

Cloud based access

The HA4IoT WebApp is able to communicate with the controller (Raspberry Pi i.e.) using the Azure cloud. This feature requires an Azure subscription and is optionally.

Build in actuators and sensors

Lots of actuators and sensors are already implemented in this project and can be reused. It is also possible to add custom actuators and sensors.

Awards

This project was one of the winners of the "Windows 10 Home Automation" contest at Hackster.io. The project documentation is also available at hackster.io (https://www.hackster.io/cyborg-titanium-14/ck-homeautomation).

This brilliant project explores uncharted home-automation territory; it even includes a cat litterbox controller, which detects the cat and channels the air into an outdoor flue! Be sure to check out the whole hack; it's an incredible embedded system with extensive wiring built right into the house.

hackster.io (https://www.hackster.io/blog/win-10-winners)

Contributors

If you are interested in supporting this project in any way feel free to contact me. We are a growing community which needs your support.

Key features

  • Virtual actuators like push buttons, motion motion detectors, lamps, sockets, roller shutters which can be interconnected using a fluent API
  • Responsive WebApp for iOS, Android, OSX and Windows
  • Highly configurable automations with complex conditions
  • Predefined conditions depending on sunrise, sunset, time, state of other actuators, position of roller shutters, motion detected
  • Predefined common automations like automated lights, roller shutters etc.
  • Software architecture using several layers which allows for transparent configuration of inputs and outputs across the used hardware
  • Optional integration of Microsoft Azure EventHubs to allow for analysis of actuator states or power consumption statistics
  • Optional CSV log containing all state changes of every actuator which allows for analysis of actuator states or power consumption
  • UDP broadcasted debug traces
  • Powerful RESTful API
  • Complete with fritzing sketches and documentation to build devices like 433Mhz sender, sensors etc. on your own

Built-in automations

  • Opening roller shutters after sunrise
  • Closing roller shutters after sunset
  • Closing roller shutters if outside temperature reaches a custom value (intended for rooms below the roof)
  • Prevent automatic opening of roller shutters if they maybe frozen (checking of outside temperature)
  • Prevent automatic opening of roller shutters if sunrise is too early (before your alarm clock)
  • Automatic light based on motion detectors
  • Autoamtic light based on time
  • Autoamtic lights can be configured to be only active at night
  • Disable automatic light if another light is already active
  • Disable every actuator temporary
  • The project provides a powerful condition framework which allows creating of complex autoamtions using C#

Personal Agent

Register a free bot for the messenger "Telegram" and let the bot control the home. Just tell him what he should do. The bot also supports giving status information like Weather information (Temperature, Humidity etc.), Window states (Open, Closed), Sensor values (Temperature, Humidity) etc. The bot will also send errors and warnings from the log to administrative users (which are defined in the configuration file). Every user who want's to interact with the bot must be added to a whitelist to ensure a high level of privacy.

App

Every actuator can be controlled using the web app which is hosted at the Raspberry Pi 2 using the build in webserver. The language for the examples is German but translation of each UI element is supported. The app shows every rooms/areas and provides several overviews like the overview of all temperature sensor. The app is based on Bootstrap and AngularJS and runs on Smartphones, Tables, PCs etc.

Management App

The management app is an HTML/JavaScript application based on AngularJS and Bootstrap which is used the configure all areas, components, automations etc. It is deployed to the controller (Raspberry Pi 2 i.e.) and can be also used to create backups from the configuration.