GrafanaによるBosch Indego芝刈り機の監視

来る, ややオタクっぽい投稿を続けます, しかし、あなたが庭を持っているなら、あなたは興味があるかもしれません… 実は、私は家で芝生を刈るロボットの1つを持っているということです, 具体的にはボッシュインデゴ 350, また、メーカーから提供されたAPIを通じて、芝刈り機のステータスを常に知ることができます, また、いくつかの興味深い値にアクセスできること; ちなみに, このAPIを使用すると、それを制御することもできます, 投稿の最後に、天気を確認する方法と雨が降っていないかどうかを見ていきます, まあ、カット😉してもらうために送ったんだけど

 

悪くありません, このクールなアプリを使用します Bosch Indego ConnectのコントローラーアプリケーションとAPI, 最初に、要件をインストールします, メイヴン, 最新のビルドをダウンロードします, コンパイルしてインストールします. ディストリビューションに対して完全に機能するバイナリを生成することがわかります, この場合、Raspbian Stretchを使用していることを覚えているようです, 私はあなたにそれを準備するための手順を残します:

[ソースコード]sudo apt-get mavenをインストールする
wgetのhttps://github.com/zazaz-de/iot-device-bosch-indego-controller/archive/bosch-indego-controller-0.8.郵便番号
bosch-indego-controllerを解凍します-0.8.郵便番号
cd iot-device-bosch-indego-controller-bosch-indego-controller-0.8/
MVNコンパイル
MVNパッケージ
MVN インストール
cd bosch-indego-controller-dist/target
bosch-indego-controller-dist を解凍します。-0.8-bin.zip
cd bosch-indego-controller-dist-0.8/ごみ箱/
./インデゴコントローラー[/ソースコード]

 

バイナリが残したディレクトリに移動しましょう, そして、私たちはそれを実行しようとしました, パラメータとして、Indego芝刈り機を登録したユーザー名-uとアカウントのパスワードである-pを送信します, -Qを使用すると、クエリを実行してデバイスのデータを確認できます, 私たちは消費を見るでしょう, 倍, 完了… -Cを使用すると、コマンドを送信できます, あなたが散歩に出かけ、草を刈るためのMOWなど.

[ソースコード]cd ~/iot-device-bosch-indego-controller-bosch-indego-controller-0.8/bosch-indego-controller-dist/target/bosch-indego-controller-dist-0.8/ごみ箱
./IndegoController -u 私達*****@MA**。そして -p パスワード -q
./IndegoController -u 私達*****@MA**。そして -p パスワード -c MOW -q[/ソースコード]

 

証明書の問題により実行時に問題が発生した場合, Bosch Indego証明書をJavaキーストアにインポートする必要があります. を下げます 3 CA チェーン証明書 https://https://api.indego.iot.bosch-si.com Internet Explorerでも, DER X.509形式で保存します.

そして、それらをJavaキーストアにインポートします, パスワードの入力を求められます, キーストア 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[/ソースコード]

 

また、スクリプトを再度テストすることはなく、データを取得する方法を確認します! 私たちがそれらを悪用したいのであれば, 私が「cortacesped_estado.sh」と呼んだくだらないスクリプトの例を残します, さて、このスクリプトが行うことは、その前の出力で特定の単語を探し、MySQLを使用してデータベースに取得した値を保存することです, その後、Grafanaから簡単に攻撃して、非常にかわいいダッシュボードを取得できます.

[ソースコード]#!/ビン/バッシュ
/ホーム/pi/indego/bin/IndegoController -u 私達*****@MA**。そして -p パスワード -q > /ホーム/PI/インデゴ/estado.txt
completed='cat /home/pi/indego/estado.txt | grep が完了しました| ああ '{プリント $2}’`
completed = 'エコー"${完了///。}"`
session_operate='cat /home/pi/indego/estado.txt | grep 'ランタイムセッション / 動く:’| ああ '{プリント $5}’`
session_operate='エコー "${session_operate//,/.}"`
session_charge='cat /home/pi/indego/estado.txt | grep 'ランタイムセッション / チャージ」| ああ '{プリント $5}’`
session_charge='エコー "${session_charge//,/.}"`
total_operate='cat /home/pi/indego/estado.txt | grep' 合計ランタイム / 運営」| ああ '{プリント $5}’`
total_operate='エコー "${total_operate//,/.}"`
total_charge='cat /home/pi/indego/estado.txt | grep' 合計ランタイム / チャージ」| ああ '{プリント $5}’`
total_charge='エコー "${total_charge//,/.}"`
state='cat /home/pi/indego/estado.txt | grep 'デバイスステータス'| ああ '{プリント $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;
[/ソースコード]

 

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.

 

でももちろん, antes debemos crear la tabla en alguna base de datos de nuestro servidor MySQL, como veis es muy sencillica, は 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:

[ソースコード]CREATE TABLE `cortacesped` (
'completed' FLOAT NULL デフォルト NULL,
'session_operate' FLOAT NULL デフォルト NULL,
'session_charge' FLOAT NULL デフォルト NULL,
'total_operate' FLOAT NULL デフォルト NULL,
'total_charge' FLOAT NULL デフォルト NULL,
'status' CHAR (英語)(20) NULL デフォルト NULL,
'fecha' タイムスタンプが NULL でない 更新時のデフォルトのCURRENT_TIMESTAMP CURRENT_TIMESTAMP
)
照合='utf8mb4_general_ci’
エンジン=イノDB
ROW_FORMAT=コンパクト;[/ソースコード]

以上です! BD給餌あり, 興味のあるパネルでダッシュボードを構成することができます, この例をお伝えします, 私が使用したクエリをお伝えします. ああ、ちなみに, MySQLサーバーに対してGrafanaのデータソースが作成されていない場合, 前に😉それを行うことを忘れないでください

  • 最後の草刈り:

[ソースコード]SELECT タイムスタンプ(DATE_FORMAT(日付, '%Y/%m/%d %H:%私:%s’)) as time_sec FROM 芝刈り機 where status = '草刈り’ 日付による注文 DESC 制限 1[/ソースコード]

  • 庭を刈る:

[ソースコード]芝刈り機から完了したものを選択 日付ごとの注文 オフリミット 1[/ソースコード]

  • 最新のグラフのクエリ 15 日, 私たちが見るところ % 時間の経過とともに進行:

[ソースコード]セレクトUNIX_TIMESTAMP(日付) とてもtime_sec, 値として完了, 「時間" メートル法として CORTACÉSPED WHERE $__timeFilter(日付) and status = '草刈り’ 日付による注文, time_sec ASC[/ソースコード]

  • 総草刈り:

[ソースコード]カウントを選択(*) FROM 芝刈り機 where state='草刈り’ そして完了= 0[/ソースコード]

  • トータルカッティング:

[ソースコード]芝刈り機からtotal_operateを選択 日付による注文 説明制限 1[/ソースコード]

 

そして、私たちがそれを行っている間、, 興味のある方, これは、ロボットが芝刈りに出かけるようにプログラムするために使用するtxorraスクリプトです, cronの最初の私は月曜日にそれを実行する必要があります, 水曜日と金曜日 8:30午前, そして、最初に行うことは時間を確認することです, 現在の天気とそれが一日を通して何をするかを見てください, もし悪いことをするつもりなら (雨, 雪, 雹…) 彼は刈り取りに出かけないからだ, 私は彼をenciende_cortacesped.shと呼んでいます:

[ソースコード]#!/ビン/バッシュ
カール wttr.in/Bilbao?1 > /TMP/eltiempo.txt
grep 'rain|drizzle\|snow\|霙|freez\thunder’ /TMP/eltiempo.txt > /dev/null
そうしたら
echo "Hará o hace malo"
然も無くば
echo "Hará o hace bueno"
/ホーム/pi/indego/bin/IndegoController -u 私達*****@MA**。そして -p CONTRASEÑA -c MOW
FIの[/ソースコード]

 

面白かっただけたでしょうか, se pueden hacer muchas cosas más que iremos viendo con el tiempo, así que lo dicho, espero que os haya gustado!

 

おすすめの投稿

著者

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, 私に連絡することを躊躇しないでください, できる限りお手伝いします, シェアリングは生きていること ;) . ドキュメントを楽しむ!!!