All Projects → stufisher → homie-control

stufisher / homie-control

Licence: other
A high level application for the Homie-esp8266 IoT framework

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects
python
139335 projects - #7 most used programming language
PHP
23972 projects - #3 most used programming language
SCSS
7915 projects
HTML
75241 projects
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to homie-control

sonoff-homie
Homie based software for Sonoff module
Stars: ✭ 25 (-37.5%)
Mutual labels:  homie
homie-device
NodeJS port of Homie for IoT
Stars: ✭ 20 (-50%)
Mutual labels:  homie
SenseoWifi
Wifi'ify the Senseo coffee maker. Circuit and firmware for an internal Senseo hack to monitor and control the daily coffee brew (via MQTT) ☕️📶
Stars: ✭ 73 (+82.5%)
Mutual labels:  homie
SuperLEDstrip
No description or website provided.
Stars: ✭ 13 (-67.5%)
Mutual labels:  homie
mqtt-433mhz-gateway-homie
433Mhz <-> MQTT gateway for smart home 🏡 automation
Stars: ✭ 37 (-7.5%)
Mutual labels:  homie
ComfoAirQ-Homie
Homie4 for Zehnder ComfoAirQ
Stars: ✭ 14 (-65%)
Mutual labels:  homie
mijia-homie
A Homie MQTT bridge for the Xiaomi Mijia 2 hygrometer-thermometer. This repo also serves as the monorepo for a handful of helper crates related to Homie and Bluetooth.
Stars: ✭ 40 (+0%)
Mutual labels:  homie
microhomie
MicroPython implementation of the Homie MQTT convention for IoT.
Stars: ✭ 72 (+80%)
Mutual labels:  homie
mqtt-rflink-bridge
Homie based bridge between MQTT and RFlink module
Stars: ✭ 21 (-47.5%)
Mutual labels:  homie

homie-control

A high level mobile ready web application for the Homie-esp8266 IoT framework

GitHub Logo

Introduction

homie-control provides a web UI to manage Homie devices as well as a series of virtual python devices to allow extended functionality.

Its lets you do useful things like:

  • Historically log device properties
  • Schedule changes in event properties (i.e. water your garden once a day)
  • Execute profiles of property values (i.e. turn a series of lights on and off simultaneously)
  • Trigger property changes based on:
    • When a network device is dis/connected (i.e. your phone joins your wifi, turn the lights on)
    • Sunset / rise
    • When another property changes
  • OTA updates (planned not yet implemented)

Requirements

  • A php / mysql stack running on whatever webserver you like
  • An mqtt broker (i use mosquitto)

##Installation The application consists of three components:

  • A PHP REST API
  • A Marionette js client
  • A series of homie-python devices

API

  1. Install mysql database schema from db/logging.sql
  2. Install php dependencies using composer php composer.phar install
  3. Copy api/src/settings-sample.php -> settings.php and update usernames / passwords

JS Client

  1. Install dependencies using bower bower install
  2. Copy js/config-sample.json to config.json and edit mqtt passwords

Python devices

In order to allow scheduling, profile execution, logging, etc, a series of homie-python devices are provided. These need to be running all the time for this functionality. To run a device:

  1. Copy devices/configs/config-sample.json to .json (i.e. heating.json for heating.py)
  2. Configure mqtt details within config file
  3. Run with python heating.py

logger.py

This device will log any properties that are registered in the database.

schedule.py

This device periodically checks if a property is scheduled in the database and updates as need be

profile.py

This device executes a 'profile' of properties

device.py

This device checks the network for devices connecting and disconnected and triggers property changes as needed. It also monitors the time and sends triggers for sunet and sunrise

heating.py

This device enables a switch to be toggled based on a temperature property reading and a schedule.

repeater.py

A generic device that will subscribe to a property on one device and pass it to another, properties can be configured via the UI > Repeater page. Can also be used to send statics (group name, sub group name) to a device property

manage.py

Is a special device that wraps the other devices into a single process

More docs to follow...

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].