markushaug / homify
Modular home automation system
Installs: 144
Dependents: 0
Suggesters: 0
Security: 0
Stars: 46
Watchers: 8
Forks: 13
Open Issues: 0
Type:project
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
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
.
- 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
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.
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