2017 © Pedro Peláez
 

project homify

Modular home automation system

image

markushaug/homify

Modular home automation system

  • Monday, March 19, 2018
  • by markushaug
  • Repository
  • 5 Watchers
  • 12 Stars
  • 21 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 1 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

Homify 🏡

Open-source home-automation / smarthome platform running on PHP (Laravel).

, (*1)

Dashboard, (*2)

Table of content

ABOUT HOMIFY

Homify is built using a modular approach so support for other devices or actions can be implemented easily. See also the section on creating your own plug-in below in this READ.me., (*3)

KEY FEATURES

  • Manage your IoT-devices simply over the GUI
    • Instantly see if your device is online or not
  • Automate your home with rules
  • Install Plug-ins
    • Homify is built using a modular approach so support for other devices or actions can be implemented easily.
  • Central Room Management
  • Tablet View for your rooms

SETUP

To install and run this application, you'll need Composer and PHP7 installed on your computer., (*4)

Composer

# Download & install Homify with its dependencies
$ composer create-project markushaug/homify
$ composer update

Database

Setup your database & mail settings in the .env file and then run:, (*5)

# Creating tables and inserting their default values to them
$ php artisan migrate
$ php artisan db:seed

Webserver

  • Set the webroot of your webserver to the public folder
  • Grant permissions to the homify folder.
    • If the application runs into an issue, try this command inside of the homify directory: chmod -R 777 storage.

Note for Raspberry Pi users

I highly recommend to use nginx or lighttp. Apache2 is using too much CPU and RAM on the Raspberry PI., (*6)

RULES

Homify supports rules to automate your home. You can create a rule via Homifys web interface., (*7)

Features

  • Define multiple rules for one thing.
    Each rule expands the entire rule base of the respective item with a logical OR.
    IF <RULE1> === TRUE || <RULE2> === TRUE || ...
  • The ThingController calls the RuleParser every time an event is triggered and scans for defined rules in the rule base.
  • Time-controlled events are constructed as a cron job that triggers the execution block. ( Not yet implemented )

Structure

Each Rule has the following structure:, (*8)

{
    "rule": "rule name (unique)",
    "if": {
        /*<TRIGGER CONDITION>*/
    },
    "then": {
        /*
        <EXECUTION_BLOCK1>
        */
    }
}

Example

Below is an example of a rule with a time-controlled event wich triggers a channel of the defined thing., (*9)

{
    "rule": "goodEvening",
    "if": {
        "time": "20:00:00"
    },
    "then": {
        "thing": {
            "name": "Play1",
            "channel": "off"
        }
    }
}

HTTP-API

Homify provides a http-api to acces your things. You can use the following HTTP-GET Request to access your things:, (*10)

  • https://<server_ip>/thing/<thing_name>/<channel>

For example: - https://10.10.3.1/thing/Sonos:Play1/on, (*11)

COMING SOON

  • WebGUI for central room management & device management
  • Tablet View for single rooms
  • HAP-Protocol (HomeKit) integration
  • Cron-Jobs for Time-triggered rules

PLUG-IN DEVELOPMENT

Each Plug-in inherits from a Thing-Type (Light, Switch, Speaker, etc.). Each Thing-Type inherits from the abstract thing class. So each thing has the required functions., (*12)

If you are creating a plug-in for homify, you have to inherit from a Thing-Type. Or you create an additional thing-type. Each Thing needs a <Thing>.php, Create<Thing>.php and a Update<Thing>.php File. You can take on of the existing Plug-ins as template., (*13)

ThingClass, (*14)

FAQ / CONTACT / TROUBLESHOOT

If you run into issues while using Homify or during development of a component, please use one of the following options:, (*15)

  • Use github's issue reporter on the right, so that other people can search these issues too
  • Send me an email mh@haugmarkus.de (might take a few days)

CONTRIBUTING

I would appreciate it if you would contribute to this project. Do not hesitate to contact me if you are interested. I can give you an introduction to the core and the main concepts of the program. (Intermediate) Laravel skills are desirable., (*16)

For further information please read our contributing guidelines, (*17)


Homepage haugmarkus.de  ·  GitHub @markushaug  ·  Twitter @markushaug, (*18)

The Versions

02/02 2018

1.0

1.0.0.0

Modular home automation system

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel php alexa modular smarthome homify homebridge homekit alexa-support