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": "6754c915dae64ba70fcd5e52c37f3adf",
|
|
"translation_date": "2025-08-27T12:35:38+00:00",
|
|
"source_file": "1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md",
|
|
"language_code": "pa"
|
|
}
|
|
-->
|
|
# ਆਪਣੀ ਨਾਈਟਲਾਈਟ ਨੂੰ ਇੰਟਰਨੈਟ 'ਤੇ ਕੰਟਰੋਲ ਕਰੋ - Wio Terminal
|
|
|
|
ਇਸ ਪਾਠ ਦੇ ਇਸ ਹਿੱਸੇ ਵਿੱਚ, ਤੁਸੀਂ ਆਪਣੇ Wio Terminal ਲਈ MQTT ਬ੍ਰੋਕਰ ਤੋਂ ਭੇਜੇ ਗਏ ਕਮਾਂਡਾਂ ਨੂੰ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋਗੇ।
|
|
|
|
## ਕਮਾਂਡਾਂ ਨੂੰ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ
|
|
|
|
ਅਗਲਾ ਕਦਮ MQTT ਬ੍ਰੋਕਰ ਤੋਂ ਭੇਜੇ ਗਏ ਕਮਾਂਡਾਂ ਨੂੰ ਸਬਸਕ੍ਰਾਈਬ ਕਰਨਾ ਅਤੇ ਉਨ੍ਹਾਂ ਦਾ ਜਵਾਬ ਦੇਣਾ ਹੈ।
|
|
|
|
### ਟਾਸਕ
|
|
|
|
ਕਮਾਂਡਾਂ ਨੂੰ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ।
|
|
|
|
1. VS Code ਵਿੱਚ ਨਾਈਟਲਾਈਟ ਪ੍ਰੋਜੈਕਟ ਖੋਲ੍ਹੋ।
|
|
|
|
1. `config.h` ਫਾਈਲ ਦੇ ਅੰਤ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ ਤਾਂ ਜੋ ਕਮਾਂਡਾਂ ਲਈ ਟਾਪਿਕ ਨਾਮ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕੇ:
|
|
|
|
```cpp
|
|
const string SERVER_COMMAND_TOPIC = ID + "/commands";
|
|
```
|
|
|
|
`SERVER_COMMAND_TOPIC` ਉਹ ਟਾਪਿਕ ਹੈ ਜਿਸਨੂੰ ਡਿਵਾਈਸ LED ਕਮਾਂਡਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਬਸਕ੍ਰਾਈਬ ਕਰੇਗਾ।
|
|
|
|
1. `reconnectMQTTClient` ਫੰਕਸ਼ਨ ਦੇ ਅੰਤ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੀ ਲਾਈਨ ਸ਼ਾਮਲ ਕਰੋ ਤਾਂ ਜੋ MQTT ਕਲਾਇੰਟ ਦੁਬਾਰਾ ਕਨੈਕਟ ਹੋਣ 'ਤੇ ਕਮਾਂਡ ਟਾਪਿਕ ਨੂੰ ਸਬਸਕ੍ਰਾਈਬ ਕਰ ਸਕੇ:
|
|
|
|
```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);
|
|
```
|
|
|
|
ਇਹ ਕੋਡ `clientCallback` ਨੂੰ MQTT ਬ੍ਰੋਕਰ ਤੋਂ ਸੁਨੇਹਾ ਪ੍ਰਾਪਤ ਹੋਣ 'ਤੇ ਕਾਲ ਕਰਨ ਲਈ ਕਾਲਬੈਕ ਵਜੋਂ ਸੈਟ ਕਰਦਾ ਹੈ।
|
|
|
|
> 💁 `clientCallback` ਹੈਂਡਲਰ ਸਾਰੇ ਸਬਸਕ੍ਰਾਈਬ ਕੀਤੇ ਟਾਪਿਕਾਂ ਲਈ ਕਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਜੇ ਤੁਸੀਂ ਬਾਅਦ ਵਿੱਚ ਐਸਾ ਕੋਡ ਲਿਖਦੇ ਹੋ ਜੋ ਕਈ ਟਾਪਿਕਾਂ ਨੂੰ ਸੁਣਦਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਕਾਲਬੈਕ ਫੰਕਸ਼ਨ ਨੂੰ ਪਾਸ ਕੀਤੇ `topic` ਪੈਰਾਮੀਟਰ ਤੋਂ ਸੁਨੇਹਾ ਭੇਜੇ ਗਏ ਟਾਪਿਕ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ।
|
|
|
|
1. ਕੋਡ ਨੂੰ ਆਪਣੇ Wio Terminal 'ਤੇ ਅੱਪਲੋਡ ਕਰੋ, ਅਤੇ Serial Monitor ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੇਖੋ ਕਿ ਰੌਸ਼ਨੀ ਦੇ ਪੱਧਰ MQTT ਬ੍ਰੋਕਰ ਨੂੰ ਭੇਜੇ ਜਾ ਰਹੇ ਹਨ।
|
|
|
|
1. ਆਪਣੇ ਫਿਜ਼ਿਕਲ ਜਾਂ ਵਰਚੁਅਲ ਡਿਵਾਈਸ ਦੁਆਰਾ ਪਤਾ ਲਗਾਏ ਗਏ ਰੌਸ਼ਨੀ ਦੇ ਪੱਧਰ ਨੂੰ ਢੁਕਵਾਓ। ਤੁਸੀਂ ਟਰਮੀਨਲ ਵਿੱਚ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਹੋਣ ਅਤੇ ਕਮਾਂਡਾਂ ਭੇਜੀਆਂ ਜਾ ਰਹੀਆਂ ਦੇਖੋਗੇ। ਤੁਸੀਂ ਇਹ ਵੀ ਦੇਖੋਗੇ ਕਿ ਰੌਸ਼ਨੀ ਦੇ ਪੱਧਰ ਦੇ ਅਨੁਸਾਰ LED ਚਾਲੂ ਜਾਂ ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ।
|
|
|
|
> 💁 ਤੁਸੀਂ ਇਹ ਕੋਡ [code-commands/wio-terminal](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/wio-terminal) ਫੋਲਡਰ ਵਿੱਚ ਲੱਭ ਸਕਦੇ ਹੋ।
|
|
|
|
😀 ਤੁਸੀਂ ਸਫਲਤਾਪੂਰਵਕ ਆਪਣੇ ਡਿਵਾਈਸ ਨੂੰ MQTT ਬ੍ਰੋਕਰ ਤੋਂ ਕਮਾਂਡਾਂ ਦਾ ਜਵਾਬ ਦੇਣ ਲਈ ਕੋਡ ਕੀਤਾ ਹੈ।
|
|
|
|
---
|
|
|
|
**ਅਸਵੀਕਰਤੀ**:
|
|
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦਾ ਯਤਨ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਛਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਲਿਖਿਆ ਦਸਤਾਵੇਜ਼ ਪ੍ਰਮਾਣਿਕ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੇ ਪ੍ਰਯੋਗ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ। |