
Überwachung unseres Bosch Indego Rasenmähers mit Grafana
Kommen, Weiter geht es mit einem etwas geekigen Beitrag, Aber wenn Sie einen Garten haben, könnten Sie interessiert sein… Die Sache ist die, ich habe einen dieser Roboter, die zu Hause den Rasen mähen, speziell ein Bosch Indego 350, und durch eine API, die uns der Hersteller zur Verfügung stellt, können wir jederzeit den Status des Rasenmähers kennen, sowie Zugang zu einigen interessanten Werten zu haben; Übrigens:, mit dieser API werden wir auch in der Lage sein, es zu steuern, Am Ende des Beitrags werden wir sehen, wie man das Wetter überprüfen kann und ob es nicht regnet, Nun, wir haben es zum Schneiden 😉 geschickt
Nicht schlecht, Wir werden diese coole App verwenden Controller-Anwendung und API für Bosch Indego Connect, Als erstes müssen die Anforderungen installiert werden, Experte, Wir laden den neuesten Build herunter, Wir kompilieren und installieren es. Wir werden sehen, dass es eine voll funktionsfähige Binärdatei für unsere Distribution generiert, in diesem Fall meine ich mich zu erinnern, dass ich einen Raspbian Stretch verwende, Ich überlasse Ihnen die Schritte, um es fertig zu haben:
[Quellcode]sudo apt-get installieren maven
wget https://github.com/zazaz-de/iot-device-bosch-indego-controller/archive/bosch-indego-controller-0.8.schwirren
bosch-indego-controller entpacken-0.8.schwirren
cd iot-gerät-bosch-indego-controller-bosch-indego-controller-0.8/
MVN-Kompilierung
MVN-Paket
MVN installieren
cd bosch-indego-controller-dist/target
Entpacken bosch-indego-controller-dist-0.8-bin.zip
cd bosch-indego-controller-dist-0.8/Kasten/
./IndegoController[/Quellcode]
Gehen wir zu dem Verzeichnis, in dem uns die Binärdatei verlassen hat, Und wir haben versucht, es umzusetzen, Wir senden Ihnen als Parameter mit -u unseren Benutzernamen, mit dem wir den Indego Rasenmäher registriert haben, und -p das Passwort des Kontos, Mit -Q können wir eine Abfrage durchführen und die Daten unseres Geräts sehen, Wir werden den Konsum sehen, Mal, abgeschlossen… Mit -C können wir Befehle senden, wie zum Beispiel MOW, damit Sie spazieren gehen und das Gras mähen können.
[Quellcode]cd ~/iot-device-bosch-indego-controller-bosch-indego-controller-0.8/bosch-indego-controller-dist/target/bosch-indego-controller-dist-0.8/Kasten
./IndegoController -u UNS*****@MA**. UndUNTER -p PASSWORT -q
./IndegoController -u UNS*****@MA**. UndUNTER -p PASSWORT -c MOW -q[/Quellcode]
Wenn wir aufgrund von Zertifikatsproblemen Probleme bei der Ausführung haben, Wir müssen die Bosch Indego-Zertifikate in den Java-Keystore importieren. Wir senken die 3 CA-Kettenzertifikate https://https://api.indego.iot.bosch-si.com auch mit einem Internet Explorer, wir speichern sie im DER X.509-Format.
Und wir importieren sie in den Java-Keystore, Wir werden nach dem Passwort gefragt, Das Standardkennwort für Keystore Cacerts lautet ChangeIt:
[Quellcode]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[/Quellcode]
Und wir testen das Skript nicht noch einmal und werden sehen, wie wir an unsere Daten kommen! Wenn wir sie ausbeuten wollen,, Ich hinterlasse Ihnen ein Beispiel für ein beschissenes Skript, das ich "cortacesped_estado.sh" genannt habe, Nun, was dieses Skript tun wird, ist, nach bestimmten Wörtern in dieser vorherigen Ausgabe zu suchen und die erhaltenen Werte in einer Datenbank mit MySQL zu speichern, die wir dann leicht von Grafana aus angreifen können und ein sehr niedliches Dashboard erhalten.
[Quellcode]#!/Mülleimer/Bash
/Startseite/pi/indego/bin/IndegoController -u UNS*****@MA**. UndUNTER -p PASSWORT -q > /Startseite/PI/Indego/estado.txt
completed='cat /home/pi/indego/estado.txt | grep abgeschlossen| Aww '{drucken $2}’`
completed='echo"${abgeschlossen///.}"`
session_operate='Katze /Startseite/Pi/Indego/estado.txt | grep 'Laufzeit-Sitzung / operieren:’| Aww '{drucken $5}’`
session_operate='Echo "${session_operate//,/.}"`
session_charge='Katze /Startseite/Pi/Indego/estado.txt | grep 'Laufzeit-Sitzung / Gebühr"| Aww '{drucken $5}’`
session_charge='Echo "${session_charge//,/.}"`
total_operate='Katze /Startseite/Pi/Indego/estado.txt | grep' Gesamtlaufzeit / funktionieren"| Aww '{drucken $5}’`
total_operate='Echo "${total_operate//,/.}"`
total_charge='Katze /Startseite/Pi/Indego/estado.txt | grep' Gesamtlaufzeit / Gebühr"| Aww '{drucken $5}’`
total_charge='Echo "${total_charge//,/.}"`
state='cat /home/pi/indego/estado.txt | grep 'Gerätestatus'| Aww '{drucken $4}’ |sed -e 's#.*=(\)#\1#’ | auf Touren bringen | cut -c 2- | rev`
estado="’$estado’"
echo "INSERT INTO cortacesped (abgeschlossen, session_operate, session_charge, total_operate, total_charge, Zustand) WERTE ($abgeschlossen,$session_operate,$session_charge,$total_operate,$total_charge,$Zustand);" | mysql -uUSUARIO -pCONTRASEÑA -h SERVIDOR_MYSQL NOMBRE_BD;
[/Quellcode]
No debemos olvidar crear en cron la programación que nos interese para que se ejecute el script, en mi caso se ejecuta cada 5 minutos para recolectar información.
Aber natürlich, antes debemos crear la tabla en alguna base de datos de nuestro servidor MySQL, como veis es muy sencillica, Hat 7 campos que almacenarán los datos que le mande, os dejo el código de MySQL por si queréis ver el tipo de columnas:
[Quellcode]CREATE TABLE `cortacesped` (
'completed' FLOAT NULL DEFAULT NULL,
'session_operate' FLOAT NULL STANDARD NULL,
'session_charge' FLOAT NULL DEFAULT NULL,
'total_operate' FLOAT NULL DEFAULT NULL,
'total_charge' FLOAT NULL DEFAULT NULL,
'status' ZEICHEN(20) NULL DEFAULT NULL,
'date' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP
)
COLLATE='utf8mb4_general_ci’
ENGINE=InnoDB
ROW_FORMAT=KOMPAKT;[/Quellcode]
Und das ist es! Mit der BD-Fütterung, Wir werden in der Lage sein, ein Dashboard mit den Panels zu konfigurieren, die uns interessieren, Ich verabschiede mich mit diesem Beispiel, Ich gebe Ihnen die Abfragen, die ich verwendet habe. Ach und übrigens,, Wenn Sie die DataSource in Grafana nicht für den MySQL-Server erstellt haben, Denken Sie daran, es vorher 😉 zu tun
- Letztes Mähen:
[Quellcode]SELECT-Zeitstempel(DATE_FORMAT(Datum, '%Y/%m/%d %H:%Ich:%s’)) als time_sec FROM Mäher wobei status = 'Mähen’ ORDER BY date DESC LIMIT 1[/Quellcode]
- Garten mähen:
[Quellcode]AUSWÄHLEN ABGESCHLOSSEN AUS Rasenmäher BESTELLEN NACH Datum OFF LIMIT 1[/Quellcode]
- Abfrage des neuesten Diagramms 15 Tage, wo wir die % Im Laufe der Zeit weiterentwickelt:
[Quellcode]WÄHLEN SIE UNIX_TIMESTAMP(Datum) Also time_sec, Als Wert abgeschlossen, "Zeit" als Metrik FROM cortacésped WHERE $__timeFilter(Datum) und status = 'Mähen’ SORTIEREN NACH Datum, time_sec ASC[/Quellcode]
- Gesamtes Mähen:
[Quellcode]ANZAHL AUSWÄHLEN(*) FROM mower where state='Mähen’ und abgeschlossen = 0[/Quellcode]
- Gesamter Schnitt:
[Quellcode]WÄHLEN SIE total_operate AUS Rasenmäher SORTIEREN NACH Datum DESC LIMIT 1[/Quellcode]
Und wenn wir schon dabei sind,, Wenn Sie interessiert sind, Dies ist ein txorra-Skript, das ich verwende, um den Roboter so zu programmieren, dass er hinausgeht, um den Rasen zu mähen, zuerst in cron muss ich es montags laufen lassen, Mittwoch und Freitag bei 8:30BIN, Und was es zuerst tut, ist die Uhrzeit zu überprüfen, Schauen Sie sich das aktuelle Wetter an und was es im Laufe des Tages tun wird, Wenn du Schlechtes tust (Regen, Schnee, Hagel…) denn er wird nicht ausziehen, um zu ernten, Ich nenne ihn enciende_cortacesped.sh:
[Quellcode]#!/Mülleimer/Bash
Locken wttr.in/Bilbao?1 > /TMP/eltiempo.txt
if grep 'Regen|drizzle\|snow\|sleet\|freez\thunder’ /TMP/eltiempo.txt > /dev/null
dann
echo "Hará o hace malo"
oder
echo "Hará o hace bueno"
/Startseite/pi/indego/bin/IndegoController -u UNS*****@MA**. UndUNTER -p CONTRASEÑA -c MOW
Fi[/Quellcode]
Ich hoffe, Sie fanden es interessant, Es können noch viele weitere Dinge getan werden, die wir im Laufe der Zeit sehen werden, Also, was ich gesagt habe, Ich hoffe, es hat euch gefallen!