【Xi IoTで映えるデモがしたい 第17回】LEGO(RasPi+BrickPi)をプログラミングしてみる その2MQTT送信
まずはラズパイカメラで写真をひたすら撮り続けることはできました
LEGOをスマートファクトリー化する道のり
- 画像取得
- MQTT送信(Publish) ←今回はココ
- Xi IoT Data Pipelineで MQTT受信(Subscribe)
- Xi IoT Data Pipelineで画像処理して送信(Publish)
- 管理画面を作って確認(Subscribe/Publish)
- RasPi+BrickPiで結果受信(Subscribe)してモーター制御
- 結果に応じてモーター制御
BrickPiにIoTさせる為のお作法という記事で、事前にBrickPiにはMQTTでPub/Subさせる準備をしていました
こいつを使って、前回実装したBase64でエンコードした画像をMQTTでPublishしてやりたいと思います
まず、Xi IoTでMQTTを送受信行う為のお作法として、Data Sourceへ登録した際の証明書設置します
証明書は証明書の入手方法はこちら
ダウンロードしたファイルを解凍すると3つのファイルが中に入っています
- Sensor Certificate (Public Key)
- Sensor Private Key
- Root CA Certificate (Public Key)
それぞれのファイル名の先頭に数字文字列がついていますが、今回は外しておきます
- xxxxxxxx_certificate.crt → certificate.crt
- xxxxxxxx_privateKey.key → privateKey.key
- xxxxxxxx_CACertificate.crt → CACertificate.crt
この3つのファイルをBrickPi上に配置します
$ pwd /home/pi/smart-factory/mqtt-cert $ ls -l total 12 -rw-r--r-- 1 pi pi 1330 Jul 7 17:11 CACertificate.crt -rw-r--r-- 1 pi pi 1444 Jul 7 17:11 certificate.crt -rw-r--r-- 1 pi pi 1679 Jul 7 17:11 privateKey.key
こんな感じ、
EDGE_SERVERにはService Domain(Edge OS)のIPアドレスをしてやります
これでトピック名「image」でカメラの画像を飛ばしています
とりあえず実行して、MQTT飛ばしてみましょう
$ python3 picamera_mqtt_test.py
Connected on Edge with result code 0
(Connected on Edge with result code 0が出ていればひとまずOK)
それではちゃんと飛んでるか、Xi IoTポータル上で確認してみましょう
こちらでご紹介したData Pipelineで確認してましょうかね
このData Pipelineを下記のように設定します
- Input:あらかじめ登録したData Sourceをカテゴリで指定
- Transformation:とりあえず今回はnone
- Output:Service Domainを選択して、Endpoint TypeをMQTTを指定します
Create!
作ったData Pipelineを選んで、「View All 1 Deployments」をクリックして
Real-Timeログを確認してみましょう
どうやらトピック名「image」で受け取れているみたいですね
ちなみに失敗していると下記のように「Topic xxxx idle~」っていうのがでちゃいます
本当は、Pub/Subも自分んとこの上でやればいいんでしょうが、敢えてXi IoTポータル使ってみました
次はXi IoTポータルサイト上でSubした内容をいじってみよう