Translate

2019年4月3日水曜日

AWS IoT Core へバイナリデータが送れない件(AWS IoT CoreをDonkey Carで使う)

Donkeycar のAI処理が重くなりすぎたので、サーバ側で処理させようとMQTTブローカ経由で画像データをおくっていたのだけど、AWS環境でもやってみたいということで試してみた。

AWS IoT Coreをセットアップして、paho-mqttを使って画像データを送信しようとしたのだけどうまくいかない..

AWS IoT Python SDK を使ってもうまく送れない..


Eclipse Mosquitto や IBM Watson IoT Platform だとうまくいったのに..



..と、いろいろ調べていると以下の記事


Python AWS IoT SDK - MQTT publish with binary payload fails
https://forums.aws.amazon.com/thread.jspa?threadID=237466


にこのような記述があった。

The AWS IoT Python SDK uses Eclipse Paho Python MQTT Client as the dependency underneath. It supports the following payload type in Python:
1. str
2. bytearray
3. unicode string

(日本語訳)
AWS IoT Python SDKは、その下の依存関係としてEclipse Paho Python MQTTクライアントを使用します。 Pythonでは次のペイロードタイプをサポートしています。
1. str
2. bytearray
3. Unicode文字列

..ん?
bytesがサポートされていない?!


仕様かよ!!






bytearray(message) したら..動いた..

マジかよ..subscribe側でbytesに戻さないと..


p.s.1

AWS IoT CoreはWatson IoT Platformより画面が整理されていて使いやすい。
..のだけど、パラメータが多いし、Raspberry Pi側にプライベートキーファイルとcertificateファイル、サーバ側のルートCAファイルをおいてやらないといけないのが面倒だ..

モノのシャドウはいわゆるMQTTブローカのWill機能。AWS IoTCore上でドキュメントを定義して、これをMQTT通信経由でget/delete/update/deltaイベントコールバックで操作する。
便利そうではあるのだけど、ドキュメントがJSONデータ1つなんだよなあ..

まあキューにすればMQの悪名高きデッドレターキュー管理シないといけなくなるしなあ..



p.s.2

にしても..各ベンダのMQTTブローカって独自色を出そうと付加機能つけすぎ..
正直 paho-mqtt ライブラリで疎通取るより各ベンダ独自のSDK使ったほうが、生産性がとっても高くなることがよくわかった..
#SDKで方言対応してくれるからね

このあたり、基盤屋が対応してくれればいいのだけど、堅モノから一歩たりとも出てくれない..

せめて..死んで^H^H^H python覚えてくれないかなあ..

0 件のコメント:

ClaudeをOpenAI O1のように思考させるDifyサンプルを試す

 Difyの「探索」タブにはさまざまなサンプルが載っており、その1つに「Thinking Claude (OpenAI O1 Alternative)」というものがある。   このサンプルがどういうものか、未だに自分でも解けない以下の問題をためしに聞いてみることにした。 『人類の...