1. Abstract
Homegear is a free and open source program that you can use to interface your home automation devices or services that use your home automation software or scripts. It features the following interfaces for controlling your devices, all of which have SSL support:
XML-RPC
Binary-RPC
JSON-RPC
MQTT
WebSockets with PHP session authentication
HTTP (GET and POST)
REST
IPC Socket (Unix Domain Socket)
If needed, new interfaces can easily be added to the source code. Homegear also features:
A built-in, rich-featured web server with PHP 8 and IP cam proxy support. Together with WebSockets and the script engine, you can easily create web pages to bidirectionally interact with all devices known to Homegear.
The logic engine “Node-BLUE”:
Frontend based on Node-RED but with additional features:
Multiple inputs are supported
Debug features like settings inputs to fixed values and an input history
Backend written in C++:
Really, really fast
Multithread support so one node can’t block the whole logic
Full Node-RED node support
Nodes can be writtin in any programming language as long as Unix IPC sockets are supported. Currently implemented are:
C++
PHP
Python
JavaScript
A built-in script engine using PHP 8:
All devices and device functions are directly accessible.
All PHP modules can be used:
Thread support using the PHP module “pthreads”
Low level peripheral support:
You can directly access serial devices, I²C devices, and GPIOs.
You are immediately notified about new data and GPIO state changes. No polling is necessary.
Using threads, you can implement bidirectional and event-driven communication.
A base library that you can use to easily implement your own device families
XML device description files with PHP script support so you can easily implement individual devices
Support for customized licensing modules that support module online activation, license verification, and script encryption
Homegear is written to make integration of new devices as easy as possible and to make them accessible using all of the above interfaces.