すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:デバイスデータをDingTalkグループにプッシュする

最終更新日:Apr 17, 2025

このトピックでは、データ転送ルールを使用して、デバイスによって送信されたデータをDingTalkグループにプッシュする方法について説明します。 この例では、熱湿度計が使用される。

シナリオ

オフィスルームの温度湿度計によって送信されたデータは、DingTalkチャットボットに送信する必要があります。

処理中

温湿度传感器流转数据流程

ステップ1: プロダクトとデバイスを作成する

  1. IoT Platformコンソールにログインします。

  2. [概要] ページで、[すべての環境] をクリックします。 [すべての環境] タブで、管理するインスタンスを見つけ、インスタンスIDまたはインスタンス名をクリックします。

  3. 左側のナビゲーションウィンドウで、 [製品] を選択し、[熱湿度計] という名前の製品を作成します。 製品を作成するときに、[ノードタイプ] パラメーターを [直接接続デバイス] に設定します。

    他のパラメーターにはデフォルト値を使用します。 詳細については、「プロダクトの作成」をご参照ください。

  4. [TSLの作成] をクリックします。 [機能の定義] タブで、[ドラフトの編集] をクリックします。 [デフォルトモジュール] セクションで、製品にカスタム機能を追加します。

    この例では、温度と湿度の特性が製品に追加されています。 詳細については、「TSL機能の追加」をご参照ください。物模型

  5. 左側のナビゲーションウィンドウで、[デバイス] > [デバイス] を選択します。 熱湿度計製品の下にTH_sensorという名前のデバイスを作成します。 詳細については、「デバイスの作成」をご参照ください。

    [デバイスが追加されました] ダイアログボックスで、[詳細] をクリックして、ProductKey、DeviceName、およびDeviceSecretを含むデバイス証明書を取得します。 デバイス証明書は安全な場所に保存する必要があります。 証明書は、デバイスとIoT Platform間の通信のための重要な資格情報です。

  6. [デバイスリスト] タブで、作成したデバイスを見つけ、[操作] 列の [表示] をクリックします。 デバイスの詳細ページが表示されます。 [タグ情報] セクションで、[編集] をクリックしてデバイスにタグを追加します。

    この例では、次の表に記載されているタグが追加されています。 詳細については、「タグ」をご参照ください。

    キー

    説明

    tag

    ルーム00XS、フロアF、ビルX、YYタウン

    デバイスの場所。

    deviceISN

    T20180102X

    デバイスのシリアル番号 (SN) 。

ステップ2: Function Computeの設定

Function Computeは、イベント駆動型で完全マネージド型のコンピューティングサービスです。 Function Computeは、Java、Node.js、およびPythonをサポートしています。 詳細は、「Function Compute の使用方法 (How to use Function Compute)」をご参照ください。

  1. DingTalkチャットボットのwebhook URLを指定します。

    1. DingTalkにログオンします。

    2. DingTalkチャットウィンドウで、アイコンをクリックし群设置ます。 表示されるパネルで、[グループアシスタント] をクリックします。

    3. [ロボットの追加] をクリックし、添加机器人アイコンをクリックします。

    4. [カスタム] をクリックし、[追加] をクリックします。

    5. Chatbot名とセキュリティ設定パラメーターを設定し、[<DingTalkカスタムロボットサービス利用規約> を読み、同意した] を選択し、[完了] をクリックします。

    6. [コピー] をクリックしてwebhook URLをPCに保存します。

  2. Function Computeスクリプトを記述します。

    この例では、Node.jsランタイム環境が使用されています。 この関数は、IoT Platformからデバイスデータを取得し、指定されたDingTalkメッセージ形式に基づいてデータを処理し、HTTPS POSTメソッドを使用して、指定されたDingTalkチャットボットのwebhook URLにデータを送信します。 デバイスデータには、デバイスの場所、デバイスのSN、リアルタイムの温度と湿度のデータ、およびデバイスがIoT Platformにデータを送信した時刻が含まれます。

    スクリプトを作成した後、スクリプトファイルにindex.jsという名前を付け、ファイルをindex.zipという名前のパッケージに圧縮します。 次のサンプルコードは、スクリプトの例を示しています。

    accessTokenをwebhook URLのaccess_tokenパラメーターの値に置き換える必要があります。

    const https = require ('http');
    const accessToken = 'webhook URLのaccess_tokenパラメーターの値を指定します。module.exports.handler = function (イベント、コンテキスト、コールバック) {
    var eventJson = JSON.parse(event.toString());
    // DingTalkメッセージ形式
    const postData = JSON.stringify({
    "msgtype": "markdown" 、"markdown": {
    "title": "Thermo-hygrometer" 、"text": "##### 温度と湿度の詳細 \n" +
    "> デバイスの場所:" + eventJson.tag + "\n\n" +
    "> Device SN: " + eventJson.isn + "\n\n" +
    "> Temperature: " + eventJson.temperature + "℃\n\n" +
    "> 湿度:" + eventJson. Humidity + "%\n\n" +
    "> ######" + eventJson.time + "published by [IoT Platform](https://www.aliyun.com/product/iot) \n"
    },
    "at": {
    "isAtAll": false
    }
    });
    const options = {
    ホスト名: 'oapi .dingtalk.com '、ポート: 443、パス: '/robot/send?access_token=' + accessToken,
    メソッド: 'POST' 、ヘッダー: {
    'Content-Type': 'application/json' 、'Content-Length': Buffer.byteLength(postData)
    }
    };
    const req = https.request (オプション、(res) => {
    res.setEncoding('utf8');
    res.on('data', (chunk) => {});
    res.on('end ', () => {
    コールバック (null、'success');
    });
    });
    // エラーを返します。
    req.on('error', (e) => {
    コールバック (e);
    });
    // データを書き込みます。
    req.write(postData);
    req.end();
    }; 
  3. サービスと関数の作成

    1. Alibaba Cloud Function Computeの有効化 詳細については、「Function Computeの有効化」をご参照ください。

    2. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。

    3. [サービスの作成] をクリックし、Nameパラメーターを [IoT_Service] に設定し、[OK] をクリックします。

    4. [サービス] ページで、[IoT_Service] をクリックし、[関数の作成] をクリックします。

    5. [関数の作成] ページで、[組み込みランタイムの使用] を選択します。

    6. 次の図に示すパラメーターを設定します。 他のパラメーターにはデフォルト値を使用します。 次に、[作成] をクリックします。

      • 基本設定

        次の図に示すように、関数名パラメーターをpushData2DingTalkに設定し、リクエストタイプパラメーターをイベントリクエストに設定します。

        基本设置

      • コード

        次の図に示すように、[ランタイム環境] ドロップダウンリストから [Node.js 14] を選択し、作成したindex.zipファイルをアップロードします。

        函数代码

ステップ3: Function Computeへのデータ転送

TH_sensorデバイスから送信された温度と湿度のデータをpushData2DingTalk関数に転送するように、データ転送ルールを設定します。

  1. IoT PlatformコンソールIoT Platformコンソールに移動し、インスタンスの詳細ページに移動します。 左側のナビゲーションウィンドウで、 を選択し、[ルールの作成] をクリックします。 ルール名Temperature_humidity_forwardingを入力し、[OK] をクリックします。

    重要

    最新バージョンのデータ転送ページが表示されたら、ページの右上隅にある [前のバージョンに戻る] をクリックします。 以前のバージョンのデータ転送ページが表示されたら、[ルールの作成] をクリックします。

  2. [データ転送ルール] ページで、[SQL文の書き込み] をクリックして、データの処理に使用するSQL文を書き込みます。

    この例では、次のフィールドを指定してデータをフィルタリングします。

    • デバイス情報を指定するフィールド: deviceName、tag、deviceISN。

    • 送信されたデータを指定するフィールド: 温度と湿度。

    サンプルSQL文:

    SELECT
    deviceName() をdeviceNameとして、属性 ('tag') をタグとして、属性 ('deviceISN') をisnとして、items.temperature.valueを温度として、items.humidity.valueを湿度として、タイムスタンプ ('yyyy-MM-dd HH:mm:ss ')
    から
    "/g5j3o ***/TH_sensorthing/event/property/post" 

    编写SQL

  3. [データ転送ルール] ページで、[操作の追加] をクリックして、データをFunction Computeに転送します。

    この例では、IoT_ServiceサービスとpushData2DingTalk機能が選択されています。 詳細については、「Function Computeへのデータ転送」をご参照ください。转发数据

  4. [データ転送] ページで、作成したTemperature_humidity_Forwardingルールを見つけ、[操作] 列の [開始] をクリックしてルールを有効にします。

ステップ4: 温度湿度計デバイスをIoT Platformに接続し、温度と湿度のデータを送信します

デバイス証明書を使用して、MQTT (Message Queuing Telemetry Transport) を介してデバイスをIoT Platformに接続します。 次に、温度と湿度のデータの送信をシミュレートします。

  1. Node.jsサンプルコードを保存するために、iot_device.jsなどのJavaScriptファイルをPCに作成します。

    次のNode.jsサンプルコードは、デバイスをIoT Platformに接続してデータを送信する方法の例を示しています。

    const mqtt = require('aliyun-iot-mqtt');
    // 1。 デバイス証明書情報を指定します。
    var options = {
        productKey: "g18l ***" 、
        deviceName: "TH_sensor" 、
        deviceSecret: "b2e6e4f102458d84 ***" 、
        ホスト: "iot-cn-*** .mqtt.iothub.aliyuncs.com"
    };
    
    // 2。 MQTT 接続を確立します。
    const client = mqtt.getAliyunIotMqttClient (オプション);
    // IoT Platformからコマンドを受信するために使用されるトピックを購読します。
    client.subscribe('/${options.productKey}/${options.de viceName}/user/get')
    client.on('message', function(topic, message) {
        console.log("topic" + topic)
        console.log (「メッセージ」 + メッセージ)
    })
    
    setInterval(function() {
        // 3. 指定された間隔で温度と湿度のデータを送信します。
        client.publish('/sys/${options.productKey}/${options.de viceName}/thing/event/property/post', getPostData(), { qos: 0 });
    }, 5*1000;
    
    関数getPostData() {
        const payloadJson = {
            id: Date.now() 、
            バージョン: "1.0" 、
            params: {
                温度: Math.floor((Math.random() * 20) + 10) 、
                湿度: Math.floor(((Math.random() * 20) + 10)
            },
            メソッド: "thing.event.property.post"
    
        }
        console.log("payloadJson" + JSON.stringify(payloadJson))
        JSON.stringify(payloadJson) を返します。} 

    パラメーター

    説明

    productKey

    g18l ***

    デバイスの作成後に保存したデバイス証明書情報。

    IoT PlatformコンソールのTH_sensorデバイスの [デバイスの詳細] ページで情報を表示できます。

    deviceName

    TH_sensor

    deviceSecret

    b2e6e4f102458d84 ***

    host

    iot-cn-*** .mqtt.iothub.aliyuncs.com

    デバイスがMQTT経由でIoT Platformにアクセスするために使用するエンドポイント。

    エンドポイントの取得方法については、「インスタンスのエンドポイントの管理」をご参照ください。

  2. MQTTライブラリがダウンロードされたら、コマンドプロンプトウィンドウに次のコマンドを入力し、iot_device.jsコードを実行してデバイスを起動します

結果

次の応答は、デバイスがIoT Platformに接続され、データが送信されたことを示します。

payloadJson {"id":161848 ***,"version":"1.0","params":{"temperature":22,"humidity":15},"method":"thing.event.property.post"}

次の図は、DingTalkチャットボットが受信するメッセージを示しています。

钉钉机器人