Disclaimer

Prestare sempre attenzione a seguire le indicazioni fornite in questo blog, soprattutto se si tratta di apparecchiature elettriche collegate alla tensione di 220V. Non mi ritengo responsabile di danni causati dall'aver seguito i consigli qui pubblicati.
Grazie

mercoledì 11 ottobre 2017

Home Automation System - OpenHAB v.2 e monitoring della rete locale




Per continuare nella scoperta e approfondimento di questo "affascinante" mondo di OpenHAB v.2 mi sono cimentato nella creazione di un piccolo sistema di monitoring della rete locale.

Per questo scopo OpenHAB v.2 ci offre un Binding 2.0 direttamente configurabile da interfaccia Paper UI: il Network Binding, attivabile facilmente dalla sezione Add-Ons

Come al solito la guida ufficiale è molto esaustiva: http://docs.openhab.org/addons/bindings/network/readme.html

Questo binding ci mette a disposizione uno strumento di scansione della rete tramite ping di sistema e/o port scanning per individuare i dispositivi che entrano ed escono dalla rete stessa. In questo modo ci permette di associare lo stato di ONLINE / OFFLINE ai vari dispositivi di rete censiti.

I nuovi Things saranno i dispositivi individuabili con l'indirizzo di rete e mettono a disposizione due canali:

- Online: ci permette di associare degli Items di tipo "switch" per rappresentare se un device è connesso alla rete o meno;

- Time: viene associato ad Items di tipo Number che memorizzano il tempo di risposta del device

Non appena installato il nuovo binding, i things vengono subito identificati e OpenHAB ce lo  notifica attraverso la voce di menù INBOX, in alto a sinistra (eventualmente si può forzare la ricerca utilizzando l'icona SCAN in alto a destra)


Una volta identificati gli apparati di rete che si vogliono monitorare, con dei semplici click si generano i Things e, tramite i Channels messi a disposizione, gli Items

Ecco un esempio di Thing -> Channels -> Item relativo al mio router


Ed ecco la pagina di configurazione del Thing "Home Router":


Oltre ai vari parametri di configurazione che si trovano ben descritti nella documentazione ufficiale (http://docs.openhab.org/addons/bindings/network/readme.html), io ho utilizzato anche quello chiamato "Location", nella parte alta, in modo tale da identificare fisicamente la posizione del dispositivo e raggruppare insieme quelli nello stesso luogo di casa.
Ho deciso di utilizzare come "Location" predefinite i piani della casa più il giardino, quindi per adesso il router lo inserisco al "primo piano".

Dopo aver aggiunto tutti i dispositivi che voglio monitorare, per verificare che tutto funzioni correttamente, vado nella sezione "Control" e seleziono la location "First Floor".
Ecco il risultato:



Non mi rimane altro che pubblicare queste informazioni sulla sitemap. Andiamo quindi sul nostro editor SmartHome Designer e apriamo il file /etc/openhab2/sitemaps/test.sitemap.

Aggiungiamo, subito sotto la sezione "General", un nuovo frame chiamato Network in cui inseriamo gli Items appena creati in Paper UI. Per fare questo aggiungiamo le seguenti righe:

Frame label="Network" {
Switch item=HomeRouter_Online  label="Home Router"      icon="switch"
Text   item=HomeRouter_Time   label="Home Router Time [%s ms]"       icon="network"
Switch item=LamanNAS_Online label="LamanNAS"        icon="switch"
Text   item=LamanNAS_Time label="LamanNAS Time [%s ms]"      icon="network"
}

(HomeRouter_Online/Time e  LamanNAS_Online/Time sono i nomi degli Item così come li possiamo vedere su Paper UI).

Ecco il risultato:


Per rendere tutto più "vivo" e soprattutto utile, non mi resta che creare una regola per ogni dispositivo per far sì che mi venga notificato quando avviene il passaggio da ONLINE a OFFLINE e viceversa...

Andiamo quindi a modificare il nostro file /etc/openhab2/rules/checks.rules, dove troviamo già la regola per la notifica degli aggiornamenti di TASMOTA, aggiungengo le seguenti righe:

rule "home router check"
when
Item HomeRouter_Online changed
then
logInfo("rules", "HomeRouter_Online online status changed")
sendNotification([user_to_be_notified], " HomeRouter_Online online status changed ")
end