【Xi IoTで映えるデモがしたい 第19回】functionsで使う関数とお作法
LEGOをスマートファクトリー化する道のり
- 画像取得
- MQTT送信(Publish)
- Xi IoT Data Pipelineで MQTT受信(Subscribe)
- その2 ←今回はココ
- Xi IoT Data Pipelineで画像処理して送信(Publish)
- 管理画面を作って確認(Subscribe/Publish)
- RasPi+BrickPiで結果受信(Subscribe)してモーター制御
- 結果に応じてモーター制御
今回はfunctions でコードを書く場合のお作法についてです
(今回はpythonに限る)
お作法
- 日本語使っちゃダメです、エスケープの中でもダメです
- Nutanix Xi IoT独自の関数として、こんなのが用意されています
- def main(ctx, msg): おまじないとして必要です
- ctx.get_timestamp: タイムスタンプ
- ctx.get_topic():トピック名取得
- msg:MQTTで飛んできたメッセージ内容
サンプルコード
サンプルとしてして、至ってシンプルに受けたモノを受け流してみました
デバッグ用に
Data Pipelineで定義したOutput(MQTTトピック名:mqtt_test)から、RasPi+BrickPiでSubして受け取るとrmsgの中身はこんな感じで受け取れました
mqtt-test - b'{"SherlockTimestamp":1576687996517,"bytes":200160,"get_config":{},"get_timestamp":1576687996517965810,"get_topic":"image"}' mqtt-test - b'{"SherlockTimestamp":1576687998064,"bytes":201588,"get_config":{},"get_timestamp":1576687998064006161,"get_topic":"image"}' mqtt-test - b'{"SherlockTimestamp":1576687999607,"bytes":202044,"get_config":{},"get_timestamp":1576687999607361208,"get_topic":"image"}' mqtt-test - b'{"SherlockTimestamp":1576688001150,"bytes":201444,"get_config":{},"get_timestamp":1576688001150778035,"get_topic":"image"}'
loggingは、XI IoT独特のちょっと特殊な扱いになりまして
import logging # Data PipelineのReal-Time logに出力 logging.info("Process %d bytes from %s at %s", len(msg), ctx.get_topic(), ctx.get_timestamp())
これを書いておけばReal-Time logに出力できるようになります
デバッグ用という感じですね
出力はこんな感じになります