Arch Linux su Dell Inspiron 7559: come risolvere Bumblebee che causa il crash di X

Dopo un aggiornamento (dovuto al kernel) Bumblebee ha iniziato a darmi problemi bloccandomi il server X all’avvio.
La soluzione l’ho trovata sul github del progetto, ed è davvero semplice:
editiamo il file /etc/default/grub ed aggiungiamo:
GRUB_CMDLINE_LINUX_DEFAULT='quiet acpi_osi="!Windows 2015"'
successivamente riconfiguriamo grub con
sudo grub-mkconfig -o /boot/grub/grub.cfg

Ora riavviate e godetevi il vostro computer di nuovo pienamente funzionante!

Nota: a quanto pare questa soluzione è valida anche per altri OS linux (ho dovuto installare Ubuntu 16.04 per l’università e ha risolto i problemi del server grafico anche lì)

Annunci
Pubblicato in Arch Linux | Contrassegnato , , , , , , , , , , , , , , , | Lascia un commento

Progetto home Automation: miglioriamo la persistence e i grafici su openhab con influxDB e Grafana

Dopo aver collegato il Raspberry ad Openhab con mqtt vediamo di migliorare il nostro monitor dei consumi; uno dei problemi di Rdd come persistence per i consumi e la produzione dei pannelli è che è un database a dimensione fissa.. e quindi?
Quindi per mantenere la dimensione fissa tende a comprimere i dati raggruppando quelli più vecchi (nella nostra configurazione facendo la media tra tot) e questo non è un bel comportamento per noi che magari un domani vorremmo vedere cosa hanno prodotto i nostri pannelli un anno fa.
Inoltre permette di fare i grafici solo salvando i dati almeno ogni minuto e a me interesserebbe di più avere l’istantaneo ogni 5/7 secondi e salvare sul database per il grafico la media ogni 5 minuti… Vediamo come fare!

Installazione pacchetti

Dobbiamo installare la persistence di InfluxDB da PanelUI su openhab e da AUR influxdb; purtroppo Grafana non è disponibile per aarch64 e dovremmo procedere alla compilazione da sorgenti per il nostro ODROID-C2, procediamo:
# pacman -S nodejs git go
$ mkdir /home/user/.go
$ export GOPATH=/home/user/.go
$ go get github.com/grafana/grafana
$ cd $GOPATH/src/github.com/grafana/grafana
$ go run build.go setup
$ go run build.go build
# pacman -S phantomjs
# npm install -g yarn
$ yarn install --pure-lockfile
# npm install -g grunt-cli
# chmod 777 /home/user/.go
$ grunt
# systemctl enable influxdb
# nano /usr/systemd/system/grafana-server

e aggiungiamo
Continua a leggere

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

Progetto home Automation: usiamo MQTT per ricevere dati su openhab e disegnarli su un grafico

Dopo tanto tempo son riuscito a prendermi un weekend libero da poter dedicare al questo progetto; l’obiettivo che mi ero prefissato era di creare una pagina con Openhab dove potevo vedere in tempo reale la produzione, i consumi e dei semplici storici (non sono granchè ma punto a migliorarli in seguito).
Avendo dovuto sostituire il Raspberry Pi 3 con un Pi Zero W, diciamo che ne hanno risentito un po’ le performance; a dire il vero pensavo sostenesse openhab, e infatti lo fa, solo che in modo parecchio lento e diventa quindi non troppo usabile.

In questo modo ho deciso di installare Openhab sull’Odroid C2 che ho come TV Box e NAS (tanto è un quad core, potenza ne ha) e far inviare i dati dal Pi Zero tramite MQTT; vediamo come fare!
Nota prima di iniziare: Io sul Pi zero avevo già installati i software necessari cioè aurora e sdm120c; se non li avete trovate come installarli sulle guide precedenti.
Continua a leggere

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

Progetto home Automation: aggiungere la data su OpenHAB

L’idea di questa guida flash è di creare una sitemap dove viene visualizzata la data odierna, come nell’immagine qui sotto.

Andiamo dunque sulla nostra installazione di Openhab ed editiamo i seguenti file come segue:

    • items/stuff.items

DateTime Date "Date [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]" { channel="ntp:ntp:local:dateTime" }

    • things/ntp.things

ntp:ntp:local [ hostname="nl.pool.ntp.org", refreshInterval=60, refreshNtp=30 ]

    • sitemaps/default.sitemap

sitemap default label="House Energy Monitor"
{
Frame label="Date"{
Text item=Date
}
}

Ora dovreste avere la data come nell’immagine, semplice no?

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

Installiamo Arch Linux su Raspberry Pi Zero W

Purtroppo il Raspberry Pi 3 che gestiva i pannelli solari e i consumi è morto (non vanno più nè wifi nè ethernet, quindi non riesco ad accederci), per questo ho deciso di acquistare un Raspberri Pi Zero W (il quale dovrebbe essere più che sufficiente per il lavoro che deve fare), con un Hub USB per collegarci tutte le periferiche.
Per chi non conoscesse Raspberry Pi vi rimando al sito ufficiale.

Backup/ripristino della nostra immagine (se avete installato altro)

Essendo un “esperimento” il mio, o comunque Raspbian era configurato a puntino e mi dispiaceva perderlo, ho provveduto a fare un backcup (riferimento ArchWiki)

# dd if=/dev/mmcblk0 conv=sync,noerror bs=64K | gzip -c > /cartella/dove/vogliamo/salvare/backup.img.gz
# fdisk -l /dev/mmcblk0 > /cartella/dove/vogliamo/salvare/backup_fdisk.info

Nota: voi mettete sempre il vostro nome del device

E per ripristinare:
# gunzip -c /cartella/dove/vogliamo/salvare/backup.img.gz | dd of=/dev/mmcblk0

Installazione Arch

Continua a leggere

Pubblicato in Arch Linux | Contrassegnato , , , , , , , | Lascia un commento

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)

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

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