Topik ini menjelaskan cara mendorong data yang dikirimkan oleh perangkat ke grup DingTalk menggunakan aturan penerusan data. Dalam contoh ini, thermo-hygrometer digunakan.
Skenario
Data yang dikirimkan oleh thermo-hygrometer di ruang kantor harus dikirim ke chatbot DingTalk.
Proses

Langkah 1: Buat produk dan perangkat
Masuk ke Konsol IoT Platform.
Di halaman Overview, klik All environment. Pada tab Semua lingkungan, temukan instance yang ingin Anda kelola dan klik ID atau nama instance tersebut.
Di panel navigasi sisi kiri, pilih Products dan buat produk bernama thermo-hygrometer. Saat membuat produk, atur parameter Node Type ke Perangkat Terhubung Langsung.
Gunakan nilai default untuk parameter lainnya. Untuk informasi lebih lanjut, lihat Buat Produk.
Klik Buat TSL. Di tab Define Feature, klik Edit Draft. Di bagian Default Module, tambahkan fitur kustom ke produk.
Dalam contoh ini, properti suhu dan kelembaban ditambahkan ke produk. Untuk informasi lebih lanjut, lihat Tambahkan Fitur TSL.

Di panel navigasi sisi kiri, pilih . Buat perangkat bernama TH_sensor di bawah produk thermo-hygrometer. Untuk informasi lebih lanjut, lihat Buat Perangkat.
Di kotak dialog The devices have been added, klik Learn More untuk mendapatkan sertifikat perangkat yang berisi ProductKey, DeviceName, dan DeviceSecret. Anda harus menyimpan sertifikat perangkat di tempat yang aman. Sertifikat ini adalah kredensial utama untuk komunikasi antara perangkat dan IoT Platform.
Di tab Device List, temukan perangkat yang Anda buat dan klik View di kolom Aksi. Halaman device details akan muncul. Di bagian Tag Information, klik Edit untuk menambahkan tag ke perangkat.
Dalam contoh ini, tag yang dijelaskan dalam tabel berikut ditambahkan. Untuk informasi lebih lanjut, lihat Tag.
Kunci
Nilai
Deskripsi
tag
Ruang 00XS, Lantai F, Gedung X, Kota YY
Lokasi perangkat.
deviceISN
T20180102X
Nomor seri (SN) perangkat.
Langkah 2: Konfigurasikan Function Compute
Function Compute adalah layanan komputasi terkelola sepenuhnya dan berbasis acara. Function Compute mendukung Java, Node.js, dan Python. Untuk informasi lebih lanjut, lihat Cara Menggunakan Function Compute.
Tentukan URL webhook dari chatbot DingTalk.
Masuk ke DingTalk di PC Anda.
Di jendela obrolan DingTalk, klik ikon
. Di panel yang muncul, klik Group Assistant.Klik Tambah Robot, lalu klik ikon
.Klik Custom, lalu klik Add.
Konfigurasikan parameter Nama Chatbot dan Pengaturan Keamanan, pilih Saya telah membaca dan menyetujui <Ketentuan Layanan Robot Kustom DingTalk>, lalu klik Finished.
Klik Salin untuk menyimpan URL webhook di PC Anda.
Tulis skrip Function Compute.
Dalam contoh ini, lingkungan runtime Node.js digunakan. Fungsi memperoleh data perangkat dari IoT Platform, memproses data berdasarkan format pesan DingTalk yang ditentukan, lalu mengirimkan data ke URL webhook dari chatbot DingTalk tertentu menggunakan metode HTTPS POST. Data perangkat mencakup lokasi perangkat, SN perangkat, data suhu dan kelembaban real-time, serta waktu ketika perangkat mengirimkan data ke IoT Platform.
Setelah Anda menulis skrip, beri nama file skrip sebagai index.js, lalu kompres file tersebut menjadi paket bernama index.zip. Contoh kode berikut memberikan contoh skrip.
Anda harus mengganti accessToken dengan nilai parameter access_token dalam URL webhook.
// Komentar: Memerlukan modul https const https = require('https'); // Komentar: Tentukan nilai parameter access_token dalam URL webhook. const accessToken = 'Tentukan nilai parameter access_token dalam URL webhook.' module.exports.handler = function(event, context, callback) { var eventJson = JSON.parse(event.toString()); // Format pesan DingTalk const postData = JSON.stringify({ "msgtype": "markdown", "markdown": { "title": "Thermo-hygrometer", "text": "#### Detail suhu dan kelembaban\n" + "> Lokasi perangkat: " + eventJson.tag + "\n\n" + "> SN perangkat: " + eventJson.isn+ "\n\n" + "> Suhu: " + eventJson.temperature + "℃\n\n" + "> Kelembaban: " + eventJson.humidity + "%\n\n" + "> ###### " + eventJson.time + " diterbitkan oleh [IoT Platform](https://www.aliyun.com/product/iot) \n" }, "at": { "isAtAll": false } }); const options = { hostname: 'oapi.dingtalk.com', port: 443, path: '/robot/send?access_token=' + accessToken, method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(postData) } }; const req = https.request(options, (res) => { res.setEncoding('utf8'); res.on('data', (chunk) => {}); res.on('end', () => { callback(null, 'success'); }); }); // Mengembalikan kesalahan. req.on('error', (e) => { callback(e); }); // Tulis data. req.write(postData); req.end(); };Buat Layanan dan Fungsi.
Aktifkan Alibaba Cloud Function Compute. Untuk informasi lebih lanjut, lihat Aktifkan Function Compute.
Masuk ke Konsol Function Compute. Di panel navigasi sisi kiri, klik Layanan & Fungsi.
Klik Buat Layanan, atur parameter Nama ke IoT_Service, lalu klik OK.
Di halaman Layanan, klik IoT_Service, lalu klik Create Function.
Di halaman Buat Fungsi, pilih Use Built-in Runtime.
Konfigurasikan parameter yang ditampilkan pada gambar berikut. Gunakan nilai default untuk parameter lainnya. Lalu, klik Buat.
Basic Settings
Atur parameter Nama Fungsi ke pushData2DingTalk, dan atur parameter Jenis Permintaan ke Event Requests, seperti yang ditunjukkan pada gambar berikut.

Code
Pilih Node.js 14 dari daftar drop-down Lingkungan Runtime, lalu unggah file index.zip yang Anda buat, seperti yang ditunjukkan pada gambar berikut.

Langkah 3: Teruskan data ke Function Compute
Konfigurasikan aturan penerusan data untuk meneruskan data suhu dan kelembaban yang dikirimkan oleh perangkat TH_sensor ke fungsi pushData2DingTalk.
Pergi ke Konsol IoT Platform Konsol IoT Platform, lalu pergi ke halaman detail instance Anda. Di panel navigasi sisi kiri, pilih , lalu klik Create Rule. Masukkan nama aturan Temperature_humidity_forwarding dan klik OK.
PentingJika halaman Penerusan Data versi terbaru muncul, klik Back to Previous Version di sudut kanan atas halaman. Ketika halaman Penerusan Data versi sebelumnya muncul, klik Create Rule.
Di halaman Aturan Penerusan Data, klik Write SQL Statement untuk menulis pernyataan SQL yang digunakan untuk memproses data.
Dalam contoh ini, bidang berikut ditentukan untuk menyaring data:
Bidang yang menentukan informasi perangkat: deviceName, tag, dan deviceISN.
Bidang yang menentukan data yang dikirimkan: suhu dan kelembaban.
Contoh pernyataan SQL:
SELECT deviceName() as deviceName, attribute('tag') as tag, attribute('deviceISN') as isn, items.temperature.value as temperature, items.humidity.value as humidity, timestamp('yyyy-MM-dd HH:mm:ss') as time FROM "/g5j3o***/TH_sensorthing/event/property/post"
Di halaman Aturan Penerusan Data, klik Add Operation untuk meneruskan data ke Function Compute.
Dalam contoh ini, layanan IoT_Service dan fungsi pushData2DingTalk dipilih. Untuk informasi lebih lanjut, lihat Teruskan Data ke Function Compute.

Di halaman Penerusan Data, temukan aturan Temperature_humidity_forwarding yang Anda buat, dan klik Start di kolom Aksi untuk mengaktifkan aturan.
Langkah 4: Hubungkan perangkat thermo-hygrometer ke IoT Platform dan kirimkan data suhu dan kelembaban
Hubungkan perangkat ke IoT Platform melalui Message Queuing Telemetry Transport (MQTT) menggunakan sertifikat perangkat. Lalu, simulasi pengiriman data suhu dan kelembaban.
Buat file JavaScript, seperti iot_device.js, di PC Anda untuk menyimpan contoh kode Node.js.
Contoh kode Node.js berikut memberikan contoh tentang cara menghubungkan perangkat ke IoT Platform dan mengirimkan data.
const mqtt = require('aliyun-iot-mqtt'); // 1. Tentukan informasi sertifikat perangkat. var options = { productKey: "g18l***", deviceName: "TH_sensor", deviceSecret: "b2e6e4f102458d84***", host: "iot-cn-***.mqtt.iothub.aliyuncs.com" }; // 2. Bentuk koneksi MQTT. const client = mqtt.getAliyunIotMqttClient(options); // Berlangganan topik yang digunakan untuk menerima perintah dari IoT Platform. client.subscribe(`/${options.productKey}/${options.deviceName}/user/get`) client.on('message', function(topic, message) { console.log("topic " + topic) console.log("message " + message) }) setInterval(function() { // 3. Kirim data suhu dan kelembaban pada interval tertentu. client.publish(`/sys/${options.productKey}/${options.deviceName}/thing/event/property/post`, getPostData(), { qos: 0 }); }, 5 * 1000); function getPostData() { const payloadJson = { id: Date.now(), version: "1.0", params: { temperature: Math.floor((Math.random() * 20) + 10), humidity: Math.floor((Math.random() * 20) + 10) }, method: "thing.event.property.post" } console.log("payloadJson " + JSON.stringify(payloadJson)) return JSON.stringify(payloadJson); }Parameter
Contoh
Deskripsi
productKey
g18l***
Informasi sertifikat perangkat yang Anda simpan setelah membuat perangkat.
Anda dapat melihat informasi tersebut di halaman Device Details dari perangkat TH_sensor di Konsol IoT Platform.
deviceName
TH_sensor
deviceSecret
b2e6e4f102458d84***
host
iot-cn-***.mqtt.iothub.aliyuncs.com
Titik akhir yang digunakan oleh perangkat untuk mengakses IoT Platform melalui MQTT.
Untuk informasi tentang cara mendapatkan titik akhir, lihat Kelola titik akhir instance.
Setelah pustaka MQTT diunduh, masukkan perintah berikut di jendela Command Prompt dan jalankan kode iot_device.js untuk memulai perangkat:
Hasil
Tanggapan berikut menunjukkan bahwa perangkat terhubung ke IoT Platform dan data telah dikirim:
payloadJson {"id":161848***,"version":"1.0","params":{"temperature":22,"humidity":15},"method":"thing.event.property.post"}Gambar berikut menunjukkan pesan yang diterima oleh chatbot DingTalk.
