تهویه مطبوع در بسیاری از خانه ها فاقد ویژگی های مدرن مانند اتوماسیون مرکزی، ترموستات های قابل برنامه ریزی، سنسورهای متعدد یا کنترل Wi-Fi است. اما فن آوری قدیمی تهویه مطبوع هنوز قابل اعتماد است، بنابراین در بسیاری از موارد، بعید است که به زودی ارتقا یابد.
با این حال، این امر به کاربران نیاز دارد که مکرراً کار یا خواب را برای روشن یا خاموش کردن کولر قطع کنند. این امر به ویژه در خانه هایی با چیدمان محکم، مانند خانه من صادق است:
خانه های ایالات متحده معمولاً دارای تهویه مطبوع مرکزی هستند، اما این مورد در سطح جهانی نیست. نداشتن AC مرکزی گزینه های اتوماسیون را محدود می کند و دستیابی به دمای یکسان در کل خانه را دشوارتر می کند. به طور خاص، جلوگیری از نوسانات دما که ممکن است نیاز به مداخله دستی برای رسیدگی داشته باشد را دشوار می کند.
به عنوان یک مهندس و علاقهمند به اینترنت اشیا (IoT)، فرصتی را دیدم که چند کار مفید را همزمان انجام دهم:
- با بهبود کارایی واحد تهویه مطبوع مستقل من به صرفه جویی در انرژی کمک کنید
- از طریق اتوماسیون و ادغام Google Home، خانهام را راحتتر کنید
- به جای محدود شدن به گزینه های تجاری موجود، راه حل خود را دقیقاً همانطور که می خواستم سفارشی کنید
- برخی از مهارتهای حرفهایام را با استفاده از سختافزار آزمایششده و آزمایششده تقویت کنم
تهویه مطبوع من یک دستگاه پایه با یک کنترل از راه دور مادون قرمز ساده است. من از دستگاههایی آگاه بودم که واحدهای تهویه مطبوع را قادر میسازند تا با سیستمهای خانه هوشمند استفاده شوند، مانند Sensibo یا Tado. در عوض، من یک رویکرد DIY را در پیش گرفتم و یک ترموستات Raspberry Pi ایجاد کردم که امکان کنترل پیچیده تری را بر اساس ورودی سنسور از اتاق های مختلف فراهم می کرد.
سخت افزار ترموستات Raspberry Pi
من قبلاً از چندین Raspberry Pi Zero W و همراه با آن استفاده می کردم DHT22 ماژول های حسگر، برای نظارت بر دما و رطوبت در اتاق های مختلف. به دلیل پلان طبقه بندی شده، سنسورها را برای نظارت بر گرمای هوا در قسمت های مختلف خانه نصب کردم.
من همچنین یک سیستم نظارت خانگی (برای این پروژه لازم نیست) روی رایانه شخصی ویندوز 10 با WSL 2 دارم. میخواستم خوانشهای حسگر را در فیلمهای نظارتی به عنوان یک پوشش متنی روی فید ویدیویی ادغام کنم.
سیم کشی سنسور
حسگرها به سیم ساده بودند و فقط سه اتصال داشتند:
من استفاده کردم Raspberry Pi OS Lite، نصب پایتون 3 با PiP و Adafruit_DHT کتابخانه برای پایتون برای خواندن داده های حسگر. از نظر فنی منسوخ شده است اما نصب و استفاده از آن ساده تر است. به علاوه، به منابع کمتری برای مورد استفاده ما نیاز دارد.
من همچنین میخواستم گزارشی از تمام خواندهها داشته باشم، بنابراین از یک سرور شخص ثالث استفاده کردم. ThingSpeak، برای میزبانی داده های من و ارائه آن از طریق تماس های API. این نسبتاً ساده است، و از آنجایی که من نیازی به خواندن بلادرنگ نداشتم، ترجیح دادم هر پنج دقیقه یک بار داده ارسال کنم.
import requests
import time
import random
import Adafruit_DHT
KEY = 'api key'
def pushData(temp:float, hum:float):
'''Takes temp and humidity and pushes to ThingsSpeak'''
url="
params = {'api_key': KEY, 'field5': temp, 'field6': hum}
res = requests.get(url, params=params)
def getData(sensor:int, pin:int):
'''
Input DHT sensor type and RPi GPIO pin to collect a sample of data
Parameters:
sensor: Either 11 or 22, depending on sensor used (DHT11 or DHT22)
pin: GPIO pin used (e.g. 4)
'''
try:
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
return humidity, temperature
except:
Exception("Error reading sensor data")
return False
if __name__ == "__main__":
sensor = 22 # Change to 11 if using DHT11
pin = 4 # I used GPIO pin 4
while True:
h, t = getData(sensor, pin)
pushData(t, h)
time.sleep(300)
در رایانه شخصی نظارتی اختصاصی خود که WSL 2 را اجرا می کند، یک اسکریپت PHP تنظیم کردم که داده ها را از ThingSpeak واکشی می کند، آن را قالب بندی می کند و به صورت ساده می نویسد. .txt
فایل. این .txt
فایل مورد نیاز است تا نرم افزار نظارت من آن را در بالای جریان ویدیو پوشش دهد.
از آنجایی که من قبلاً مقداری اتوماسیون در خانه داشتم، از جمله لامپ های هوشمند و چندین روال در Google Home، پس از آن از داده های حسگر به عنوان یک ترموستات هوشمند در Google Home استفاده کردم. برنامه من این بود که یک روال Google Home ایجاد کنم که تهویه مطبوع را به طور خودکار بر اساس دمای اتاق روشن یا خاموش کند، بدون نیاز به ورودی کاربر.
راهحلهای یکپارچه گرانتر مانند راهحلهای Sensibo و Tado به تنظیمات فنی کمتری نیاز دارند، اما با کسری از هزینه، PNI SafeHome PT11IR به من امکان داد تا از تلفنم برای کنترل هر تعداد دستگاه مادون قرمز در محدوده آن استفاده کنم. برنامه کنترل، مال شما، با Google Home ادغام می شود.
غلبه بر مشکلات یکپارچه سازی Google Home
با در دسترس بودن داده های تهویه مطبوع و سنسور با قابلیت هوشمند، سعی کردم Raspberry را به عنوان یک ترموستات در Google Home شناسایی کنم اما فایده ای نداشت. من توانستم دادههای حسگر را به Google IoT Cloud و سرویس Pub/Sub آن ارسال کنم، اما هیچ راهی برای ارسال آن به Google Home وجود نداشت تا یک روال بر اساس آن دادهها ایجاد شود.
پس از چند روز تأمل در این مورد، به یک رویکرد جدید فکر کردم. اگر نیازی به ارسال دادهها به Google Home نداشته باشم، چه اتفاقی میافتد؟ اگر بتوانم داده ها را به صورت محلی بررسی کنم و فرمانی برای روشن یا خاموش کردن کولر گازی به Google Home ارسال کنم؟ من دستورات صوتی را با موفقیت آزمایش کردم، بنابراین این رویکرد امیدوارکننده به نظر می رسید.
یک جستجوی سریع پیدا شد رله دستیار، یک سیستم مجهز به Node.js که به کاربر امکان می دهد دستوراتی را به دستیار Google ارسال کند و به کاربر این امکان را می دهد که هر چیزی را به Google Assistant گره بزند تا زمانی که بداند با ورودی دریافتی چه کند.
حتی بهتر از آن، با Assistant Relay، میتوانم به سادگی با ارسال درخواستهای POST به دستگاهی که سرور Node.js را اجرا میکند (در این مورد Raspberry Pi Zero W) با برخی از پارامترهای مورد نیاز، دستورات را به دستیار Google خود پایان دهم. خودشه. فیلمنامه است به خوبی مستند شده است بنابراین من در اینجا وارد جزئیات نمی شوم.
از آنجایی که دادههای حسگر قبلاً در رایانه نظارتی خوانده میشد، من متوجه شدم که میتوانم درخواست را در اسکریپت PHP ادغام کنم تا همه چیز را در یک مکان نگه دارم.
از آنجایی که احتمالاً آن را ندارید .txt
نیاز به فایل، میتوانید با خواندن مستقیم دادههای حسگر و صدور دستورات بر اساس آن دادهها به سرویس Google Assistant، از طریق Assistant Relay، فرآیند را ساده کنید. همه اینها را می توان از یک دستگاه Raspberry Pi بدون نیاز به سخت افزار اضافی انجام داد. با این حال، از آنجایی که قبلاً نیمی از کار را تکمیل کرده بودم، منطقی بود که از آنچه داشتم استفاده کنم. هر دو اسکریپت در این مقاله را می توان در یک ماشین استفاده کرد. علاوه بر این، در صورت نیاز، اسکریپت PHP را می توان در پایتون بازنویسی کرد.
تنظیم شرایط و خودکارسازی عملیات
من میخواستم چرخه برق خودکار فقط در شب اتفاق بیفتد، بنابراین ساعتهایی را که میخواستم کارکرد را خودکار کنم – 10 شب تا 7 صبح – تعیین کردم و دمای مطلوب را تنظیم کردم. شناسایی فواصل دمایی صحیح – برای دستیابی به یک محدوده راحت بدون کوتاه کردن طول عمر واحد تهویه مطبوع با چرخش زیاد برق آن – به چند تلاش برای درست کردن آن نیاز داشت.
اسکریپت PHP که پوشش دادههای حسگر را ایجاد میکرد، به گونهای تنظیم شد که هر پنج دقیقه از طریق یک کار cron اجرا شود، بنابراین تنها چیزی که به آن اضافه کردم شرایط و درخواست POST بود.
با این حال، این یک مسئله ایجاد کرد. اگر شرایط برآورده می شد، فیلمنامه هر پنج دقیقه یک فرمان «روشن» را ارسال می کرد، حتی اگر تهویه مطبوع از قبل روشن بود. این باعث شد که دستگاه حتی با فرمان “خاموش” به طور آزاردهنده بیپ کند. برای رفع این مشکل، به راهی برای خواندن وضعیت فعلی واحد نیاز داشتم.
Elegance در اولویت نبود، بنابراین من یک فایل JSON حاوی یک آرایه ساختم. هر زمان که دستورات «روشن» یا «خاموش» با موفقیت کامل شوند، اسکریپت آخرین وضعیت را به این آرایه اضافه میکند. این افزونگی حل شد. با این حال، به ویژه روزهای گرم یا گرمای بیش از حد در طول زمستان می تواند باعث شود شرایط دوباره برقرار شود. من تصمیم گرفتم که در این مواقع یک لغو دستی کافی باشد. من اضافه کردن یک بازگشت قبل از قطعه سوئیچ را به این منظور به عنوان تمرینی برای خواننده ترک می کنم:
<?php
switch(true)
{
case $temperature > 27:
turnAc('on');
break;
case $temperature < 24:
turnAc('off');
break;
}
function turnAc($status)
{
$command = 'turn on hallway ac'; // hallway ac is the Google Home device name for my AC
if ($status == 'off')
{
$command = 'turn off hallway ac';
}
if ($status == 'on' && checkAc() == 'on')
{
return;
}
if ($status == 'off' && checkAc() == 'off')
{
return;
}
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'local assistant server ip',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"command": '.$command.',
"converse": false,
"user": "designated user"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
$obj = null;
try {
$obj = json_decode($response);
} catch (Exception $e) {
}
if (!$obj || $obj->success != true)
{
markAc($status == 'on' ? 'off' : 'on'); // if error, mark it as opposite status
return;
}
markAc($status);
}
function markAc($status)
{
$file = __DIR__ . "/markAc.json";
$json = json_decode(file_get_contents($file), true);
$json[] = array(date('F j, Y H:i:s'), $status);
$handler = fopen($file, "w") or die("Unable to open file!");
$txt = json_encode($json);
fwrite($handler, $txt);
fclose($handler);
}
function checkAc()
{
$file = __DIR__ . "/markAc.json";
$json = json_decode(file_get_contents($file), true);
$end = array_pop($json);
return $end[1];
}
این کار کرد اما نه در اولین تلاش. من باید در طول مسیر چیزهایی را کشف می کردم و در صورت نیاز آنها را تغییر می دادم. امیدوارم با بهره مندی از تجربه من، نیازی به انجام کارهای زیادی برای درست کردن آن در بار اول نداشته باشید.
ارزش یک کنترلر ترموستات Raspberry Pi
من انگیزه داشتم تهویه مطبوع خود را خودکار کنم زیرا چیدمان نامتعارف خانه من گاهی اوقات منجر به دماهای بسیار متفاوت در اتاق های مختلف می شود. اما اتوماسیون گرمایش و سرمایش حتی برای کسانی که با این مشکل خاص مواجه نیستند، مزایایی دارد.
مردم در سرتاسر جهان در آب و هوای مختلف زندگی میکنند و قیمتهای متفاوتی برای انرژی پرداخت میکنند (و نرخهای متفاوت در زمانهای مختلف روز)، بنابراین حتی پیشرفتهای اندک در بهرهوری انرژی میتواند اتوماسیون را در مناطق خاصی ارزشمند کند.
علاوه بر این، با خودکار شدن خانههای بیشتر و بیشتر، دلیلی وجود دارد که پتانسیل خودکارسازی دستگاهها و لوازم برقی قدیمیتر مانند کولر، بخاری برقی و آبگرمکن را بررسی کنیم. از آنجایی که این دستگاهها معمولاً حجیم هستند، نصب آنها دشوار است و ارتقاء آنها گران است، بسیاری از مردم سالهای آینده با آنها گیر خواهند کرد. کمی هوشمندتر کردن این دستگاههای «گنگ» نه تنها میتواند آسایش و بهرهوری انرژی را بهبود بخشد، بلکه طول عمر آنها را نیز افزایش میدهد.