markushaug/homify

This package is abandoned and no longer maintained. No replacement package was suggested.

Modular home automation system

Installs: 144

Dependents: 0

Suggesters: 0

Security: 0

Stars: 46

Watchers: 8

Forks: 13

Open Issues: 0

Type:project

v0.2 2019-01-23 16:03 UTC

This package is not auto-updated.

Last update: 2022-11-12 18:45:19 UTC


README

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

68747470733a2f2f7472617669732d63692e6f72672f6d61726b7573686175672f686f6d6966792e7376673f6272616e63683d6d6173746572 68747470733a2f2f6170692e636f646163792e636f6d2f70726f6a6563742f62616467652f47726164652f6361663932316432376564393462363862383231373932626439353266623632 68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d372d677265656e2e7376673f7374796c653d666c6174 687474703a2f2f696d672e736869656c64732e696f2f62616467652f736f757263652d6d61726b7573686175672f686f6d6966792d677265656e2e7376673f7374796c653d666c6174 68747470733a2f2f706f7365722e707567782e6f72672f6d61726b7573686175672f686f6d6966792f646f776e6c6f616473 68747470733a2f2f706f7365722e707567782e6f72672f6d61726b7573686175672f686f6d6966792f762f737461626c65

Dashboard

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.

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

FEATURED PLUG-INS

SETUP

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

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:

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

RULES

Homify supports rules to automate your home. You can create a rule via Homifys web interface.

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:

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

{
	"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:

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

For example:

  • https://10.10.3.1/thing/Sonos:Play1/on

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.

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.

ThingClass

FAQ / CONTACT / TROUBLESHOOT

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

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

For further information please read our contributing guidelines

Homepage haugmarkus.de  ·  GitHub @markushaug  ·  Twitter @markushaug