You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/th/1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md

93 lines
6.6 KiB

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "6754c915dae64ba70fcd5e52c37f3adf",
"translation_date": "2025-08-27T21:13:29+00:00",
"source_file": "1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md",
"language_code": "th"
}
-->
# ควบคุมไฟกลางคืนของคุณผ่านอินเทอร์เน็ต - Wio Terminal
ในส่วนนี้ของบทเรียน คุณจะสมัครรับคำสั่งที่ส่งมาจาก MQTT broker ไปยัง Wio Terminal ของคุณ
## สมัครรับคำสั่ง
ขั้นตอนถัดไปคือการสมัครรับคำสั่งที่ส่งมาจาก MQTT broker และตอบสนองต่อคำสั่งเหล่านั้น
### งานที่ต้องทำ
สมัครรับคำสั่ง
1. เปิดโปรเจกต์ไฟกลางคืนใน VS Code
1. เพิ่มโค้ดต่อไปนี้ที่ด้านล่างของไฟล์ `config.h` เพื่อกำหนดชื่อหัวข้อสำหรับคำสั่ง:
```cpp
const string SERVER_COMMAND_TOPIC = ID + "/commands";
```
`SERVER_COMMAND_TOPIC` คือหัวข้อที่อุปกรณ์จะสมัครรับเพื่อรับคำสั่งควบคุม LED
1. เพิ่มบรรทัดต่อไปนี้ที่ท้ายฟังก์ชัน `reconnectMQTTClient` เพื่อสมัครรับหัวข้อคำสั่งเมื่อ MQTT client เชื่อมต่อใหม่:
```cpp
client.subscribe(SERVER_COMMAND_TOPIC.c_str());
```
1. เพิ่มโค้ดต่อไปนี้ด้านล่างฟังก์ชัน `reconnectMQTTClient`
```cpp
void clientCallback(char *topic, uint8_t *payload, unsigned int length)
{
char buff[length + 1];
for (int i = 0; i < length; i++)
{
buff[i] = (char)payload[i];
}
buff[length] = '\0';
Serial.print("Message received:");
Serial.println(buff);
DynamicJsonDocument doc(1024);
deserializeJson(doc, buff);
JsonObject obj = doc.as<JsonObject>();
bool led_on = obj["led_on"];
if (led_on)
digitalWrite(D0, HIGH);
else
digitalWrite(D0, LOW);
}
```
ฟังก์ชันนี้จะเป็น callback ที่ MQTT client จะเรียกใช้เมื่อได้รับข้อความจากเซิร์ฟเวอร์
ข้อความที่ได้รับจะมาในรูปแบบอาร์เรย์ของตัวเลข 8 บิตแบบ unsigned ดังนั้นจึงต้องแปลงเป็นอาร์เรย์ตัวอักษรเพื่อให้สามารถจัดการเป็นข้อความได้
ข้อความมีเอกสาร JSON และจะถูกถอดรหัสโดยใช้ ArduinoJson library โดยจะอ่าน property `led_on` จากเอกสาร JSON และขึ้นอยู่กับค่าที่ได้รับ LED จะถูกเปิดหรือปิด
1. เพิ่มโค้ดต่อไปนี้ในฟังก์ชัน `createMQTTClient`:
```cpp
client.setCallback(clientCallback);
```
โค้ดนี้ตั้งค่า `clientCallback` เป็น callback ที่จะถูกเรียกใช้เมื่อมีข้อความถูกส่งมาจาก MQTT broker
> 💁 ตัวจัดการ `clientCallback` จะถูกเรียกใช้สำหรับทุกหัวข้อที่สมัครรับ หากคุณเขียนโค้ดที่ฟังหลายหัวข้อในภายหลัง คุณสามารถรับหัวข้อที่ข้อความถูกส่งมาจากพารามิเตอร์ `topic` ที่ส่งไปยังฟังก์ชัน callback
1. อัปโหลดโค้ดไปยัง Wio Terminal ของคุณ และใช้ Serial Monitor เพื่อดูระดับแสงที่ถูกส่งไปยัง MQTT broker
1. ปรับระดับแสงที่ตรวจจับได้โดยอุปกรณ์จริงหรืออุปกรณ์เสมือน คุณจะเห็นข้อความที่ถูกส่งและคำสั่งที่ถูกส่งใน terminal นอกจากนี้คุณจะเห็น LED ถูกเปิดและปิดขึ้นอยู่กับระดับแสง
> 💁 คุณสามารถค้นหาโค้ดนี้ได้ในโฟลเดอร์ [code-commands/wio-terminal](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/wio-terminal)
😀 คุณได้เขียนโค้ดให้อุปกรณ์ของคุณตอบสนองต่อคำสั่งจาก MQTT broker สำเร็จแล้ว
---
**ข้อจำกัดความรับผิดชอบ**:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาที่เป็นต้นฉบับควรถือว่าเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้