[Archive] AWS IoT Core
このライブラリはアーカイブされており、サポートされなくなりました。AWS IoT Coreライブラリの最新バージョンは、こちらから入手できます。
IOT_COREライブラリを使用してAWS IoT Coreサービスと通信し、トピックにメッセージを発行できます。例えば、温湿度センサから得られた測定値をIoT Coreのトピックにそのまま公開できます。IoT Coreトピックに測定値を送信するには、次のユーザー情報が必要です。
- Certificate:AWS IoT Coreで作成された認証で使用される証明書
- Key: 認証に使用されるAWS IoT Coreの秘密鍵
- Host:AWS IoT設定ページからAWS IoTに接続するためのカスタムエンドポイント
- Topic:AWS IoT Coreで送信するトピック
AWSでIoT Coreの初期設定をし、必要な情報を取得した後、IOT_COREライブラリを使用してpublish
とpost
という2つの主要な操作を実行できます。
IOT_COREオブジェクトを作成するときは、 cert
、 key
、 host
、topic
というパラメータを設定する必要があります
これらのパラメータは、一般的なJavaScriptオブジェクト内で、次のような文字列型のkeyとvalueのペアとして設定できます。
オプション
var iotOptions = {
cert: "CERTIFICATE",
key: "RSA_PRIVATE_KEY",
host: "host.to.iot.region.amazonaws.com",
topic: "topicToPublishTo",
};
オブジェクト作成
オプションを設定すると、データをIOT_COREライブラリに直接渡すことができるようになります。
var iotCore = new IOT_CORE(iotOptions);
パラメータ関数
iotCore
オブジェクトを作成した後、前述の各パラメータは、対応する関数を呼び出して変更し、文字列として新しい値{value}
を渡すことができます。
cert
:setCert({value})
key
:setKey({value})
host
:setHost({value})
topic
:setTopic({value})
同時に複数のパラメータを設定する場合、それらをJavaScriptオブジェクト内にまとめてsetParameters({parametersObject})
関数呼び出しに渡すか、個々の設定関数を呼び出しチェーンで呼び出すことができます。例: iotCore.setCert("NEW_CERTIFICATE").setKey("RSA_KEY").setHost("awsHost.com")
.
IoT Coreライブラリオブジェクトを作成し初期パラメータを設定すると、publish()
またはpost()
の呼び出しを使用して設定されたトピックに発行する準備が整います。
関数
POST
post({payload})
を呼び出す場合、ペイロードオブジェクト(データを含むJSONオブジェクト(推奨)または文字列)を送信する必要があります。post
機能は、設定されたパラメータを使用して、ペイロードを設定されたトピックでAWS IoT Coreに発行します。POSTは、HTTPを介して通信を行います.
PUBLISH
publish({payload})
を呼び出す場合、AWS Iot Coreトピックに発行するために文字列型のペイロードを送信する必要があります。その後、publish
機能は、設定されたトピックのペイロードを送信します。 Publishはmqtt publish呼び出しを行い、IoT Core のトピックにデータを送信します。
サンプルコード
次のスクリプトは、IOT_COREライブラリとHTS221センサライブラリをインポートした後のスクリプトの例です。
NEQTO IOボードのインターフェースをオンにして、HTTS21センサと対話する新しいI2Cデバイスオブジェクトを作成します。
また、IoT Coreの初期設定をし、設定されたトピックに発行する準備ができているIoTオブジェクトを作成します。
HTS221センサからIoT Core トピックに、一定量の読み取り(この場合は10秒間隔)で温度と湿度の値を送信するため、whileループが設定され、ループ内でtempHumi
と呼ばれる変数に値が読み取られます。tempHumi
の読み取り結果は{temp: <value>, humi <value>}
のようなJSONオブジェクトであり、そのままiot.post()
メソッドに渡されます。
// IMPORTED LIBRARIES
// - HTS221
// - IOT_CORE
// Logging setup
log.setLevel(2); //-1:NONE 0:ERROR 1:WARNING 2:DEBUG 3:TRACE
log.printLevel(2); //0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
log.clear();
//Use standard interface of NEQTO I/O board
nqEx.enI2CS(true);
nqEx.enI2CL(true);
//I2C Config
var baudrate = 400000;
var i2c = new I2C(1);
i2c.open(baudrate);
var hts = new HTS221(i2c);
hts.init();
var NUM_READINGS = 10;
var iteration = 0;
// Set IoT Core user options
var iotOptions = {
cert: "-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n",
key: "-----BEGIN RSA PRIVATE KEY-----\n-----END RSA PRIVATE KEY-----\n",
host: "host.to.iot.core.amazonaws.com",
topic: "topicToPublishTo"
}
var iot = new IOT_CORE(iotOptions);
// Main Loop
// Read temperature and humidity and publish to iot core topic every 10 seconds
while (iteration < NUM_READINGS) {
// HTS returns an object like { temp: <value>, humi: <value> }
var tempHumi = hts.getResult();
iot.post(tempHumi);
setTimeout(10000).wait();
iteration += 1;
}