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

6.1 KiB

Ελέγξτε το νυχτερινό σας φως μέσω του Διαδικτύου - Wio Terminal

Σε αυτό το μέρος του μαθήματος, θα εγγραφείτε σε εντολές που αποστέλλονται από έναν MQTT broker στο Wio Terminal σας.

Εγγραφή σε εντολές

Το επόμενο βήμα είναι να εγγραφείτε στις εντολές που αποστέλλονται από τον MQTT broker και να ανταποκριθείτε σε αυτές.

Εργασία

Εγγραφείτε σε εντολές.

  1. Ανοίξτε το έργο του νυχτερινού φωτός στο VS Code.

  2. Προσθέστε τον παρακάτω κώδικα στο τέλος του αρχείου config.h για να ορίσετε το όνομα του θέματος για τις εντολές:

    const string SERVER_COMMAND_TOPIC = ID + "/commands";
    

    Το SERVER_COMMAND_TOPIC είναι το θέμα στο οποίο η συσκευή θα εγγραφεί για να λαμβάνει εντολές για το LED.

  3. Προσθέστε την παρακάτω γραμμή στο τέλος της συνάρτησης reconnectMQTTClient για να εγγραφείτε στο θέμα εντολών όταν ο MQTT client επανασυνδέεται:

    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);
    }
    

    Αυτή η συνάρτηση θα είναι η callback που θα καλείται από τον MQTT client όταν λαμβάνει ένα μήνυμα από τον server.

    Το μήνυμα λαμβάνεται ως πίνακας από unsigned 8-bit ακέραιους, οπότε πρέπει να μετατραπεί σε πίνακα χαρακτήρων για να αντιμετωπιστεί ως κείμενο.

    Το μήνυμα περιέχει ένα έγγραφο JSON, το οποίο αποκωδικοποιείται χρησιμοποιώντας τη βιβλιοθήκη ArduinoJson. Η ιδιότητα led_on του εγγράφου JSON διαβάζεται, και ανάλογα με την τιμή της, το LED ανάβει ή σβήνει.

  5. Προσθέστε τον παρακάτω κώδικα στη συνάρτηση createMQTTClient:

    client.setCallback(clientCallback);
    

    Αυτός ο κώδικας ορίζει τη clientCallback ως τη callback που θα καλείται όταν λαμβάνεται ένα μήνυμα από τον MQTT broker.

    💁 Ο χειριστής clientCallback καλείται για όλα τα θέματα στα οποία έχει γίνει εγγραφή. Εάν αργότερα γράψετε κώδικα που ακούει σε πολλαπλά θέματα, μπορείτε να λάβετε το θέμα στο οποίο στάλθηκε το μήνυμα από την παράμετρο topic που περνά στη συνάρτηση callback.

  6. Μεταφορτώστε τον κώδικα στο Wio Terminal σας και χρησιμοποιήστε το Serial Monitor για να δείτε τα επίπεδα φωτός που αποστέλλονται στον MQTT broker.

  7. Ρυθμίστε τα επίπεδα φωτός που ανιχνεύονται από τη φυσική ή εικονική σας συσκευή. Θα δείτε μηνύματα να λαμβάνονται και εντολές να αποστέλλονται στο τερματικό. Θα δείτε επίσης το LED να ανάβει και να σβήνει ανάλογα με το επίπεδο φωτός.

💁 Μπορείτε να βρείτε αυτόν τον κώδικα στον φάκελο code-commands/wio-terminal.

😀 Έχετε προγραμματίσει με επιτυχία τη συσκευή σας να ανταποκρίνεται σε εντολές από έναν MQTT broker.


Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.