3.4 KiB
Styr nattlampen din over Internett - Virtuell IoT-maskinvare og Raspberry Pi
I denne delen av leksjonen vil du abonnere på kommandoer sendt fra en MQTT-broker til din Raspberry Pi eller virtuelle IoT-enhet.
Abonner på kommandoer
Neste steg er å abonnere på kommandoene som sendes fra MQTT-brokeren og reagere på dem.
Oppgave
Abonner på kommandoer.
-
Åpne nattlampe-prosjektet i VS Code.
-
Hvis du bruker en virtuell IoT-enhet, sørg for at terminalen kjører det virtuelle miljøet. Hvis du bruker en Raspberry Pi, trenger du ikke bruke et virtuelt miljø.
-
Legg til følgende kode etter definisjonene av
client_telemetry_topic
:server_command_topic = id + '/commands'
server_command_topic
er MQTT-emnet som enheten vil abonnere på for å motta LED-kommandoer. -
Legg til følgende kode rett over hovedløkken, etter linjen
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
Denne koden definerer en funksjon,
handle_command
, som leser en melding som et JSON-dokument og ser etter verdien avled_on
-egenskapen. Hvis den er satt tilTrue
, slås LED-en på, ellers slås den av.MQTT-klienten abonnerer på emnet som serveren vil sende meldinger på og setter
handle_command
-funksjonen til å bli kalt når en melding mottas.💁
on_message
-handleren kalles for alle emner det abonneres på. Hvis du senere skriver kode som lytter til flere emner, kan du hente emnet meldingen ble sendt til framessage
-objektet som sendes til handler-funksjonen. -
Kjør koden på samme måte som du kjørte koden fra forrige del av oppgaven. Hvis du bruker en virtuell IoT-enhet, sørg for at CounterFit-appen kjører og at lyssensoren og LED-en er opprettet på de riktige pinnene.
-
Juster lysnivåene som oppdages av din fysiske eller virtuelle enhet. Meldinger som mottas og kommandoer som sendes, vil bli skrevet til terminalen. LED-en vil også slås av og på avhengig av lysnivået.
💁 Du finner denne koden i mappen code-commands/virtual-device eller code-commands/pi.
😀 Du har nå kodet enheten din til å reagere på kommandoer fra en MQTT-broker.
Ansvarsfraskrivelse:
Dette dokumentet er oversatt ved hjelp av AI-oversettelsestjenesten Co-op Translator. Selv om vi streber etter nøyaktighet, vær oppmerksom på at automatiske oversettelser kan inneholde feil eller unøyaktigheter. Det originale dokumentet på sitt opprinnelige språk bør anses som den autoritative kilden. For kritisk informasjon anbefales profesjonell menneskelig oversettelse. Vi er ikke ansvarlige for misforståelser eller feiltolkninger som oppstår ved bruk av denne oversettelsen.