3.0 KiB
Styr din natlampe over internettet - Virtuel IoT-hardware og Raspberry Pi
I denne del af lektionen vil du sende telemetri med lysniveauer fra din Raspberry Pi eller virtuelle IoT-enhed til en MQTT-broker.
Udgiv telemetri
Det næste trin er at oprette et JSON-dokument med telemetri og sende det til MQTT-brokeren.
Opgave
Udgiv telemetri til MQTT-brokeren.
-
Å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 import øverst i
app.py
-filen:import json
json
-biblioteket bruges til at kode telemetrien som et JSON-dokument. -
Tilføj følgende efter deklarationen af
client_name
:client_telemetry_topic = id + '/telemetry'
client_telemetry_topic
er det MQTT-emne, som enheden vil udgive lysniveauer til. -
Erstat indholdet af
while True:
-løkken i slutningen af filen med følgende:while True: light = light_sensor.light telemetry = json.dumps({'light' : light}) print("Sending telemetry ", telemetry) mqtt_client.publish(client_telemetry_topic, telemetry) time.sleep(5)
Denne kode pakker lysniveauet ind i et JSON-dokument og udgiver det til MQTT-brokeren. Derefter sættes programmet på pause for at reducere frekvensen af de sendte beskeder.
-
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.
(.venv) ➜ nightlight python app.py MQTT connected! Sending telemetry {"light": 0} Sending telemetry {"light": 0}
💁 Du kan finde denne kode i code-telemetry/virtual-device-mappen eller code-telemetry/pi-mappen.
😀 Du har med succes sendt telemetri fra din enhed.
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 er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.