Giter Site home page Giter Site logo

estevaofv / homie-control Goto Github PK

View Code? Open in Web Editor NEW

This project forked from stufisher/homie-control

0.0 2.0 0.0 1.38 MB

A high level application for the Homie-esp8266 IoT framework

PHP 17.04% Ruby 0.22% CSS 10.42% JavaScript 61.25% HTML 2.54% Python 8.53%

homie-control's Introduction

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

homie-control's People

Contributors

stufisher avatar

Watchers

James Cloos avatar Estevão Fonseca Veiga avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.