konchangakita

KPSを一番楽しんでいたブログ 会社の看板を背負いません 転載はご自由にどうぞ

【Xi IoTで映えるデモがしたい 第17回】LEGO(RasPi+BrickPi)をプログラミングしてみる その2MQTT送信

まずはラズパイカメラで写真をひたすら撮り続けることはできました

LEGOをスマートファクトリー化する道のり

  1. 画像取得
  2. MQTT送信(Publish) ←今回はココ
  3. Xi IoT Data Pipelineで MQTT受信(Subscribe)
  4. Xi IoT Data Pipelineで画像処理して送信(Publish)
  5. 管理画面を作って確認(Subscribe/Publish)
  6. RasPi+BrickPiで結果受信(Subscribe)してモーター制御
  7. 結果に応じてモーター制御

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で確認してましょうかね
f:id:konchangakita:20191217013504p:plain

このData Pipelineを下記のように設定します

f:id:konchangakita:20191218031144p:plain

  • Input:あらかじめ登録したData Sourceをカテゴリで指定
  • Transformation:とりあえず今回はnone
  • Output:Service Domainを選択して、Endpoint TypeをMQTTを指定します

Create!


作ったData Pipelineを選んで、「View All 1 Deployments」をクリックして

f:id:konchangakita:20191217015035p:plain
作ったData Pipelineのページ

Real-Timeログを確認してみましょう


f:id:konchangakita:20191217015811p:plain
View Real-Time Logsを確認する


どうやらトピック名「image」で受け取れているみたいですね

f:id:konchangakita:20191218024410p:plain
Real-Timeログの画面

ちなみに失敗していると下記のように「Topic xxxx idle~」っていうのがでちゃいます

f:id:konchangakita:20191218024502p:plain
sub失敗の図

本当は、Pub/Subも自分んとこの上でやればいいんでしょうが、敢えてXi IoTポータル使ってみました
次はXi IoTポータルサイト上でSubした内容をいじってみよう