3.8 KiB
Steruj swoją lampką nocną przez Internet - Wirtualny sprzęt IoT i Raspberry Pi
W tej części lekcji zasubskrybujesz polecenia wysyłane z brokera MQTT do Twojego Raspberry Pi lub wirtualnego urządzenia IoT.
Subskrybuj polecenia
Kolejnym krokiem jest subskrybowanie poleceń wysyłanych z brokera MQTT i reagowanie na nie.
Zadanie
Zasubskrybuj polecenia.
-
Otwórz projekt lampki nocnej w VS Code.
-
Jeśli używasz wirtualnego urządzenia IoT, upewnij się, że terminal działa w środowisku wirtualnym. Jeśli korzystasz z Raspberry Pi, nie będziesz używać środowiska wirtualnego.
-
Dodaj poniższy kod po definicjach
client_telemetry_topic
:server_command_topic = id + '/commands'
server_command_topic
to temat MQTT, który urządzenie zasubskrybuje, aby odbierać polecenia dotyczące LED. -
Dodaj poniższy kod tuż nad główną pętlą, po linii
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
Ten kod definiuje funkcję
handle_command
, która odczytuje wiadomość jako dokument JSON i sprawdza wartość właściwościled_on
. Jeśli jest ustawiona naTrue
, dioda LED zostaje włączona, w przeciwnym razie zostaje wyłączona.Klient MQTT subskrybuje temat, na który serwer będzie wysyłał wiadomości, i ustawia funkcję
handle_command
, aby była wywoływana, gdy wiadomość zostanie odebrana.💁 Handler
on_message
jest wywoływany dla wszystkich subskrybowanych tematów. Jeśli później napiszesz kod nasłuchujący wielu tematów, możesz uzyskać temat, na który wiadomość została wysłana, z obiektumessage
przekazanego do funkcji obsługującej. -
Uruchom kod w taki sam sposób, jak uruchamiałeś kod z poprzedniej części zadania. Jeśli używasz wirtualnego urządzenia IoT, upewnij się, że aplikacja CounterFit jest uruchomiona, a czujnik światła i dioda LED zostały utworzone na odpowiednich pinach.
-
Dostosuj poziomy światła wykrywane przez swoje fizyczne lub wirtualne urządzenie. Wiadomości odbierane i polecenia wysyłane będą zapisywane w terminalu. Dioda LED będzie również włączana i wyłączana w zależności od poziomu światła.
💁 Ten kod znajdziesz w folderze code-commands/virtual-device lub code-commands/pi.
😀 Udało Ci się zaprogramować swoje urządzenie tak, aby reagowało na polecenia z brokera MQTT.
Zastrzeżenie:
Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI Co-op Translator. Chociaż dokładamy wszelkich starań, aby zapewnić dokładność, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia.