4.1 KiB
שלוט בתאורת הלילה שלך דרך האינטרנט - חומרה וירטואלית של IoT ו-Raspberry Pi
בחלק זה של השיעור, תתחבר לפקודות שנשלחות ממתווך MQTT אל ה-Raspberry Pi או אל מכשיר IoT וירטואלי שלך.
התחברות לפקודות
השלב הבא הוא להתחבר לפקודות שנשלחות ממתווך MQTT ולהגיב אליהן.
משימה
התחבר לפקודות.
-
פתח את פרויקט תאורת הלילה ב-VS Code.
-
אם אתה משתמש במכשיר IoT וירטואלי, ודא שהטרמינל פועל בסביבה הווירטואלית. אם אתה משתמש ב-Raspberry Pi, לא תשתמש בסביבה וירטואלית.
-
הוסף את הקוד הבא לאחר ההגדרות של
client_telemetry_topic
:server_command_topic = id + '/commands'
ה-
server_command_topic
הוא נושא ה-MQTT שהמכשיר יתחבר אליו כדי לקבל פקודות להפעלת ה-LED. -
הוסף את הקוד הבא ממש מעל הלולאה הראשית, לאחר השורה
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
קוד זה מגדיר פונקציה בשם
handle_command
, שקוראת הודעה כמסמך JSON ומחפשת את הערך של המאפייןled_on
. אם הערך מוגדר כ-True
, ה-LED נדלק, אחרת הוא נכבה.לקוח ה-MQTT מתחבר לנושא שהשרת ישלח אליו הודעות ומגדיר את הפונקציה
handle_command
שתיקרא כאשר מתקבלת הודעה.💁 המטפל
on_message
נקרא עבור כל הנושאים שאליהם התחברת. אם בהמשך תכתוב קוד שמאזין למספר נושאים, תוכל לקבל את הנושא שאליו נשלחה ההודעה מתוך אובייקטmessage
שמועבר לפונקציית המטפל. -
הרץ את הקוד באותו אופן שבו הרצת את הקוד מהחלק הקודם של המשימה. אם אתה משתמש במכשיר IoT וירטואלי, ודא שהאפליקציה CounterFit פועלת וחיישן האור וה-LED נוצרו על הפינים הנכונים.
-
התאם את רמות האור שמזוהות על ידי המכשיר הפיזי או הווירטואלי שלך. הודעות שמתקבלות ופקודות שנשלחות ייכתבו לטרמינל. ה-LED גם יידלק וייכבה בהתאם לרמת האור.
💁 תוכל למצוא את הקוד הזה בתיקייה code-commands/virtual-device או בתיקייה code-commands/pi.
😀 הצלחת לקודד את המכשיר שלך כך שיגיב לפקודות ממתווך MQTT.
כתב ויתור:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.