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.
IoT-For-Beginners/translations/ko/1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md

4.1 KiB

인터넷을 통해 야간등 제어하기 - Wio Terminal

이 수업의 이 부분에서는 MQTT 브로커에서 Wio Terminal로 전송된 명령을 구독하게 됩니다.

명령 구독하기

다음 단계는 MQTT 브로커에서 전송된 명령을 구독하고 이에 응답하는 것입니다.

작업

명령을 구독하세요.

  1. VS Code에서 야간등 프로젝트를 엽니다.

  2. config.h 파일의 맨 아래에 다음 코드를 추가하여 명령에 대한 토픽 이름을 정의합니다:

    const string SERVER_COMMAND_TOPIC = ID + "/commands";
    

    SERVER_COMMAND_TOPIC은 장치가 LED 명령을 받기 위해 구독할 토픽입니다.

  3. MQTT 클라이언트가 다시 연결될 때 명령 토픽을 구독하도록 reconnectMQTTClient 함수 끝에 다음 줄을 추가합니다:

    client.subscribe(SERVER_COMMAND_TOPIC.c_str());
    
  4. reconnectMQTTClient 함수 아래에 다음 코드를 추가합니다:

    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를 켜거나 끕니다.

  5. createMQTTClient 함수에 다음 코드를 추가합니다:

    client.setCallback(clientCallback);
    

    이 코드는 MQTT 브로커에서 메시지를 받을 때 호출될 콜백으로 clientCallback을 설정합니다.

    💁 clientCallback 핸들러는 구독된 모든 토픽에 대해 호출됩니다. 나중에 여러 토픽을 듣는 코드를 작성할 경우, 콜백 함수에 전달된 topic 매개변수를 통해 메시지가 전송된 토픽을 확인할 수 있습니다.

  6. 코드를 Wio Terminal에 업로드하고, Serial Monitor를 사용하여 MQTT 브로커로 전송되는 조도 수준을 확인하세요.

  7. 물리적 또는 가상 장치에서 감지된 조도 수준을 조정하세요. 터미널에서 메시지가 수신되고 명령이 전송되는 것을 볼 수 있습니다. 또한 조도 수준에 따라 LED가 켜지고 꺼지는 것을 확인할 수 있습니다.

💁 이 코드는 code-commands/wio-terminal 폴더에서 찾을 수 있습니다.

😀 MQTT 브로커에서 전송된 명령에 응답하도록 장치를 성공적으로 코딩했습니다.

면책 조항:
이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.