3.4 KiB
Kontrolirajte svoju noćnu lampu putem Interneta - Virtualni IoT hardver i Raspberry Pi
U ovom dijelu lekcije pretplatit ćete se na naredbe poslane s MQTT brokera na vaš Raspberry Pi ili virtualni IoT uređaj.
Pretplata na naredbe
Sljedeći korak je pretplata na naredbe poslane s MQTT brokera i odgovaranje na njih.
Zadatak
Pretplatite se na naredbe.
-
Otvorite projekt noćne lampe u VS Code-u.
-
Ako koristite virtualni IoT uređaj, provjerite je li terminal pokrenut u virtualnom okruženju. Ako koristite Raspberry Pi, nećete koristiti virtualno okruženje.
-
Dodajte sljedeći kod nakon definicija
client_telemetry_topic
:server_command_topic = id + '/commands'
server_command_topic
je MQTT tema na koju će se uređaj pretplatiti kako bi primao naredbe za LED. -
Dodajte sljedeći kod neposredno iznad glavne petlje, nakon linije
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
Ovaj kod definira funkciju
handle_command
koja čita poruku kao JSON dokument i traži vrijednost svojstvaled_on
. Ako je postavljeno naTrue
, LED se uključuje, inače se isključuje.MQTT klijent se pretplaćuje na temu na koju će poslužitelj slati poruke i postavlja funkciju
handle_command
da se pozove kada se primi poruka.💁 Obradnik
on_message
poziva se za sve teme na koje ste pretplaćeni. Ako kasnije napišete kod koji sluša više tema, možete dobiti temu na koju je poruka poslana iz objektamessage
proslijeđenog funkciji obrade. -
Pokrenite kod na isti način kao što ste pokrenuli kod iz prethodnog dijela zadatka. Ako koristite virtualni IoT uređaj, provjerite je li CounterFit aplikacija pokrenuta i jesu li senzor svjetla i LED stvoreni na ispravnim pinovima.
-
Prilagodite razine svjetla koje detektira vaš fizički ili virtualni uređaj. Poruke koje se primaju i naredbe koje se šalju bit će ispisane u terminalu. LED će se također uključivati i isključivati ovisno o razini svjetla.
💁 Ovaj kod možete pronaći u mapi code-commands/virtual-device ili mapi code-commands/pi.
😀 Uspješno ste programirali svoj uređaj da odgovara na naredbe s MQTT brokera.
Odricanje od odgovornosti:
Ovaj dokument je preveden pomoću AI usluge za prevođenje Co-op Translator. Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda.