All Projects → majamassarini → automate-home

majamassarini / automate-home

Licence: GPL-3.0 License
Yet another python home automation (iot) project. Because a smart light is more than just on or off.

Programming Languages

python
139335 projects - #7 most used programming language
Gherkin
971 projects

Projects that are alternatives of or similar to automate-home

Coapnet
CoAPnet is a high performance .NET library for CoAP based communication. It provides a CoAP client and a CoAP server. It also has DTLS support out of the box.
Stars: ✭ 23 (-61.02%)
Mutual labels:  home-automation, smart-home, internet-of-things, smart
Homeassistant
Example Home Assistant Configs
Stars: ✭ 846 (+1333.9%)
Mutual labels:  home-automation, sonos, internet-of-things
Entity Controller
Entity and lighting controller for managing devices via timers, scripts, and sun-based time restrictions.
Stars: ✭ 156 (+164.41%)
Mutual labels:  home-automation, smart-home, internet-of-things
aioesphomeapi
Python Client for ESPHome native API. Used by Home Assistant.
Stars: ✭ 52 (-11.86%)
Mutual labels:  home-automation, internet-of-things, asyncio
Streamdeck Homeassistant
🏠 Use the Elgato Stream Deck as Home Assistant controller. Call any available service and toggle lights or resume your music.
Stars: ✭ 69 (+16.95%)
Mutual labels:  home-automation, home, smart-home
libzwaveip
libzwaveip - Control Z-Wave devices from your IP network
Stars: ✭ 76 (+28.81%)
Mutual labels:  home-automation, smart-home, internet-of-things
Rpieasy
Easy MultiSensor device based on Raspberry PI
Stars: ✭ 85 (+44.07%)
Mutual labels:  home-automation, smart-home, internet-of-things
Core
🏡 Open source home automation that puts local control and privacy first.
Stars: ✭ 48,265 (+81705.08%)
Mutual labels:  home-automation, internet-of-things, asyncio
node-red-contrib-bosch-shc
Bosch Smart Home Controller (SHC) nodes for Node-Red
Stars: ✭ 15 (-74.58%)
Mutual labels:  home, smart-home, smart
python-logi-circle
Python 3.6+ API for Logi Circle cameras
Stars: ✭ 23 (-61.02%)
Mutual labels:  home-automation, asyncio
tinkerhub
Build, connect to, interact and tinker with things on your local network
Stars: ✭ 22 (-62.71%)
Mutual labels:  home-automation, smart-home
hifiberry
This is a custom component to allow control of HifiberryOS devices in Home Assistant using the audiocontrol2 REST API.
Stars: ✭ 26 (-55.93%)
Mutual labels:  home-automation, internet-of-things
Home Assistant Hisense TV
Integration of smart TVs from Hisense on Home Assistant Core
Stars: ✭ 30 (-49.15%)
Mutual labels:  home, smart
home-assistant-config
🏠 Home Assistant Configuration & Documentation for my smart home using Node-RED for automations. Press ⭐ for notification of updates.
Stars: ✭ 34 (-42.37%)
Mutual labels:  home-automation, smart-home
Devices
All the Candle Arduino code
Stars: ✭ 18 (-69.49%)
Mutual labels:  home, smart
CometVisu
Repository for the CometVisu building automation visualisation.
Stars: ✭ 60 (+1.69%)
Mutual labels:  smart-home, knx
ioBroker.knx
connect KNX via eibd
Stars: ✭ 46 (-22.03%)
Mutual labels:  home-automation, knx
zigbee
Database of Zigbee devices compatible with third party gateways: ZHA, deCONZ, Zigbee2MQTT, Tasmota, ZiGate, ioBroker,
Stars: ✭ 117 (+98.31%)
Mutual labels:  home-automation, smart-home
sky-remote
NodeJS module to send remote control commands to a Sky TV box
Stars: ✭ 53 (-10.17%)
Mutual labels:  home-automation, internet-of-things
homeassistant
Home Assistant Config
Stars: ✭ 50 (-15.25%)
Mutual labels:  home-automation, smart-home

Automate home

Build Status codecov Documentation Status

Yet another home automation (iot) project because a smart light is more than just on or off.

Overview

When talking about home automation there are at least two goals you could have in mind:

  1. let a user interact with the home devices through many interfaces locally or remotely
  2. let devices interact together and let the system change their state

I believe the other home automation projects fits perfectly the first goal, this project focuses on automation, the second one.

What's the difference between this project model and other home automation projects?

The main difference is the design of an Appliance where, with the name Appliance, I refer to entities like a light, a curtain, a sound player ecc.

One of the simplest Appliances I could imagine is a light with two physical states: on and off.

A light model could be designed like a deterministic state machine; all the other home automation projects I know do it like that.

Or it could be designed like a non deterministic state machine; which is how it is done by this project.

When using a deterministic state machine if you have a light with on/off physical states its model states will be just on/off. When using a non-deterministic state machine it is quite simple to have more model states for an on/off light, as an example, your light could be in an alarmed state and it could start blinking.

Behavior-driven development

I believe logics are the building bricks of a smart home system. Nevertheless, they are complex to build, debug and share and one of this project goals is to make it easier.

Having an Appliance grouping together all its logics simplifies debug and reuse.

All Appliances inner states can be tested with BDD style tests like this.

BDD style tests make it quite easy to understand the behaviour of every Appliance in every possible state and thus make it shareable.

I like to think of this project as a way to share behavioural models for our smart devices more easily.

What this project is

A proof of concept.

This project allows me to create and test, through python, automation rules (logics) which can be more complex and more expressive.

I made a draft (I am not a front-end developer) for a really simple web interface. I can interact with the automation rules (logics) through the web interface. Looking at the web interface I can always answer the most obvious questions: why the light is turning on/off, why the curtain is being closed/opened...

I was tired of explaining why some magic was happening in my home. I think I have built a system able to answer these questions by itself.

I integrated really few protocols, the ones I am using the most at my home: KNX, Lifx and Sonos.

For all the other protocol integrations I needed I have used Home Assistant.

Documentation

For a deep dive into this project see the documentation.

For a minute guide to this project see the landing page.

For suggestions, questions or anything else, please, write here: discussions.

Contributing

Pull requests are welcome!

License

The automate-home project is licensed under GPL3.

Example projects

The following are some example projects.

These links point to a statical html example of the final GUI you will obtain using the configuration files, and to a github project with all the configuration files:

Ideally, you should be able to use the configuration files in the examples by changing:

  • the configuration.ini file, adjusting the paths and the ip addresses;
  • the files in the performer directory, modifying the devices addresses (if you have devices speaking the same protocol);
  • you can also change automation details in the scheduler_triggers directory

Maybe, this page can help me clarify what I mean: landing page.

When, the project configuration files fits your needs, you can use them in different ways.

Installation

Docker image

You can use the following docker image

docker pull majamassarini/automate-home:latest

Yocto build

You can build your personal Linux image with the automate-home framework for your favorite hardware using this yocto distro meta layer.

Pip install

You can just pip install it, but you will not obtain nor the KNX USBHID daemon or the graphite server.

pip install automate-ws

python -m home --configuration-file configuration.ini
python -m ws --configuration-file configuration.ini
python -m graphite_feeder --configuration-file configuration.ini

GUI Example

Latest events

https://github.com/majamassarini/automate-home/blob/main/docs/images/last_events.png

Devices collections

https://github.com/majamassarini/automate-home/blob/main/docs/images/devices_collections.png

Lights

https://github.com/majamassarini/automate-home/blob/main/docs/images/lights_collection.png

State of a light

https://github.com/majamassarini/automate-home/blob/main/docs/images/light_state.png

Events history for a light

https://github.com/majamassarini/automate-home/blob/main/docs/images/light_history.png

Events graphs for a light

https://github.com/majamassarini/automate-home/blob/main/docs/images/light_graphs.png

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].