lunedì 12 novembre 2018

Come installare InfluxDB su Raspberry


Adesso che abbiamo i Sonoff con Tasmota, Mosquitto che riceve i dati e Domoticz che li presenta in forma comprensibile, installiamo anche un database per poter tenere uno "storico" del tutto.
La scelta è caduta su InfluxDB, vediamo perchè e come installarlo ed interfacciarlo a Domoticz!

InfluxDB nasce come database specializzato nel trattare dati in serie temporale, per cui rientra a pieno titolo nella cetegoria dei TSDB (Time Series Database). 

La sua peculiarità è la velocità e la possibilità di creare query molto complesse anche a chi ne è totalmente a digiuno. Se ci aggiungiamo anche che è open source e gira sul Raspberry, abbiamo il prodotto perfetto per il mio scopo!

Intanto, installiamolo!
Tutti i comandi, salvo dove diversamente specificato, sono stati dati usando l'utente "pi"


sudo apt-get update
sudo apt-get upgrade

Come al solito, prima di tutto, ci aggiorniamo il software che abbiamo a bordo.
Poi diventiamo l'utente root perchè andiamo ad installare Influx, usiamo quindi il comando


sudo -i

Poi ci prendiamo l'ultima release disponibile (ad oggi, controlla la data, che magari è uscita una release nuova!) :

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.2.4_armhf.deb

Una volta che lo abbiamo sul nostro sistema, è il caso di installarlo, usando il comando dpkg

sudo dpkg -i influxdb_1.2.4_armhf.deb

A questo punto, bisogna editare il file di configurazione con il comando

sudo nano /etc/influxdb/influxdb.conf

A questo punto andiamo a cercare la parte che inizia con [admin] e modifichiamola così :

[admin]
  # Determines whether the admin service is enabled.
enabled = true
  # The default bind address used by the admin service.
bind-address = ":8083"

In pratica stiamo specificando che abilitiamo l'accesso amministrativo e su quale porta, nel mio caso la 8083. Adesso passiamo oltre, cerchiamo la sezione che inizia con [http] e modifichiamola così :

[http]
  # Determines whether HTTP endpoint is enabled.
 enabled = true
  # The bind address used by the HTTP service.
bind-address = ":8086"

Qui invece abbiamo specificato che il servizio http è abilitato e che riceve i dati sulla porta 8086.
Come sempre, salviamo premendo il trasto CTRL ed il tasto O, alla richiesta del nome del file diamo invio ed usciamo con un CTRL ed il tasto X.

Ora che ci siamo, facciamo partire InfluxDB in questo modo :

sudo service influxdb start

Adesso apriamo il nostro browser ed andiamo all'IP del Raspberry, sulla porta 8083, nel mio caso è http://192.168.1.129:8083




Scriviamo CREATE DATABASE domoticz e diamo invio, in questo modo abbiamo creato il nostro primo database chiamandolo "domoticz".
Per controllare, fate click sulla scritta "Database" in alto a destra e lo vedrete elencato :




A questo punto, bisogna dire ad InfluxDB da dove arrivano i dati e con quali credenziali, quindi premiamo sull'icona a forma di ingranaggio in alto a destra :




Inseriamo l'host che ospita il nostro Domoticz (nel mio caso, è lo stesso host che ospita anche Mosquitto), la porta 8086 (che abbiamo specificato prima), il nome utente e la password che verranno usate per scrivere sul database.
Attenzione alla porta, abbiamo detto che la 8086 è quella abilitata all'HTTP.

Io ho creato un'utenza alla quale ho dato come login domoticz e password DIVERSA da quella dell'utente. Mai usare la stessa password, anche se si è in ambito domestico...

A questo punto, ho fatto click su "Save" e sono tornato alla pagina iniziale.
Ora che abbiamo fatto tutto, bisogna mettere in comunicazione Domoticz con InfluxDB,

Bisogna andare in Setup - More Options - Data Push - InfluxDB come in questa immagine :



Ed inserire i parametri di collegamento, quelli che abbiamo creato poco fa :




Bisogna ricordarsi di mettere Enable da rosso a verde ed anche il Debug to Logfile sarebbe carino averlo in verde. Questo per poter intercettare eventuali problematiche di connessione. Si spera sempre che non ce ne siano, ovvio, ma in caso di problemi il log vi aiuta a risolvere i problemi...

A questo punto si preme "Save" e siamo pronti ad inserire il primo apparato :




Per ora ho inserito la temperatura del deumidificatore, come tipo di pubblicazione ho scelto "Direct" perchè voglio sapere la temperatura ad ogni rilevazione, non solo quando cambia.
Ho premuto "Save" e potrei anche dire che ci siamo.
La prova definitiva che tutto vada bene ce la danno i log (che si raggiungono da Setup - Log )



Bene, il pacchetto MQTT (proveniente dal Sonoff con Tasmota a bordo) con i dati del sensore è stato ricevuto ed è stato girato (tramite la connessione creata poco prima) a InfluxDB. Perfetto!

Ora andiamo a vedere se InfluxDB, i dati che riceve li scrive anche...
Si, doppio controllo, so che sono paranoico, ma sapere che i dati vengono inviati è solo la metà dell'informazione che mi serve, voglio anche essere certo che vengano scritti.

Basta vedere le statistiche, usando la quesry apposita, che trovate in Query Templates - Show Stats, ci fate click sopra e poi premete invio :




Adesso vediamo in fondo alla pagina, nella sezione HTTPD



Benissimo direi, 178 richieste di scrittura, 0 errori, 11405 bytes scritti!
Ok, ora i dati da i Sonoftt con Tasmota vanno verso il broker MQTT (Mosquitto), entrano in Domoticz e da Domoticz finiscono dentro InfluxDB.

E quindi?

Quindi ora i dati sono "fuori" da Domoticz, sono storicizzati e sono in un database interrogabile. Ma non solo interrogabile, anche disponibile per fare grafici, cosa per la quale useremo Grafana, ma è tutto un'altro post :-)


4 commenti:

  1. Secondo te è oggi resta migliore InfluxDB oppure è meglio MariaDB?

    RispondiElimina
  2. Sinceramente non sono in grado di risponderti, non avendo testato MariaDB direi solo delle castronerie...

    RispondiElimina
  3. Complimenti ottima guida ho un dubbio sul sistema

    Avendo sullo stesso raspberry ho scelto un PI4 da 8GB con SSD ansiche SD

    Domoticz Mosquitto InfluxDB Grafana NodeRed

    Nell' avviare i sistemi non conviene farlo con delle pause uno dall' altro ?

    In caso affermativo come si fa e che priorita conviene dare ?

    RispondiElimina
  4. In realtà, vengono già avviati scaglionati, una volta che viene finita l'eseguzione di un comando si passa al successivo. Se vuoi inserire delle pause, il comando linux per farlo negli script è "sleep", cercati la sintassi e gli esempi d'uso. Per le priorità, dipende da cosa gira "prima" sul tuo sistema. Per come hai elencato i software, direi che va tutto più che bene. Certo è che se hai dei dati in arrivo che vengono processati da NodeRed per poi essere mandati via MQTT, è meglio mettere NodeRed prima di Influx. Per questo, tutto dipende dal tuo sistema e da cosa gira come processi.

    RispondiElimina

Sei davvero sicuro di voler sprecare tempo prezioso per scrivere qualcosa? Non è che preferisci andare su Google?

Cerca nel blog

I post più letti di sempre