# Ελέγξτε το νυχτερινό σας φως μέσω του Διαδικτύου - Wio Terminal Σε αυτό το μέρος του μαθήματος, θα εγγραφείτε σε εντολές που αποστέλλονται από έναν MQTT broker στο Wio Terminal σας. ## Εγγραφή σε εντολές Το επόμενο βήμα είναι να εγγραφείτε στις εντολές που αποστέλλονται από τον MQTT broker και να ανταποκριθείτε σε αυτές. ### Εργασία Εγγραφείτε σε εντολές. 1. Ανοίξτε το έργο του νυχτερινού φωτός στο VS Code. 1. Προσθέστε τον παρακάτω κώδικα στο τέλος του αρχείου `config.h` για να ορίσετε το όνομα του θέματος για τις εντολές: ```cpp const string SERVER_COMMAND_TOPIC = ID + "/commands"; ``` Το `SERVER_COMMAND_TOPIC` είναι το θέμα στο οποίο η συσκευή θα εγγραφεί για να λαμβάνει εντολές για το LED. 1. Προσθέστε την παρακάτω γραμμή στο τέλος της συνάρτησης `reconnectMQTTClient` για να εγγραφείτε στο θέμα εντολών όταν ο MQTT client επανασυνδέεται: ```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(); 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 ανάβει ή σβήνει. 1. Προσθέστε τον παρακάτω κώδικα στη συνάρτηση `createMQTTClient`: ```cpp client.setCallback(clientCallback); ``` Αυτός ο κώδικας ορίζει τη `clientCallback` ως τη callback που θα καλείται όταν λαμβάνεται ένα μήνυμα από τον MQTT broker. > 💁 Ο χειριστής `clientCallback` καλείται για όλα τα θέματα στα οποία έχει γίνει εγγραφή. Εάν αργότερα γράψετε κώδικα που ακούει σε πολλαπλά θέματα, μπορείτε να λάβετε το θέμα στο οποίο στάλθηκε το μήνυμα από την παράμετρο `topic` που περνά στη συνάρτηση callback. 1. Μεταφορτώστε τον κώδικα στο Wio Terminal σας και χρησιμοποιήστε το Serial Monitor για να δείτε τα επίπεδα φωτός που αποστέλλονται στον MQTT broker. 1. Ρυθμίστε τα επίπεδα φωτός που ανιχνεύονται από τη φυσική ή εικονική σας συσκευή. Θα δείτε μηνύματα να λαμβάνονται και εντολές να αποστέλλονται στο τερματικό. Θα δείτε επίσης το LED να ανάβει και να σβήνει ανάλογα με το επίπεδο φωτός. > 💁 Μπορείτε να βρείτε αυτόν τον κώδικα στον φάκελο [code-commands/wio-terminal](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/wio-terminal). 😀 Έχετε προγραμματίσει με επιτυχία τη συσκευή σας να ανταποκρίνεται σε εντολές από έναν MQTT broker. --- **Αποποίηση ευθύνης**: Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης [Co-op Translator](https://github.com/Azure/co-op-translator). Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.