0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS IoT CoreをNode.jsやM5StackのUIFlowで試してみたよ

Last updated at Posted at 2024-10-04

AWS IoT Coreは使ったことなかった

たぶんクラウドのブローカーサービスでいいんですよね

ちょっとMQTTのおさらい

image02_new.jpg

参考:https://kfep.jp/solution/iot-mqtt/mqtt

実は結構詰まった

参考サイト

AWS側の設定

  1. 証明書作成
    1. 作ったときしかダウンロードできないので注意
  2. ポリシー作成
    1. まずは全部許可しておこうかな
  3. 証明書にポリシーをアタッチ

一度理解したらモノ作って自動的にしてもらってもいいもの

クライアント側

参考サイトのようにmosquittoだと失敗した

windowsだとコマンドの折り返しは「`」らしい

mosquitto_pub `
    --cafile "AmazonRootCA1.pem" `
    --cert "xxxxxxxxxxxxxxx-certificate.pem.crt" `
    --key "xxxxxxxxxxxxxxx-private.pem.key" `
    --host "xxxxxxxxxxxxxxx.iot.us-east-1.amazonaws.com" `
    --port 8883 `
    --topic "messages/test" `
    --message '{"message":"hello world"}' `
    --debug

Node.jsで

コード

const awsIot = require('aws-iot-device-sdk');

const AWSIOT_ENDPOINT = 'xxxxxxxxxxxxx.amazonaws.com';
const AWSIOT_CLIENT_ID = 'xxxxxxxxxxxxx';
const AWSIOT_TOPIC = 'myTest';

const deviceIot = awsIot.device({
    keyPath:
        './keys/xxxxxxxxxxxxx-private.pem.key',
    certPath:
        './keys/xxxxxxxxxxxxx-certificate.pem.crt',
    caPath: './keys/AmazonRootCA1.pem',
    clientId: AWSIOT_CLIENT_ID,
    host: AWSIOT_ENDPOINT,
});

deviceIot.on('error', function (error) {
    console.log('error: ' + error);
});

deviceIot.on('connect', function () {
    console.log('connected');
    deviceIot.subscribe(AWSIOT_TOPIC, undefined, (err, granted) => {
        if (err) {
            console.error(err);
            return;
        }
        console.log('deviceIot subscribe ok');
    });

    deviceIot.publish(AWSIOT_TOPIC, '{ "message": "from nodejs" }', (err) => {
        if (err) {
            console.error(err);
            return;
        }
        console.log('deviceIot publish ok');
    });
});

deviceIot.on('closed', function () {
    console.log('closed');
});

deviceIot.on('message', function (topic, payload) {
    console.log('message (' + topic + ')');
    console.log(payload.toString());
});

console.log('starting...');

できた

Image from Gyazo

AWSのコンソールでテストできるのいいな

UIFlowで

これ以前にAWS用のブロックあったと思ったのになくなってた…

  1. MQTTブロックの追加
    Image from Gyazo
  2. mqttの初期化ブロック
    1. keyとcertファイルをブロックのプラスボタンから追加
    2. AWSの管理画面と見合わせて、記入
      1. 「MQTT client id」は、特に名前揃えなくても送れた
  3. 接続ブロックを初期化ブロック後に
  4. M5のボタン押したらpublishするように
  5. テスト

できた

Image from Gyazo

Image from Gyazo

M5Capsuleのボタンを押してNode.jsで受け取る

できた

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?