Mundarija:

WiFi yoqilgan haroratni boshqaruvchi aqlli vilka: 4 qadam
WiFi yoqilgan haroratni boshqaruvchi aqlli vilka: 4 qadam

Video: WiFi yoqilgan haroratni boshqaruvchi aqlli vilka: 4 qadam

Video: WiFi yoqilgan haroratni boshqaruvchi aqlli vilka: 4 qadam
Video: Deek-Robot DTC1200 raqamli haroratni boshqarish uchun termostatni qanday ishlatish kerak 2024, Noyabr
Anonim
WiFi yoqilgan haroratni boshqaruvchi aqlli vilka
WiFi yoqilgan haroratni boshqaruvchi aqlli vilka

Ushbu yo'riqnomada biz og'ir yuk ko'tarish uchun oddiy ESP8266 va DHT11 harorat/namlik sensori yordamida WiFi -ga ega bo'lgan harorat o'lchagichini qanday qurishni ko'rib chiqamiz. Agar men sotib olmoqchi bo'lsangiz, men yaratgan va hozirda kanalning tindie do'konida sotiladigan elektron platadan ham foydalanamiz.

Sizga kerak bo'lgan materiallar ro'yxatini boshlaylik:

ESP8266 WiFi moduli

amzn.to/2pkGPoa

DHT11 sensori

amzn.to/2phwfhO

TP-Link aqlli vilkasi

amzn.to/2GElQUz

Siz kanalning tindie do'konida butun modulni olishingiz mumkin:

www.tindie.com/products/misperry/wifi-enab…

PCB mato uchun JLCPCB -ni tekshiring. Men PCB ishlab chiqarganlar:

Birinchi buyurtma bo'yicha bepul etkazib berish va $ 2 PCB prototipi https://jlcpcb.com saytida

1 -qadam: Kodni ESP8266 ga qo'shish

Endi biz ESP8266 -ga quyidagi kodni o'chirishimiz kerak bo'ladi. Bu kodni quyidagi github omboridan topish mumkin:

Quyidagi kodda siz faqat bir nechta ta'rif bo'limlarini o'rnatishingiz kerak bo'ladi:

MQTT serveri:

MQTT foydalanuvchisi:

MQTT paroli:

MQTT_sensor_topik:

-Wifi

Said: siz ulanayotgan wifi tarmog'i haqida

Parol: WiFi paroli.

Quyidagi kodni to'ldirgandan so'ng, siz xatolarni tuzishingiz va tekshirishingiz mumkin, agar 0 xato bo'lsa, uni ESP8266 -ga o'chirib qo'yishingiz mumkin.

/ * * Fayl nomi: TempHumSensor.ino * * Ilova: HomeAssistant kosmik isitgich termostati * * Tavsif: Bu kod ESP8266 WiFi yoqilgan arduino * mos keladigan qurilma uchun. Bu DHT11 qurilmasining harorat ma'lumotlarini * qayta ishlash uchun HASS frontendiga uzatadi. * * Muallif: M. Sperri - https://www.youtube.com/misperry * Sana: 03/ * Tuzatish: 1.0 * * */

#qo'shing

#qo'shish #qo'shish #qo'shish #qo'shish #qo'shish

#define CON_TIME_OUT 20 // Wi -Fi ulanmagan

#define MQTT_TIME_OUT 10 // MQTT serveriga ulanmagan

#define DHTPIN 0 // DHT sensoriga ulangan pin

#Define DHTTYPE DHT11 // Sensor turi - DHT11, siz uni DHT22 (AM2302), DHT21 (AM2301) ga o'zgartirishingiz mumkin.

#define mqtt_server "" // MQTT server qo'shimchalarini yoki IP -ni kiriting. Men bu sohada DuckDNS manzili (yourname.duckdns.org) dan foydalanaman

#define mqtt_user "" // MQTT foydalanuvchi nomingizni kiriting #deq mqtt_password "" // parolingizni kiriting #dequine MQTT_SENSOR_TOPIC "ha/bedroom_temp" // MQTT uchun mavzuni kiriting.

// Wi -Fi: SSID va parol

const char* ssid = ""; const char* parol = "";

// DHT sozlash

DHT_Unified dht (DHTPIN, DHTTYPE); uint32_t kechikish MS;

WiFiClient wifiClient;

PubSubClient mijozi (wifiClient);

// harorat va namlikni e'lon qilish funktsiyasi

void publishData (float p_temperature) {// JSON obyektini yaratish // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject & root = jsonBuffer.createObject (); // INFO: ma'lumotlar satrga aylantirilishi kerak; floatlardan foydalanganda muammo yuzaga keladi… // fahrenheitga aylantirish p_temperature = (p_temperatur * 1.8) + 32; // farenxayt ildiziga aylantirish ["harorat"] = (String) p_temperature; root.prettyPrintTo (ketma -ket); Serial.println ("");

char ma'lumotlari [200];

root.printTo (ma'lumotlar, root.measureLength () + 1); client.publish (MQTT_SENSOR_TOPIC, ma'lumotlar, rost); }

// MQTT xabari kelganda chaqiriladigan funksiya

bekor qo'ng'iroq (char* p_topic, bayt* p_payload, imzosiz int p_length) {}

bekor qayta ulanish () {

// Bizni (! Client.connected ()) {Serial.print ("INFO: MQTT ulanishga urinish …") qayta ulanmagunimizcha aylantiring; // Ulanishga urinish if (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) {Serial.println ("INFO: ulangan"); } else {Serial.print ("XATO: bajarilmadi, rc ="); Serial.print (client.state ()); Serial.println ("DEBUG: 5 soniyadan keyin qayta urinib ko'ring"); // Kechiktirishni qayta urinishdan oldin 5 soniya kuting (5000); }}}

bekor o'rnatish (bekor) {

Serial.begin (9600);

// Biz Wi -Fi tarmog'iga ulanishdan boshlaymiz

Serial.println (); Serial.println (); Serial.print ("Ulanish"); Serial.println (ssid);

WiFi.begin (ssid, parol);

esa (WiFi.status ()! = WL_CONNECTED) {

kechikish (800); Serial.print ("."); }

Serial.println ("");

Serial.println ("Wi -Fi ulangan"); Serial.println ("IP -manzil:"); Serial.println (WiFi.localIP ()); // MQTT ulanishi client.setServer (mqtt_server, 1883); client.setCallback (qayta qo'ng'iroq qilish);

// DHT sensorini ishga tushiring

dht.begin (); Serial.println ("DHT11 yagona sensorli ma'lumotlari");

// Harorat sensori tafsilotlarini chop etish

sensor_t sensori; dht.temperature (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Harorat"); Serial.print ("Sensor:"); Serial.println (sensor.name); Serial.print ("Driver Ver:"); Serial.println (sensor.versiya); Serial.print ("Noyob identifikator:"); Serial.println (sensor.sensor_id); Serial.print ("Maksimal qiymat:"); Serial.print (sensor.max_value); Serial.println (" *C"); Serial.print ("Minimal qiymat:"); Serial.print (sensor.min_value); Serial.println (" *C"); Serial.print ("Qaror:"); Ketma -ket chop etish (sensor. Rezolyutsiya); Serial.println (" *C"); Serial.println ("------------------------------------"); // Namlik sensori tafsilotlarini chop eting. dht.humidity (). getSensor (& sensor); Serial.println ("------------------------------------"); Serial.println ("Namlik"); Serial.print ("Sensor:"); Serial.println (sensor.name); Serial.print ("Driver Ver:"); Serial.println (sensor.versiya); Serial.print ("Noyob identifikator:"); Serial.println (sensor.sensor_id); Serial.print ("Maksimal qiymat:"); Serial.print (sensor.max_value); Serial.println ("%"); Serial.print ("Minimal qiymat:"); Serial.print (sensor.min_value); Serial.println ("%"); Serial.print ("Qaror:"); Ketma -ket chop etish (sensor. Rezolyutsiya); Serial.println ("%"); Serial.println ("------------------------------------");

// Sensor tafsilotlari asosida sensorlar o'qishlari orasidagi kechikishni o'rnating

kechikish MS = sensor.min_delay / 1000; }

bo'sh halqa (bo'sh) {

suzish harorati;

agar (! client.connected ())

{qayta ulanish (); }

kechikish (kechikish MS);

// Harorat hodisasini oling va uning qiymatini chop eting.

sensors_event_t hodisasi; dht.temperature (). getEvent (& hodisa); if (isnan (hodisa.temperatur))) {Serial.println ("Haroratni o'qishda xato!"); harorat = 0,00; } boshqa {harorat = hodisa.temperatur; Serial.print ("Harorat:"); Seriyali bosma (harorat); Serial.println (" *C"); } // MQTT -ga nashr etishDataboshlash (harorat); }

2-qadam: TP-LINK aqlli vilkasini o'rnatish

TP-LINK aqlli vilkasini sozlash
TP-LINK aqlli vilkasini sozlash

Siz TP-LINK aqlli vilkasini yoki ishlab chiqaruvchi tomonidan tavsiya etilgan uskuna uchun aqlli vilkasini o'rnatishingiz kerak bo'ladi.

Qurilmadagi MAC manziliga e'tibor bering. Agar sizning qurilmangiz mening TP-LINK qurilmamga o'xshasa, siz statik IP-manzilni o'rnatolmaysiz. Shunday qilib, siz yo'riqchini DHCP zahirasi uchun sozlashingiz kerak bo'ladi. Bu sizning qurilmangizning MAC manzilini oladi va yo'riqnoma manzil so'rasa, har safar unga bir xil manzil beriladi.

Buni Linksys -da qanday sozlash haqida havola

www.linksys.com/us/support-article?article…

3 -qadam: Uy yordamchisini sozlash

Endi uy yordamchisini sozlash. Buning uchun siz o'rnatgan qurilmadagi /home/homeassistant/.homeassistant papkasida joylashgan configuration.yaml fayliga quyidagi konfiguratsiyalarni qo'shishingiz kerak bo'ladi.

Buni uy yordamchisi konfiguratsiyasiga qo'shishni tugatgandan so'ng, o'zgarishlar ta'sir qilishi uchun siz uy yordamchi dasturini qayta ishga tushirishingiz kerak bo'ladi.

Shuningdek, men TP-LINK aqlli vilkasini kommutatsiya qurilmasidan foydalanaman va uning konfiguratsiya faylida ta'rifi quyida keltirilgan. Qurilma uchun ishlatiladigan IP -manzil avvalgi bosqichda DHCP -ni bron qilish uchun o'rnatgan manzilingizdir.

Ushbu konfiguratsiyani quyidagi github repo -da ham topish mumkin:

mqtt: switch: - platforma: tplink nomi: Yotoq xonasi isitgichi: 192.168.2.11

Sensor 1:

platforma: mqtt state_topic: 'ha/bedroom_temp' nomi: Yotoq xonasi harorati o'lchov birligi: '° F' qiymati_template: '{{value_json.temperature}}'

avtomatlashtirish:

- taxallus: _Temp Bedroom Temp High trigger: - platforma: numeric_state entity_id: sensor. Bedroom_Temp yuqorida: 73

harakat:

xizmat: homeassistant.turn_off entity_id: switch. Bedroom_Heater

- taxallus: _Yotoqxonadagi harorat past

trigger: - platforma: numeric_state entity_id: sensor. Bedroom_Temp pastda: 73 ta harakat: xizmat: homeassistant.turn_on entity_id: switch. Bedroom_Heater

4 -qadam: Yakuniy qadamlar

Image
Image
Yakuniy qadamlar
Yakuniy qadamlar
Yakuniy qadamlar
Yakuniy qadamlar

Endi sizning uy yordamchingiz konfiguratsiyasi va Arduino kodini sozlash bilan siz butun tizimni faollashtirishga tayyor bo'lasiz. Shunday qilib, isitgich/fan/sovutgich vilkasini aqlli vilkaga joylashtiring va aqlli vilkasini rozetkaga ulang. Tayyor bo'lgach, siz kichik USB zaryadlovchini, keyin esa Wi -Fi yoqilgan haroratni o'lchash moslamasini ulashingiz kerak bo'ladi. Hammasi Internetga kirgandan so'ng, siz uy yordamchisining boshqaruv paneliga qarashingiz va yangi harorat haqida xabar berishingiz mumkin.

Barcha yordamingiz va qo'llab -quvvatlashingiz uchun katta rahmat. ishonch hosil qiling va https://www.youbue.com/misperry kanaliga tashrif buyuring va bizda nima borligini ko'ring. Kanalga yordam berish uchun obuna bo'lishni va do'stlaringiz bilan bo'lishishni unutmang.

Tavsiya: