3.8 KiB
Kontrolin ang iyong nightlight gamit ang Internet - Virtual IoT Hardware at Raspberry Pi
Sa bahaging ito ng aralin, mag-subscribe ka sa mga utos na ipinapadala mula sa isang MQTT broker papunta sa iyong Raspberry Pi o virtual na IoT device.
Mag-subscribe sa mga utos
Ang susunod na hakbang ay mag-subscribe sa mga utos na ipinapadala mula sa MQTT broker at tumugon sa mga ito.
Gawain
Mag-subscribe sa mga utos.
-
Buksan ang nightlight project sa VS Code.
-
Kung gumagamit ka ng virtual na IoT device, siguraduhing tumatakbo ang terminal sa virtual environment. Kung gumagamit ka ng Raspberry Pi, hindi mo kailangang gumamit ng virtual environment.
-
Idagdag ang sumusunod na code pagkatapos ng mga definition ng
client_telemetry_topic
:server_command_topic = id + '/commands'
Ang
server_command_topic
ay ang MQTT topic na susubscribe ng device upang makatanggap ng mga utos para sa LED. -
Idagdag ang sumusunod na code sa itaas ng main loop, pagkatapos ng linya na
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
Ang code na ito ay nagde-define ng isang function,
handle_command
, na nagbabasa ng mensahe bilang isang JSON document at hinahanap ang halaga ng property naled_on
. Kung ito ay nakatakda saTrue
, ang LED ay iilaw, kung hindi, ito ay papatayin.Ang MQTT client ay nag-subscribe sa topic kung saan magpapadala ng mga mensahe ang server at itinatakda ang function na
handle_command
upang tawagin kapag may natanggap na mensahe.💁 Ang
on_message
handler ay tinatawag para sa lahat ng mga topic na naka-subscribe. Kung magsusulat ka ng code na nakikinig sa maraming topic sa hinaharap, maaari mong makuha ang topic kung saan ipinadala ang mensahe mula samessage
object na ipinapasa sa handler function. -
Patakbuhin ang code sa parehong paraan tulad ng ginawa mo sa nakaraang bahagi ng assignment. Kung gumagamit ka ng virtual na IoT device, siguraduhing tumatakbo ang CounterFit app at ang light sensor at LED ay nalikha sa tamang mga pin.
-
Ayusin ang mga antas ng liwanag na nadedetect ng iyong pisikal o virtual na device. Ang mga mensaheng natatanggap at mga utos na ipinapadala ay isusulat sa terminal. Ang LED ay iilaw o papatayin depende sa antas ng liwanag.
💁 Makikita mo ang code na ito sa code-commands/virtual-device folder o sa code-commands/pi folder.
😀 Matagumpay mong na-code ang iyong device upang tumugon sa mga utos mula sa isang MQTT broker.
Paunawa:
Ang dokumentong ito ay isinalin gamit ang AI translation service na Co-op Translator. Bagama't sinisikap naming maging tumpak, tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na dulot ng paggamit ng pagsasaling ito.