SNMP over HTTP

SNMP over HTTP

לאחרונה יצא לי להטמיע חיישני SNMP ב Home Assistant מתוך מטרה לדלות מידע מהראוטר שלי, שהוא של חברת צ'קפויינט. הכל היה טוב ויפה כל עוד הייתי צריך "לשלוף" מידע כמו מהירות הרשת, מצב הזכרון ואת גרסאת ה Firmware של המערכת. אז איפה הבעיה? הבעיה החלה כאשר הייתי צריך לשלוף ערכים שאינם חוזרים כמחרוזת טקסט סטנדרטית, למשל את כתובת ה IP החיצונית (WAN) ואז החיישן הציג את המידע בג'יבריש:

Home Assistant SNMP Sensors

אחרי מחקר של כמה ימים הבנתי שאין כל כך מה לעשות, המפתחים של  Home Assistant קיבלו דיווח על כך שהבעיה קיימת באותה חבילת בסיס שמשרתת את הקומפוננטה כבר לפני מספר גרסאות אך לא נראה שהם מתכוונים לתקנה בקרוב. לכן, כתבתי בפייתון מעיין rest api אשר יקבל את ה OID עבור שאילתת ה SNMP ויחזיר את התשובה בפורמט תקין, וכך באמצעות rest sensor בתוך Home-Assistant אוכל להציג את הערכים בצורה תקינה:

Home Assistant SNMP over HTTP

במדריך זה אסביר כיצד להתקין אצלכם את ה service וכיצד להשתמש בו באמצעות Home Assistant.

שלב א' – התקנת התלויות והכנת קובץ השירות

על מנת שה service יעבוד בצורה תקינה יש להתקין מספר תלויות. לצורך כך כתבו את הפקודה הבאה:

כעת, צרו תיקיה תחת /opt/ וקראו לה snmpsvc:

וצרו בתוכה קובץ בשם snmp.py והדביקו פנימה את הטקסט הבא:

כאשר:

  • בתחילת הקובץ החליפו את כתובת ה IP תחת target לכתובת ה IP של השרת/רכיב אותו תרצו לתשאל ב SNMP.
  • בסוף הקובץ החליפו את ה port שכרגע עומד על 2222 בזה שתרצו שהשירות יאזין עליו.

שמרו את השינויים וצאו מהקובץ.

חלק ב' – התקנת הסקריפט כשירות שיעלה עם עליית השרת

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

והדביקו פנימה את קטע הקוד הבא:

החליפו את [your user] במשתמש שלכם. הוא המשתמש שתחתיו ירוץ השירות.
שמרו את הקובץ וצאו מהעורך.

כעת, כתבו את הפקודות הבאות כדי להפעיל את השרות ולרשום אותו כשרות מערכת:

כעת, כתבו את הפקודה הבאה על מנת לוודא כי השרות רץ בצורה תקינה:

 

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

 

snmp service status - techblog.co.il

כעת פתחו את הדפדפן, והקישו את כתובת השרת בתוספת הפורט ו ה OID לתשאות בצורה הבאה:

http://192.168.1.22:2222/snmp/1.3.6.1.4.1.2620.1.6.50.1.1.4.14.0

והפלט שיתקבל אמור להראות כך:

snmp svc output

חלק ג' – שימוש ב rest sensor בתוך home-assistant

בחלק זה של המדריך, אסביר כיצד ניתן להשתמש ב rest sensor המובנה של home-assistant על מנת להציג את הנתונים של ה SNMP. לצורך כך פתחו את קובץ ה configuration.yaml והוסיפו פנימה את הקודה הבא:

החליפו את כתובת השרת, הפורט וה OID בזה שלכם, שמרו את הקובץ ואתחלו את Home-Assistant. אם בצעתם הכל לפי ההוראות, תוכלו לראות כי כעת הנתונים מוצגים כראוי.

בהצלחה!

Be the first to comment

Leave a Reply

כתובת האימייל שלך לא תפורסם


*