Qoʻllanma · MQTT · IoT
ESP32 da MQTT: noldan Home Assistant’gacha
Bitta datchik bir vaqtda uchta ilovaga yetishi kerak boʻlsa, har juftni qoʻlda ulash tez parchalanadi. MQTT buni agʻdaradi: qurilma topic’ga publish qiladi, qiziqqan hamma esa subscribe qiladi — oʻrtada broker bilan. Mana nega bu IoT’ga mos, sizga aslida kerak boʻlgan uchta soʻz (topic, QoS, retain) va Home Assistant bilan gaplashuvchi ESP32 kodi.
Nega MQTT HTTP-pollingdan yaxshi
Oddiy HTTP’da dashboard qurilmadan taymer boʻyicha «yangilik bormi?» deb soʻraydi — isrofgar, kechikadi va bir-ikki mijozdan nariga kengaymaydi. MQTT oqimni agʻdaradi: qurilma qiymat oʻzgargan zahoti push qiladi, broker esa uni barcha subscriberlarga tarqatadi. U beqaror, kam quvvatli kanallar orqali koʻplab kichik xabarlar uchun qurilgan — aynan IoT. Umuman transport tanlayotgan boʻlsang, avval Wi-Fi va boshqalarga qara; MQTT bu yerda Wi-Fi ustidan yuradi.
Topic, QoS va retain — oddiy soʻzlarda
Topic — shunchaki home/livingroom/temp kabi yoʻl; publisher va subscriber
unda uchrashadi (maskalar bilan obuna: home/+/temp). QoS — yetkazish
kafolati, retain esa brokerga oxirgi qiymatni saqlashni aytadi, shunda yangi subscriber uni
keyingi yangilanishni kutmasdan darhol oladi.
| Tushuncha | Nimani anglatadi | Nima uchun |
|---|---|---|
| QoS 0 | koʻpi bilan bir marta (kafolatsiz) | tez-tez datchik oʻqishlari |
| QoS 1 | hech boʻlmasa bir marta (dubl boʻlishi mumkin) | buyruqlar, holat oʻzgarishi |
| QoS 2 | aynan bir marta (sekin) | kamdan-kam — kritik, bir martalik |
| Retain | broker oxirgi xabarni saqlaydi | ulanishda joriy holat |
| Last Will | uzilib qolsang broker publish qiladi | «oflayn» aniqlash |
Besh daqiqada broker
MQTT’ga oʻrtada broker kerak — pochta. Standart — Mosquitto: uni Raspberry
Pi’ga, NAS’ga yoki Home Assistant turgan mashinaga oʻrnat (u yerda bir bosishda add-on sifatida oʻrnatiladi),
tamom. Bulutli broker (HiveMQ, EMQX Cloud) ham mos, agar lokal hech narsa xohlamasang. Har bir qurilmani
broker IP’si va 1883 portiga yoʻnaltir — ular bir-birini topadi.
ESP32 tomoni: PubSubClient
Qurilmada klassik tanlov — PubSubClient kutubxonasi. Shakli doim bir xil: ulanasan, boshqaradiganingga obuna boʻlasan, sezganingni publish qilasan va Wi-Fi uzilganda qayta ulanasan:
connect: client.connect("esp32-kitchen") // brokerga
subscribe: client.subscribe("home/relay/set") // bu yerga broker buyruq yuboradi
publish: client.publish("home/temp", "24.1") // yuborasan; subscriberlar oladi
callback: xabar keldi → releni almashtirish // pollingsiz reaksiya loop() ichida kichik reconnect siklini tut — uzilgan kanal oʻzini tiklaydi, va datchik
qiymatlarini faqat haqiqatan oʻzgarganda publish qil — shunda trafik (va quvvat) past qoladi, batareyada
chuqur uyqu bilan bir xil intizom.
Home Assistant — qoʻlda sozlashsiz
Sehr — MQTT discovery: maxsus homeassistant/…/config topic’ga bitta kichik
JSON publish qilasan (retain bilan), Home Assistant esa entity’ni oʻzi yaratadi — YAML
tahrirsiz, datchik yoki vyklyuchatel shunchaki paydo boʻladi. Oʻqishlarni state topic’ga yuborasan,
boshqaruv command topic’ga qaytadi. Keyin — dashboardlar, avtomatlashtirishlar va ovoz, bepul. Umuman
kodsiz xohlaysanmi? ESPHome MQTT/discovery’ni YAML’dan
qiladi.
Qurilma oʻz UI’sini ham bersinmi? Bir necha qator C++ dan toʻliq dashboard.