Grafana Überwachung mit unseren Rasenmäher Bosch Indego

Venga, Wir folgten mit einem Post etwas Aussenseiter, aber wenn Sie einen Garten haben, können Sie interessiert sein… Tatsache ist, dass dieser einen Roboter, den Rasen zu Hause mähen, nämlich ein Bosch Indego 350, und über eine API, die uns die Hersteller gibt können wir den Status des Mähers jederzeit wissen,, Neben einigen interessanten Werten die Zugang; und btw, Diese API wird es auch zu steuern, der Lage sein,, am Ende der Post werden wir sehen, wie die Zeit zu überprüfen und, wenn es nicht regnet, Nun, wir schicken es zum Schneiden 😉

 

gut, Wir verwenden diese großen app Controller-Anwendung und API für Bosch Indego Connect, der erste Schritt ist, um die Anforderungen zu installieren, Maven, wir heruntergeladen die neueste Version, die Kompilierung und installieren. Wir sehen, dass eine voll funktionsfähige binäre für Ihre Distribution erzeugt, In diesem Fall erinnere ich mich, dass ich einen Raspbian Stretch bin mit, Ich lasse die Schritte, um es bereit:

sudo apt-get install maven
wget https://github.com/zazaz-de/iot-device-bosch-indego-controller/archive/bosch-indego-controller-0.8.zip
unzip bosch-indego-controller-0.8.zip
cd iot-device-bosch-indego-controller-bosch-indego-controller-0.8/
mvn compile
mvn package
mvn install
cd bosch-indego-controller-dist/target
unzip bosch-indego-controller-dist-0.8-bin.zip
cd bosch-indego-controller-dist-0.8/bin/
./IndegoController

 

Gehen Sie in das Verzeichnis, in dem wir links binär, und versuchte zu laufen, wir senden als Parameter -u unsere Benutzer Sie MÄHER Indego -p Passwort registriert haben und Konto, mit -q können wir eine Abfrage und Anzeigen von Daten aus unserer Einheit machen, wir sehen Verbrauch, Zeit, fertiggestellt… mit -c wir Befehle senden können, wie MOW für den Weg zu gehen und das Gras geschnitten.

cd ~/iot-device-bosch-indego-controller-bosch-indego-controller-0.8/bosch-indego-controller-dist/target/bosch-indego-controller-dist-0.8/bin
./IndegoController -u USUARIO@MAIL.ESO -p CONTRASEÑA -q
./IndegoController -u USUARIO@MAIL.ESO -p CONTRASEÑA -c MOW -q

 

Wenn wir Probleme haben, wenn sie von ihren Urkunden läuft, wir Zertifikate Bosch Indego die Java-Schlüsselspeicher importieren. wir senken 3 Zertifikatkette CAs https://https://api.indego.iot.bosch-si.com mismamente mit Internet Explorer, die DAS X.509-Format speichern.

Und wir importieren Sie die Java-Schlüssel, wir werden Passwort fragen, das Standardkennwort ist der Schlüsselspeicher cacerts changeit:

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

 

Und nichts testeten wir das Skript erneut und sehen, wie wir unsere Daten erhalten! Wenn wir wollen, nutzen, Ich lasse ein Beispiel für ein Skript cutrecillo lque genannt haben ‚cortacesped_estado.sh‘, Während dieses Skript tut es für bestimmte Worte in dieser vorherige Ausgabe aussehen wird und die Werte in einer Datenbank mit MySQL erhalten speichern, dann können wir leicht von Grafana angreifen und einige sehr nette Armaturenbrett bekommen.

#!/bin/bash
/home/pi/indego/bin/IndegoController -u USUARIO@MAIL.ESO -p CONTRASEÑA -q > /home/pi/indego/estado.txt
completado=`cat /home/pi/indego/estado.txt | grep Completed| awk '{print $2}'`
completado=`echo "${completado//\,/.}"`
session_operate=`cat /home/pi/indego/estado.txt | grep 'Runtime session / operate:'| awk '{print $5}'`
session_operate=`echo "${session_operate//\,/.}"`
session_charge=`cat /home/pi/indego/estado.txt | grep 'Runtime session / charge'| awk '{print $5}'`
session_charge=`echo "${session_charge//\,/.}"`
total_operate=`cat /home/pi/indego/estado.txt | grep 'Runtime total / operate'| awk '{print $5}'`
total_operate=`echo "${total_operate//\,/.}"`
total_charge=`cat /home/pi/indego/estado.txt | grep 'Runtime total / charge'| awk '{print $5}'`
total_charge=`echo "${total_charge//\,/.}"`
estado=`cat /home/pi/indego/estado.txt | grep 'DeviceStatus'| awk '{print $4}' |sed -e 's#.*=\(\)#\1#' | rev | cut -c 2- | rev`
estado="'$estado'"
echo "INSERT INTO cortacesped (completado, session_operate, session_charge, total_operate, total_charge, estado) VALUES ($completado,$session_operate,$session_charge,$total_operate,$total_charge,$estado);" | mysql -uUSUARIO -pCONTRASEÑA -h SERVIDOR_MYSQL NOMBRE_BD;

 

Wir dürfen nicht vergessen cron Programmierung erstellen, die uns interessiert, so dass das Skript ausgeführt wird, in meinem Fall läuft es jeden 5 Minuten zu sammeln Informationen.

 

aber natürlich, müssen wir zuerst die Tabelle in jeder Datenbank MySQL unseren Server erstellen, wie Sie sehen, ist es sehr sencillica, Sie haben 7 Felder speichern Daten, die Sie senden, Ich verlasse den MySQL-Code, wenn Sie die Art von Spalten sehen wollen:

CREATE TABLE `cortacesped` (
`completado` FLOAT NULL DEFAULT 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,
`estado` CHAR(20) NULL DEFAULT NULL,
`fecha` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
ROW_FORMAT=COMPACT;

und bereit! Mit der BD-Fütterung, und wir können ein Armaturenbrett mit Platten aufgebaut, die uns interessiert, Ich lasse dieses Beispiel, Ich gehe ich verwendet, um die querys. Oh, und übrigens, Wenn Sie nicht über die Datasource in Grafana gegen MySQL-Server erstellt, Denken Sie daran, es vor 😉 zu tun

  • letzte gemäht:
SELECT timestamp(DATE_FORMAT(fecha, '%Y/%m/%d %H:%i:%s')) as time_sec FROM cortacesped where estado = 'Mowing' ORDER BY fecha DESC LIMIT 1
  • Garten gemäht:
SELECT completado FROM cortacesped ORDER BY fecha DESC LIMIT 1
  • Abfrage für das Diagramm der letzten 15 Tage, wo wir sehen, % im Laufe der Zeit fortgeschritten:
SELECT UNIX_TIMESTAMP(fecha) as time_sec, completado as value, "Tiempo" as metric FROM cortacesped WHERE $__timeFilter(fecha) and estado = 'Mowing' ORDER BY fecha, time_sec ASC
  • Gesamt gemäht:
SELECT COUNT(*) FROM cortacesped where estado = 'Mowing' and completado = 0
  • insgesamt Schneid:
SELECT total_operate FROM cortacesped ORDER BY fecha DESC LIMIT 1

 

Und da sind wir, wenn Sie daran interessiert sind, txorra dies ist ein Skript, das ich verwende, um die Roboter zu programmieren, aus dem Rasen mähen, zuerst in cron hätte ich montags laufen, Mittwoch und Freitag um 8:30bin, und was es tut, ist checkear erstes Mal, Blick auf die aktuelle Zeit und wird im Laufe des Tages tun, wenn Sie tun, ist falsch (regen, Schnee, Hagel…) es wird kommen, nicht zu ernten, Ich nenne enciende_cortacesped.sh:

#!/bin/bash
curl wttr.in/Bilbao?1 > /tmp/eltiempo.txt
if grep 'rain\|drizzle\|snow\|sleet\|freez\thunder' /tmp/eltiempo.txt > /dev/null
then
  echo "Hará o hace malo"
else
  echo "Hará o hace bueno"
  /home/pi/indego/bin/IndegoController -u USUARIO@MAIL.ESO -p CONTRASEÑA -c MOW
fi

 

Ich hoffe, Sie haben interessante, Sie können viele Dinge tun, die wir im Laufe der Zeit sehen, so dass die, Ich hoffe, es hat euch gefallen!

 

Letzte Artikel von Hector Herrero (Alle anzeigen)