この記事では、Google Android ThingsハードウェアをIoT Platformに接続する方法について説明します。 この例では、室内空気試験プロジェクトが使用される。
ハードウェア
- 本プロジェクトのハードウェア一覧
次の表では、室内空気試験プロジェクトで使用されるハードウェアについて説明します。
ハードウェア 画像 補足 NXP Pico i.MX7D
開発ボード

Androidのもの1.0に基づいています。
詳細については、「NXP Pico i.MX7Dの開発者ガイド」をご参照ください。
説明 Raspberry Pi も使用できます。 詳細については、「Raspberry Piサーバーのリモート制御」をご参照ください。DHT12
温湿度センサー

集積回路間 (I2C) データ通信方式をサポートする。 ZE08-CH2O
ホルムアルデヒド検出センサー

ユニバーサル非同期送受信機 (UART) データ通信方式をサポートします。 - ハードウェア接続図

- 温度および湿度センサー (DHT12) のSCL (クロックライン) およびSDA (データライン) ピンを、開発ボードのI2C SCLおよびSDAピンに接続します。
- ホルムアルデヒド検出センサー (ZE08-CH2O) のTXD (データ送信) ピンを開発ボードのRXD (データ受信) ピンに接続し、ZE08-CH2OのRXDピンを開発ボードのTXDピンに接続します。
IoT Platformコンソールでプロダクトとデバイスを作成する
- IoT Platformコンソールにログインします。
- プロダクトを作成します。
[概要] ページで、[すべての環境] をクリックします。 [すべての環境] タブで、管理するインスタンスを見つけ、インスタンスIDまたはインスタンス名をクリックします。
- 左側のナビゲーションウィンドウで、[デバイス] > [製品] を選択します。
- [プロダクト] ページで、[プロダクトの作成] をクリックしてプロダクトを作成します。 詳細については、「プロダクトの作成」をご参照ください。
- TSLモデルを作成します。
- プロダクトの作成後に表示されるページで、[TSLの作成] をクリックします。
- [プロダクト詳細] ページで、[機能の定義] タブをクリックします。 をクリックし、[自己定義フィーチャーの追加] をクリックします。
- 次の表に示すプロパティを追加します。
プロパティ ID データ型 有効値 説明 Temperature temperature float -100に50 温度と湿度センサーDHT12によって収集された温度データ。 Humidity humidity float 0から100 温度と湿度センサーDHT12によって収集された湿度データ。 Formaldehyde concentration ch2o double 0から3 ホルムアルデヒド検出センサーZE08-CH2Oによって収集されたホルムアルデヒド濃度。 - [オンラインリリース] をクリックして、TSLモデルを公開します。
- デバイスを作成します。
[デバイス] ページで、[デバイスの追加] をクリックして、デバイスを製品に追加します。 詳細については、「デバイスの作成」をご参照ください。
Android Thingsデバイスを開発する
- Android Studioを使用してAndroid Thingsプロジェクトを作成し、ネットワーク権限を追加します。
<uses-permission android:name="android.permission.INTERNET" /> eclipse.paho.mqttをGradleファイルに追加します。実装 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0 '- I2Cを使用して、温度および湿度センサーDHT12からデータを読み取るようにデバイスを設定します。
private void readDataFromI2C() { try { byte[] data = new byte[5]; i2cDevice.readRegBuffer(0x00, data, data.length); // check data if ((データ [0] + データ [1] + データ [2] + データ [3]) % 256 !=データ [4]) { humidity = temperature = 0; return; } // humidity data humidity = Double.valueOf(String.valueOf(data[0]) + "." + String.valueOf (データ [1]); Log.d(TAG, "humidity: " + humidity); // temperature data if (data[3] < 128) { temperature = Double.valueOf(String.valueOf(data[2]) + "." + String.valueOf (データ [3]); } else { temperature = Double.valueOf("-" + String.valueOf(data[2]) + "." + String.valueOf (データ [3] - 128); } Log.d(TAG, "temperature: " + temperature); } catch(IOException e){ Log.e(TAG, "readDataFromI2C error " + e.getMessage(), e); } } - UARTを使用して、ホルムアルデヒド検出センサーZE08-CH2Oからデータを読み取るようにデバイスを設定します。
try { // data buffer byte[] buffer = new byte[9]; while (uartDevice.read(buffer, buffer.length) > 0) { if (checkSum(buffer)) { ppbCh2o = buffer[4] * 256 + buffer[5]; ch2o = ppbCh2o / 66.64 * 0.08; } else { ch2o = ppbCh2o = 0; } Log.d(TAG, "ch2o: " + ch2o); } } catch(IOException e){ Log.e(TAG, "Ze08CH2O read data error " + e.getMessage(), e); } - デバイスをIoT Platformに接続し、データをレポートします。
/* ペイロード形式 { "id": 123243, "params": { "temperature": 25.6, "humidity": 60.3, "ch2o": 0.048 }, "method": "thing.event.property.post" } * / MqttMessage message = new MqttMessage(payload.getBytes("utf-8")); message.setQos(1); 文字列pubTopYourPc = "/sys/${YourProductKey}/${YourDeviceName}/thing/event/property/post"; mqttClient.publish(pubTopic、メッセージ);
GitHubのaliyun-iot-androidthings-nxpにアクセスして、完全なサンプルプロジェクトをダウンロードできます。
デバイスのリアルタイムデータを表示
デバイスの起動後、IoT Platformコンソールにログインします。 [デバイスの詳細] ページで、[ステータス] セクションでデバイスのリアルタイムプロパティデータを表示します。
