فهرست مطالب:

دستیار خانگی Geiger Counter ادغام: 8 مرحله
دستیار خانگی Geiger Counter ادغام: 8 مرحله

تصویری: دستیار خانگی Geiger Counter ادغام: 8 مرحله

تصویری: دستیار خانگی Geiger Counter ادغام: 8 مرحله
تصویری: تعمیر دزیمتر MIRA Safety Geiger 2 2024, نوامبر
Anonim
Image
Image
اصل کار
اصل کار

در این آموزش می خواهم نحوه نحوه افزودن حسگرهای سفارشی به HASS (دستیار خانگی) را به طور خاص به شمارنده گایگر نشان دهم ، اما این روند برای سایر سنسورها نیز مشابه است.

ما از برد NodeMCU ، یک شمارنده geiger مبتنی بر arduino و یک دستیار خانگی که قبلاً نصب شده است ، استفاده خواهیم کرد.

ادغام بر اساس یک سرور 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 به micro usb

4. شمارنده arduino geiger با رابط سریال

(جستجوی "arduino geiger couter" در Ebay)

5. مواد رادیواکتیو (اختیاری یک نمونه آزمایش کوچک)

ابزارها:

1. Arduino IDE

2. دستیار خانگی نصب شده است

مرحله 2: اصل کار

هدف ما این است که در HomeAssistat (HASS) خوانش های شمارنده geiger را نشان دهیم. در یک طرف ما یک سرور HASS داریم که در جایی کار می کند و ممکن است تمشک pi یا دستگاه دیگری باشد و در طرف دیگر شمارنده geiger را داریم.

شمارنده geiger دارای یک پورت سریال است ، یک راه حل این است که مستقیماً پورت سریال را به RaspberryPi متصل کنید که HASS روی آن کار می کند.

دلایلی که ممکن است ایده خوبی نباشد:

- هیچ فضای فیزیکی در آنجا وجود ندارد

- ما برخی از دستگاه های دیگر را بر روی پورت سریال داریم

- ما می خواهیم یک سنسور محیطی وصل کنیم که باید به جای پیشخوان geiger در خارج قرار گیرد

بسیار خوب ، بنابراین ما در حال بررسی امکان دیگری برای ایجاد ارتباط از طریق WIFI هستیم:

HASS از خواندن داده های سنسور و نمایش اینکه از طریق یک سرور MQTT ، این نوع سرور برای دستگاه های کوچک یک ارتباط سبک وزن است پشتیبانی می کند. بنابراین HASS گوش می دهد و ما به چیزی نیاز داریم که پیام را منتشر کند.

سنسور ما فقط می تواند از طریق خط سریال صحبت کند ، بنابراین ما از تخته ای استفاده می کنیم که می تواند خط سریال را بخواند و می تواند از طریق WIFI متصل شود و با سرور MQTT صحبت کند. یک برد ارزان که این کار را انجام می دهد NodeMCU است.

NodeMCU را می توان با Arduino IDE برنامه ریزی کرد. طرح بسیار ساده است ، موارد زیر را انجام می دهد:

- به WIFI متصل می شود

- یک اتصال MQTT با سرور حفظ می کند و در صورت خرابی یا قطع اتصال مجدداً اتصال را امتحان می کند

- به داده های ورودی سریال به صورت یک سری اعداد صحیح گوش می دهد

- هنگامی که یک عدد صحیح وارد شد ، آن را از طریق MQTT به یک موضوع خاص ارسال می کند

مرحله 3: دستگاه را مونتاژ کنید

دستگاه را مونتاژ کنید
دستگاه را مونتاژ کنید

ما از تخته نان و سیم استفاده خواهیم کرد ، بنابراین بسیار ساده است ، ما چند مرحله داریم:

- NodeMCU را روی تخته نان قرار دهید

- لوله geiger را به شمارنده geiger وصل کنید (مراقب قطبیت باشید)

- VIN به geiger counter + می رود

- GND goest to geiger counter -

- NodeMCU D7 (پین 13) به geiger TX می رود

- NodeMCU D8 (پین 15) به geiger RX می رود

- تغذیه NodeMCU از طریق میکرو USB از رایانه

مرحله 4: کد را بارگذاری کنید

کد را بارگذاری کنید
کد را بارگذاری کنید
کد را بارگذاری کنید
کد را بارگذاری کنید
کد را بارگذاری کنید
کد را بارگذاری کنید
کد را بارگذاری کنید
کد را بارگذاری کنید

ما از Arduino IDE استفاده می کنیم و مطمئن می شویم که برد NodeMCU و کتابخانه Adafruit_MQTT نصب شده است.

1. مخزن github را کلون کنید:

2. Arduino IDE را باز کرده و NodeMCU را نصب کنید

- به File -> Preferences بروید ، در آدرس های اضافی مدیران مدیران آدرس https://arduino.esp8266.com/stable/package_esp8266com_index.json را اضافه کنید اگر قبلاً چیزی در آنجا دارید یک کما در مقابل قرار دهید و روی ok کلیک کنید

-از Tools -> Board -> Board Board نوع "nodemcu" را انتخاب کنید و ورودی esp8266 را توسط ESP8266 Community انتخاب کنید و install را فشار دهید

3. Adafruit_MQTT را نصب کنید

-به Tools -> Manage Libraries -> Search "Adafruit_MQTT" بروید و "Arduino MQTT library" را نصب کنید

4. کابل USB را در رایانه خود وصل کرده و برد را پیکربندی کنید:

-به Tools -> Board -> NodeMcu 1.0 را انتخاب کنید

-ابزارها -> پورت -> پورت USB شما

- سایر تنظیمات را بدون تغییر رها کنید

4. در طرح ، اعتبار WIFI خود را برای مطابقت با خود تغییر دهید:

#تعریف STASSID "ssid" // با WIFI SSID خود جایگزین کنید

#deppine STAPSK "pass" // با رمز 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 کشف: کشف واقعی_پیوند: هکتار

- بخش سنسورها

سنسور:

- platform: mqtt name: "Radiation" state_topic: "ha/تابش" unit_of_measurement: 'uSv' unique_id: "تابش" value_template: "{{value_json.radiation}}"

3. از پیکربندی -> کنترل سرور: "Check configuration" را فشار دهید و فایل پیکربندی yaml را برای خطاها بررسی کنید ، و سپس "restart" را فشار دهید و منتظر بمانید تا دوباره راه اندازی شود.

4. از نمای کلی -> منوی گوشه بالا سمت راست -> پیکربندی رابط کاربری -> دکمه + را از پایین سمت راست فشار دهید

5. "sensor" را از لیست انتخاب کنید -> در قسمت "موجودیت" عبارت "sensor.radiation" را جستجو کنید ، در قسمت نام "Radiation" بنویسید و ok را کلیک کنید ، اکنون باید در صفحه اصلی باشد

مرحله 6: پیکربندی سرور MQTT خود [اختیاری]

بیایید کمی در مورد MQTT بحث کنیم

MQTT یک سرور مشتری است که پروتکل انتقال پیام را ارسال/مشترک می کند. این وزن سبک ، باز ، ساده و به گونه ای طراحی شده است که به راحتی قابل اجرا است. این ویژگی ها آن را برای استفاده در بسیاری از موقعیت ها ، از جمله محیط های محدود مانند ارتباط در ماشین به ماشین (M2M) و اینترنت اشیاء (IoT) که در آن یک رد پای کوچک کد مورد نیاز است و/یا پهنای باند شبکه در درجه یک برتر است ، ایده آل می کند.”

نقل قول از مشخصات رسمی MQTT 3.1.1.

بنابراین اساساً ما می توانیم یک پیام را در جایی در یک طرف منتشر کنیم و در طرف دیگر می توانیم به آن پیام ها گوش دهیم و با داده ها کاری انجام دهیم. MQTT از "موضوعات" پشتیبانی می کند ، موضوعات رشته هایی هستند که کارگزار از آنها برای فیلتر کردن پیامها برای هر مشتری استفاده می کند ، بنابراین اگر ما پیامی را در موضوع "/تابش" منتشر کنیم ، یک شنونده باید برای دریافت پیامهایی که ما ارسال می کنیم ، در همان موضوع مشترک شود.

در اینجا یک آموزش عالی در مورد MQTT به تفصیل آمده است:

استفاده از سرور کندو رایگان معایبی دارد مانند:

- هرکسی به موضوع شما گوش دهد پیام های شما را دریافت می کند

- اگر کاهش یابد یا بعداً نیاز به پرداخت داشته باشد ، نمی توانید از آن استفاده کنید (مگر اینکه پرداخت کنید)

- اگر هرکسی پیامهایی را با موضوع مشابه منتشر کند ، پیامهای او را نیز دریافت خواهید کرد ، ممکن است پیامهای ناسازگار منتشر کرده و نمودارهای HASS شما را بشکنند.

استفاده از سرور خصوصی

اگر نمی خواهید از سرور رایگان عمومی استفاده کنید ، گزینه سرور خصوصی را دارید. ما قصد داریم Mosquitto MQTT را روی سرور ubuntu / debian مانند تمشک pi یا رایانه نصب کنیم.

Mosquitto سروری است که پروتکل MQTT را اجرا می کند و رایگان است.

برای نصب آن وارد raspnerry pi یا دیگر سرورهای مبتنی بر debian خود شوید و اجرا کنید:

به روز رسانی sudo apt

sudo apt install -y mosquitto mosquitto -client sudo systemctl فعال کردن mosquitto.service

این کار مخزن را به روز می کند ، سرور و مشتری mosquiito را نصب می کند و سرویس را برای راه اندازی در هنگام راه اندازی فعال می کند

برای دریافت ip سرور:

نام میزبان -I

و چیزی شبیه زیر را تولید می کند:

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 '{"humidity": 74.0}'

در ترمینال اول باید "{" humidity ": 74.0}" را چاپ کنید.

توجه ویژه:

- این تنظیم فرض می کند که HASS ، Mosquitto و NodeMCU به یک شبکه WIFI متصل هستند و هیچ قانون فایروال وجود ندارد و می توانند آزادانه ارتباط برقرار کنند

-سرور Mosquitt MQTT فاقد نام کاربری/رمز عبور است ، اگر می خواهید اعتبارنامه را تنظیم کنید این مورد را بررسی کنید: https://www.steves-internet-guide.com/mqtt-username-password-example/ همچنین شما باید پیکربندی کنید اعتبارنامه در Home Assistant و در طرح آردوینو

مرحله 7: OTA (آپدیت های هوایی) برای NodeMCU

به روز رسانی روی هوا به این معنی است که صفحه توسعه را می توان بدون نیاز به کابل فیزیکی به صورت سیم دار فلش کرد.

Arduino IDE از این قابلیت برای سری ESP8266 و برخی از بردهای دیگر پشتیبانی می کند:

- نیاز به فلاش اولیه روی کابل USB دارد

- یک پورت مجازی از طریق WIFI ایجاد می کند و فقط از طریق Arduino IDE قابل مشاهده است

- هیچ اطلاعات اشکال زدایی سریال در دسترس نیست

- پشتیبانی از رمز عبور

برای فعال کردن OTA در طرح ESP8266 ابتدا کتابخانه را وارد کنید:

#شامل "ArduinoOTA.h"

همچنین این ثابت گذرواژه طرح را تعریف کنید:

#تعریف SKETCHPASS "برخی از گذرواژه ها"

در قسمت setup این خطوط را اضافه کنید:

while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("اتصال ناموفق بود! راه اندازی مجدد …") ؛ تأخیر (5000) ؛ ESP.restart ()؛ } ArduinoOTA.setPassword (SKETCHPASS) ؛ ArduinoOTA.onStart ( () {نوع رشته ؛ if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch"؛} else {// U_FS type = "systemystem"؛} Serial.println ("شروع به روزرسانی " + نوع) ؛}) ؛ ArduinoOTA.onEnd ( () {Serial.println ("\ n پایان")؛})؛ ArduinoOTA.onProgress ( (پیشرفت int بدون علامت ، int کل بدون امضا) {Serial.printf ("پیشرفت:٪ u ٪٪ / r" ، (پیشرفت / (مجموع / 100)))؛}) ؛ ArduinoOTA.onError ( (خطای ota_error_t) {Serial.printf ("Error [٪ u]:"، error)؛ if (error == OTA_AUTH_ERROR) {Serial.println ("Auth Failed")؛} دیگری اگر (خطا == OTA_BEGIN_ERROR) {Serial.println ("شروع ناموفق")؛} در غیر این صورت (خطا == OTA_CONNECT_ERROR) {Serial.println ("اتصال ناموفق بود")؛} در غیر این صورت (خطا == OTA_RECEIVE_ERROR) {Serial.println (" دریافت ناموفق بود ")؛} else if (error == OTA_END_ERROR) {Serial.println (" پایان ناموفق ")؛}})؛ ArduinoOTA.begin ()؛ Serial.print ("آدرس IP:") ؛ Serial.println (WiFi.localIP ()) ؛

و در قسمت حلقه این خط را اضافه کنید:

ArduinoOTA.handle () ؛

پس از بارگذاری کد اولیه پس از بوت شدن برد ، باید در Arduino IDE در قسمت Tools-> Port دو نوع پورت را مشاهده کنید:

پورت های سریال: /dev /ttyUSB0 (برای مثال)

پورت های شبکه: esp8266-xxxxx در 192.168.1.xxx

اکنون می توانید پورت شبکه را انتخاب کرده و کنترل از راه دور طرح را بارگذاری کنید ، از شما خواسته می شود که گذرواژه طرح (رمز عبور که در ثابت بالا مشخص کرده اید)

مرحله 8: نتیجه گیری ، کار آینده

این آموزش را می توان به راحتی تغییر داد تا داده های مربوط به انواع دیگر سنسورها را ارسال کند:

- اگر سنسور شما مستقیماً توسط NodeMCU از طریق یک کتابخانه پشتیبانی می شود ، فقط اطلاعات سنسور را جمع کنید و مستقیماً آن را از طریق MQTT فشار دهید

- اگر کتابخانه سنسور با NodeMCU کار نمی کند اما فقط برای آردوینو است ، کد خود را در arduino بارگذاری کنید ، مقدار را از طریق خط سریال خروجی دهید و آن را در NodeMCU بخوانید و فشار دهید (درست مانند با شمارنده geiger)

ما حتی می توانیم آن را برای ارسال داده از چندین سنسور مانند زیر تغییر دهیم:

- سنسورهای خود را به NodeMCU وصل کنید

- داده های نظرسنجی از هر سنسور

- برای هر یک از سنسورها داده ها را در یک موضوع مختلف منتشر کنید

- در HASS چندین سنسور (مانند ما با geiger) تعریف کنید که به موضوعات مختلف گوش می دهد

توصیه شده: