Monitoraggio del nostro tosaerba Bosch Indego con Grafana

Venire, Continuiamo con un post un po' geek, ma se hai un giardino potrebbe interessarti… Il fatto è che ho uno di quei robot che falciano il prato di casa, in particolare un Bosch Indego 350, e attraverso un'API fornitaci dal produttore saremo in grado di conoscere in ogni momento lo stato del rasaerba, oltre ad avere accesso ad alcuni valori interessanti; E a proposito, con questa API saremo anche in grado di controllarlo, Alla fine del post vedremo come controllare il meteo e se non piove, Beh, l'abbiamo mandato a tagliarlo 😉

 

Non male, Useremo questa fantastica app Applicazione controller e API per Bosch Indego Connect, La prima cosa sarà installare i requisiti, Intenditore, Scarichiamo l'ultima build, Lo compiliamo e lo installiamo. Vedremo che genera un binario completamente funzionante per la nostra distribuzione, in questo caso mi sembra di ricordare che sto usando un Raspbian Stretch, Vi lascio i passaggi per averlo pronto:

[Codice sorgente]sudo apt-get install maven
wget https://github.com/zazaz-de/iot-device-bosch-indego-controller/archive/bosch-indego-controller-0.8.zip
Decomprimere il controller bosch-indego-0.8.zip
cd iot-device-bosch-indego-controller-bosch-indego-controller-0.8/
Compilazione MVN
Pacchetto MVN
Installazione MVN
cd bosch-indego-controller-dist/target
Decomprimere bosch-indego-controller-dist-0.8-bin.zip
cd bosch-indego-controller-dist-0.8/Bidone/
./IndegoController[/Codice sorgente]

 

Andiamo nella directory dove il binario ci ha lasciato, e abbiamo cercato di eseguirlo, Ti invieremo come parametri con -u il nostro nome utente con cui abbiamo registrato il rasaerba Indego e -p la password dell'account, Con -Q possiamo fare una query e vedere i dati del nostro dispositivo, Vedremo i consumi, Tempi, finito… Con -C possiamo inviare comandi, come MOW per farti fare una passeggiata e tagliare l'erba.

[Codice sorgente]cd ~/iot-device-bosch-indego-controller-bosch-indego-controller-0.8/bosch-indego-controller-dist/target/bosch-indego-controller-dist-0.8/bidone
./IndegoController -u NOI*****@MA**. ESOTTO -p PASSWORD -q
./IndegoController -u NOI*****@MA**. ESOTTO -p PASSWORD -c MOW -q[/Codice sorgente]

 

Se abbiamo problemi durante l'esecuzione a causa di problemi con il certificato, dovremo importare i certificati Bosch Indego nel keystore Java. Abbassiamo il 3 Certificati della catena CA https://https://api.indego.iot.bosch-si.com anche con un Internet Explorer, li salviamo in formato DER X.509.

E li importiamo nel keystore Java, Ci chiederà la password, La password predefinita per i Cacert dell'archivio chiavi è ChangeIt:

[Codice sorgente]keytool -import -alias INDEGO_CER -keystore $JAVA_HOME/jre/lib/security/cacerts -file /home/pi/indego.cer
keytool -import -alias INDEGO_CA1 -keystore $JAVA_HOME/jre/lib/security/cacerts -file /home/pi/indegoCA1.cer
keytool -import -alias INDEGO_CA2 -keystore $JAVA_HOME/jre/lib/security/cacerts -file /home/pi/indegoCA2.cer[/Codice sorgente]

 

E non testiamo di nuovo lo script e vedremo come otteniamo i nostri dati! Se vogliamo sfruttarli, Vi lascio un esempio di uno script schifoso che ho chiamato 'cortacesped_estado.sh', Bene, quello che farà questo script è cercare determinate parole in quell'output precedente e salvare i valori ottenuti in un database con MySQL, che possiamo quindi facilmente attaccare da Grafana e ottenere una dashboard molto carina.

[Codice sorgente]#!/bin/bash
/casa/pi/indego/bin/IndegoController -u NOI*****@MA**. ESOTTO -p PASSWORD -q > /Home/PI/Indego/estado.txt
completed='cat /home/pi/indego/estado.txt | grep completato| aw '{Stampare $2}’`
completado='echo "${completado//,/.}"`
session_operate='gatto /casa/pi/indego/estado.txt | grep 'Sessione di runtime / operare:’| aw '{Stampare $5}’`
session_operate='echo "${session_operate//,/.}"`
session_charge='gatto /casa/pi/indego/estado.txt | grep 'Sessione di runtime / Carica»| aw '{Stampare $5}’`
session_charge='echo "${session_charge//,/.}"`
total_operate='gatto /casa/pi/indego/estado.txt | grep 'Totale tempo di esecuzione / operare»| aw '{Stampare $5}’`
total_operate='echo "${total_operate//,/.}"`
total_charge='gatto /casa/pi/indego/estado.txt | grep 'Totale tempo di esecuzione / Carica»| aw '{Stampare $5}’`
total_charge='echo "${total_charge//,/.}"`
estado='gatto /casa/pi/indego/estado.txt | grep 'Stato del dispositivo'| aw '{Stampare $4}’ |sed -e 's#.*=(\)#\1#’ | Rev | cut -c 2- | rev`
estado="’$estado’"
echo "INSERT INTO cortacesped (finito, session_operate, session_charge, total_operate, total_charge, stato) VALORI ($finito,$session_operate,$session_charge,$total_operate,$total_charge,$stato);" | mysql -uUSUARIO -pCONTRASEÑA -h SERVIDOR_MYSQL NOMBRE_BD;
[/Codice sorgente]

 

Non dobbiamo dimenticare di creare in cron la programmazione che ci interessa in modo che lo script venga eseguito, nel mio caso ogni 5 minuti per raccogliere informazioni.

 

Ma ovviamente, per prima cosa dobbiamo creare la tabella in qualche database del nostro server MySQL, Come puoi vedere, è molto semplice, Ha 7 Campi che memorizzeranno i dati inviati, Vi lascio il codice MySQL nel caso vogliate vedere il tipo di colonne:

[Codice sorgente]CREA TAVOLO 'tosaerba' (
'completato' FLOAT NULL PREDEFINITO NULL,
'session_operate' FLOAT NULL DEFAULT NULL,
'session_charge' FLOAT NULL DEFAULT NULL,
'total_operate' FLOAT NULL DEFAULT NULL,
'total_charge' FLOAT NULL DEFAULT NULL,
'status' CHAR(20) NULL DEFAULT NULL,
'date' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE='utf8mb4_general_ci’
ENGINE=InnoDB
ROW_FORMAT=COMPATTO;[/Codice sorgente]

E questo è tutto! Con l'alimentazione BD, Potremo configurare una dashboard con i pannelli che ci interessano, Vi lascio con questo esempio, Ti darò le query che ho usato. Oh e a proposito, se non si dispone di DataSource in Grafana creato per il server MySQL, Ricordati di farlo prima 😉

  • Ultimo taglio:

[Codice sorgente]SELEZIONA timestamp(DATE_FORMAT(dattero, '%Y/%m/%d %H:%io:%s’)) come time_sec FROM tosaerba dove status = 'Falciatura’ ORDINA PER DATA LIMITE DI SCONTO 1[/Codice sorgente]

  • Falciare il giardino:

[Codice sorgente]SELEZIONA completato DA tosaerba ORDINA PER data OFF LIMIT 1[/Codice sorgente]

  • Eseguire una query per il grafico più recente 15 Giorni, dove vediamo il % Avanzato nel tempo:

[Codice sorgente]SELEZIONA UNIX_TIMESTAMP(dattero) Quindi time_sec, completato come valore, "Tempo" come metrico FROM cortacésped WHERE $ __timeFilter(dattero) e stato = 'Falciatura’ ORDINA PER DATA, time_sec ASC[/Codice sorgente]

  • Falciatura totale:

[Codice sorgente]SELEZIONA CONTEGGIO(*) FROM tosaerba dove state='Falciatura’ e completato = 0[/Codice sorgente]

  • Taglio totale:

[Codice sorgente]SELEZIONA total_operate DA tosaerba ORDINA PER DATA LIMITE DI DEVENDITA 1[/Codice sorgente]

 

E già che ci siamo,, Se sei interessato, Questo è uno script txorra che uso per programmare il robot per uscire a falciare il prato, prima in cron devo eseguirlo il lunedì, Mercoledì e venerdì alle 8:30SONO, e quello che fa prima è controllare l'ora, Guarda il tempo attuale e cosa farà durante il giorno, Se hai intenzione di fare del male (pioggia, neve, grandine…) perché non uscirà a mietere, Lo chiamo enciende_cortacesped.sh:

[Codice sorgente]#!/bin/bash
arricciare wttr.in/Bilbao?1 > /TMP/eltiempo.txt
if grep 'pioggia|drizzle\|snow\|sleet\|freez\thunder’ /TMP/eltiempo.txt > /dev/null
allora
echo "Hará o hace malo"
altro
echo "Hará o hace bueno"
/casa/pi/indego/bin/IndegoController -u NOI*****@MA**. ESOTTO -p CONTRASEÑA -c MOW
Fi[/Codice sorgente]

 

Spero che tu l'abbia trovato interessante, se pueden hacer muchas cosas más que iremos viendo con el tiempo, así que lo dicho, espero que os haya gustado!

 

Post consigliati

Autore

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Non esitate a contattarmi, Cercherò di aiutarti ogni volta che potrò, Condividere è vivere ;) . Goditi i documenti!!!

Monitoraggio di un array Synology

3 di luglio de 2019