genielabs / HomeGenie

HomeGenie, the programmable automation intelligence
https://homegenie.it
GNU General Public License v3.0
401 stars 157 forks source link
automation building-automation embedded esp32 esp8266 gpio homegenie knx machine-learning philips-hue raspberry-pi raspberrypi server smart-home x10 z-wave zigbee zwave

example workflow

HomeGenie

https://homegenie.it

The programmable automation intelligence

HomeGenie Dashboard

Documentation

https://genielabs.github.io/HomeGenie

Install instructions

Download the .zip archive corresponding to the hosting operating system:

Windows

Mac

Linux

Raspbian 32bit

Raspbian 64bit

https://github.com/genielabs/HomeGenie/releases

Unzip the archive file. A new homegenie folder will be created.

Running in a terminal

Set the current directory to homegenie and run the ./HomeGenie command:

cd homegenie
./HomeGenie

To stop the application press CTRL + C

Running as a system service

HomeGenie can be installed as a service. The procedure is different depending on the hosting operating system.

Recommended procedure for Linux

1) Add a specific user for the service and copy the content of homegenie folder to the new user home directory:

sudo useradd homegenie
sudo cp -ar ./path-to-extracted-folder/homegenie /home/homegenie
sudo chown -R homegenie:homegenie /home/homegenie

2) Create the file /etc/systemd/system/homegenie.service with the following content:

[Unit]
Description=HomeGenie

[Service]
Type=notify
User=homegenie
WorkingDirectory=/home/homegenie/
ExecStart=/home/homegenie/HomeGenie
Restart=on-failure

[Install]
WantedBy=multi-user.target

3) Refresh SystemD configuration

sudo systemctl daemon-reload

4) Start the service and enable HomeGenie to auto-start on next system boot:

sudo systemctl start homegenie.service
sudo systemctl enable homegenie.service

Other possible commands are status, stop and disable.

See also:

Accessing the UI

HomeGenie user interface can be accessed from any web browser entering the url

     http://<server_ip>:<port>/

Where server_ip is the IP address of the machine where HomeGenie is running and port can be 80 or the first available port starting from 8080. (ex. http://192.168.1.150:8080/)

To find out which port number the service is running on, enter the following command from the homegenie folder:

cat serviceaddress.txt

The port settings can be changed either from the maintenance page or editing the systemconfig.xml file located in the application folder. The service must be stopped when editing the configuration file manually.

Optional post-installation steps

Depending on the hosting operating system, it might be required to run additional steps in order to allow the service to access the Serial port, USB devices and GPIO hardware.

Enabling audio playback and voice synthesis:

# Audio playback utilities
sudo apt-get install alsa-utils lame
# Embedded speech synthesis engine
sudo apt-get install libttspico-utils

Granting access to the Serial port and/or GPIO to the homegenie user:

sudo gpasswd -a homegenie dialout
sudo gpasswd -a homegenie gpio

Enabling CM15/CM19 USB controller for X10 home automation:

sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev

then, to grant access to CM15/CM19 USB devices to the homegenie user, create a new text file with the name /etc/udev/rules.d/98-cm15_cm19.rules and add the following lines to it:

# CM15 AND CM19 X10 controllers
ATTRS{idVendor}=="0bc7", ATTRS{idProduct}=="0001", MODE="0660", GROUP="homegenie"
ATTRS{idVendor}=="0bc7", ATTRS{idProduct}=="0002", MODE="0660", GROUP="homegenie"

save the file and unplug and plug the device again.

Development

Contributing

Read the CONTRIBUTING.md file for information about contributing to this repository.

Repository structure

The main solution file is HomeGenie.sln that is located in the repository root.

Integrated Development Environment

JetBrains Rider is the official IDE employed for developing this project.

JetBrains Logo JetBrains Rider Logo

Related projects


Disclaimer

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.