תוכן עניינים:
- שלב 1: ניטור טמפרטורה
- שלב 2: הגדרת Cloud4Rpi.io
- שלב 3: ניטור UPS
- שלב 4: הכנה ל"ייצור "
- שלב 5: הגדרת לוח הבקרה
וִידֵאוֹ: ניטור בית DIY עם RaspberryPi ו- Cloud4Rpi: 5 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
בסוף שבוע חורפי אחד הלכתי לבית הכפרי שלי, וגיליתי שקר שם מאוד. משהו קרה עם חשמל ומפסק RCD כיבה אותו, וגם החימום נכבה. היה לי מזל שהגעתי לשם, אחרת תוך מספר ימים הכל היה קפוא וזה רע מאוד לצינורות ולרדיאטורים.
היו לי כמה פטל פטל בסביבה וחיישן תרמי, אז חשבתי - למה שלא אכין מכשיר ניטור פשוט? ההוראות להלן מניחות שיש לך Raspberry Pi עם הגדרת Raspbian וחיבור לרשת. במקרה שלי מדובר ב- Raspberry Pi B+ עם Raspbian (2018–06–27-raspbian-stretch-lite).
שלב 1: ניטור טמפרטורה
כיצד לחבר חיישן טמפרטורה DS18B20? פשוט חפש בגוגל כיצד לעשות זאת ותראה הרבה תמונות כמו זו:
במקרה שלי היו לי חוטים שחורים, צהובים ואדומים. השחור טחון, עובר לפין הארקה, האדום הוא כוח - עובר ל -3.3 וולט, והצהוב הוא נתונים - צריך לעבור לפין GPIO4, כאשר נגד 4.7 kOm מחובר בין נתונים לחשמל. שים לב, אתה יכול לחבר מספר חיישנים במקביל (הם דיגיטליים ויש להם כתובות שונות), אתה צריך רק נגד אחד. לאחר חיבור החיישן שלך, עליך להפעיל את 1Wire ב- raspi-config:
sudo raspi-config
עבור אל 5 אפשרויות ממשק, הפעל את P7 1-Wire והפעל מחדש.
לאחר מכן תוכל לבדוק אם אתה יכול לראות את החיישן:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/התקנים/
אתה אמור לראות משהו כזה:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff הוא חיישן הטמפרטורה שלנו.
החומרה מוכנה. עכשיו אני צריך להגדיר את חלק הניטור. אני צריך משהו שיראה לי את הנתונים ויודיע לי אם המכשיר מנותק לזמן מה או שאין חשמל או שהטמפרטורה נמוכה. ברור שזה לא יכול להיות פטל פאי עצמו, צריך להיות שרת או שירות כלשהו באינטרנט שעוקב אחר המכשיר שלי.
אני יכול ליצור שרת פשוט, לקבל אירוח ולהגדיר את הכל, אבל בכנות, אני לא רוצה. למרבה המזל, מישהו כבר חשב על זה ויצר cloud4rpi.io - לוח בקרה בענן עבור המכשיר שלך.
שלב 2: הגדרת Cloud4Rpi.io
Cloud4Rpi מספק שירות המאפשר למכשיר שלך לשלוח ולקבל נתונים באמצעות פרוטוקולי MQTT או HTTP. יש להם ספריית לקוחות עבור Python, אז אני אשתמש ב- Python.
דוגמאות לפייתון המצורפות לשירות Cloud4Rpi כבר מכילות קוד לחיישן טמפ 'DS18B20.
אז הלכתי ל- https://cloud4rpi.io, יצרתי חשבון והוספתי שם מכשיר חדש. לדף המכשיר יש אסימון - מחרוזת שמזהה את המכשיר, ואשר יש לציין אותו בתוכנית ששולחת נתונים.
ראשית, תמיד כדאי לעדכן מנהל חבילות ולשדרג חבילות (שימו לב: זה יכול לקחת שעות אם לא שדרגתם זמן מה):
sudo apt-get update && sudo apt-get upgrade
לאחר מכן, התקן את git, Python ומנהל החבילות שלה Pip:
sudo apt-get install git python python-pip
לאחר מכן, התקן את ספריית פייתון cloud4rpi:
sudo pip התקן cloud4rpi
לבסוף, אני מוכן לכתוב את תוכנית הבקרה שלי. אני מתחיל מדוגמא הזמינה ב
שיבוט git https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
קובץ התוכנית העיקרי הוא control.py - אני צריך לשנות אותו לצרכי. ראשית, ערוך את התוכנית והדבק אסימון:
sudo nano control.py
מצא שורה DEVICE_TOKEN = '…'] וציין שם אסימון להתקן. אחרי זה אני יכול פשוט להריץ את התוכנית: זה עובד ומדווח על טמפרטורה במשתנה RoomTemp:
sudo python control.py
הוא פועל ומדווח על טמפרטורה במשתנה RoomTemp.
שים לב שהוא מגלה את כל החיישנים onewire ds18b20
ds_sensors = ds18b20. DS18B20.find_all ()
ומשתמש בחיישן הראשון שנמצא:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] if ds_sensors else None}
אוקיי, זה היה קל, כי לתוכנית המדגם יש כל מה שנדרש לעבודה עם חיישן ds18b20 ב- Raspberry Pi. עכשיו אני צריך למצוא את הדרך לדווח על מצב החשמל.
שלב 3: ניטור UPS
הדבר הבא שאני רוצה לפקח הוא מצב UPS, כך שאם תהיה הפסקת חשמל, אדע על כך לפני שהכל יתנתק.
יש לי UPS APC עם בקרת USB, אז חיפשתי במהירות בגוגל וגיליתי שאני צריך apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… ניסיתי כמה פעמים להתקין אותו באמצעות apt-get, וזה לא עבד לי מסיבות שונות. אני אראה כיצד להתקין אותו מהמקורות.
wget https://sourceforge.net/projects/apcupsd/files/ap…tar xvf apcupsd-3.14.14.tar.gz cd apcupsd-3.14.14./configure-אפשר usb sudo לעשות sudo לבצע התקנה
לאחר מכן אני עורך את apcupsd.conf כדי להתחבר ל- UPS שלי באמצעות usb.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE usb usb smart usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE
עכשיו אני יכול לחבר כבל USB מ- UPS ל- RaspberryPi ולבדוק אם יימצא UPS.
sudo apctest
זה לא אמור לתת לך הודעות שגיאה.
כעת יש להפעיל שירות apcupsd של sevice:
sudo systemctl התחל apcupsd
כדי לשאול לגבי מצב UPS אני יכול להשתמש בפקודת סטטוס:
מצב sudo /etc/init.d/apcupsd
וזה יפיק משהו כזה:
APC: 001, 035, 0855 תאריך: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol גרסה: 3.14.14 (31 במאי 2016) debian UPSNAME: vcontrol כבל: נהג כבל USB: USB UPS Driver UPSMODE: Stand Alone STARTTIME: 2018-10-14 16:54:28 +0300 דגם: סטטוס Back-UPS XS 650CI: LINEV מקוון: 238.0 וולט LOADPCT: 0.0 אחוז BCHARGE: 100.0 אחוז TIMELEFT: 293.3 דקות MBATTCHG: 5 אחוז מינימום: 3 דקות מקסימום: 0 שניות SENSE: בינוני LOTRANS: 140.0 וולט HITRANS: 300.0 וולט ALARMDEL: 30 שניות BATTV: 14.2 וולט LASTXFER: ללא העברות מאז הטורן NUMXFERS: 0 TONBATT: 0 שניות CUMONBATT: 0 שניות XOFFBATT: N/A STATFLAG: 0x0T00008: 0x0T00008: 0X0: 2014-06-10 NOMINV: 230 וולט NOMBATTV: 12.0 וולט NOMPOWER: 390 וואט תוכנה: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
אני צריך סטטוס - שהוא השורה "STATUS:".
ספריית Cloud4rpi מכילה מודול 'rpy.py' המחזיר פרמטרים של מערכת Raspberry Pi כגון שם מארח או טמפרטורת מעבד. מכיוון שכל אותם מצלמות הן תוצאות של הפעלת כמה פקודות ופלט ניתוח, היא מכילה גם פונקציית 'parse_output' שימושית שעושה בדיוק מה שאני צריך. כך ניתן לקבל את סטטוס ה- UPS שלי:
def ups_status (): result = rpi.parse_output (r'STATUS / s+: / s+(S+) ', [' /etc/init.d/apcupsd ',' status ']) אם התוצאה: תוצאה תוצאה אחרת: החזרה 'לא ידוע'
כדי לשלוח סטטוס זה ל- cloud4rpi, עלי להכריז על משתנה UPSStatus ולאגד אותו לפונקציית ups_status שלי: כעת אוכל להריץ את התוכנית שלי:
משתנים = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
ואני יכול מיד לראות את המשתנה שלי בדף המכשיר cloud4rpi.
שלב 4: הכנה ל"ייצור"
הכל עובד, ועכשיו אני צריך להכין את המכשיר למצב ללא השגחה.
ראשית, אני הולך להתאים את מרווחי הזמן. מרווח הסקרים מגדיר את התדירות שבה התוכנית בודקת טמפרטורה ומצב UPS - הגדר אותה לשנייה אחת.
התוצאות נשלחות לענן כל 5 דקות, ומידע אבחוני - כל שעה.
# קבועים DATA_SENDING_INTERVAL = 300 # שניות DIAG_SENDING_INTERVAL = 3600 # שניות POLL_INTERVAL = שנייה אחת #
כאשר סטטוס UPS משתנה - אני לא רוצה שהמכשיר שלי יחכה 5 דקות ואני שולח נתונים באופן מיידי. אז שיניתי מעט את הלולאה הראשית וזה נראה כך:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' בעוד True: newUPS = ups_status () אם (data_timer <= 0) או (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = newUPS אם 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL שינה (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
בדיקה: הפעל סקריפט:
sudo python control.py
ואני יכול לצפות בסטטוס UPS בדף המכשיר שלי.
אם אני מכבה את כוח UPS, הסטטוס משתנה תוך מספר שניות, אז הכל עובד. עכשיו אני צריך להפעיל את apcupsd ואת שליטה שלי על הפעלת המערכת. שירות Apcupsd ישן וכדי להתחיל אותו ב- raspbian מודרני, עלי לשנות את הקובץ /etc/init.d/apcupsd על ידי הוספת שורות אלה במקום כלשהו למעלה:
### BEGIN INIT INFO # מספק: apcupsd # Required-Start: $ all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: APC UPS daemon… ### END INIT מידע#
לאחר מכן הפעל את השירות:
sudo systemctl אפשר apcupsd
לאחר מכן התחל את השירות:
sudo systemctl התחל apcupsd
כעת יופעל apcupsd בהפעלת המערכת.
כדי להתקין את control.py כשירות, השתמשתי בתסריט service_install.sh המצורף:
sudo bash service_install.sh ~/cloud4rpi/control.py
עכשיו השירות מתחיל והוא צריך לשרוד אתחול מחדש.
שלב 5: הגדרת לוח הבקרה
Cloud4rpi מאפשר לי להגדיר לוח בקרה למכשיר שלי. אתה יכול להוסיף "ווידג'טים" ולאגד אותם למשתני מכשירים.
המכשיר שלי מספק שני משתנים לקריאה בלבד - RoomTemp ו- UPSStatus:
משתנים = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
הוספתי 3 ווידג'טים - מספר עבור RoomTemp, טקסט עבור UPSStatus ותרשים עבור RoomTemp.
אני יכול להגדיר התראות, כך שאני מקבל דוא ל כשהטמפרטורה היא מחוץ לטווח שצוין, UPS יצא למצב לא מקוון או שהמכשיר עצמו לא שולח נתונים כשצריך. עכשיו אני יכול להיות בטוח שהבית הכפרי שלי בסדר, ואני יכול לקבל הודעה. כשמשהו לא בסדר, כדי שאוכל להתקשר לשכנים ולבקש מהם לבדוק מה קורה. להלן הקוד האמיתי של control.py.
מוּמלָץ:
Ubidots + ESP32- ניטור מכונות חיזוי: 10 שלבים
Ubidots + ESP32- ניטור מכונות חיזוי: ניתוח חיזוי של רטט וטמפ 'במכונה על ידי יצירת אירועי דואר ותיעוד של רטט בגיליון Google באמצעות Ubidots
מערכת ניטור חזותי מבוסס LoRa לחקלאות Iot. עיצוב יישום חזית באמצעות Firebase & Angular: 10 שלבים
מערכת ניטור חזותי מבוסס LoRa לחקלאות Iot. עיצוב יישום חזית באמצעות Firebase & Angular: בפרק הקודם אנו מדברים על איך החיישנים עובדים עם מודול loRa לאכלס את מסד הנתונים של RealBase באש, וראינו את התרשים ברמה גבוהה מאוד כיצד כל הפרויקט שלנו עובד. בפרק זה נדבר על איך אנחנו יכולים
Arduino, ניטור פתיחת דלת באמצעות Gmail: 6 שלבים
Arduino, ניטור פתיחת דלת באמצעות Gmail: במדריך זה אני הולך להראות לך כיצד לזהות את אירוע פתיחת הדלת ולשלוח הודעה באמצעות Gmail באמצעות Arduino Uno. אם אתה מתחיל, תוכל ללמוד על wifi וחיישן. ב- Arduino - WiFi ו- Arduino - מדריכי חיישן דלתות. בואו
מערכת ניטור ובקרת אקלים פנימי של פטל פי: 6 שלבים
Raspberry Pi מערכת ניטור ובקרת אקלים פנימי: אנשים רוצים שיהיה להם נוח בתוך הבית שלהם. מכיוון שהאקלים באזור שלנו אולי לא יתאים לעצמנו, אנו משתמשים במכשירים רבים לשמירה על סביבה פנימית בריאה: תנור חימום, מצנן אוויר, מכשיר אדים, מסיר לחות, מטהר וכו
ניטור בית חכם באמצעות אלקסה וארדואינו: 9 שלבים (עם תמונות)
ניטור בית חכם באמצעות אלקסה וארדואינו: בעולם הנוכחי אנשים מבלים יותר זמן במקום העבודה ולא בביתם. מכאן שיש צורך במערכת ניטור ביתית בה אנשים יכולים להכיר את תנאי הבית בזמן שהם בעבודה. זה יהיה אפילו יותר טוב אם אחד