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

אינטגרציה של עוזר הבית גייגר: 8 שלבים
אינטגרציה של עוזר הבית גייגר: 8 שלבים

וִידֵאוֹ: אינטגרציה של עוזר הבית גייגר: 8 שלבים

וִידֵאוֹ: אינטגרציה של עוזר הבית גייגר: 8 שלבים
וִידֵאוֹ: עוזר בית - הגדרות ראשונות, עורך קבצים, Maria DB, HACS - אוקטובר 2023 2024, יולי
Anonim
Image
Image
עקרון העבודה
עקרון העבודה

במדריך זה אני הולך להראות כיצד אתה יכול להוסיף חיישנים מותאמים אישית ל- HASS (עוזר הבית) באופן ספציפי יותר מונה גייגר, אך התהליך דומה גם לחיישנים אחרים.

נשתמש בלוח NodeMCU, דלפק גייגר מבוסס ארדואינו ועוזר בית מותקן כבר.

האינטגרציה תתבסס על שרת MQTT (ציבורי או פרטי) ואני הולך לקחת אותך צעד אחר צעד עם זה.

אם אינך יודע מהו עוזר הבית אנא בקר בדף שלהם https://www.home-assistant.io/. זוהי פלטפורמה ידועה לאוטומציה ביתית המתוחזקת היטב וניתנת להתאמה אישית רבה.

תלמד על:

- תצורה מתקדמת עבור עוזר הבית

- NodeMCU (לוח פיתוח) וכיצד לתכנת אותו עם Arduino IDE

- OTA (עדכוני אוויר) באמצעות ה- Arduino IDE ללוח NodeMCU

- כיצד לחבר התקן סידורי ל- NodeMCU

- התקנה ידנית של שרת MQTT בלינוקס (אופציונלי)

הנחות בסיסיות:

- יש לך את Home Assistant פועל

- אתה יודע קצת על אלקטרוניקה

- יש לך Arduino IDE מותקן

שלב 1: חלקים וכלים

חלקים:

1. לוח NodeMCU

2. לוח לחם

3. חוטי ג'ופר זכר-זכר ונקבה

3. כבל USB למיקרו USB

4. מונה ארדואינו גייגר עם ממשק סידורי

(חפש ב- eBay אחר "arduino geiger couter")

5. חומר רדיואקטיבי (אופציונלי דגימת בדיקה קטנה)

כלים:

1. Arduino IDE

2. עוזר הבית מותקן

שלב 2: עקרון העבודה

המטרה שלנו היא להציג ב- HomeAssistat (HASS) את הקריאות מדלפק הגייגר. בצד אחד יש לנו שרת HASS הפועל במקום שהוא יכול להיות פאי פטל או מכשיר אחר ובצד השני יש לנו את דלפק הגייגר.

לדלפק הגייגר יש יציאה טורית, פתרון אחד יהיה חיבור ישיר של הפורט הטורי ל- RaspberryPi שעליו פועל ה- HASS.

כמה סיבות לכך שזו אולי לא רעיון טוב:

- אין שם מקום פיזי

- יש לנו מכשיר אחר ביציאה הטורית

- אנו רוצים לצרף חיישן סביבתי שיש למקם אותו בחוץ במקום מונה הגייגר

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

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

החיישן שלנו יודע לדבר רק דרך הקו הטורי כך שנשתמש בלוח שיכול לקרוא שורה טורית שיכול להתחבר דרך WIFI ולדבר עם שרת MQTT. לוח זול שעושה זאת הוא NodeMCU.

ניתן לתכנת את NodeMCU עם Arduino IDE. השרטוט די פשוט, הוא עושה את הדברים הבאים:

- מתחבר ל- WIFI

- שומר על חיבור MQTT עם השרת ומנסה שוב את החיבור כאשר הוא נכשל או מנותק

- מקשיב לנתונים נכנסים סדרתיים כסדרה של מספרים שלמים

- ברגע שמגיע מספר שלם הוא שולח אותו דרך MQTT לנושא ספציפי

שלב 3: הרכיב את המכשיר

הרכיב את המכשיר
הרכיב את המכשיר

אנו נשתמש בלוחות ולחוטים כך שזה פשוט למדי, יש לנו כמה שלבים:

- שים את ה- NodeMCU על לוח הלחם

- חבר את צינור הגייגר לדלפק הגייגר (היזהר מהקוטביות)

- VIN הולך לדלפק גייגר +

- GND הולך לדלפק גייגר -

- NodeMCU D7 (סיכה 13) עובר ל- geiger TX

- NodeMCU D8 (סיכה 15) עובר ל- geiger RX

- הפעל את NodeMCU באמצעות מיקרו USB מהמחשב

שלב 4: העלה את הקוד

העלה את הקוד
העלה את הקוד
העלה את הקוד
העלה את הקוד
העלה את הקוד
העלה את הקוד
העלה את הקוד
העלה את הקוד

אנו הולכים להשתמש ב- Arduino IDE ונדאג שהתקנת לוח NodeMCU והספרייה Adafruit_MQTT מותקנת.

1. שיבוט את מאגר github: https://github.com/danionescu0/arduino והעתק את הסקיצה מפרויקטים/HASSGeigerIntegration למיקום שלך בספר הסקיצות של arduino

2. פתח את Arduino IDE והתקן את NodeMCU

- עבור אל קובץ -> העדפות, בכתובות ה- URL של מנהל הלוחות הנוספים הוסף את https://arduino.esp8266.com/stable/package_esp8266com_index.json אם כבר יש לך שם שם תרדמת ולחץ על אישור

-מתוך כלים -> לוח -> מנהל לוח הקלד "nodemcu" ובחר את הערך esp8266 על ידי ESP8266 Community ולחץ על install

3. התקן את Adafruit_MQTT

-עבור אל כלים -> נהל ספריות -> חפש "Adafruit_MQTT" והתקן את "ספריית Arduino MQTT"

4. חבר את כבל ה- USB במחשב והגדר את הלוח:

-עבור אל כלים -> לוח -> בחר NodeMcu 1.0

-כלים -> יציאה -> יציאת ה- USB שלך

- השאר את ההגדרות האחרות ללא שינוי

4. בשרטוט שנה את אישורי ה- WIFI שלך כך שיתאימו לשלך:

#define STASSID "ssid" // החלף ב- WIFI SSID שלך

#define STAPSK "לעבור" // החלף בסיסמת WIFI שלך

5. העלה את הסקיצה ללוח שלך ולאחר ההעלאה אפס את הלוח מהלחצן

6. פתח את הצג הטורי, אם הכל הלך כשורה אתה אמור לראות פלט כזה:

אתחול

כתובת IP: 192.168.1.168 OTA מופעל מתחבר ל- MQTT … MQTT מחובר! {"קרינה": 0.03}..

שלב 5: הגדר את HomeAssistant

הגדר את HomeAssistant
הגדר את HomeAssistant
הגדר את HomeAssistant
הגדר את HomeAssistant

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

אם אין לך Home Assistant מותקן, עיין במדריך ההתקנה הרשמי שלהם:

לפני התקדמות ההתקנה וודא ש- NodeMCU מחובר לחשמל ופרסם נתונים.

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

1. התקן את "עורך הקבצים" אם אין לך אותו בתפריט, להלן המדריך הרשמי:

2. ערוך את הקובץ "/config/configuration.yaml" והוסף את הדברים הבאים ושמור אותו

- קטע mqtt אם אין לך אותו כבר

mqtt:

מתווך: broker.hivemq.com גילוי: אמת גילוי_קידומת: הא

- קטע החיישנים

חיישן:

- פלטפורמה: שם mqtt: "קרינה" state_topic: "ha/radiation" unit_of_measurement: 'uSv' unique_id: "radiation" value_template: "{{value_json.radiation}}"

3. מתוך תצורה -> פקדי שרת: לחץ על "בדוק את התצורה", בדוק אם קיימות טעויות בקובץ התצורה של yaml ולאחר מכן הקש על "הפעל מחדש" והמתן עד להפעלה מחדש.

4. מתוך סקירה כללית -> תפריט בפינה הימנית העליונה -> הגדרת ממשק משתמש -> לחץ על הלחצן + מצד ימין למטה

5. בחר "חיישן" מהרשימה -> בשדה "ישות" חפש "sensor.radiation", בשדה השם כתוב "קרינה" ולחץ על אישור, זה אמור להיות בדף הראשי עכשיו

שלב 6: הגדרת שרת MQTT משלך [אופציונלי]

בואו נדון קצת על MQTT

MQTT הוא פרוטוקול הובלת הודעות של פרסום/הרשמה של הרשמת לקוחות. הוא קל משקל, פתוח, פשוט ומתוכנן כך שיהיה קל ליישום. מאפיינים אלה הופכים אותו לאידיאלי לשימוש במצבים רבים, כולל סביבות מוגבלות כגון תקשורת בהקשר של Machine to Machine (M2M) ו- Internet of Things (IoT) שבהן נדרשת טביעת רגל קטנה של קוד ו/או רוחב פס של רשת הוא בעלות גבוהה.”

ציטוט מהמפרט הרשמי של MQTT 3.1.1.

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

להלן הדרכה נהדרת על MQTT בפירוט:

שימוש בשרת הכוורת החינמי יש כמה חסרונות כמו:

- כל מי שמקשיב לנושא שלך יקבל את ההודעות שלך

- אם הוא יורד או דורש תשלום מאוחר יותר, לא תוכל להשתמש בו (אלא אם תשלם)

- אם מישהו שמפרסם הודעות לאותו נושא תקבל גם את ההודעות שלו, הוא עשוי לפרסם הודעות לא תואמות ולשבור את תרשימי HASS שלך

שימוש בשרת פרטי

אם אינך רוצה להשתמש בשרת החינמי הציבורי, יש לך אפשרות לשרת פרטי. אנו הולכים להתקין את Mosquitto MQTT בשרת אובונטו / דביאן כמו פי פטל או מחשב.

Mosquitto הוא שרת שמיישם פרוטוקול MQTT וזה בחינם.

כדי להתקין אותו היכנס ל- raspnerry pi או לשרת מבוסס דביאן אחר והפעל:

עדכון sudo apt

sudo apt להתקין -y יתוש יתושים -לקוחות sudo systemctl לאפשר mosquitto.service

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

כדי לגרום ל- ip השרת לבצע:

שם מארח -אני

וזה יפיק משהו כמו:

192.168.1.52 172.17.0.1 172.18.0.1

אז ה- ip שלי הוא 192.168.1.52, בפקודות למטה תחליף אותו ב- ip משלך

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

ראשית במסוף הפעל פקודה זו כדי להאזין להודעה על "/some-topic"

mosquitto_sub -h 192.168.1.52 -t /some -topic

פתח מסוף אחר ופרסם הודעה בנושא זה:

mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"לחות": 74.0}'

במסוף הראשון אתה אמור לראות את "{" לחות ": 74.0} 'מודפס.

תשומת - לב מיוחדת:

- התקנה זו מניחה כי HASS, Mosquitto ו- NodeMCU מחוברים לאותה רשת WIFI ואין כללי חומת אש והם יכולים לתקשר בחופשיות

-לשרת Mosquitt MQTT אין שם משתמש/סיסמה, אם ברצונך להגדיר אישורים בדוק זאת: https://www.steves-internet-guide.com/mqtt-username-password-example/ כמו כן יהיה עליך להגדיר האישורים ב- Home Assistant ובמערכון הארדואינו

שלב 7: עדכוני OTA (Over the Air) עבור NodeMCU

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

Arduino IDE תומך בפונקציונליות זו עבור סדרות ESP8266 וכמה לוחות אחרים:

- דורש הבזק ראשוני דרך כבל ה- USB

- יוצר יציאה וירטואלית באמצעות WIFI וזה גלוי רק מ- Arduino IDE

- אין מידע זמין לאיתור באגים סדרתי

- תומך בהגנה באמצעות סיסמה

כדי לאפשר OTA בסקיצה של ESP8266 כלול תחילה את הספרייה:

#כלול "ArduinoOTA.h"

הגדר גם קבוע סיסמת סקיצה זה:

#define SKETCHPASS "סיסמה מסוימת"

בקטע ההתקנה הוסף שורות אלה:

בעוד (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("החיבור נכשל! אתחול מחדש …"); עיכוב (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {סוג מחרוזת; אם (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} אחרת {// U_FS type = "מערכת קבצים";} Serial.println ("התחל בעדכון " + סוג);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nEnd");}); ArduinoOTA.onProgress ( (התקדמות int ללא חתימה, סה"כ int חתומה) {Serial.printf ("התקדמות:%u %% / r", (התקדמות / (סה"כ / 100)));}); ArduinoOTA.onError ( (שגיאה ota_error_t) {Serial.printf ("שגיאה [%u]:", שגיאה); אם (error == OTA_AUTH_ERROR) {Serial.println ("אימות נכשל");} אחרת אם (שגיאה == OTA_BEGIN_ERROR) {Serial.println ("בגין נכשל");} אחרת אם (error == OTA_CONNECT_ERROR) {Serial.println ("חיבור נכשל");} אחרת אם (error == OTA_RECEIVE_ERROR) {Serial.println (" קבל נכשל ");} אחרת אם (error == OTA_END_ERROR) {Serial.println (" סיום נכשל ");}}); ArduinoOTA.begin (); Serial.print ("כתובת IP:"); Serial.println (WiFi.localIP ());

ובקטע הלולאה הוסיפו שורה זו:

ידית ArduinoOTA. ();

לאחר העלאת הקוד הראשוני שלך לאחר שהלוח יתחיל, עליך לראות ב- Arduino IDE בקטע כלים-> יציאה שני סוגים של יציאות:

יציאות סידריות: /dev /ttyUSB0 (למשל)

יציאות רשת: esp8266-xxxxx בכתובת 192.168.1.xxx

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

שלב 8: מסקנות, עבודה עתידית

ניתן לשנות את הדרכה זו בקלות ולשלוח נתונים על סוגים אחרים של חיישנים:

- אם החיישן שלך נתמך ישירות על ידי NodeMCU דרך ספרייה, פשוט צבר נתונים מהחיישן ודחוף אותו ישירות דרך MQTT

- אם ספריית החיישנים אינה פועלת עם NodeMCU אך היא מיועדת רק עבור Arduino, העלה את הקוד שלך ל- arduino, פלט את הערך דרך השורה הטורקית וקרא אותו ב- NodeMCU ודחוף אותו (בדיוק כמו שעשינו עם מונה הגייגר)

אנו יכולים אפילו לשנות אותו כדי לשלוח נתונים ממספר חיישנים כך:

- חבר את החיישנים שלך ל- NodeMCU

- נתוני סקרים מכל חיישן

- עבור כל אחד מהחיישן לפרסם את הנתונים לנושא אחר

- ב- HASS הגדירו מספר חיישנים (כמו שעשינו עם הגייגר) שיקשיבו לנושאים שונים

מוּמלָץ: