فهرست مطالب:
- مرحله 1: قطعات و ابزارها
- مرحله 2: اصل کار
- مرحله 3: دستگاه را مونتاژ کنید
- مرحله 4: کد را بارگذاری کنید
- مرحله 5: تنظیم HomeAssistant
- مرحله 6: پیکربندی سرور MQTT خود [اختیاری]
- مرحله 7: OTA (آپدیت های هوایی) برای NodeMCU
- مرحله 8: نتیجه گیری ، کار آینده
تصویری: دستیار خانگی Geiger Counter ادغام: 8 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:52
در این آموزش می خواهم نحوه نحوه افزودن حسگرهای سفارشی به 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
ما فرض می کنیم که شما دستیار خانگی را راه اندازی کرده اید. در سیستم من 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) تعریف کنید که به موضوعات مختلف گوش می دهد
توصیه شده:
کنترل دروازه کشویی خودکار با دستیار خانگی و ESP خانه: 5 مرحله (همراه با تصاویر)
با استفاده از Home Assistant و ESPHome دروازه کشویی خودکار خود را کنترل کنید: مقاله زیر بازخوردی در مورد تجربه شخصی من در کنترل دروازه کشویی اتوماتیک است که من در خانه خود نصب کرده بودم. این دروازه ، با نام تجاری "V2 Alfariss" ، دارای چند ریموت Phox V2 برای کنترل آن بود. منم دارم
دستیار گوگل - اتوماسیون خانگی Iot با استفاده از Esp8266: 6 مرحله
دستیار Google | اتوماسیون خانگی Iot با استفاده از Esp8266: در این دستورالعمل ها به شما نشان می دهم اتوماسیون خانگی کنترل شده توسط دستیار Google
اتوماسیون خانگی با استفاده از دستیار Google و Adafruit IO: 3 مرحله
اتوماسیون خانگی با استفاده از Google Assistant و Adafruit IO: دستیار Google سرویس فرمان صوتی مبتنی بر AI (هوش مصنوعی) است. با استفاده از صدا ، می توانیم با دستیار Google تعامل داشته باشیم و می تواند در اینترنت جستجو کند ، رویدادها را برنامه ریزی کند ، زنگ ها را تنظیم کند ، لوازم خانگی را کنترل کند و غیره. این سرویس در sma در دسترس است
شروع به کار با اتوماسیون خانگی: نصب دستیار خانگی: 3 مرحله
شروع به کار با اتوماسیون خانگی: نصب دستیار خانگی: ما در حال حاضر سری اتوماسیون خانگی را شروع می کنیم ، جایی که ما یک خانه هوشمند ایجاد می کنیم که به ما اجازه می دهد مواردی مانند چراغ ها ، بلندگوها ، سنسورها و غیره را با استفاده از هاب مرکزی به همراه دستیار صوتی در این پست نحوه یادگیری
موسیقی هوشمند در اتاق خواب و حمام با تمشک پای - ادغام Multiroom ، زنگ هشدار ، کنترل دکمه و اتوماسیون خانگی: 7 مرحله
موسیقی هوشمند در اتاق خواب و حمام با Raspberry Pi - ادغام Multiroom ، Alarm ، Button Control و Automation Home: امروز ما می خواهیم دو مثال در مورد نحوه استفاده از Raspberry Pi با نرم افزار Max2Play ما برای اتوماسیون خانه به شما ارائه دهیم: در حمام و اتاق خواب به هر دو پروژه از این نظر شبیه هستند که موسیقی با وفاداری بالا از منابع مختلف می تواند از طریق