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/sv/1-getting-started/lessons/4-connect-internet/wio-terminal-commands.md

4.0 KiB

Styr din nattlampa över Internet - Wio Terminal

I den här delen av lektionen kommer du att prenumerera på kommandon som skickas från en MQTT-broker till din Wio Terminal.

Prenumerera på kommandon

Nästa steg är att prenumerera på kommandon som skickas från MQTT-brokern och svara på dem.

Uppgift

Prenumerera på kommandon.

  1. Öppna nattlampa-projektet i VS Code.

  2. Lägg till följande kod längst ner i filen config.h för att definiera ämnesnamnet för kommandona:

    const string SERVER_COMMAND_TOPIC = ID + "/commands";
    

    SERVER_COMMAND_TOPIC är ämnet som enheten kommer att prenumerera på för att ta emot LED-kommandon.

  3. Lägg till följande rad i slutet av funktionen reconnectMQTTClient för att prenumerera på kommandotemat när MQTT-klienten återansluts:

    client.subscribe(SERVER_COMMAND_TOPIC.c_str());
    
  4. Lägg till följande kod under funktionen 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);
    }
    

    Den här funktionen kommer att vara callback-funktionen som MQTT-klienten anropar när den tar emot ett meddelande från servern.

    Meddelandet tas emot som en array av osignerade 8-bitars heltal och måste konverteras till en teckenarray för att behandlas som text.

    Meddelandet innehåller ett JSON-dokument och avkodas med hjälp av ArduinoJson-biblioteket. Egenskapen led_on i JSON-dokumentet läses, och beroende på värdet tänds eller släcks LED-lampan.

  5. Lägg till följande kod i funktionen createMQTTClient:

    client.setCallback(clientCallback);
    

    Den här koden sätter clientCallback som callback-funktion som anropas när ett meddelande tas emot från MQTT-brokern.

    💁 Callback-funktionen clientCallback anropas för alla ämnen som prenumereras på. Om du senare skriver kod som lyssnar på flera ämnen kan du få ämnet som meddelandet skickades till från parametern topic som skickas till callback-funktionen.

  6. Ladda upp koden till din Wio Terminal och använd Serial Monitor för att se ljusnivåerna som skickas till MQTT-brokern.

  7. Justera ljusnivåerna som detekteras av din fysiska eller virtuella enhet. Du kommer att se meddelanden tas emot och kommandon skickas i terminalen. Du kommer också att se att LED-lampan tänds och släcks beroende på ljusnivån.

💁 Du kan hitta den här koden i mappen code-commands/wio-terminal.

😀 Du har framgångsrikt programmerat din enhet att svara på kommandon från en MQTT-broker.


Ansvarsfriskrivning:
Detta dokument har översatts med hjälp av AI-översättningstjänsten Co-op Translator. Även om vi strävar efter noggrannhet, bör det noteras att automatiserade översättningar kan innehålla fel eller brister. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.