MQTT

เราสามารถสร้างการเชื่อมต่อเพื่อส่งข้อมูลผ่าน MQTT ได้อย่างง่ายโดยการนำเอา API KEY จากระบบที่สร้างให้ไปตั้งค่าในอุปกรณ์เพื่อทำการเชื่อมต่อได้ทันที สามารถดูขั้นตอนการสร้าง Asset เพื่อรับ API KEY ได้ใน Assets Management

ตัวอย่าง API Key

ขั้นตอนการเชื่อมต่อ Mqtt ผ่านโปรแกรม MQTTX

ดาวน์โหลดโปรแกรม MQTTX เพื่อที่จะทำการทดลองเชื่อมต่อ MQTT มายังแพลตฟอร์ม IFRA

  • Name: ชื่อสำหรับการเชื่อมต่อ

  • Client ID: Client id ระบบจะมีการ generateให้ หรือสามารถกำหนดเองได้

  • Username: Username ที่ได้จากการสร้าง Devices

  • Password: Password ที่ได้จากการสร้าง Devices

จากนั้น กดปุ่ม Connect เพื่อทำการเชื่อมต่อ Mqtt

รูปแบบการส่งข้อมูลผ่าน MQTT จะเป็นรูปแบบ Json Arrays ตามตัวอย่างด้านล่าง

[{ "n": "<MEASUREMENT_NAME>", "v": "<NUMBER>" , "u":"<UNIT>"}]

  • MEASUREMENT_NAME : ชื่อ Measurement ที่เราจะส่งจากตัวอย่าง เราจะส่งในชื่อ Temp

  • NUMBER : ค่าที่เราต้องการส่ง จากตัวอย่างเราจะทดสอบส่งค่า 28 ไป

  • UNIT : หน่วยที่เราต้องการส่ง จากตัวอย่างเราจะส่งค่า C ไป

ตัวอย่างข้อความที่จะส่ง [{ "n": "Temp", "v": 28, "u":"C"}] จากนั้นให้ใส่ Topic ที่ได้จากระบบ และกรอกข้อความที่จะส่งลงในช่องตามภาพตัวอย่างด้านล่าง

หมายเหตุ : MEASUREMENT_NAME ต้องตรงกับชื่อ Measurement ที่สร้างใน แพลตฟอร์ม IFRA

หลังจากส่งข้อมูลเข้ามายังแพลตฟอร์ม IFRA สามารถดูข้อมูลได้จากชื่อ Measurements โดยกดปุ่ม Dedug

รูปแบบการส่งข้อมูล

รูปแบบการส่งข้อมูล ผ่าน MQTT ในระบบเราจะใช้ตามมาตรฐาน SenML (Sensor Measurement Lists ) สามารถศึกษาเพิ่มเติมได้ที่นี่ SenML

การส่งข้อมูลโดยใช้ NodeJS

var mqtt = require('mqtt');
const MQTT_SERVER = "mqtt.ifra.io";   
const MQTT_PORT = "1883";                      
const MQTT_USER = "f31fcb74-48c5-4a59-b418-af6602a1c686";         
const MQTT_PASSWORD = "2714e445-6a94-425a-82a5-b40632b901a8";    
const TOPIC = "organization/d8d74ab3-2689-4343-bf79-78f2b0083fd9/messages"      
const MEASUREMENT_NAME = "Temp"    
const UNIT = "C"                   
// Connect MQTT
var client = mqtt.connect({
    host: MQTT_SERVER,
    port: MQTT_PORT,
    username: MQTT_USER,
    password: MQTT_PASSWORD
});

// Subscribe any topic
client.on('connect', function () {
    console.log("MQTT Connect");
    client.subscribe(TOPIC, function (err) {
        if (err) {
            console.log(err);
        }
    });
});

// Receive Message and print on terminal
client.on('message', function (topic, message) {
// message is Buffer
    console.log(message.toString());
});

// Random number 0-10 send every 5 seconds
setInterval(() => {
    const RANDOM_NUMBER =  (Math.random()+9*2)
    client.publish(TOPIC, '[{ "n": "'+MEASUREMENT_NAME+'", "v": '+RANDOM_NUMBER+' , "u":"'+UNIT+'"}]');
}, 5000);

การติดตั้ง#

ใช้ตัวจัดการแพ็คเกจ MqttJS เพื่อทำการติดตั้ง

npm install mqtt --saveCopy

การใช้งาน#

node index.jsCopy

เปิด Console เราจะเห็น console log ที่เราเขียนใว้ ในการสุ่มส่งตัวเลขไปทุก 5 วินาที

Last updated