3.5 KiB
Nadzorujte svojo nočno lučko prek interneta - Virtualna IoT strojna oprema in Raspberry Pi
V tem delu lekcije se boste naročili na ukaze, ki jih MQTT posrednik pošlje vašemu Raspberry Pi ali virtualni IoT napravi.
Naročanje na ukaze
Naslednji korak je naročanje na ukaze, ki jih pošlje MQTT posrednik, in odzivanje nanje.
Naloga
Naročite se na ukaze.
-
Odprite projekt nočne lučke v VS Code.
-
Če uporabljate virtualno IoT napravo, poskrbite, da terminal izvaja virtualno okolje. Če uporabljate Raspberry Pi, ne boste uporabljali virtualnega okolja.
-
Dodajte naslednjo kodo za definicijami
client_telemetry_topic
:server_command_topic = id + '/commands'
server_command_topic
je MQTT tema, na katero se naprava naroči, da prejme ukaze za LED. -
Dodajte naslednjo kodo tik nad glavno zanko, za vrstico
mqtt_client.loop_start()
:def handle_command(client, userdata, message): payload = json.loads(message.payload.decode()) print("Message received:", payload) if payload['led_on']: led.on() else: led.off() mqtt_client.subscribe(server_command_topic) mqtt_client.on_message = handle_command
Ta koda definira funkcijo
handle_command
, ki bere sporočilo kot JSON dokument in išče vrednost lastnostiled_on
. Če je nastavljena naTrue
, se LED vklopi, sicer se izklopi.MQTT odjemalec se naroči na temo, na katero bo strežnik pošiljal sporočila, in nastavi funkcijo
handle_command
, ki se pokliče, ko je sporočilo prejeto.💁 Funkcija
on_message
se pokliče za vse teme, na katere ste naročeni. Če kasneje napišete kodo, ki posluša več tem, lahko iz objektamessage
, ki se prenese funkciji, pridobite temo, na katero je bilo sporočilo poslano. -
Zaženite kodo na enak način, kot ste zagnali kodo iz prejšnjega dela naloge. Če uporabljate virtualno IoT napravo, poskrbite, da je aplikacija CounterFit zagnana in da sta senzor svetlobe ter LED ustvarjena na ustreznih pinih.
-
Prilagodite nivoje svetlobe, ki jih zazna vaša fizična ali virtualna naprava. Sporočila, ki jih prejmete, in ukazi, ki jih pošljete, bodo zapisani v terminal. LED se bo prav tako vklopila ali izklopila glede na nivo svetlobe.
💁 To kodo lahko najdete v mapi code-commands/virtual-device ali v mapi code-commands/pi.
😀 Uspešno ste napisali kodo, ki omogoča, da se vaša naprava odziva na ukaze MQTT posrednika.
Omejitev odgovornosti:
Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco Co-op Translator. Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda.