3.5 KiB
Styr din natlampe over internettet - Virtuel IoT-hardware og Raspberry Pi
I denne del af lektionen vil du abonnere på kommandoer sendt fra en MQTT-broker til din Raspberry Pi eller virtuelle IoT-enhed.
Abonner på kommandoer
Næste trin er at abonnere på de kommandoer, der sendes fra MQTT-brokeren, og reagere på dem.
Opgave
Abonner på kommandoer.
-
Åbn natlampeprojektet i VS Code.
-
Hvis du bruger en virtuel IoT-enhed, skal du sikre dig, at terminalen kører det virtuelle miljø. Hvis du bruger en Raspberry Pi, vil du ikke bruge et virtuelt miljø.
-
Tilføj følgende kode efter definitionerne af
client_telemetry_topic
:server_command_topic = id + '/commands'
server_command_topic
er MQTT-emnet, som enheden vil abonnere på for at modtage LED-kommandoer. -
Tilføj følgende kode lige over hovedløkken, efter 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 kode definerer en funktion,
handle_command
, der læser en besked som et JSON-dokument og leder efter værdien af egenskabenled_on
. Hvis den er sat tilTrue
, tændes LED'en, ellers slukkes den.MQTT-klienten abonnerer på det emne, som serveren vil sende beskeder på, og sætter funktionen
handle_command
til at blive kaldt, når en besked modtages.💁
on_message
-handleren kaldes for alle emner, der abonneres på. Hvis du senere skriver kode, der lytter til flere emner, kan du få det emne, som beskeden blev sendt til, framessage
-objektet, der sendes til handlerfunktionen. -
Kør koden på samme måde som du kørte koden fra den tidligere del af opgaven. Hvis du bruger en virtuel IoT-enhed, skal du sikre dig, at CounterFit-appen kører, og at lyssensoren og LED'en er oprettet på de korrekte pins.
-
Juster lysniveauerne, der registreres af din fysiske eller virtuelle enhed. Beskeder, der modtages, og kommandoer, der sendes, vil blive skrevet til terminalen. LED'en vil også blive tændt og slukket afhængigt af lysniveauet.
💁 Du kan finde denne kode i mappen code-commands/virtual-device eller mappen code-commands/pi.
😀 Du har med succes kodet din enhed til at reagere på kommandoer fra en MQTT-broker.
Ansvarsfraskrivelse:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.