AWS IoTにmqttcliからつなぐ¶
mqttcli という、CLIで動くMQTTクライアントを開発し、公開しています。
AWS IoTに対して、このmqttcliから接続してみましょう。
mqttcliのダウンロード¶
mqttcli files から、
Linux (arm/amd64)
FreeBSD (arm/amd64)
darwin (amd64)
Windows (amd64)
が用意してありますので自身のアーキテクチャにあったバイナリをダウンロードして下さい。その後、 chmod u+x mqttcli と実行権限を付与して下さい。
AWS IoTでthingsを作る¶
AWSコンソールから AWS IoT を開きます。
Create Resource から Create Thing を選びます
Nameを入力して、 Create を押します
下の一覧に先ほど入力した名前のThingが出てくるので、選択し、右のタグから Connect a Device をクリックします。
Connect a Device という画面が出てくるので、 NodeJS を押し、 Generate Certificate and Policy を押します
10秒ぐらい経つと、
Download Public Key
Download Private Key
Download Certificate
という三つのファイルをダウンロードするように指示されるので、全部ダウンロードしておきます。
Confirm & Start Connecting を押します。すると、以下の様なJSONが表示されるので、コピーして、ファイルに保存しておきます。
{ "host": "A3HVHEAALED.iot.ap-northeast-1.amazonaws.com", "port": 8883, "clientId": "something", "thingName": "something", "caCert": "root-CA.crt", "clientCert": "2a338xx2xxf-certificate.pem.crt", "privateKey": "aad380efffx-private.pem.key" }
root-CA.crt というファイルを AWS IoT SDKのここ に書いてあるとおり、 こちらのSymantecのページ から取得してください。
先ほどダウンロードした三つのファイルとJSONファイル、そして、 root-CA.crt を同じディレクトリに置いて下さい。
以上で準備は終わりです。
AWS IoTに接続¶
ファイルを入れたディレクトリに移動し、 以下のようにmqttcliを起動します。 -t でtopicを指定しますが、 $ をエスケープする必要があるかもしれません。 --conf で指定するのは先ほど保存したJSONファイルです。 -d はデバッグ用です。
$ mqttcli sub -t "\$aws/things/something/shadow/update" --conf something.json -d
INFO[0000] Broker URI: ssl://A3HVHEAALED.iot.ap-northeast-1.amazonaws.com:8883
INFO[0000] Topic: $aws/things/something/shadow/update
INFO[0000] connecting...
INFO[0000] client connected
と出れば成功です。MQTTで接続できています。
Thing Shadowを更新¶
Thing Shadowを更新するには以下の様なJSONを送ります。
{
"state": {
"reported": {
"from": "mqttcli"
}
}
}
mqttcliで送ってみましょう
echo '{"state": {"reported": {"from": "mqttcli"} } }"' | mqttcli pub -t "\$aws/things/something/shadow/update" --conf something.json -d -s
これで、AWS Consoleから見ると、stateが書き換わっているはずです。
このように、mqttcliとを使って、AWS IoTを触ることが出来ました。同様のことがmosquitto_subでもできることを確認しています。
さいごに¶
MQTTを直に叩くのではなく、AWS IoTのSDKを使いましょう。そうすればこんなふうにMQTTを意識する必要はありません。
Comments
comments powered by Disqus