Progetto home Automation: Data persistence su OpenHAB con Raspberry Pi

Dopo aver installato OpenHAB, bisogna configurarlo per collegarsi a MySQL ed avere i dati memorizzati tutti in un database.
Forse questa per gli utilizzi iniziali non è una feature indispensabile ma per gli sviluppi futuri potrebbe riverlarsi necessaria… quindi cominciamo!

Installazione

# pacman -Syu mariadb
# mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
# systemctl enable mariadb
# systemctl start mariadb
# mysql_secure_installation

Ora dobbiamo creare il nuovo database, per farlo entriamo nella console mysql:
# mysql --user=root --password=ciccio
e da qui creiamo il nostro database e il relativo utente:
> CREATE SCHEMA openhab;
> CREATE USER openhab@localhost IDENTIFIED BY 'password';
> GRANT ALL PRIVILEGES ON openhab.* TO openhab@localhost;

Adesso che abbiamo configurato mysql dobbiamo configurare openhab per usarlo: andiamo su http://openhab_ip:8080/paperui/index.html#/inbox/search,
ora andiamo su addons->Persistence(in alto) e installiamo Persistence MariaDB, come nella foto in basso.

Ora andiamo su Configuration->Services->JDBC Persistence->Configure->Expert Mode->Add parameter e aggiungiamo i parametri come nell’immagine

Nota: su name va l’account del database, mentre su url va ‘ip_mysql/nome_db’

Adesso bisogna dire ad OpenHAB quanto spesso salvare i dati:
dal raspberry:

nano /srv/http/openhab2/conf/persistence/jdbc.persist

e aggiungiamo (configurazione iniziale da aggiustare in base ai propri utilizzi

// persistence strategies have a name and a definition and are referred to in the "Items" section
Strategies {
// if no strategy is specified for an item entry below,
// the default list will be used
everyMinute : "0 * * * * ?"
every5Minutes : "0 */5 * * * ?"
everyHour : "0 0 * * * ?"
everyDay : "0 0 0 * * ?"
default = everyChange
}
/*
* Each line in this section defines for which item(s) which strategy(ies) should be applied.
* You can list single items, use "*" for all items or "groupitem*" for all members of a group
* item (excl. the group item itself).
*/
Items {
// persist all items once a day and on every change and restore them from the db at startup
* : strategy = everyChange, everyDay, restoreOnStartup
// additionally, persist all temperature and weather values every hour
// gTemperatur* : strategy = every5Minutes, restoreOnStartup

Nota: la prima parte sono delle variabili che utiizziamo in seguito, mentre la seconda parte dice che valori e con che frequenza salvarli; poi ognuno potrà aggiustarli secondo le sue necessità 😉

Per questa parte è tutto, riavviate e il sistema sarà pronto a salvare i dati sul database!

Pubblicato in Arch Linux, Home automation, raspberry pi | Contrassegnato , , , , , , , , , , , , , , , , , | Lascia un commento

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)

Prepariamo il sistema

# pacman -Syu yajl pkg-config fakeroot
$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/yaourt.tar.gz
$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz
$ tar xvzf yaourt.tar.gz
$ tar xvzf package-query.tar.gz
$ cd package-query
$ makepkg
# pacman -U package-query-1.8-2-armv7h.pkg.tar.xz
$ cd ../yaourt
$ makepkg
# pacman -U yaourt-1.8.1-1-any.pkg.tar.xz
$ yaourt gcc46

Installiamo OpenHAB


$ yaourt openhab

Siccome la versione di OpenHAB su AUR è segnata come Out of Date (e non si riesce a installare senza modificare il PKGBUILD), ho deciso di procedere alla compilazione manuale:


# 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.0.0%2Fopenhab-2.0.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

# 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 automatico

# 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.0.0%2Fopenhab-2.0.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

Pubblicato in Arch Linux, Home automation, raspberry pi | Contrassegnato , , , , , , , , , , , , , , , , , | Lascia un commento

Adotta un’app: Siftr Magic Cleaner

Ho deciso di iniziare una nuova rubrica dove metterò tutte quelle app poco conosciute (o che io non avevo mai sentito nominare) che ritengo veramente utili, oppure che addirittura mi hanno aperto un mondo e di cui non posso più fare a meno; la rubrica sarà: Adotta un’app.

Come prima app voglio parlarvi di Siftr Magic Cleaner.
Questa app l’ho scoperta grazie a ChimeraRevo, in un loro articolo come sempre completo e ben fatto, dove descrivono l’app nel dettaglio.

Quante volte vi capita di avere la memoria del telefono piena? Ormai coi moderni telefonini con memorie da 64/128 Gb non è così frequente, ma può sempre capitare e quando andiamo a vedere cosa occupa più spazio ci accorgiamo che sono quelle maledette immagini di Whatsapp che neanche volevamo e che ci inviano continuamente sui nostri mille gruppi.
Per sopperire a questo bisogno arriva l’app di oggi: Siftr Magic Cleaner.
Questa app si propone come un cleaner di immagini… intelligente!
Infatti una volta avviata ricerca tra le nostre immagini di Whatsapp (ma anche la galleria o telegram) e seleziona le “immagini spazzatura”, suddividendole per categoria; sta poi a noi decidere se eliminarle tutte, solo alcune categorie, solo alcune foto ecc..

Beh che altro dire? Il miglior modo per farsi un’idea su qualcosa è provarla, quindi… provatela! 😉

Pubblicato in Adotta un'app, Android | Contrassegnato , , , , , , , , , | Lascia un commento

Mini tips & trick: vedere i 10 programmi che più utilizzano la cpu

Mi è capitato di vedere dei consumi anomali della cpu, e non capire chi fosse a causarli;
“top” non mi è stato molto di aiuto, quindi googlando un po’ ho trovato un comando che faceva al caso mio:
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10

Questo comando mi ha dato come output
85.7 1154 luca /usr/lib/gvfs/gvfsd-trash --spawner :1.45 /org/gtk/gvfs/exec_spaw/0
76.3 820 luca cairo-dock
3.5 1452 luca /opt/google/chrome/chrome
2.1 482 root /usr/lib/xorg-server/Xorg -nolisten tcp -auth /var/run/sddm/{135be871-6584-4681-acea-c4a357094eea} -background none -noreset -displayfd 18 vt1
1.9 651 luca kwin_x11 -session 10ed130134d1000148594648900000006290006_1486417682_116333
1.5 723 luca /home/luca/.dropbox-dist/dropbox-lnx.x86_64-19.4.12/dropbox -session 10ed130134d1000148641221700000006300008_1486417682_98872 -name
1.3 657 luca /usr/bin/plasmashell --shut-up
1.3 1537 luca /opt/google/chrome/chrome --type=gpu-process

facendomi intuire che il problema fosse legato a Cairo-dock, infatti killandolo la cpu si è tranquillizzata (vedrò di capire il motivo di questo utilizzo anonimo a breve).

Pubblicato in Arch Linux, Debian, linux, Sistemi Operativi, Tips & Tricks | Contrassegnato , , , , , , , , , | Lascia un commento

Progetto home Automation: Leggiamo i consumi della nostra casa col Raspberry Pi e un contatore SDM120

Purtroppo l’università ed altri progetti hanno assorbito tutto il mio tempo libero costringendomi a dar priorità ad altre cose, ma negli ultimi giorni ho avuto un po’ di tempo e ho deciso di installare un lettore di consumi da collegare al Raspberry con 123solar.

Il contatore è un EASTRON Sdm120, acquistato da Ebay, preferibile rispetto a un misuratore a impulsi poichè dotato di uscita RS485, per cui consiglio anche l’acquisto di un adattatore da RS485 a USB;

Per il collegamento hardware farlo vi rimando a quest’ottima guida, nella quale è trattata in modo molto completo l’installazione del contatore e che qui non tratterò.

Voglio invece riassumere i passaggi per rendere il contatore funzionante e disponibile sul web. Ho deciso di utilizzare Metern solo perchè non ho pratica ancora con Domoticz, ma l’idea sarà un domani di fare tutto con lui.

Installiamo e configuriamo Metern

Scarichiamo e scompattiamo tutto il necessario

# cd /srv/http/
# wget http://123solar.org/downloads/metern/import123solar.tar.gz
# wget http://123solar.org/downloads/metern/metern.service
# wget http://123solar.org/downloads/metern/metern0.8.3.2.tar.gz
# wget http://123solar.org/downloads/metern/comapps/comapps_examples20170121.tar.gz
# tar xvzf metern0.8.3.2.tar.gz
# tar xvzf comapps_examples20170121.tar.gz
# mkdir /comapps
# mv comapps_examples/* comapps
# mv metern.service /etc/systemd/system


# cd /srv/http/metern/comapps
# wget http://www.flanesi.it/blog/download/eflowlive_rev_3.1.zip
# unzip eflowlive_rev_3.1.zip
# chmod a+x *
# ln -s /srv/http/comapps/eflow.php /usr/bin/eflow
# ln -s /srv/http/comapps/eflowlive.php /usr/bin/eflowlive
# ln -s /srv/http/comapps/pool123s.php /usr/bin/pool123s
# ln -s /srv/http/comapps/poolerconsumi.php /usr/bin/poolerconsumi
# ln -s /srv/http/comapps/pooler485.sh /usr/local/bin/pooler485
# ln -s /srv/http/comapps/reqsdm.php /usr/bin/reqsdm

Ora possiamo avviare metern con

# systemctl enable metern
# systemctl start metern

Configuriamo il contatore


$ cd ~
$ yaourt -Syua autoconf automake
$ yaourt -S libmodbus-dev
$ git clone https://github.com/gianfrdp/SDM120C
$ cd SDM120C/
$ make clean && make
# cp sdm120c /usr/local/bin/

Dopo aver riavviato il raspberry, dobbiamo configurare il contatore per lavorare con metern.
Per questo vi rimando alla guida precedente, la quale è fatta molto bene, con tanto di immagini e non vedo il motivo di ripetere tutto qui. Quindi i capitoli 6-7 sono quelli che vi servono per finire di configurare adeguatamente il sistema, il capitolo 8 ha delle modifiche da fare (vedi dopo).

Adattamenti rispetto alla guida

Per ora sono riuscito a farlo funzionare solo con due indicatori (produzione e consumo).

  • Quando cerco di cambiare l’indirizzo e la velocità del contatore mi dava l’errore
    sdm120c(567) error: (110) Connection timed out, -1, 0
    però nonostante questo il valori del contatore venivano comunque modificati.
  • Ho dovuto abilitare l’autenticazione HTTP su nginx, quindi nel file “/etc/nginx.conf” sotto
    location /123solar/admin {
    index index.php;
    auth_basic "Restricted";
    auth_basic_user_file /srv/http/123solar/config/.htpasswd;
    }

    aggiungiamo
    location /metern/admin {
    index index.php;
    auth_basic "Restricted";
    auth_basic_user_file /srv/http/metern/config/.htpasswd;
    }

    e per non avere due .htpasswd ho modificato anche su 123solar auth_basic_user_file mettendo lo stesso percorso di MeterN;
    ora riavviamo il server

    # systemctl restart nginx
  • Ho dovuto cambiare l’usb dell’inverter da ttyUSB0 a ttyUSB1 sull’admin page di 123Solar.
  • Nel file /etc/php/php.ini ho decommentato extension=shmop.so
    extension=sysvsem.so
    extension=sysvshm.so
  • Modificare il file /srv/http/metern/config/config_daemon.php col seguente contenuto
    /dev/null 2>/dev/null &');
    } else { //Stop
    $output = shell_exec('pkill -f pooler485 > /dev/null 2>&1 &');
    }
    ?>
  • Gli indicatori di tensione, corrente, ecc.. (capitolo 8 nella guida) come comando devono avere “reqsdm tensione”, “reqsdm corrente”, ecc..
  • Ho dovuto rimpiazzare i file nella cartella /srv/http/comapps/ con quelli presenti in questo archivio (in realtà l’archivio contiene i miei file, ma voi dovrete rimpiazzare quelli scaricati in precedenza con questi).

Per ora devo dire che funziona tutto, spero sia lo stesso per voi!

Appena avrò tempo la mia idea è di portare tutto su domoticz (o un software simile) e fare tutto da lui… ma vedremo cosa riuscirò a fare! Aiuti, commenti o domande sono sempre benvenuti 😉

Pubblicato in Arch Linux, Home automation, raspberry pi | Contrassegnato , , , , , , , , , , , , , , , , , , , | Lascia un commento

MyLittleJob: trovare dei lavoretti poco impegnativi durante il periodo universitario

Il mondo universitario è una forte contraddizione: da una parte abbiamo mille opportunità, mille attività ricreative, mille occasioni per uscire con gli amici, mille festini (perchè diciamocelo, sono una delle parti migliori!) e chi più ne ha più ne metta; dall’altra non abbiamo i soldi per realizzarne neanche la metà.
Siamo costretti a economizzare praticamente su qualsiasi cosa per non dover rifiutare un invito ad aperitivo o a quella pizza super invitante che ti colpisce col suo odorino appena esci dalla facoltà (ovviamente escludendo i casi più fortunati).
Non sarebbe bello trovare un posto dove il vostro tempo libero possa essere impiegato per dei lavori, ma senza l’impegno di un lavoro fisso, che magari potrebbe ostacolare il vostro studio in piena sessione?! Oppure semplicemente obbligarvi a scegliere tra il lavoro e il vostro sport preferito?!
Beh è arrivato da relativamente poco in Italia MyLittleJob, un servizio rivolto a studenti universitari qualificati (avrete bisogno della mail universitaria per accedervi) che ha riscosso un bel successo all’estero.
Per prima cosa dovrete registrarvi su questa pagina, così da poter accedere a dei piccoli lavoretti messi a disposizione dalle aziende che lo necessitano.
Mi spiego meglio: ogni azienda che si registra (sì, è un servizio rivolto anche alle aziende) può proporre dei lavori di cui ha bisogno, come per esempio traduzione di documenti, il test di un prodotto, la revisione di un articolo, e chi più ne ha più ne metta.
Il lavoro ha una scadenza, una paga e in linea di massima non dovrebbe rubarvi più di un paio d’ore; siamo noi a poter scegliere, tra una lista di prodotti disponibili, quello che si avvicina di più alle nostre capacità, accettarlo e, se effettueremo un buon lavoro, essere ricompensati.
Che dire? È una buona opportunità per guadagnare due soldini senza ostacolare troppo i nostri studi e poterci gustare i nostri meritati Spritz 😉

Pubblicato in Uncategorized | Contrassegnato , , , , , , , , , | Lascia un commento

Progetto home Automation: installiamo Domoticz su Raspberry Pi

Dopo aver installato 123solar per monitorare la produzione dei pannelli solari ho deciso di installare Domoticz anche per l’uso che in futuro voglio fare di tutto il sistema.
In questa parte del progetto voglio monitorare i consumi, per questo ho acquistato da Ebay il misuratore EASTRON Sdm120 da qui, preferibile rispetto a un misuratore a impulsi poichè dotato di uscita RS485, per cui consiglio anche l’acquisto di un adattatore da RS485 a USB; tuttavia devo ancora capire bene a che punto della linea installarlo e dove metterlo fisicamente sul quadro, quindi sarà oggetto di un’altra guida.
EDIT: gli intenti sono sempre gli stessi ma ho deciso di utilizzare OpenHAB al posto di Domoticz.
Intanto vediamo come installare e far funzionare Domoticz.

Cos’è Domoticz?

Domoticz è un Home Automation System 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.

Installazione

Per chi non sta seguendo a pieno la mia guida o non ha Arch installato, si consiglia di utilizzare la immagine della SD fornita da Domoticz (basata su Raspbian), che basterà scrivere sulla Sd e avviare (le istruzioni complete qui).
Noi che abbiamo già Arch installato e configurato, vogliamo compilare Domoticz: (supponiamo di essere già acceduti al Raspberry)

Prepariamo il sistema

# pacman -Syu yajl pkg-config fakeroot
$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/yaourt.tar.gz
$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz
$ tar xvzf yaourt.tar.gz
$ tar xvzf package-query.tar.gz
$ cd package-query
$ makepkg
# pacman -U package-query-1.8-2-armv7h.pkg.tar.xz
$ cd ../yaourt
$ makepkg
# pacman -U yaourt-1.8.1-1-any.pkg.tar.xz
$ yaourt gcc46

Siccome ho avuto problemi in compilazione ho dovuto collegare una chiavetta USB e settare una swap.
Una volta collegata la chiavetta basta digitare:

# mkswap /dev/sdx
# swapon /dev/sdx

Successivamente si potrà utilizzare la chiavetta per memorizzare tutti i log, ma sarà un lavoro che farò in seguito.

Installiamo Domoticz


$ yaourt domoticz-git

A me a metà compilazione ha riempito la cartella /tmp quindi ho dovuto compilarlo manualmente:

$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/domoticz-git.tar.gz
$ tar xvzf domoticz-git.tar.gz
$ cd domoticz-git
$ makepkg
# pacman -U domoticz-git-r5702-1-armv7h.pkg.tar.xz

Abilitiamo Domoticz al boot (necessario per l’aggiornamento Web)

# systemctl enable domoticz.service
# systemctl start domoticz.service

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.

Pubblicato in Arch Linux, Home automation, raspberry pi | Contrassegnato , , , , , , , , , , , , , , , | Lascia un commento