使用 Grafana 监控我们的 Bosch Indego 割草机

来, seguimos con un post algo friki, pero que si tienes jardín te puede interesarel caso es que tengo un robot de estos que cortan el césped en casa, en concreto un Bosch Indego 350, y mediante una API que nos da el fabricante podremos conocer el estado del cortacesped en todo momento, ademas de tener acceso a algunos valores interesantes; 顺便说一下, con esta API también podremos controlarla, al final del post veremos cómo chequear el tiempo y si no está lloviendo, pues la mandamos a cortar 😉

 

不错, utilizaremos esta genial aplicación Controller application and API for Bosch Indego Connect, lo primero será instalar los requisitos, Maven, nos descargamos la última build, la compilamos y la instalamos. Veremos que nos genera un binario totalmente funcional para nuestra distribución, en este caso creo recordar que estoy usando una Raspbian Stretch, os dejo los pasos para tenerlo listo:

[源代码]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[/源代码]

 

Vamos al directorio donde nos dejó el binario, 我们试图执行它, le enviaremos como parámetros con -u nuestro usuario con el que hayamos registrado el cortacesped Indego y -p la contraseña de la cuenta, con -q podemos hacer un query y ver los datos de nuestro aparato, veremos consumos, tiempos, 完成… con -c podremos enviarle comandos, como por ejemplo MOW para que salga a dar el paseo y corte la hierba.

[源代码]cd ~/iot-device-bosch-indego-controller-bosch-indego-controller-0.8/bosch-indego-controller-dist/target/bosch-indego-controller-dist-0.8/站
./IndegoController -u 美国*****@**IL.ESO -p CONTRASEÑA -q
./IndegoController -u 美国*****@**IL.ESO -p CONTRASEÑA -c MOW -q[/源代码]

 

Si tenemos problemas a la hora de ejecutarlo por temas de certificados, deberemos importar los certificados de Bosch Indego al keystore de Java. Bajamos los 3 certificados de la cadena de las CA de https://https://api.indego.iot.bosch-si.com mismamente con un Internet Explorer, los guardamos con formato DER X.509.

Y los importamos en el keystore de Java, nos pedirá password, la contraseña por defecto del keystore cacerts es 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[/源代码]

 

然后我们再次测试脚本,看看如何获取我们的数据! 如果我们想要利用它们, 给你们一个我叫做‘cortacesped_estado.sh’的小脚本示例, 这个脚本将会在之前的输出中搜索某些词,并将获取的值保存到 MySQL 数据库中, 然后我们可以很容易地从 Grafana 访问,并获得一个很漂亮的仪表盘.

[源代码]#!/bin/bash
/home/pi/indego/bin/IndegoController -u 美国*****@**IL.ESO -p CONTRASEÑA -q > /home/pi/indego/estado.txt
completado=`cat /home/pi/indego/estado.txt | grep Completed| 噢 '{打印 $2}’`
completado=`echo "${completado//\,/.}"`
session_operate=`cat /home/pi/indego/estado.txt | grep ‘Runtime session / operate:’| 噢 '{打印 $5}’`
session_operate=`echo "${session_operate//\,/.}"`
session_charge=`cat /home/pi/indego/estado.txt | grep ‘Runtime session / charge’| 噢 '{打印 $5}’`
session_charge=`echo "${session_charge//\,/.}"`
total_operate=`cat /home/pi/indego/estado.txt | grep ‘Runtime total / operate’| 噢 '{打印 $5}’`
total_operate=`echo "${total_operate//\,/.}"`
total_charge=`cat /home/pi/indego/estado.txt | grep ‘Runtime total / charge’| 噢 '{打印 $5}’`
total_charge=`echo "${total_charge//\,/.}"`
estado=`cat /home/pi/indego/estado.txt | grep ‘DeviceStatus’| 噢 '{打印 $4}’ |sed -e ‘s#.*=\(\)#\1#’ | 转速 | cut -c 2- | rev`
estado="’$estado’"
echo "INSERT INTO cortacesped (完成, session_operate, session_charge, total_operate, total_charge, 州) 值 ($完成,$session_operate,$session_charge,$total_operate,$total_charge,$州);" | mysql -uUSUARIO -pCONTRASEÑA -h SERVIDOR_MYSQL NOMBRE_BD;
[/源代码]

 

我们不应忘记在cron中创建我们感兴趣的调度,以便执行脚本, 在我的情况下,它每 5 分钟执行一次以收集信息.

 

但当然, 我们首先需要在服务器的某个MySQL数据库中创建表, 如你所见,它非常简单, 具有 7 将存储我发送的数据的字段, 我给你们MySQL的代码,如果你们想看列的类型:

[源代码]CREATE TABLE `cortacesped` (
`completado` FLOAT NULL DEFAULT NULL,
`session_operate` FLOAT NULL DEFAULT NULL,
`session_charge` FLOAT NULL 默认 NULL,
`total_operate` FLOAT NULL 默认 NULL,
`total_charge` FLOAT NULL 默认 NULL,
`estado` CHAR(20) NULL 默认 NULL,
'date' 时间戳 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE='utf8mb4_general_ci'’
引擎=InnoDB
ROW_FORMAT=紧凑;[/源代码]

就是这样! 随着数据库的填充, 我们就可以配置一个包含我们感兴趣面板的仪表盘, 我给你留下这个例子, 这是我使用的查询. 哦,对了, 如果你还没有在 Grafana 中针对 MySQL 服务器创建数据源, 记得先创建😉

  • 最近一次割草:

[源代码]SELECT timestamp(DATE_FORMAT(日期, ‘%Y/%m/%d %H:%我:%s’)) 作为 time_sec 从 cortacesped 表中选择 where estado = ‘Mowing'’ 按 fecha 降序排列 LIMIT 1[/源代码]

  • 花园已割草:

[源代码]SELECT completado FROM cortacesped 按 fecha 降序排列 LIMIT 1[/源代码]

  • 最近图表的查询 15 日, 我们在其中看到 % 随着时间推进的进度:

[源代码]SELECT UNIX_TIMESTAMP(日期) 所以time_sec, completado 作为值, "Tiempo" 作为指标 从 cortacesped 表中选择 WHERE $__timeFilter(日期) 并且 estado = ‘Mowing'’ 按 fecha 排序, time_sec ASC[/源代码]

  • 总共割草:

[源代码]选择计数(*) FROM cortacesped where estado = ‘Mowingand completado = 0[/源代码]

  • Total cortando:

[源代码]SELECT total_operate FROM cortacesped ORDER BY fecha DESC LIMIT 1[/源代码]

 

当我们在做这件事时,, si os interesa, este es un script txorra que utilizo para programar que salga el robot a cortar el césped, primeramente en cron le tengo que se ejecute los Lunes, Miercoles y Viernes a las 8:30是, y lo que hace primero es checkear el tiempo, mira el tiempo actual y el que hará a lo largo del día, si va a hacer malo (lluvia, nieve, granizo…) pues no saldrá a segar, le llamo 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
然后
echo "Hará o hace malo"

echo "Hará o hace bueno"
/home/pi/indego/bin/IndegoController -u 美国*****@**IL.ESO -p CONTRASEÑA -c MOW
fi[/源代码]

 

我希望你觉得它很有趣, se pueden hacer muchas cosas más que iremos viendo con el tiempo, 所以我说的, espero que os haya gustado!

 

推荐文章

作者

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, 请随时与我联系, 我会尽我所能帮助你, 分享就是生活 ;) . 享受文档!!!

监控 Synology 阵列

3 的 7 月 de 2019