Telegram API, bot va u bilan ishlash bo’yicha dastlabki ma’lumotlar Arduino bo’yicha alohida darda keltirib o’tilgan. Quyida esa, mazkur darsda o’rganilgan ma’lumotlardan, shuningdek, mavzu yuzasidan amaliy mashg’ulot davomida tayyorlangan o’quv loyihasidan foydalanilgan holda Wemos D1 mini, termodatchik va rele yordamida termostat loyihasini yaratish, xususan, uning ishlash jarayoni bo’yicha hisobotlarni Telegram botiga ham jo’natib turish bo’yicha ma’lumot beriladi.
Ushbu termostatdan quyidagi maqsadlarda foydalanish mumkin:
- aqlli uy tarkibida, xonalardagi haroratni nazorat qilish, jumladan gaz kotyollari, iliq pol (тёплый пол) suv nasoslari, isitgich (обогреватель), konditsioner, avtomatik ochiladigan eshik yoki romlarni boshqarish orqali nazorat qilish uchun;
- mahsulot omborlari, qishloq xo’jaligi mahsulotlarini saqlash binolarida haroratni nazorat qilish va boshqarish uchun;
- aqlli issiqxona tashkil etish uchun;
- inkubator tashkil qilish uchun, va hokazo.
Ushbu termostatni avvalo sayt materiallari yordamida yaratiladigan aqlli uy umumiy loyihasiga integratsiya qilish rejalashtirilgan.
Telegram botiga bog’lanadigan termostat quyidagi vazifalarni bajaradi:
- Termodatchik joylashgan hududdagi haroratni va havo namligini o’lchab, ko’rsatkichlarni displeyga chiqarish;
- Termodatchik ko’rsatkichlari belgilangan qiymat oralig’idan chetga chiqqanda, tegishli sovutish yoki isitish qurilmasini ishga tushirish, shuningdek, ko’rsatkichlar normal darajaga yetganda ularni o’chirish;
- Ko’rsatkichlarda o’zgarish yuz berganda yoki ma’lum davriylikda ularni Telegram botiga yuborib turish, shuningdek, isitish yoki sovutish qurilmasi ishga tushganligi holatlari haqida xabardor qilib borish;
- NTP-serverdan avtomatik to’g’rilab boriladigan “elektron soat” rejimi (vaqt, sana va hafta kunini ko’rsatadi);
- Termostatni hamda elektron soatni boshqarish va sozlashni Telegram boti yordamida bajarish (bot – boshqaruv pulti vazifasini bajaradi).
Qo’shimcha funksiyalar:
- Termostat uchun tavsiya etiladigan asosiy sozlamalarini “avtosozlash” (“restore”) kodi yordamida tezkor qayta tiklash;
- Zarurat tug’ilganda, agar avtomatik sozlamalarga zid bo’lmasa, termostatga ulangan isitish yoki sovutish uskunalarini bot buyrug’i yordamida ixtiyoriy paytda qo’lda ishga tushirish yoki o’chirish (sozlamalarga zid bo’lgan taqdirda, yuklamalar avvalo sozlamaga asosan avtomatik ravishda boshqariladi);
- Termostat xotirasida quyidagi sozlash parametrlarini saqlash va zarurat bo’lganda ularni bot buyrug’i yordamida qo’lda o’zgartirish: 3 ta gacha WiFi tarmoq parametrlarini (zarurat bo’lganda, 1-va 2-tarmoq parametrlarini o’zgartirish mumkin), botga eslatma yuborish rejimini, foydalanilayotgan relelarning turiga qarab oddiy yoki inversiya rejimlarini, haroratning tavsiya etiladigan minimal va maksimal darajalarini, harorat yoki havo namligini eslatish intensivligi qiymatlarini (qanchalik tez-tez eslatish qiymatlarini), harorat va havo namligini eslatish intervallarini, 3 ta gacha WiFi tarmoq parametrlarini;
- termodatchik bilan aloqa favqulodda uzulgan taqdirda, LCD orqali ko’rsatish bilan bog’liq yuzaga keladigan kamchikni termostatni qayta yuklamasdan, bot buyrug’i yordamida bartaraf etish;
- termostatni ixtiyoriy paytda bot buyrug’i yordamida qo’lda ishga tushirish;
Telegram boti boshqaruv buyruqlari va ularning vazifalari (ular haqida eslatmani “/start” buyrug’i yordamida ko’rish mumkin):
- “/start” (yoki “/salom“) – botning dastlabki eslatmalarini ko’rish;
- “/temp” (yoki “/harorat“) – faqat haroratni ko’rish;
- “/namlik” (yoki “/humidity“) – faqat havo namligini ko’rish;
- “/rele1_on“, “/rele1_off“, “/rele2_on“, “/rele2_off” – isitgich (1-rele) yoki konditsioner (2-rele)ni qo’lda alohida, yoki “/rele_on“, “/rele_off” – har ikki releni baravar ishga tushirish yoki o’chirish;
- “/status” (yoki “/?“) – joriy harorat va havo namligi ko’rsatkichlari, o’rnatilgan minimal va maksimal ko’rsatkichlar, termostat ulangan WiFi tarmoq nomi va IP-manzilini ko’rish;
- “/sozlash” (yoki “/settings“, “/codes“) – Termostatni sozlash kodlari va ularning vazifalarini eslatish (nazorat qilinadigan hududning harorati va havo namligi uchun minimal hamda maksimal qiymatlarni, botga avtomatik ravishda ma’lumot yuborish davriyligini belgilab qo’yish yoki bekor qilish, relelarning inversiya yoki standart holati, WiFi-tarmoqlar nomi yoki parolini o’zgartirish bo’yicha kodlar);
- “/restart” (yoki “/rst“) – termostatni qayta ishga tushirish;
Termostatni bot yordamida sozlash kodlari va ularning vazifalari (ular haqida eslatmani ko’rish uchun botga “/sozlash” buyrug’ini yuborish mumkin, sozlash kodlarida “/” belgisi ishlatilmaydi):
- “eslatma=0” – botga avtomatik ravishda eslatma yuborish rejimini bekor qilish kodi;
- “eslatma=1” – botga ma’lum davriylikda avtomatik ravishda eslatma yuborish rejimini faollashtirish kodi;
- “eslatma=2” – termodatchik ko’rsatkichlarida o’zgarish bo’lgan zahoti botga avtomatik ravishda eslatma yuborish rejimini faollashtirish kodi;
- “eslatma=3” – termodatchik ko’rsatkichlarida faqat ko’proq o’zgarish bo’lganda botga avtomatik ravishda eslatma yuborish rejimini faollashtirish kodi;
- “inversiya=1” (yoki “inv=1“) – relelarning inversiya rejimini faollashtirish;
- “inversiya=0” (yoki “inv=0“) – relelarning inversiya rejimini bekor qilish;
- “temp_min=24” – minimal haroratni o’rnatish kodi (‘=’ dan keyin kerakli son kiritiladi);
- “temp_max=30” – maksimal haroratni o’rnatish kodi;
- “namlik_min=20” – minimal havo namligini o’rnatish kodi;
- “namlik_max=60” – minimal havo namligini o’rnatish kodi;
- “temp_farq=2” – eslatish uchun harorat o’zgarishi farqini o’rnatish kodi (1 dan 5 gacha oraliqdagi son kiritiladi. Ko’p bezovta qilmasligi uchun, harorat oldingi qiymatga nisbatan shuncha gradusga o’zgargandagina eslatma yuboriladi);
- “namlik_farq=2” – eslatish uchun havo namligi o’zgarishi farqini o’rnatish kodi (1 dan 5 gacha oraliqdagi son kiritiladi. Ko’p bezovta qilmasligi uchun, havo namligi oldingi qiymatga nisbatan shuncha qiymatga o’zgargandagina eslatma yuboriladi);
- “interval=30s” – botga ma’lumot yuborish intervali kodi sekundlarda (1 sekunddan 255 sekundgacha oraliqda, bir vaqtning o’zida sekundlar va daqiqalar 0 dan katta ko’rsatilgan taqdirda, daqiqalardagi interval hisobga olinadi);
- “interval=5m” – ma’lumot yuborish intervali kodi daqiqalarda (1 daqiqadan 255 daqiqagacha oraliqda, bir vaqtning o’zida sekundlar va daqiqalar 0 dan katta ko’rsatilgan taqdirda, daqiqalardagi interval hisobga olinadi);
- “ssid1=<tarmoq_nomi>“, ssid2=<tarmoq_nomi>” – 1- yoki 2-WiFi tarmoq nomini o’zgartirish (‘=’ belgisidan keyin tarmoq nomi lotin yozuvida kiritiladi – 20 tagacha belgi, 3-tarmoq nomini o’zgartirib bo’lmaydi);
- “parol1=<tarmoq paroli>“, “parol2=<tarmoq paroli>” – 1- yoki 2-WiFi tarmoq parolini o’zgartirish (‘=’ belgisidan keyin tarmoq paroli kiritiladi – 20 tagacha belgi, 3-tarmoq parolini o’zgartirib bo’lmaydi);
- “wifi?” – saqlangan WiFi tarmoqlar nomini (SSID ni) va parollarini eslatish (parol qisman ko’rsatiladi);
- “avtosozlash” (“restore”) – harorat (24…30 ‘C) va namlik (20-60 %) chegaralari, eslatma yuborish intervallari (30 sekund) qiymatlarini, relelarning inversiya rejimini sukunat bo’yicha o’rnatish;
- “displey” – “termometr”, “elektron soat” yoki “termometr-soat” (navbat bilan ikkala rejimni ko’rsatadi) rejimlarini tanlash (yoki favqulodda termodatchik bilan aloqa uzulgan taqdirda, termostatni qayta yuklamasdan LCD1602 displeyini qayta faollashtirish, aksincha displeyni faollashtirish uchun termostatni to’liq qayta ishga tushirishga to’g’ri keladi).
Termostatga Internet orqali bog’lanish jarayoni:
Termostat qat’iy ketma-ketlik asosida, ya’ni, dastlab 1-WiFi tarmoqqa ulanishga urinadi. Agar ulanish imkoniyati bo’lmasa, 2-tarmoqqa ulanishga urinadi. Unga ham ulanish imkonsiz bo’lgan taqdirda, 3-“free” nomli ochiq tarmoqqa ulanishga urinadi. Hech qaysi tarmoqqa ulanish imkoni bo’lmasa, termostat displeyiga “free” ochiq tarmog’ini tashkil etish tavsiya etilgan xabar yuboriladi.
Termostat birinchi marta ishga tushganda, hududdagi WiFi tarmoqlarga ulanish uchun aynan “free” ochiq tarmog’i zarur bo’ladi. Buning uchun Internetga GPRS/3G/4G/5G orqali ulanish imkoniyati bo’lgan ixtiyoriy smartfon, planshet yoki boshqa smart uskunada “free” nomli parolsiz kirish nuqtasi (ochiq tarmoq) tashkil etiladi. Shundan so’ng, termostat qayta ishga tushirilganda, “free” tarmog’iga ulanadi. Termostat shu tarmoq orqali Internetga ulanib, Telegram botga bog’lanadi. Telegram bot yordamida esa, hududdagi marshrutizator va kirish nuqtalari ma’lumotlari asosida 1- va 2-WiFi tarmoq nomlari va parollari o’rnatiladi. 1-yoki 2-WiFi tarmoq parametrlari to’g’ri kiritilgan bo’lsa, termostat keyingi qayta ishga tushirilganida, dastlab ular orqali Internetga bog’lanadi).
Xotirada saqlangan tarmoq nomlarini oldindan bilish uchun, “ssid1?” (1-tarmoq uchun), “ssid2?” (2-tarmoq uchun) va “ssid3?” (3-tarmoq uchun) kodi bot chatida kiritilib, termostatga yuboriladi. Xuddi shuningdek, tarmoqlar parolini qisman ko’rish uchun “parol1?”, “parol2?” kodlari yuboriladi. 3-tarmoq parolga ega bo’lmasligi shart!
1- va 2-tarmoqlar nomi (SSID) va parolini yuqorida ko’rsatilgan kodlar yordamida bot orqali o’zgartirish mumkin. 3-tarmoq parametrlarini esa, o’zgartirish mumkin emas – u faqat favqulodda holatlarda 1- yoki 2-tarmoqlar parametrlarini o’zgartirish maqsadida ishlatilishi mumkin.
Kerakli materiallar:
1) Maket platasi, o’tkazgichlar;
2) Wemos D1 mini, USB-kabel;
3) DHT11 termodatchigi (kelgusida: ds18b20, termistor);
4) LCD1602 (I2C moduli bor) displeyi (kelgusida: boshqa displeylar ham);
5) 5V kuchlanishda ishlaydigan 2 kanalli elektromagnit rele;
6) 5V 1A kuchlanish stabilizatori (mobil uskunalarning Type-C kabelli 5V li ta’minot bloki tavsiya etiladi).
Bog’lanish sxemasi (5V 1A kuchlanish stabilizatoriga USB-kabel yordamida ulanadi):

Sketch birinchi marta ishga tushganda, qurilma hududdagi WiFi tarmoqqa va u orqali Internetga ulanishga urinadi, shundan keyin ulanish muvaffaqiyatli bo’lsa, har bir harorat yoki havo namligi o’zgarishlari avtomatik ravishda har 30 sekundda Telegram bot chatiga yuborib turiladi (qiymatni keyinroq o’zgartirish mumkin). LCD1602 displeyi orqali esa, termostat ko’rsatkichlari hamda relelarning (R1 va R2) oxirgi holati doimiy ko’rsatib boriladi.

Agar harorat ko’rsatkichlar belgilangan oraliqdan chiqib ketsa, avtomatik ravishda kerakli rele ishga tushadi (1-rele isitkich, isitish kotyoli yoki iliq pol suv nasosi uchun, 2-rele konditsioner uchun qo’llanilishi mumkin) va bu haqda xabar beriladi. Termodatchik ko’rsatkichi belgilangan oraliqqa qaytganda, tegishli rele ham uziladi. Ortiqcha bezovta qilmasligi uchun, botga ma’lumot yuborish intervalini sketchda 1…255 sekund yoki 1…255 daqiqa oralig’ida o’zqartirish mumkin. Buning uchun, yuqorida keltirilgan tartibda bot kodi yuborilishi kerak. Zarurat tug’ilganda, termostatni sozlash kodlari yordamida uning ayrim parametrlarini Telegram boti orqali sozlash mumkin.
Natija:
Loyihadagi oxirgi o’zgarishlar:
Termostatga aniq vaqtni ko’rsativchi aqlli soat funksiyasi ham qo’shildi:
– soat rejimida displeyda vaqt, sana va hafta kuni ham ko’rsatib borilishi mumkin;
– soat o’zini o’zi ma’lum intervallarda avtomatik ravishda internetdagi NTP-serverdan to’g’rilab turadi;
– displey ko’rsatish rejimlari 3 taga yetkazildi: 1-rejimda har 5 sekundda termometr va soatni almashtirib ko’rsatiladi; 2-rejimda faqat termometr va relelar holati ko’rsatiladi; 3-rejimda faqat soat ko’rsatiladi. Rejimlarni almashtirish uchun mos ravishda “displey=1”, “displey=2” yoki “displey=3” sozlash kodlari yuboriladi;
– displey podsvetkasini bot orqali yoqib-o’chirish funksiyasi qo’shildi. Yoqish uchun “displey_on”, o’chirish uchun “displey_off” sozlash kodlari yuboriladi. “displey_avto” kodi displeyni har bir bot xabaridan keyin faqat 1 daqiqaga yoqish, keyin avtomatik ravishda o’chirish uchun yuboriladi. Podsvetka rejimi o’chirilganda ham displeydagi yozuvlar juda xira holda ko’rsatiladi;
– agar termostat datchigida uzilish sodir bo’lsa, termostat avtomatik ravishda faqat soatni (hamda “ERRDHT” yozuvini) ko’rsatish rejimiga o’tadi;
– NTP-serverdan vaqtni yangilash intervali sukunat bo’yicha 1 daqiqa o’rnatilgan. Uni o’zgartirish mumkin. Buning uchun “ntp=5” ko’rinishidagi sozlash kodi yuboriladi. Intervalni 1 dan 255 daqiqagacha oraliqda tanlash mumkin. Agar vaqtni yangilash imkoniyati bo’lmasa, displeyda “ERRNTP” yozuvi bilan xabar berib turiladi.
O’zgarishlar kiritilgandan keyingi holatlar.
1-video. Avtomatik rejim almashinuvi:
2-video. Datchik xatoligi xabarini ko’rsatish: