فهرست مطالب:
- مرحله 1: سخت افزار را تنظیم کنید
- مرحله 2: Dropbox را تنظیم کنید
- مرحله 3: آماده سازی پوشه برنامه Dropbox شما
- مرحله 4: شروع به کار با کد
- مرحله 5: عمیق تر شدن در کد
- مرحله 6: استفاده از فایل های پارامتر Dropbox
- مرحله 7: نتیجه گیری
تصویری: نظارت خانگی رزبری پای با Dropbox: 7 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
این آموزش به شما نشان می دهد که چگونه می توانید یک سیستم نظارت خانگی ساده و قابل توسعه با استفاده از Raspberry Pi ، وب کم ، چند قطعه الکتریکی و حساب Dropbox خود ایجاد کنید. سیستم تمام شده به شما این امکان را می دهد تا از راه دور درخواست کنید و تصاویر را از وب کم خود مشاهده کرده و در عین حال از سنسور دمای دیجیتال خارج از قفسه برای نظارت بر دمای خانه خود از طریق اینترنت ، همه از Dropbox استفاده کنید.
این اولین پروژه ای بود که پس از دریافت Raspberry Pi 2 مدل B. فکر کردم. هدف من ایجاد یک سیستم نظارت مبتنی بر پایتون بود که بتوانم داده ها را از طریق اینترنت کنترل و دریافت کنم. در حالی که روش های مختلفی برای انجام این کار وجود دارد ، من تصمیم گرفتم از Dropbox به عنوان رابط بین Pi و اینترنت استفاده کنم زیرا آنها دارای API ساده Python هستند که به شما امکان می دهد فایل ها را در چند پوشه خاص بارگذاری ، اصلاح و جستجو کنید. کد
من همچنین می خواستم راه حل من سبک و ساده باشد و از بهم ریختن Pi من با کتابخانه ها و برنامه های غیر ضروری جلوگیری کنم. جزء نرم افزاری این پروژه شامل یک اسکریپت پایتون است ، به این معنی که می توانید از Pi خود به طور عادی استفاده کنید ، حتی زمانی که سیستم نظارت در حال اجرا است.
برای این پروژه به موارد زیر نیاز دارید:
تمشک پای. هر مدلی باید کار کند ، من از یک کیت شروع کننده همه کاره استفاده کردم ، اما شاید شما فقط به واحد مرکزی نیاز دارید
یک وب کم USB من یک ADVENT AWC72015 ارزان خریدم که اتفاقاً خوب کار می کند. ممکن است ایده خوبی باشد که از این لیست وب کم هایی که کار با Pi تأیید شده اند ، مشورت کنید. توجه داشته باشید که برخی از آنها به هاب USB قدرتمند نیاز دارند (دستگاه من بدون آن خوب کار می کند)
یک حساب Dropbox. من از حساب استاندارد رایگان خود استفاده می کنم زیرا این پروژه به فضای ذخیره سازی زیادی نیاز ندارد
یک سنسور درجه حرارت دیجیتال DS18B20 و یک مقاومت 4.7k. شما می توانید سنسور را از اینجا بخرید ، و شاید ارزش خرید یک بسته از مقاومت های مختلف را نیز داشته باشد
برخی از لوازم جانبی برای ساخت مدار. توصیه می کنم از تخته نان و برخی از کابل های بلوز استفاده کنید تا روند ساخت مدار تا حد ممکن آسان شود
[اگر تصمیم به خرید هر یک از این محصولات دارید ، اگر از طریق پیوندهای بالا به لیست دسترسی داشته باشید ، بسیار قدردانی می کنم - به این ترتیب ، من سهم کوچکی از سود را بدون هیچ هزینه اضافی برای شما دریافت می کنم!]
مرحله 1: سخت افزار را تنظیم کنید
اولین قدم این است که اطمینان حاصل کنید که Pi شما و لوازم جانبی مربوطه تنظیم شده است.
ابتدا Pi خود را به اینترنت وصل کنید. این امر برای اطمینان از اینکه برنامه نظارت می تواند درخواست های شما را دریافت کرده و داده ها را در Dropbox بارگذاری کند ، ضروری است. من از اتصال اترنت برای اطمینان از قابلیت اطمینان استفاده می کنم ، اما اتصال Wi-Fi نیز باید خوب کار کند ، در حالی که از مزیت بهبود قابلیت حمل نیز برخوردار است. اگر Wi-Fi را انتخاب می کنید ، من این دانگل USB را برای Pi توصیه می کنم.
در مرحله بعد ، وب کم خود را با اتصال آن به یکی از پورت های USB به Pi وصل کنید. در حالی که دستورالعمل های وب کم Advent من به صراحت نمی گفت که با لینوکس کار می کند ، تنها کاری که باید انجام دهم این بود که آن را وصل کرده و Pi را بوت کنم. نیازی به نصب بیشتر نبود. سایر وب کم ها ممکن است متفاوت باشند. با استفاده از دستور زیر می توانید بررسی کنید که وب کم شما توسط لینوکس شناسایی شده است یا خیر:
lsusb
در تصویر بالا ، وب کم من به عنوان '0c45: 6340 Microdia' ذکر شده است
در نهایت ، می توانید سنسور دمای DS18B20 خود را به هدر GPIO Pi متصل کنید. من از تخته نان خود برای سهولت فرایند ایجاد مدارها استفاده می کنم ، و توصیه می کنم شما نیز همین کار را انجام دهید ، به ویژه اینکه DS18B20 نیاز به مقاومت 4.7k بین دو تا از سه پایه خود دارد. این پیوند یک نمودار سیم کشی خوب ارائه می دهد که نشان می دهد چگونه می توان از تخته نان برای اتصال به این سنسور دما استفاده کرد.
صفحه بعدی آموزش بالا همچنین مراحل مورد نیاز برای خواندن داده ها از DS18B20 را پوشش می دهد و نحوه بررسی عملکرد آن را به شما نشان می دهد. انجام این مراحل راه اندازی قبل از استفاده از DS18B20 برای این پروژه مهم است. ما همچنین نمونه اسکریپت پایتون از آموزش را در برنامه مانیتورینگ خود ادغام خواهیم کرد ، بنابراین ممکن است بخواهید این کد را سریع بررسی کنید.
لطفاً شماره منحصر به فرد DS18B20 خود را نیز یادداشت کنید. این عددی است که با '28-'شروع می شود و در هنگام آموزش راه اندازی با آن روبرو می شوید. شما باید آن را در برنامه آینده پایتون وارد کنید تا بتواند در دما بخواند.
مرحله 2: Dropbox را تنظیم کنید
برای اینکه Pi شما با Dropbox ارتباط برقرار کند ، باید یک برنامه Dropbox جدید راه اندازی کنید. با این کار اطلاعات مورد نیاز Pi شما برای مدیریت آنلاین فایل با استفاده از پایتون در اختیار شما قرار می گیرد. با فرض اینکه یک حساب Dropbox ایجاد کرده اید و وارد سیستم شده اید ، می توانید با استفاده از گزینه منوی "توسعه دهندگان" یک برنامه جدید ایجاد کنید. برای مشاهده خلاصه مراحل مهم به تصویر بالا مراجعه کنید.
در منوی "توسعه دهندگان" ، "برنامه های من" را انتخاب کنید ، سپس دکمه "ایجاد برنامه" را فشار دهید. برای پر کردن فرم به دست آمده ، "API Dropbox" و سپس "پوشه برنامه" را انتخاب کنید. در نهایت ، می توانید یک نام منحصر به فرد برای برنامه خود در Dropbox انتخاب کنید. روی "ایجاد برنامه" کلیک کنید.
سپس به صفحه تنظیمات برنامه خود در Dropbox منتقل می شوید. فقط یک کار دیگر وجود دارد که باید در اینجا انجام دهید - برای خود یک Access Token بسازید. برای انجام این کار ، به بخش "OAuth 2" بروید و در زیر "نشانه دسترسی ایجاد شده" ، روی دکمه "ایجاد" کلیک کنید.
این یک رشته طولانی از کاراکترها را برای دسترسی به حساب Dropbox شما با استفاده از پایتون به شما ارائه می دهد. این Access Token را یادداشت کنید زیرا بعداً باید آن را در کد خود مشخص کنید. در صورت از دست دادن توکن ، می توانید با کلیک روی "برنامه های من" در بخش "توسعه دهندگان" Dropbox به تنظیمات برنامه خود بازگردید و یک رمز جدید ایجاد کنید.
می توانید سایر تنظیمات را همانطور که هستند بگذارید. برای تأیید اینکه برنامه شما پوشه های لازم را در حساب Dropbox شما ایجاد کرده است ، به صفحه اصلی ذخیره سازی خود بروید و پوشه "برنامه ها" را جستجو کنید. درون این پوشه باید یک زیر پوشه با نامی که برای برنامه جدید خود انتخاب کرده اید ، وجود داشته باشد. این جایی است که همه فایل های سیستم نظارت شما قرار می گیرد.
مرحله 3: آماده سازی پوشه برنامه Dropbox شما
هنگامی که برنامه Dropbox خود را راه اندازی کردید ، وقت آن است که به نحوه استفاده از پوشه به دست آمده در حساب Dropbox خود برای تعامل با Pi خود فکر کنید. این امر به سادگی انجام می شود. اسکریپت پایتون که روی Pi اجرا می شود از زیر مجموعه ای از دستورات API Dropbox برای جستجو و تغییر نام برخی از فایل های خالی و بدون پسوند در پوشه برنامه شما استفاده می کند. ما این فایلها را "پرونده های پارامتری" می نامیم زیرا هر یک به شما امکان می دهد جنبه های مختلف رفتار سیستم نظارت را کنترل کنید. تصویر بالا چهار فایل پارامتر را نشان می دهد که باید در پوشه برنامه Dropbox شما برای این پروژه وجود داشته باشند. ایجاد آنها ساده است:
با شروع پوشه برنامه کاملاً خالی ، یک برنامه ویرایشگر متن را در رایانه خود باز کنید. در حالی که این کار را می توان با استفاده از Pi انجام داد ، من استفاده از لپ تاپ ویندوز خود را برای این مرحله راه اندازی آسان تر دیدم. هنگامی که ویرایشگر متن باز شد (من از Notepad در ویندوز 7 استفاده کردم) ، تنها کاری که باید انجام دهید این است که یک فایل متنی کاملاً خالی را در هر نقطه از رایانه خود ذخیره کنید. به عنوان اولین مثال ما ، اولین پارامتر را در تصویر هدر ایجاد می کنیم. هنگام ذخیره فایل ، نام آن را "تاخیر = 10" بگذارید.
برای مرور مجدد ، اکنون باید یک فایل متنی خالی با نام 'delay = 10' در رایانه خود ذخیره کنید. فایل همچنین دارای پسوند ".txt" است که ممکن است قابل مشاهده باشد یا نباشد.
مرحله بعدی این است که این فایل را در پوشه برنامه Dropbox خود بارگذاری کنید. این مانند هر بارگذاری Dropbox دیگری است. کافی است به پوشه برنامه خود بروید و روی "بارگذاری" کلیک کنید و فایل "delay = 10" خود را انتخاب کنید.
وقتی این فایل بارگذاری شد ، باید پسوند '.xt' را حذف کنید که اکنون باید در نام فایل قابل مشاهده باشد. برای انجام این کار ، کافی است روی فایل راست کلیک کرده و "Rename" را انتخاب کنید. قسمت '.txt' نام فایل را حذف کنید. اکنون باید فایلی به نام 'تاخیر = 10' بدون پسوند فایل باقی بماند ، همانطور که در تصویر سرصفحه نشان داده شده است.
فایل پارامتر "تاخیر" یکی از چهار موردی است که توسط برنامه نظارت استفاده می شود. برای ایجاد فایلهای دیگر ، فقط می توانید فایل "تاخیر" خود را با کلیک راست روی آن کپی و تغییر نام دهید. هنگامی که سه نسخه ایجاد کردید ، آنها را همانطور که در تصویر سرصفحه نشان داده شده است نامگذاری کنید تا پوشه برنامه شما مشابه پوشه ای باشد که در ابتدای این مرحله نشان داده شده است.
مرحله 4: شروع به کار با کد
همانطور که گفته شد ، هسته سیستم مانیتورینگ ما شامل یک اسکریپت پایتون است که با Dropbox ارتباط برقرار می کند. برای اینکه برنامه نظارت فعال باشد ، این اسکریپت باید در Pi در پس زمینه اجرا شود. من حدس می زنم که دقیقاً به عنوان یک اسکریپت "daemon" توصیف می شود ، به این معنی که شما فقط می توانید آن را اجرا کرده و فراموش کنید. اسکریپت به این مرحله متصل شده است ، بنابراین تکرار کد در اینجا منطقی نیست. اکنون ممکن است زمان خوبی برای بارگیری و آشنایی با آن باشد.
قبل از اینکه بتوانید اسکریپت را اجرا کنید ، مهم است که مطمئن شوید کتابخانه های مربوطه پایتون را نصب کرده اید. موارد مورد نیاز شما در بالای اسکریپت پیوست ذکر شده است. آن ها هستند:
وارد کردن dropbox
import pygame.camera import os import time
نصب Python بر روی Pi من قبلاً شامل pygame ، os و time بود ، بنابراین تنها موردی که باید نصب می کردم Dropbox بود. من این کار را با استفاده از دستورالعمل های نصب بسیار ساده آنها با pip انجام دادم.
پس از راه اندازی کتابخانه ها ، باید دو خط بالای اسکریپت پیوست را ویرایش کنید تا با Dropbox Access Token و شناسه منحصر به فرد سنسور دما DS18B20 مطابقت داشته باشد. این دو خط است که باید ویرایش شوند:
APP_ACCESS_TOKEN = '**********'
THERMOMETER_FILE = '/sys/bus/w1/devices/28-**********/w1_slave'
فقط **** ها را با مقادیر صحیح جایگزین کنید. در این مرحله ، شما در واقع آماده استفاده از برنامه نظارت هستید! به جای اینکه فقط وارد شوید ، توصیه می کنم برای مرور کلی کد ، به مرحله بعدی بروید.
مهم: وقتی این اسکریپت را اجرا می کنید ، می خواهید در پس زمینه اجرا شود تا الف) بتوانید از Pi استفاده کنید و ب) وقتی جلسه SSH خود را بستید ، اسکریپت به کار خود ادامه می دهد. این دستوراتی است که هنگام اجرای اسکریپت استفاده می کنم:
nohup python DropCamTherm.py &
این سه چیز را انجام می دهد: اسکریپت را اجرا می کند ('python DropCamTherm.py') ، بلافاصله کنترل را به خط فرمان باز می گرداند تا بتوانید از Pi ('&') استفاده کنید ، و خروجی های پایتون را ارسال می کند که معمولاً در خط فرمان در فایلی به نام 'nohup.out' نمایش داده می شود. این را می توان با استفاده از ویرایشگر متن لینوکس (مورد علاقه من نانو است) خواند و به طور خودکار در دایرکتوری که اسکریپت از آن اجرا می شود ایجاد می شود.
مرحله 5: عمیق تر شدن در کد
وقتی اسکریپت را باز می کنید ، متوجه می شوید که از سه تابع به همراه یک بلوک کد تشکیل شده است که هنگام اجرای اسکریپت این توابع را اجرا می کند. توابع از API Dropbox استفاده می کنند و به فایل ثبت دما در DS18B20 دسترسی دارند تا به دستورات Dropbox گوش دهند و آخرین خواندن دما را بارگذاری کنند. در زیر مروری بر عملکردها و نحوه استفاده از آنها برای کارکرد سیستم نظارت است:
- poll_parameter ():
این تابع هدف فایل های پارامتر Dropbox را که در مرحله 3 ایجاد کرده ایم نشان می دهد. پوشه برنامه Dropbox را برای یافتن یک فایل حاوی متن 'param =' جستجو می کند. سپس متن را بعد از '=' استخراج می کند و سعی می کند آن را به یک عدد صحیح تبدیل کند. می بینید که این به ما امکان می دهد برنامه را با افزودن اعداد مربوطه به انتهای فایل های پارامتر به صورت دستی کنترل کنیم. مرحله بعدی شامل یک دفترچه راهنمای مختصر است که نحوه استفاده از هر یک از فایل های پارامتر برای کنترل جنبه های برنامه را به شما نشان می دهد.
- set_parameter ():
این عملکرد به برنامه اجازه می دهد تا نام فایل پارامتر را از داخل پایتون تغییر نام دهد. این کار را در موارد متعددی انجام می دهد ، عمدتا برای کاهش نیاز به تغییر نام بیش از حد دستی فایل ها.
- set_latest_temp ():
این تابع از set_parameter () برای بارگذاری آخرین دما در پوشه برنامه Dropbox با افزودن آن به فایل پارامتر "دما" استفاده می کند. این تابع آخرین دما را از پرونده گزارش DS18B20 (که در لینوکس در مسیری که توسط متغیر THERMOMETER_FILE مشخص شده است) موجود است ، می خواند.
قسمت پایانی برنامه شامل کدی است که هنگام اجرای اسکریپت اجرا می شود. پس از چند مرحله راه اندازی برای سنسور DS18B20 ، یک جلسه Dropbox با استفاده از Access Token شما باز می شود و از pygame برای جستجوی وب کم شما استفاده می کند. اگر یک وب کم پیدا شود ، یک حلقه وارد می کند که در آن از poll_parameter () برای استخراج اطلاعات از Dropbox و عمل به آن استفاده می کند.
مهم: خط کد زیر را مشاهده خواهید کرد:
cam = pygame.camera. Camera (cam_list [0] ، (864 ، 480))
… این تلاش می کند تا از اولین وب کم که pygame تشخیص می دهد یک رابط دوربین قابل استفاده ایجاد کند. ممکن است برای مطابقت با وب کم شما وضوح تصویر تغییر کند. با تعدادی از مقادیر آزمایش کنید تا بهترین کار را بیابید.
مرحله 6: استفاده از فایل های پارامتر Dropbox
بنابراین اکنون باید یک اسکریپت کار کنید که وقتی از دستورالعمل های مرحله 4 استفاده می کنید ، به Pi شما اجازه می دهد پوشه برنامه را برای ورودی های شما نظارت کند. در اولین اجرا ، پوشه برنامه باید شامل فایل های پارامتر زیر باشد:
تاخیر = 10
exitprogram = 0 درخواست تصویر = 0 دما = 0
تعامل با برنامه با تغییر نام فایلهای پارامتر از طریق Dropbox به دست می آید. برای انجام این کار ، فقط روی یکی از فایل ها راست کلیک کرده و "تغییر نام" را انتخاب کنید. هر فایل پارامتر عملکرد متفاوتی دارد:
- تاخیر انداختن:
این فایل به برنامه نظارت می گوید که بین هر تکرار حلقه نظارت چند ثانیه منتظر بمانید. وقتی می دانم که زیاد با برنامه ارتباط برقرار نخواهم کرد ، آن را روی 60 یا 120 قرار می دهم. وقتی می دانم که می خواهم اغلب داده ها را از Pi درخواست کنم ، آن را روی 10 تنظیم می کنم.
- برنامه خروج:
این باید روی 1 یا 0 تنظیم شود. اگر برنامه تشخیص دهد که روی 1 تنظیم شده است ، اسکریپت به پایان می رسد. اگر آن را روی 1 قرار دهید و اسکریپت خارج شود ، باید مجدداً به Pi وارد شوید تا پشتیبان گیری شروع شود. این پارامتر به گونه ای وجود دارد که بتوانید برنامه نظارت را هنگامی که دیگر نیازی به اجرای آن ندارید ، با ظرافت به پایان برسانید (به عنوان مثال ، اگر به خانه برگشته اید و دیگر نمی خواهید وب کم را از راه دور تحت نظر داشته باشید).
- درخواست تصویر:
شاید این مهمترین پارامتر باشد. این باید روی 1 یا 0 تنظیم شود. اگر برنامه تشخیص دهد که روی 1 تنظیم شده است ، یک تصویر از وب کم درخواست کرده و آن را در پوشه برنامه بارگذاری می کند (با عنوان 'image.jpg'). اگر "image.jpg" دیگری وجود داشته باشد ، آن را رونویسی می کند.
- درجه حرارت:
این دمای DS18B20 است که توسط تابع set_latest_temp () تنظیم شده است. هرگز نیازی به ویرایش این پارامتر ندارید - به طور خودکار توسط برنامه تنظیم می شود.
توجه داشته باشید که اگر "exitprogram" یا "imagerequest" را روی 1 تنظیم کنید ، برنامه قبل از اجرای کد مربوطه آنها را به طور خودکار به 0 باز می گرداند. این برای راحتی است. همچنین ممکن است توجه داشته باشید که کد شامل بسیاری از بلوک های "try" و "εκτός" است که بسیاری از توابع مهم را احاطه کرده اند. این امر برای اطمینان از این است که اگر خطایی رخ دهد (مانند مشکل اتصال به اینترنت که مانع از دسترسی Dropbox می شود) ، اسکریپت استثنا نخواهد کرد (و در نتیجه اجرا را متوقف نمی کند).
مرحله 7: نتیجه گیری
این پروژه راهی برای کنترل رزبری پای با استفاده از پایتون و دراپ باکس ارائه کرده است. در حالی که سخت افزار مورد استفاده در این پروژه سنسور دما و وب کم USB است ، برنامه های کاربردی دیگری نیز برای این روش کنترل Pi وجود دارد. در واقع ، هر جزء سخت افزاری که از طریق GPIO قابل دسترسی است را می توان با استفاده از ساختار برنامه مشابه کنترل کرد و این باعث می شود سیستم بسیار آسان گسترش یابد.
در مرحله بعد ، همچنین می توانید از یک کتابخانه GUI مانند Tkinter به همراه API Dropbox برای ایجاد یک برنامه مشتری استفاده کنید که به شما امکان می دهد فایل های پارامتر را حتی بدون نیاز به ورود به Dropbox تغییر دهید.
امیدوارم این آموزش واضح بوده باشد ، و اگر سوالی دارید یا می خواهید چیزی را توضیح دهم ، لطفاً نظر دهید!
توصیه شده:
برد توسعه سفارشی رزبری پای خانگی: 8 مرحله
Raspberry Pi Homemade Expansion Board: از سال 2015 من این پروژه بزرگ را بهبود می بخشم تا یک مرکز رسانه ای سفارشی تقریبا نامحدود روی ماشین خود داشته باشم. یک روز تصمیم گرفتم سازمان را با یک صفحه PCB سفارشی خانگی به سیم وصل کنم. تصاویر بالا در مرحله نمونه اولیه گسترده هستند ، بنابراین
اتوماسیون خانگی با استفاده از صدا و Snips رزبری پای ماتریس (قسمت 2): 8 مرحله
اتوماسیون خانگی با استفاده از صدا و اسنیپس رزبری پای ماتریس (قسمت 2): به روز رسانی اتوماسیون خانگی با استفاده از صدای تمپری پای ماتریس و اسنیپس. در این PWM برای کنترل LED های خارجی و سرو موتور استفاده می شود تمام جزئیات ذکر شده در قسمت 1 https://www.instructables.com/id/Controlling-Light
سیستم نظارت بر حیوانات خانگی دارای آردوینو و تمشک پای: 19 مرحله (همراه با تصاویر)
سیستم نظارت بر حیوانات خانگی دارای آردوینو و تمشک پای: اخیراً هنگام تعطیلات متوجه عدم ارتباط با حیوان خانگی خود بیگل شدیم. پس از انجام برخی تحقیقات ، ما محصولاتی را پیدا کردیم که دارای یک دوربین استاتیک بودند که به فرد اجازه می داد حیوان خانگی خود را تحت نظر داشته و با آن ارتباط برقرار کند. این سیستم ها دارای مزایای خاصی بودند
چشمک زدن LED با تمشک پای - نحوه استفاده از پین های GPIO در رزبری پای: 4 مرحله
چشمک زدن LED با تمشک پای | نحوه استفاده از پین های GPIO در Raspberry Pi: سلام بچه ها در این دستورالعمل نحوه استفاده از GPIO's Raspberry pi را یاد می گیریم. اگر تا به حال از آردوینو استفاده کرده اید ، احتمالاً می دانید که ما می توانیم سوئیچ LED و غیره را به پین های آن وصل کرده و آن را مانند کار کنیم. چشمک بزنید یا ورودی را از سوئیچ دریافت کنید تا
نظارت بر دمای اتاق رزبری پای با خروجی تصویر Gnuplot و قابلیت هشدار ایمیل: 7 مرحله
نظارت بر دمای اتاق رزبری پای با خروجی تصویر Gnuplot و قابلیت هشدار ایمیل: جایی که من کار می کنم ، یک اتاق بسیار مهم وجود دارد که تعداد زیادی کامپیوتر در آن قرار دارد. برای بهینه سازی عملکرد این سیستم ها ، دمای محیط این اتاق باید بسیار سرد باشد. از من خواسته شد که یک سیستم نظارتی ارائه دهم که قابلیت