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
7.6 KiB
86 lines
7.6 KiB
# ഇന്റർനെറ്റിൽ നിങ്ങളുടെ നൈറ്റ്ലൈറ്റ് നിയന്ത്രിക്കുക - Wio ടെർമിനൽ
|
|
|
|
പാഠത്തിന്റെ ഈ ഭാഗത്തിൽ, നിങ്ങൾ നിങ്ങളുടെ Wio ടെർമിനലിലേക്ക് MQTT ബ്രോക്കറിൽ നിന്ന് അയയ്ക്കുന്ന കമാൻഡുകൾ സബ്സ്ക്രൈബ് ചെയ്യും.
|
|
|
|
## കമാൻഡുകൾക്ക് സബ്സ്ക്രൈബ് ചെയ്യുക
|
|
|
|
അടുത്ത ഘട്ടം MQTT ബ്രോക്കറിൽ നിന്ന് അയക്കപ്പെടുന്ന കമാൻഡുകൾക്ക് സബ്സ്ക്രൈബ് ചെയ്യുകയും അവയ്ക്ക് പ്രതികരിക്കുകയും ചെയ്യുകയാണ്.
|
|
|
|
### ടാസ്ക്
|
|
|
|
കമാൻഡുകൾക്ക് സബ്സ്ക്രൈബ് ചെയ്യുക.
|
|
|
|
1. VS കോഡിൽ നൈറ്റ്ലൈറ്റ് പ്രോജക്ട് തുറക്കുക.
|
|
|
|
1. കമാൻഡുകളുടെ ടോപിക് നാമം നിർവചിക്കാൻ `config.h` ഫയലിന്റെ താഴ_ENDൽ പ്രവർത്തിക്കുക:
|
|
|
|
```cpp
|
|
const string SERVER_COMMAND_TOPIC = ID + "/commands";
|
|
```
|
|
|
|
`SERVER_COMMAND_TOPIC` എന്നത് ഡിവൈസ് കമാൻഡ് ലഭിക്കാൻ സബ്സ്ക്രൈബ് ചെയ്യേണ്ട ടോപിക് ആണ്.
|
|
|
|
1. MQTT ക്ലയന്റ് വീണ്ടും കണക്ട് ചെയ്തപ്പോൾ കമാൻഡ് ടോപിക് için സബ്സ്ക്രൈബ് ചെയ്യുന്നതിനായി `reconnectMQTTClient` ഫംഗ്ഷന്റെ അവസാനം താഴെയുള്ള ലൈൻ ചേർക്കുക:
|
|
|
|
```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 ബ്രോക്കറിൽ നിന്ന് സന്ദേശം കിട്ടുമ്പോൾ കോൾ ചെയ്യപ്പെടുന്ന കോള്ബാക്ക് ആകും.
|
|
|
|
സന്ദേശം unsigned 8-bit ഇന്റജർകളുടെ ഒരു അറേ ആയി ലഭിക്കുന്നത് കൊണ്ട്, ടെക്സ്റ്റായ ബോധിപ്പിക്കാൻ ഇത് കേരക്റ്റർ അറേയിൽ മാറ്റേണ്ടതുണ്ട്.
|
|
|
|
സന്ദേശം JSON ഡോക്യുമെന്റ് അടങ്ങിയതാണ്, ArduinoJson ലൈബ്രറി ഉപയോഗിച്ച് ഡീകോഡ് ചെയ്യുന്നു. JSON ഡോക്യുമെന്റിലെ `led_on` പ്രോപ്പർട്ടി വായിച്ചുതുടർന്ന്, മൂല്യത്തിന് അനുസരിച്ച് LED ഓണോ ഓഫോ ചെയ്യും.
|
|
|
|
1. `createMQTTClient` ഫംഗ്ഷനിലേക്ക് താഴെയുള്ള കോഡ് ചേർക്കുക:
|
|
|
|
```cpp
|
|
client.setCallback(clientCallback);
|
|
```
|
|
|
|
MQTT ബ്രോക്കറിൽ നിന്ന് സന്ദേശം ലഭിക്കുമ്പോൾ വിളിക്കേണ്ട കോള്ബാക്കായി `clientCallback` സെറ്റ് ചെയ്യുന്നു.
|
|
|
|
> 💁 `clientCallback` ഹാൻ들ർ സബ്സ്ക്രൈബ് ചെയ്ത എല്ലാ ടോപിക്കുകൾക്കും വിളിക്കപ്പെടുന്നു. ഭാവിയിൽ നിങ്ങൾ ഒരേ സമയം പല ടോപിക്കൾ കേൾക്കുന്നതിനായി കോഡ് എഴുതുകയാണെങ്കിൽ, സന്ദേശം അയക്കപ്പെട്ട ടോപിക് `topic` പാരാമീറ്ററിൽ നിന്ന് ലഭിക്കും.
|
|
|
|
1. കോഡ് നിങ്ങളുടെ Wio ടെർമിനലിലേക്ക് അപ്ലോഡ് ചെയ്ത്, സീരിയൽ മോണിറ്റർ ഉപയോഗിച്ച് MQTT ബ്രോക്കറിൽ അയയ്ക്കുന്ന ലൈറ്റ് ലെവലുകൾ കാണുക.
|
|
|
|
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) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നമുക്ക് ശരിയായി വിവർത്തനത്തിന് ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, സ്വയമേവ നടന്ന പരിഭാഷയിൽ തെറ്റുകളും അക്നിശ്ചിതത്വങ്ങളും ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ സവിശേഷ ഭാഷയിലുള്ള യഥാർത്ഥ ദസ്താവേസ് authoritative സ്രോതസ്സായി കണക്കാക്കണം. അനിവാര്യമായ വിവരങ്ങൾക്ക് പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിച്ച് ഉണ്ടായ ഏതെല്ലാമനീതിയും തെറ്റിദ്ധാരണകൾക്കും ഞങ്ങൾ ഉത്തരവാദിത്വം വഹിക്കാറില്ല.
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |