Progetto home Automation: installiamo OpenHab su Raspberry Pi


Dopo aver provato per un po’ di tempo a configurare Domoticz, non riuscendo ad ottenere dei risultati soddisfacenti, ho deciso, spinto anche da questo progetto, di provare a installare OpenHAB sperando che fosse più adatto alle mie esigenze… staremo a vedere!
Assieme a questo l’idea sarebbe di riscrivere anche il monitoraggio dei consumi e dei pannelli da zero senza appoggiarmi a 123Solar e Metern (due ottimi software, che consiglio senz’altro, ma si sa… le cose fatte da sè sono uniche, se si ha le competenze per farle!).

Cos’è OpenHAB?

OpenHAB è un Home Automation System (come Domoticz) che permette di configurare e monitorare vari device come: luci, switch, sensori di temperatura, umidità e molto altro; inoltre permette di inviare notifiche a qualsiasi device mobile (smartphone, tablet, ecc…).
Ci permette quindi di controllare pressochè qualsiasi cosa, e come vogliamo (ovviamente a patto di configurarlo correttamente! 😉 ).

Installazione

Per chi non sta seguendo a pieno la mia guida o non ha Arch installato, si consiglia di utilizzare la immagine di Raspbian e seguire la guida di OpenHAB.
Noi che abbiamo già Arch installato e configurato, vogliamo compilare OpenHAB: (supponiamo di essere già acceduti al Raspberry)

Installiamo il web server

Se avete installato metern e 123solar avrete già configurato nginx.
Io avendo dovuto reinstallare tutto ho deciso di provare a usare tutto su OpenHAB, quindi procediamo
# pacman -S nginx
# systemctl enable nginx
# mkdir /etc/nginx/sites-avaiable
# mkdir /etc/nginx/sites-enabled
# nano /etc/nginx.conf

e aggiungiamo

# Test the syntax with nginx -t
user http;
worker_processes 1; # per CPU
#worker_priority 5; #~25% system resources at nice=15

events {
worker_connections 32; # number of parallel per worker_processes
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
aio threads;
server_tokens off; # Security: Disables nginx version in error messages and in the ^`^|Server ^`^} response header field.
charset utf-8; # Force usage of UTF-8
index index.php index.html index.htm;
include sites-enabled/*;
}

ora creiamo il file /etc/nginx/sites-avaiable/openhab
server {
listen 80;
server_name mydomain_or_myip;

location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

e avviamo il tutto con
# ln -s /etc/nginx/sites-avaiable/openhab /etc/nginx/sites-enabled/openhab
# systemctl start nginx

Installiamo OpenHAB

Il metodo veloce può essere installarlo via AUR, tuttavia posiziona i file in posizioni che non mi piacciono quindi preferisco installarlo manualmente; in ogni caso se volete installarlo via AUR qui sotto ci sono i comandi.

$ yaourt openhab2
# systemctl enable openhab2
# systemctl start openhab2

In caso contrario… proseguiamo!


# useradd -m -G wheel,tty -s /bin/bash openhab
# pacman -Syu java-runtime-common nspr nss jre8-openjdk-headless
$ cd /tmp
$ wget -O openhab-download.zip https://bintray.com/openhab/mvn/download_file?file_path=org%2Fopenhab%2Fdistro%2Fopenhab%2F2.1.0%2Fopenhab-2.1.0.zip
# unzip openhab-download.zip -d /srv/http/openhab2
# chown -hR openhab:openhab /srv/http/openhab2/
$ rm openhab-download.zip

Abilitiamo OpenHAB al boot e avviamolo

Description=The openHAB 2 Home Automation Bus Solution
Documentation=http://docs.openhab.org
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=openhab
Group=openhab
GuessMainPID=yes
WorkingDirectory=/srv/http/openhab2
#EnvironmentFile=/etc/default/openhab2
ExecStart=/srv/http/openhab2/start.sh server
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Prima di avviarlo modifichiamo il locale di Openhab aggiungendo al file /etc/default/openhab2 la riga:
EXTRA_JAVA_OPTS="-Duser.timezone=Europe/Rome"

e successivamente avviamo con:
# systemctl enable openhab2.service
# systemctl start openhab2.service

Ora si può accedere ad OpenHAB dalla porta 8080 (NOTA: il primo avvio ci mette abbastanza).

Facciamo un Backup della nostra SD

All’inizio della guida per installare Arch sul Raspberry ho messo due comandi per fare un Backup della propria SD.
È consigliato effettuarne uno adesso, poichè visto l’alto tasso di scritture (log, dati, ecc) potrebbe capitare che si bruci la scheda SD; per questo motivo in seguito è mia intenzione configurare un Backup automatico dei dati sul NAS di casa; sempre per lo stesso motivo consigliano di utilizzare solo schede SD di una buona qualità e di almeno classe 10.

Script per il backup e aggiornamento automatico (non testato)

# stop openhab instance (here: systemd service)
sudo systemctl stop openhab2.service

# backup current installation with settings
TIMESTAMP=`date +%Y%m%d_%H%M%S`;
sudo mv /opt/openhab2 /opt/openhab2-backup-$TIMESTAMP

# download new version (please replace URL)
cd /tmp
wget -O openhab-download.zip https://bintray.com/openhab/mvn/download_file?file_path=org%2Fopenhab%2Fdistro%2Fopenhab%2F2.1.0%2Fopenhab-2.1.0.zip
sudo unzip openhab-download.zip -d /srv/http/openhab2
rm openhab-download.zip

# restore configuration and userdata
sudo cp -arv /opt/openhab2-backup-$TIMESTAMP/conf /srv/http/openhab2/
sudo cp -arv /opt/openhab2-backup-$TIMESTAMP/userdata /srv/http/openhab2/

# fix permissions
sudo chown -hR openhab:openhab /srv/http/openhab2

# restart openhab instance
sudo systemctl start openhab2.service

Questa voce è stata pubblicata in Arch Linux, Home automation, raspberry pi e contrassegnata con , , , , , , , , , , , , , , , , , . Contrassegna il permalink.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...