markushaug / homify
Modular home automation system
Installs: 146
Dependents: 0
Suggesters: 0
Security: 0
Stars: 46
Watchers: 8
Forks: 13
Open Issues: 0
Type:project
pkg:composer/markushaug/homify
Requires
- php: >=7.0.0
 - atnic/laravel-light-bootstrap-dashboard: ^0.2.1
 - fideloper/proxy: ~3.3
 - laravel/framework: 5.5.*
 - laravel/tinker: ~1.0
 - markushaug/homify-module-installer: 1.0
 - nwidart/laravel-modules: ^2.6
 - sqmk/phue: ^1.7
 
Requires (Dev)
- filp/whoops: ~2.0
 - fzaninotto/faker: ~1.4
 - mockery/mockery: 0.9.*
 - phpunit/phpunit: ~6.0
 - reliese/laravel: ^0.0.13
 
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).
Table of content
- About Homify
 - Key Features
 - Featured Plug-ins
 - Setup
 - Rules
 - HTTP-API
 - Coming Soon
 - Plug-in Development
 - FAQ / CONTACT / TROUBLESHOOT
 - Contributing
 
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 
publicfolder - 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. 
 - If the application runs into an issue, try this command inside of the homify directory: 
 
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 
ThingControllercalls 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.
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