|
|
# ఇంటర్నెట్ ద్వారా మీ నైట్లైట్ను నియంత్రించండి - Wio టెర్మినల్
|
|
|
|
|
|
ఈ భాగంలో, మీరు MQTT బ్రోకర్ నుండి Wio టెర్మినల్కు పంపబడే కమాండ్లను సబ్స్క్రైబ్ చేస్తారు.
|
|
|
|
|
|
## కమాండ్లను సబ్స్క్రైబ్ చేయండి
|
|
|
|
|
|
తరవాతి దశ MQTT బ్రోకర్ నుండి పంపబడే కమాండ్లను సబ్స్క్రైబ్ చేసి, వాటికి స్పందించడం.
|
|
|
|
|
|
### పనిని
|
|
|
|
|
|
కమాండ్లను సబ్స్క్రైబ్ చేయండి.
|
|
|
|
|
|
1. VS కోడ్లో నైట్లైట్ ప్రాజెక్ట్ను ఓపెన్ చేయండి.
|
|
|
|
|
|
1. `config.h` ఫైల్ లో దిగువ భాగంలో క్రింది కో드를 జోడించి కమాండ్ల కోసం టాపిక్ పేరును నిర్వచించండి:
|
|
|
|
|
|
```cpp
|
|
|
const string SERVER_COMMAND_TOPIC = ID + "/commands";
|
|
|
```
|
|
|
|
|
|
`SERVER_COMMAND_TOPIC` అనేది డివైస్ సబ్స్క్రైబ్ అయ్యే టాపిక్, LED కమాండ్లను పొందడానికి.
|
|
|
|
|
|
1. MQTT క్లయింట్ మళ్లీ కనెక్ట్ అయినప్పుడు కమాండ్ టాపిక్కు సబ్స్క్రైబ్ అయ్యేలా `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 క్లయింట్ సర్వర్ నుండి సందేశం పొందినప్పుడు పిలవబడే కాల్బ్యాక్ అవుతుంది.
|
|
|
|
|
|
సందేశం అన్సైండ్ 8-బిట్ ఇంటిగర్స్ అర్రేకాగా వస్తుంది, కావున దాన్ని టెక్స్ట్గా పరిగణించేందుకు క్యారెక్టర్ అర్రేగా మార్పిడి చేయాలి.
|
|
|
|
|
|
సందేశం 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 -->
|
|
|
**స్పష్టం**:
|
|
|
ఈ పత్రం [Co-op Translator](https://github.com/Azure/co-op-translator) అనే AI అనువాద సేవను ఉపయోగించి అనువదించబడింది. మేము సరివారిగా అనువదించేందుకు ప్రయత్నించినప్పటికీ, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా తప్పులు ఉండవచ్చు. అసలు పత్రం_NATIVE_ భాషలోనిది అధికారిక మూలగా పరిగణించాలి. కీలకమైన సమాచారానికి, వృత్తిపరమైన మానవ అనువాదం చేయించుకోవడం ఉత్తమం. ఈ అనువాదం ఉపయోగం వల్ల కలిగే ఏదైనా అపార్థాలు లేదా తప్పు వివరాలకు మేమ్స్ బాధ్యత వహించము.
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |