תוכן עניינים:

Raspberry Pi-Arduino-SignalR Automation Home Hub: 11 שלבים (עם תמונות)
Raspberry Pi-Arduino-SignalR Automation Home Hub: 11 שלבים (עם תמונות)

וִידֵאוֹ: Raspberry Pi-Arduino-SignalR Automation Home Hub: 11 שלבים (עם תמונות)

וִידֵאוֹ: Raspberry Pi-Arduino-SignalR Automation Home Hub: 11 שלבים (עם תמונות)
וִידֵאוֹ: SignalR for IoT (Part 1) 2024, יולי
Anonim
רכזת האוטומציה הביתית של Raspberry Pi-Arduino-SignalR
רכזת האוטומציה הביתית של Raspberry Pi-Arduino-SignalR

בעקבות כמה מההקדמות שלי ל- IBLE שפורסמו כאן וכאן, הפרויקט הזה עושה את הצעד הראשון לקראת בניית גרסה בסיסית של מרכז אוטומציה ביתי פונקציונלי.

השתמשתי במספר טכנולוגיות שונות בניסיון להבין כיצד אוכל להשתמש בכל הדברים שלמדתי בעבר ובדברים החדשים שאני ממשיך ללמוד ככל שמתקדמים הימים.

לכן, מרכז אוטומציה זה מורכב מהרכיבים הבאים:

מסד נתונים של שרת SQL 2012 כי:

  • מאחסן רשימה של קודי אינפרא אדום (IR) שנקבעו מראש בטבלה יחד עם "מפתח קוד" ייחודי.
  • מקשי הקוד נקראים באופן אינטואיטיבי (על ידי המשתמש) כדי לזהות את מטרת קודי ה- IR הקשורים אליהם

יישום אינטרנט ASP. NET SignalR Hub בזמן אמת, אשר:

  • ממתין ומקבל "מפתחות קוד" כפקודות ממשתמש מול לקוח HTML
  • כאשר הוא מתקבל, מתחבר למסד הנתונים של SQL ומאחזר קוד IR באמצעות מפתח הקוד שסופק
  • מעביר את קוד ה- IR שאוחזר ללקוח Python SignalR

לקוח לוח משתמש של HTML SignalR העומד בפני משתמש ובו:

  • מעביר מפתח קוד ייחודי לרכז באמצעות ה- API של jQuery SignalR Client
  • כל לחצן בלוח המחוונים ייצג מפתח קוד ייחודי שנרשם בטבלת מסד הנתונים של SQL

יישום שירות רקע של Python SignalR הפועל ב- Raspberry Pi 2.0 ש:

  • מקבל קודי IR כפקודות מה- Hub
  • מחפש תוחמים בקוד ה- IR ושובר את הקוד הארוך מאוד לפלחים
  • מתקשר דרך הנמל הטורי לארדואינו וכותב כל קטע ברצף

שרטוט משדר IR של Arduino ש:

  • ממתין ומקבל כל אחד מקטעי קוד ה- IR מעל הנמל הסידורי
  • מרכיב את מקטעי הקוד למערך חיץ קוד IR
  • חבילות המאגר לפקודת שידור IR באמצעות ספריית IRLib Arduino

אם מכשיר המטרה נמצא בקרבת משדר ה- IR, המכשיר (עשוי) להגיב לאות ה- IR המשודר על ידי ה- Arduino

הערה

למרות שמכשיר המטרה שאני משתמש בהדגמה זו אכן מגיב לאותות IR, ייתכן שתרצה לקרוא את החלק הזה של ה- IBLE השני שלי מסיבות מדוע אני אומר שהמכשיר (עשוי) להגיב לאות ה- IR.

זמן להתגלגל.

שלב 1: מה שאתה צריך, לפני מה שאתה צריך

מה שאתה צריך, לפני מה שאתה צריך
מה שאתה צריך, לפני מה שאתה צריך
מה שאתה צריך, לפני מה שאתה צריך
מה שאתה צריך, לפני מה שאתה צריך
מה שאתה צריך, לפני מה שאתה צריך
מה שאתה צריך, לפני מה שאתה צריך

זה ניתן להדרכה עם חלק מהעבודות שנעשו בעבר, מה שהוביל גם ל- IBLE האחרון שלי.

לכן, לפני שנכנס למה שאנחנו צריכים עבור IBLE זה, מומלץ לקרוא את ההוראה הזו על רקע כלשהו על:

  1. הוקמה ספריית האינפרא אדום של Arduino IRLib
  2. כיצד נתפסו קודי IR המשמשים ב- IBLE זה באמצעות מקלט IR
  3. כיצד שימשו קודי ה- IR שנתפסו לשליטה במכשיר המטרה באמצעות משדר IR

לאחר השלמת IBLE זה, פרסתי יישום אינטרנט של מקליט קודים מסוג ASP. NET שיעשה זאת:

  • קבל את קוד ה- IR שנתפס יחד עם מפתח קוד בשם אינטואיטיבי כקלט באמצעות טופס אינטרנט
  • פרק את קוד ה- IR באורך מאוד לקטעים שאורכם פחות מ -64 תווים כדי להישאר מתחת למגבלת החיץ הטורי של ה- Arduino Uno
  • קטע הקוד האחרון יהיה קבוע מראש עם "E" המציין לארדואינו שהוא קיבל את קטע הקוד האחרון
  • כל קטע יופרד במפריד צינור לפני שיורכב בחזרה למחרוזת ארוכה
  • לבסוף, קוד ה- IR המפולח יחד עם מפתח הקוד שלו נשמרו במסד נתונים של SQL Server 2012

זהו מסד הנתונים הזה של SQL המהווה את אחד המרכיבים של רכזת האוטומציה הביתית שפורטו ב- IBLE זה.

הערה

יישום האינטרנט מקליט קוד IR אינו מהווה חלק מהדיון כאן מהסיבות הבאות:

  • אתה יכול ללכוד קודים ידנית באמצעות Arduino Sketch, לפצל אותם למקטעים המופרדים בצינור ולשמור אותם במסד הנתונים מבלי לבנות יישום אינטרנט משוכלל.
  • שלא כמו IBLE זה, מקליט ה- IR מתמקד בתקשורת הפוכה מארדואינו ל- Raspberry Pi

לכן פרטים על פרויקט זה יהוו נושא ל- IBLE אחר

שלב 2: מה שאתה צריך - החומרה

מה שאתה צריך - החומרה
מה שאתה צריך - החומרה
מה שאתה צריך - החומרה
מה שאתה צריך - החומרה

Raspberry Pi 2.0 מתפקד - אני ממליץ להתקין את Ubuntu Mate מכיוון שיש לו מערך תכונות עשיר יותר כולל OpenLibre Office שאגב היה הכרחי בתיעוד ההוראה הזה, ממש שם ב- Raspberry Pi.

בנוסף, ה- Pi, תזדקק לחיצוניים הבאים:

  • פלטפורמת אב הטיפוס של Arduino Uno או שיבוט
  • LED משדרי IR - השתמשתי במותג בשם Three Legs מבית Amazon.com
  • נגדים 330 או 220 אוהם-השתמשתי ב- 220 (קוד צבע אדום-אדום-חום) מכיוון שהיו לי מספר שימושי
  • לוח הלחם הרגיל, מחברים ומחשב אישי עם סביבת Arduino מותקנת
  • מועמד למבחן - כמו צג LED LED בכל מקום של Samsung עם שלט

שלב 3: מה שאתה צריך - התוכנה

כדי לחבר את כל החלקים, יהיה צורך להתקין ולהפעיל את התקנת התוכנה הבאה:

ב- Raspberry Pi, יהיה עליך להתקין את הדברים הבאים:

  • ה- Arduino IDE - משמש לבניית הסקיצה והבזקתו ל- UNO
  • מודול Python עבור Arduino - לתקשורת סדרתית בין UNO ל- Pi
  • ספריית הלקוחות של Python SignalR - תוכל לעיין בהוראות המצורפות כאן

מכונת Windows עם סביבת הפיתוח הבאה המותקנת:

  • מהדורה חינם של Microsoft Visual Studio Express 2013 לבניית רכזת SignalR ויישום לקוח האינטרנט
  • מהדורה חינם של SQL Server 2012 Express לעיצוב ובניית מסד הנתונים האחורי

סביבת אירוח שרת מידע אינטרנט (IIS) של Windows:

  • לאחר בניית ונבדק לקוח ה- SignalR Hub ולקוח האינטרנט, יהיה עליו לפרוס אותו לשרת IIS מקומי
  • במקרה שלי, אני מתכוון להשתמש במחשב נייד ישן שבו פועל Windows 7 עם IIS ברשת הביתית שלי

הערה

כל ההוראות ישימות לגרסת Python 2.7.x. גרסה 3.0 עשויה לדרוש שכתובים

שלב 4: מסד הנתונים של שרת SQL

מסד הנתונים של שרת SQL
מסד הנתונים של שרת SQL

הסכימה המצורפת מציגה את מבנה מסד הנתונים הבסיסי של שרת SQL המשמש ביישום זה ומכיל שתי טבלאות בלבד.

טבלה AutoHubCode

שתי העמודות החשובות בטבלה זו הן:

AutoCodeKey - שומר את השם הידידותי למשתמש של מפתח הקוד

כל אחד ממפתחות הקוד מועבר על ידי לקוח אוטומציה - במקרה שלנו, כפתור HTML מדף אינטרנט

AutoCodeVal - מאחסן את רצף קוד ה- IR הגולמי

זהו קוד ה- IR בפועל המועבר בחזרה ללקוח בתגובה על ידי רכזת SignalR

במקרה זה, לקוח פייתון בתקשורת מתמדת לרכזת מקבל את רצף קוד ה- IR ומעביר אותו דרך יציאה סידרית ל- UNO Arduino

טבלה AutoHubLog

  • רושם את הקוד המבוקש על ידי לקוח האוטומציה.
  • זהו מדד לעקוב אחר מי ומתי השתמשו במערכת, ואיזה קוד התבקש

כאמור, השתמשתי ב- SQL Server 2012 כפלטפורמת מסד הנתונים המועדפת עלי. אתה יכול לשחזר את העיצוב הפשוט הזה בפלטפורמת מסדי נתונים אחרת כגון MySQL, Oracle וכו '.

עם זאת, סקריפט SQL ליצירת מסד נתונים זה צורף כאן

הערה

  1. הקוד עבור רכזת SignalR נועד להתחבר למסד נתונים של SQL Server 2012
  2. עבודה עם מסד נתונים אחר פירושה שינוי ה- Hub לשימוש במנהל התקן מסד נתונים אחר

שלב 5: יישום האינטרנט ASP. NET SignalR Hub

יישום האינטרנט ASP. NET SignalR Hub
יישום האינטרנט ASP. NET SignalR Hub
יישום האינטרנט ASP. NET SignalR Hub
יישום האינטרנט ASP. NET SignalR Hub

יישום האינטרנט ASP. NET SignalR Hub מורכב במשותף מהרכיבים הבאים כפי שמצוין בסכימה המצורפת:

סעיף 1 - רכזת SignalR המקבלת בקשות מהלקוח ומגיבה אליו

סעיפים 2, 4 - דף האינטרנט של לקוח HTML וגיליון הסגנון שלו שיוצרים יחד את הקצה הקדמי של מערכת האוטומציה ומנפיקים פקודות לרכזת האוטומציה.

סעיף 3 - ממשקי ה- API של jQuery SignalR המשמשים את לקוח ה- HTML לתקשורת עם מרכז האוטומציה

סעיף 5 - מרכז SignalR אינו מתקשר ישירות למסד הנתונים. הוא עושה זאת באמצעות כיתות ביניים שנוצרו באמצעות מסגרת הישות

שיעורים אלה מפשטים את פרטי מסד הנתונים מהיישום הקדמי

סעיף 6 - מחלקת שירות מסדי הנתונים המסייעת בביצוע פעולות הקריאה -כתיבה במאגר ה- SQL (שתוארה קודם לכן) באמצעות שיעורי Entity Framework

ASP. NET ו- SignalR הן טכנולוגיות של Microsoft והדרכה זו תלווה אותך כיצד בנויה ופורסת יישום SignalR פשוט.

מה שבניתי כאן מבוסס על היסודות שנרכשו מהדרכה זו. בעת הפריסה, היישום אמור להיראות דומה לדף האינטרנט המוצג בתמונה השנייה

הערה על הקוד

צורף קובץ ZIP המכיל גרסה מופשטת של הקוד

מבנה התיקיות הוא כפי שמוצג בוויזואלי - אולם כל שיעורי המסגרת ותסריטי jQuery הוסרו כדי להקטין את גודל הקובץ המצורף

ההמלצה היא כי קוד זה ישמש כמדריך מכיוון שכאשר אתה יוצר יישום אינטרנט חדש SignalR על ידי קישור ההדרכה למעלה, ספריות jQuery העדכניות ביותר ושיעורי מסגרת ASP. NET יתווספו באופן אוטומטי

כמו כן, יש לשנות את ההפניות לסקריפטים של jQuery בדף index.html כך שישקפו את הגירסה העדכנית ביותר של ספריות הלקוח של jQuery SignalR שיתווספו אוטומטית בעת בניית יישום האינטרנט שלך.

לבסוף, יש לשנות את מחרוזת החיבור כך שתתאים למסד הנתונים שלך בקבצים בשם Web.config*

שלב 6: לקוח שירות Python SignalR

לקוח שירות Python SignalR
לקוח שירות Python SignalR

בעוד שלקוח SignalR HTML הוא ממשק משתמש הפונה לחזית, לקוח Python הוא יישום שירות אחורי שתפקידו העיקרי הוא לקבל את קוד ה- IR המועבר על ידי הרכזת ולנתב אותו ל- UND Arduino באמצעות תקשורת טורית.

הקוד המצורף מסביר את עצמו ומתועד מספיק כדי לתאר את הפונקציונליות שלו

כפי שמוצג בצילום המסך המורכב, לקוח HTML ולקוח Python Service מתקשרים באמצעות SignalR Hub כדלקמן:

  1. המשתמש במערכת האוטומציה מוציא פקודה לרכז באמצעות לחיצה על כפתור
  2. כל לחצן משויך לקוד מפתח ה- IR וכאשר לוחצים עליו, קוד זה מועבר לרכזת
  3. הרכזת מקבלת קוד זה, מתחברת למסד הנתונים ושוחזרת את קוד אות ה- IR הגולמי ומעבירה אותו בחזרה לכל הלקוחות המחוברים

    במקביל, ה- Hub רושם רשומה בטבלת מסד הנתונים של AutoHubLog המתעדת את הקוד ואת התאריך והשעה שהוא התבקש על ידי לקוחות מרוחקים

  4. לקוח שירות Python מקבל את קוד ה- IR ומעביר אותו ל- UNO Arduino לעיבוד נוסף

שלב 7: סקיצה וקוד של שידור Arduino UNO IR

סקיצה וקוד של שידור Arduino UNO IR
סקיצה וקוד של שידור Arduino UNO IR
סקיצה וקוד של שידור Arduino UNO IR
סקיצה וקוד של שידור Arduino UNO IR
סקיצה וקוד של שידור Arduino UNO IR
סקיצה וקוד של שידור Arduino UNO IR

מעגל הארדואינו כפי שמוצג בחזות הוא די פשוט עבור מערכת זו ולכן הוא מתואר בקצרה:

  • יש לחבר את נורית ה- IR חסרת הצבע ל- PIN 3 דיגיטלי ב- UNO - זוהי דרישה של ספריית IRLib Arduino
  • הסיבות מתוארות ב- IBLE הקודם שלי על שיבוט שלט במדור הקשור לספריית IRLib
  • הנורית הירוקה המחוברת ל- PIN 4 הדיגיטלי היא אינדיקטור ויזואלי המואר כאשר ה- UNO קיבל את כל החלקים של קוד ה- IR מלקוח Python הפועל ב- Raspberry Pi.
  • הדלקת נורת LED זו תאשר שהתקשורת הסדרתית בין ה- Raspberry Pi ל- UNO פועלת
  • כדי לאפשר תקשורת סדרתית, ה- UNO מחובר ל- Raspberry Pi באמצעות יציאת ה- USB
  • הסקיצה המצורפת של Arduino מובאת מספיק כדי לתאר את תפקידה
  • ההערות בחלק העליון של הקוד מתארות גם כיצד יש לחבר את המעגל

הערה

בפועל, ניתן לחבר את Arduino ו- Pi במשותף לרכזת USB המופעלת חזק מספיק כדי להניע את ה- Pi, ה- Arduino וגם לשדר אות חזק באמצעות נורית ה- IR

שלב 8: חיבור ובדיקת המערכת

חיבור ובדיקת המערכת
חיבור ובדיקת המערכת
חיבור ובדיקת המערכת
חיבור ובדיקת המערכת
חיבור ובדיקת המערכת
חיבור ובדיקת המערכת
  1. בנה ופרס את ASP. NET SignalR Hub, לקוח ה- HTML יחד עם מסד הנתונים של שרת SQL 2012 לשרת מידע אינטרנט (IIS) ברשת הביתית המקומית שלך
  2. גש ליישום האינטרנט על ידי פתיחת לקוח HTML SignalR באמצעות

    כתובת האתר לדף זה תהיה בדרך כלל https:// yourComputer: port_number/

  3. לחץ על כפתור בלוח הבקרה, ואם היישום נפרס כהלכה, הרכז יגיב על ידי החזרת קוד ה- IR ויציג אותו בלוח האפור הסמוך ללוח הבקרה.

    זכור! יהיה עליך לטעון את הקודים למסד הנתונים שלך על ידי הגדרת ספריית מקלט ה- IR ולכידת הקודים כמתואר ב- IBLE הקודם שלי

  4. חבר את ה- Arduino ל- Raspberry Pi באמצעות USB - פתח את ה- Arduino IDE ב- Pi וודא שה- UNO יכול ליצור חיבור עם ה- Pi

    מאמרי ההדרכה האלה של Arduino אמורים לעזור לך להגיע לזה די מהר

  5. פתח את קוד ה- Python ובצע את השינויים הבאים בהתאם לחלים על הסביבה שלך

    • כתובת הנמל הסידורי של ה- UNO שלך כפי שנרכשה משלב 4
    • כתובת האתר של רכזת SignalR שתתאים לכתובת האתר המקומית שלך משלב 2 - בדוגמה זו היא תהיה https:// yourComputer: port_number/signalr
  6. לבסוף, פתח את סקיצת Arduino ב- Arduino IDE ב- Raspberry Pi והבהב אותו ל- UNO
  7. מקם את לוח הלחם שמחזיק את המעגל בסמיכות למכשיר שיש לשלוט בו - נורית ה- IR חייבת להיות בעלת קו ראייה ברור עם יציאת מקלט ה- IR של המכשיר.
  8. הפעל את תוכנית Python ב- Raspberry Pi על ידי לחיצה על כפתור F5 בסרגל הכלים של Python IDLE
  9. חזור ללוח הבקרה בתוכנית לקוח HTML (שלב 2) ולחץ על כפתור (כגון הפעלה או הגברת עוצמת הקול)

אם המערכת הותקנה כהלכה, אתה אמור להיות מסוגל להעלות את דף לקוח HTML בטלפון או בטאבלט ולשלוט במכשיר שלך באמצעות הכפתורים בדף לקוח HTML שלך.

שלב 9: המערכת בפעולה

המערכת בפעולה
המערכת בפעולה
המערכת בפעולה
המערכת בפעולה
המערכת בפעולה
המערכת בפעולה
המערכת בפעולה
המערכת בפעולה

התמונות למעלה מציגות את מערכת האוטומציה הביתית בפעולה לאחר ההתקנה.

מאז פרסום IBLE זה הרחבתי את הממשק על ידי לכידת כמה קודי IR מטלוויזיית ה- LED VIZIO שלי

כפי שמוצג זה לצד זה עם מרחוק הטלוויזיה היצרן בראייה החזותית הראשונה, כמה פונקציות חיוניות של שלט זה נבנו בממשק המשתמש של האינטרנט שאליו ניתן לגשת באמצעות הטאבלט שלי

ויזואליות עוקבות מציגות את הטאבלט בחזית כשהטלוויזיה מאחור מגיבה לפקודות שהונפקו מממשק האינטרנט:

  1. פקודת כיבוי - הטלוויזיה נכבית
  2. פקודת הפעלה - הטלוויזיה נדלקת והלוגו "V" מופיע כשהמסך מופעל
  3. פקודת Mute ON - סרגל אופקי עולה כשהרמקול מושתק

בכל הבדיקות, האזור אפור לצד לוח המחוונים במסך הטאבלט מציג את הפקודה שהוציא הלקוח ואת התגובה שנשלחה בחזרה על ידי מרכז SignalR המרוחק.

שלב 10: שיפור מערכת האוטומציה ותיקונים נלווים

ניתן להרחיב מערכת זו על ידי הוספת קודים נוספים שנלכדו ממערכות שונות. חלק זה אמנם קל, אך שני גורמים נוספים תצטרכו לקחת בחשבון.

שיפור 1 (מהיר): עבודה עם אותות IR באורכים שונים

  1. קודי IR של מערכות שונות מגיעים באורכים שונים, אפילו בין שני מוצרים מאותו יצרן.

    לדוגמה, במקרה זה, אורך מערך קוד ה- IR עבור טלוויזיית LED הוא 67 בעוד שאורך פס הקול של סמסונג הוא בסביבות 87

  2. מה שאומר שאם הייתי מפעיל את סרגל הסאונד קודם, מערך ה- IR Buffer בסקיצה של Arduino יתמלא ברצף קוד IR המכיל 87 קודים
  3. בעקבות זאת, אם הייתי מפעיל את טלוויזיית LED, הוא ימלא את מערך מאגר ה- IR רק ב -67 קודים, אך 20 הקודים הנותרים מהפעולה הקודמת עדיין יהיו בסביבה.

התוצאה? טלוויזיית LED אינה נדלקת כי מאגר קוד IR נפגם על ידי 20 הקודים הנוספים שלא ניקו מהפעולה הקודמת!

תיקון 1 (הדרך הקלה החוצה, לא מומלץ)

שנה את סקיצת הארדואינו כדלקמן:

שנה את שיחות הפונקציות הבאות בפונקציית הלולאה () {}

transmitIRCode ();

לשדר IRCode (ג);

בצע שינויים בחתימת הפונקציה שלעיל:

void transmitIRCode (int codeLen) {// RAWBUF קבוע הוחלף ב- codeLen IRTransmitter. IRSendRaw:: send (IRCodeBuffer, codeLen, 38); }

למרות שזה קל, המערך אף פעם לא מתנקה לגמרי ולכן זה לא פתרון נקי במיוחד

תיקון 2 (לא קשה, מומלץ)

הצהיר על משתנה נוסף בחלק העליון של סקיצה Arduino, לאחר סעיף ההערות:

int חתימת EMPTY_INT_VALUE;

הוסף זאת לראש פונקציית ההתקנה ():

// לכידת המצב הטבעי של משתנה מספר שלם ריק ללא חתום EMPTY_INT_VALUE = IRCodeBuffer [0];

גלול מטה והוסף פונקציה חדשה לסקיצה מיד לאחר הפונקציה transmitIRCode ():

void clearIRCodeBuffer (int codeLen) {// נקה את כל הקודים מהמערך // הערה: הגדרת רכיבי המערך ל- 0 אינה הפתרון! עבור (int i = 1; i <= codeLen; i ++) {IRCodeBuffer [i-1] = EMPTY_INT_VALUE;}}

לבסוף, התקשר לפונקציה חדשה למעלה במיקום הבא בפונקציית הלולאה ():

// איפוס - קורא קורות חיים חזרה PortclearIRCodeBuffer (c); …

זוהי גישה נקייה יותר מכיוון שהיא למעשה מאפסת את כל המיקומים במערך מאגר ה- IR שאוכלסו באות קוד ה- IR העדכני ביותר מבלי להשאיר דבר ליד המקרה.

שיפור 2 (מעורב יותר): חזרה על שידור אותות IR למכשירים מסוימים

התקנים מסוימים דורשים העברת אותו אות מספר פעמים על מנת להגיב דוגמה: במקרה זה, בר הסאונד של סמסונג דורש לשלוח את אותו קוד פעמיים בפער של שנייה אחת

התיקון בקונספט נדון כאן מכיוון שהוא קצת יותר מעורב ויהיה צורך בבדיקות

הוספת הפונקציונליות החוזרת למערכת Ardunio Sketch פירושה שתצטרך להבהב את הסקיצה בכל פעם שתוסיף מכשיר חדש למערכת האוטומציה הביתית שלך.

במקום זאת, הוספת תיקון זה ללקוח HTML SignalR ויישום שירות Python SignalR הופכת את הפתרון לגמיש הרבה יותר. וניתן להשיג זאת באופן עקרוני כדלקמן:

שנה את לקוח HTML SignalR כדי להעביר מידע חוזר לרכזת

פתח את index.html והטמיע את הערך החוזר בכפתור ה- HTML כך:

value = "SMSNG-SB-PWR-ON" יהפוך ל- value = "SMSNG-SB-PWR-ON_2_1000"

כאשר, 2 הוא ערך החזרה ו -1000 הוא ערך העיכוב באלפיות השנייה בין שני האותות החוזרים

כאשר תלחץ על כפתור זה, רכזת SignalR תקבל את קוד המפתח+Repeat_Spec

שנה את השיטות בצד שרת SignalR כדי לנתח רק את קוד המפתח:

  • השתמש בקוד המפתח כדי לאחזר את קוד ה- IR ממסד הנתונים כרגיל
  • העבר את קוד המפתח+Repeat_Spec ואת ה- IRCode ללקוחות SingalR כרגיל

שנה את יישום שירות Python SignalR כדי להעביר אותות באמצעות ערכי החזרה:

פתח את לקוח Python ושנה את שתי הפונקציות הבאות:

def print_command_from_hub (buttonId, cmdSrc):

# לנתח את הקוד החוזר מערך buttonId

def transmitToArduino (IRSignalCode, delim, endPrefix):

# הגדר זמן מה או ללולאה להעברת האות בתדר הרצוי

  • בדרך זו, אין צורך להבהב את הארדואינו שוב ושוב
  • כל מערכת של תדרים חוזרים יכולה להיות מובנית במערכת זו
  • חוץ מזה, אם אתה משתמש ב- UNO, יש גבול לגודל שהסקיצה שלך יכולה לגדול אליו!

שלב 11: בעיות ידועות ודאגות אבטחה

כמו במקרה של מערכות שנבנו בפעם הראשונה, למערכת זו יש כמה בעיות שיצאו במהלך הבדיקה.

בעיה 1: פקודות ירי ברצף מהיר עם עיכובים של פחות משנייה בין לחיצות כפתורים גרמו למערכת להיות בלתי מגיבה לאחר שהגיבה בפעם הראשונה.

  • הפעלה מחדש של לקוח Python SignalR מחזירה את המערכת לפעולות רגילות
  • רזולוציות מיידיות הן להסיר פלטים לא רצויים של באגים בשניהם, ב- Python SignalR Client וגם ב- Arduino Sketch ולחזור על בדיקות אלה
  • מקום נוסף לבדוק הוא התקשורת הסידרית עצמה - האם ניתן יהיה להוסיף קוד כדי לשטוף את המאגר במהירות?

עם זאת, שמתי לב שהטלוויזיה שלי אינה מגיבה היטב לשלט המפעל שלה - ולכן עצם תקשורת ה- IR של הטלוויזיה שלי עשויה להיות גורם תורם גם כן.

סוגיה 2: מסך ה- HTML מפסיק להגיב על לחיצות כפתורים לאחר תקופה ארוכה של חוסר פעילות

בדרך כלל רענון הדף פותר התנהגות זו - אולם הסיבה להתנהגות זו עדיין אינה ברורה

דאגות אבטחה

מערכת זו תוכננה לשימוש מקומי (ביתי) ברשת בלבד ואין לה את אמצעי האבטחה הדרושים לשימוש באינטרנט

לכן מומלץ לפרוס את ה- SignalR Hub למחשב מקומי ברשת המקומית/ביתית שלך

תודה שקראת את ה- IBLE שלי ואני מקווה שיהיה לך כיף!

מוּמלָץ: