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.
86 lines
6.8 KiB
86 lines
6.8 KiB
# គ្រប់គ្រងភ្លើងភាគន្ធរបស់អ្នកតាមអ៊ីនធឺណិត - Wio Terminal
|
|
|
|
នៅផ្នែកនេះនៃមេរៀន អ្នកនឹងចុះឈ្មោះទទួលបញ្ចប់បញ្ជា ដែលផ្ញើពីអ្នកចែកចាយ MQTT មកកាន់ Wio Terminal របស់អ្នក។
|
|
|
|
## ចុះឈ្មោះទទួលបញ្ជា
|
|
|
|
ជំហានបន្ទាប់ គឺចុះឈ្មោះទទួលបញ្ជាដែលផ្ញើពីអ្នកចែកចាយ MQTT ហើយឆ្លើយតបពួកវា។
|
|
|
|
### ភារកិច្ច
|
|
|
|
ចុះឈ្មោះទទួលបញ្ជា។
|
|
|
|
1. បើកគំរោង nightlight នៅក្នុង 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);
|
|
}
|
|
```
|
|
|
|
មុខងារនេះនឹងជាការហៅត្រឡប់មួយដែល MQTT client នឹងហៅនៅពេលដែលវាទទួលបានសារពីម៉ាស៊ីនបម្រើ។
|
|
|
|
សារមានទ្រង់ទ្រាយជាអារេនៃចំនួនពិតមិនអត្ថលេខ ៨-ប៊ីត ដូច្នេះត្រូវបម្លែងទៅជាអារេតួអក្សរដើម្បីដំណើរការជាអត្ថបទ។
|
|
|
|
សារនេះមានឯកសារ JSON ហើយត្រូវបានបកស្រាយដោយប្រើបណ្ណាល័យ ArduinoJson។ គុណលក្ខណៈ `led_on` នៃឯកសារ JSON ត្រូវបានអាន ហើយអាស្រ័យលើតម្លៃ ទឹកដៃ LED នឹងបើកឬបិទ។
|
|
|
|
1. បន្ថែមកូដខាងក្រោមទៅម៉ូឌុល `createMQTTClient`៖
|
|
|
|
```cpp
|
|
client.setCallback(clientCallback);
|
|
```
|
|
|
|
កូដនេះកំណត់ `clientCallback` ជាការហៅត្រឡប់ដែលត្រូវហៅពេលសារមកពីអ្នកចែកចាយ MQTT ។
|
|
|
|
> 💁 កម្មវិធី `clientCallback` នេះត្រូវហៅសម្រាប់ប្រធានបទទាំងអស់ដែលបានចុះឈ្មោះ។ ប្រសិនបើអ្នកបន្ថែមកូដនៅពេលក្រោយដែលស្តាប់ប្រធានបទច្រើន អ្នកអាចទទួលបានប្រធានបទដែលសារត្រូវបានផ្ញើទៅ ពីប៉ារ៉ាម៉ែត្រ `topic` ដែលផ្ញើទៅមុខងារហៅត្រឡប់។
|
|
|
|
1. ផ្ទុកកូដទៅ Wio Terminal របស់អ្នក ហើយប្រើកម្មវិធី Serial Monitor ដើម្បីមើលកម្រិតពន្លឺដែលផ្ញើទៅ MQTT broker ។
|
|
|
|
1. ច្រាស់កម្រិតពន្លឺដែលឧបករណ៍របស់អ្នកបន្ថែមទាំងផ្ទាល់ និងពិត ឬនិម្មិត។ អ្នកនឹងឃើញសារត្រូវបានទទួល និងបញ្ជាទាំងនេះត្រូវបានផ្ញើក្នុងម៉ោនីទ័រ។ អ្នកនឹងក៏ឃើញ LED បើក និងបិទផ្អែកលើកម្រិតពន្លឺ។
|
|
|
|
> 💁 អ្នកអាចរកបណ្ដុំកូដនេះនៅក្នុងថត [code-commands/wio-terminal](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/wio-terminal)។
|
|
|
|
😀 អ្នកបានកូដឧបករណ៍របស់អ្នកជោគជ័យក្នុងការឆ្លើយតបទៅបញ្ជាពីសេវាកម្ម MQTT។
|
|
|
|
---
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
**ការបដិសេធ**:
|
|
ឯកសារនេះត្រូវបានបំលែងជាភាសាផ្ទាល់តាមសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខិតខំក្នុងការបន្តអោយមានភាពត្រឹមត្រូវ ក៏ដោយ សូមអញ្ជើញយកចិត្តទុកដាក់ថា ការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬមិនត្រឹមត្រូវ។ ឯកសារដើមជាភាសាដើមគួរត្រូវបានគេយកជាឯកសារមូលដ្ឋានដែលមានអំណាចខ្ពស់បំផុត។ សម្រាប់ព័ត៌មានសំខាន់ណាស់ ការបកប្រែដោយមនុស្សដែលមានជំនាញគឺត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសពីការប្រើប្រាស់ការបកប្រែនេះទេ។
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |