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.
93 lines
7.3 KiB
93 lines
7.3 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "90fb93446e03c38f3c0e4009c2471906",
|
|
"translation_date": "2025-08-27T21:15:59+00:00",
|
|
"source_file": "1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md",
|
|
"language_code": "th"
|
|
}
|
|
-->
|
|
# ควบคุมไฟกลางคืนของคุณผ่านอินเทอร์เน็ต - ฮาร์ดแวร์ IoT เสมือนและ Raspberry Pi
|
|
|
|
อุปกรณ์ IoT จำเป็นต้องเขียนโค้ดเพื่อสื่อสารกับ *test.mosquitto.org* โดยใช้ MQTT เพื่อส่งค่าข้อมูลจากเซ็นเซอร์วัดแสง และรับคำสั่งเพื่อควบคุม LED
|
|
|
|
ในส่วนนี้ของบทเรียน คุณจะเชื่อมต่อ Raspberry Pi หรืออุปกรณ์ IoT เสมือนของคุณกับ MQTT broker
|
|
|
|
## ติดตั้งแพ็กเกจไคลเอนต์ MQTT
|
|
|
|
เพื่อสื่อสารกับ MQTT broker คุณจำเป็นต้องติดตั้งไลบรารี MQTT ผ่านแพ็กเกจ pip บน Pi ของคุณ หรือในสภาพแวดล้อมเสมือนหากคุณใช้อุปกรณ์เสมือน
|
|
|
|
### งาน
|
|
|
|
ติดตั้งแพ็กเกจ pip
|
|
|
|
1. เปิดโปรเจกต์ nightlight ใน VS Code
|
|
|
|
1. หากคุณใช้อุปกรณ์ IoT เสมือน ให้ตรวจสอบว่า terminal กำลังรันสภาพแวดล้อมเสมือนอยู่ หากคุณใช้ Raspberry Pi คุณจะไม่ต้องใช้สภาพแวดล้อมเสมือน
|
|
|
|
1. รันคำสั่งต่อไปนี้เพื่อติดตั้งแพ็กเกจ MQTT pip:
|
|
|
|
```sh
|
|
pip3 install paho-mqtt
|
|
```
|
|
|
|
## เขียนโค้ดสำหรับอุปกรณ์
|
|
|
|
อุปกรณ์พร้อมสำหรับการเขียนโค้ดแล้ว
|
|
|
|
### งาน
|
|
|
|
เขียนโค้ดสำหรับอุปกรณ์
|
|
|
|
1. เพิ่มการนำเข้าโค้ดต่อไปนี้ที่ด้านบนของไฟล์ `app.py`:
|
|
|
|
```python
|
|
import paho.mqtt.client as mqtt
|
|
```
|
|
|
|
ไลบรารี `paho.mqtt.client` ช่วยให้อุปกรณ์ของคุณสามารถสื่อสารผ่าน MQTT ได้
|
|
|
|
1. เพิ่มโค้ดต่อไปนี้หลังจากการกำหนดเซ็นเซอร์วัดแสงและ LED:
|
|
|
|
```python
|
|
id = '<ID>'
|
|
|
|
client_name = id + 'nightlight_client'
|
|
```
|
|
|
|
แทนที่ `<ID>` ด้วย ID ที่ไม่ซ้ำกันซึ่งจะใช้เป็นชื่อของ client อุปกรณ์นี้ และในภายหลังสำหรับหัวข้อที่อุปกรณ์นี้จะเผยแพร่และสมัครรับข้อมูล broker *test.mosquitto.org* เป็นสาธารณะและมีผู้ใช้งานจำนวนมาก รวมถึงนักเรียนคนอื่น ๆ ที่กำลังทำงานในแบบฝึกหัดนี้ การมีชื่อ client MQTT และชื่อหัวข้อที่ไม่ซ้ำกันช่วยให้โค้ดของคุณไม่ชนกับของคนอื่น คุณจะต้องใช้ ID นี้เมื่อคุณสร้างโค้ดเซิร์ฟเวอร์ในส่วนถัดไปของแบบฝึกหัดนี้
|
|
|
|
> 💁 คุณสามารถใช้เว็บไซต์อย่าง [GUIDGen](https://www.guidgen.com) เพื่อสร้าง ID ที่ไม่ซ้ำกัน
|
|
|
|
`client_name` เป็นชื่อเฉพาะสำหรับ client MQTT นี้บน broker
|
|
|
|
1. เพิ่มโค้ดต่อไปนี้ด้านล่างโค้ดใหม่เพื่อสร้างวัตถุ MQTT client และเชื่อมต่อกับ MQTT broker:
|
|
|
|
```python
|
|
mqtt_client = mqtt.Client(client_name)
|
|
mqtt_client.connect('test.mosquitto.org')
|
|
|
|
mqtt_client.loop_start()
|
|
|
|
print("MQTT connected!")
|
|
```
|
|
|
|
โค้ดนี้สร้างวัตถุ client เชื่อมต่อกับ MQTT broker สาธารณะ และเริ่ม loop การประมวลผลที่รันใน thread พื้นหลังเพื่อฟังข้อความในหัวข้อที่สมัครรับข้อมูล
|
|
|
|
1. รันโค้ดในลักษณะเดียวกับที่คุณรันโค้ดจากส่วนก่อนหน้าของแบบฝึกหัด หากคุณใช้อุปกรณ์ IoT เสมือน ให้ตรวจสอบว่าแอป CounterFit กำลังรันอยู่ และเซ็นเซอร์วัดแสงและ LED ถูกสร้างขึ้นบนพินที่ถูกต้อง
|
|
|
|
```output
|
|
(.venv) ➜ nightlight python app.py
|
|
MQTT connected!
|
|
Light level: 0
|
|
Light level: 0
|
|
```
|
|
|
|
> 💁 คุณสามารถค้นหาโค้ดนี้ได้ในโฟลเดอร์ [code-mqtt/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/virtual-device) หรือ [code-mqtt/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/pi)
|
|
|
|
😀 คุณได้เชื่อมต่ออุปกรณ์ของคุณกับ MQTT broker สำเร็จแล้ว
|
|
|
|
---
|
|
|
|
**ข้อจำกัดความรับผิดชอบ**:
|
|
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้ |