{"id":37423,"date":"2019-10-31T22:17:33","date_gmt":"2019-10-31T19:17:33","guid":{"rendered":"https:\/\/prohoster.info\/blog\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer\/"},"modified":"2019-10-31T22:17:33","modified_gmt":"2019-10-31T19:17:33","slug":"shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","title":{"rendered":"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/a6e9c8239a90c713bd1b3b21891cbc13.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>Osnovnye tezisy ili o chem eta stat'ya<\/h4>\n<p>\nNadaljujemo s ciklom \u010dlankov o <b>ShIoTiny<\/b> \u2014 vizualno programirljivem krmilniku na osnovi \u010dipa <b>ESP8266<\/b>.<\/p>\n<p>V tem \u010dlanku je razlo\u017eeno na primeru projekta upravljanja zra\u010denjem v kopalnici ali drugem prostoru z visoko vla\u017enostjo, kako zgraditi program za <b>ShIoTiny<\/b>.<\/p>\n<h4>Prej\u0161nji \u010dlanki v seriji.<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: malaya avtonomatsiya, internet veshchey ili \u00abza polgoda do otpuska\u00bb<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463285\/\">ShIoTiny: vozli, svyazi i sobytiya ili osobennosti risovaniya programm<\/a><\/noindex><\/p>\n<h4>Povezave<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">Binarne programske opreme, shema krmilnika in dokumentacija<\/a><\/noindex> <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\/blob\/master\/doc\/ShIoT-esp8266-01_obzor.pdf\">Navodila in opis enot<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/esppower.ru\/mqtt-android\/\">Nastavitev MQTT posrednika cloudmqtt.com<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/393277\/\">Nadzorna plo\u0161\u010da MQTT za Android<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Uvod<\/h4>\n<p>\nRazumevanje brez izku\u0161enj ne obstaja. To je resnica, ki jo potrjuje \u010das in generacije. Zato ni ni\u010d bolj\u0161ega za u\u010denje prakti\u010dnih ve\u0161\u010din, kot so poskusi samostojnega ustvarjanja ne\u010desa. Primeri, ki prikazujejo, kaj je mogo\u010de narediti in \u010desa se je bolje izogibati, bodo ve\u010d kot dobrodo\u0161li. Tuje napake, seveda, ne morejo prepre\u010diti nastanka lastnih napak, lahko pa pomagajo zmanj\u0161ati \u0161tevilo slednjih.<\/p>\n<p>Vpra\u0161anja in pisma bralcev prej\u0161njih \u010dlankov so me spodbudila, da naredim majhen projekt-primer upravljanja zra\u010denjem, da poka\u017eem, kako delujejo enote ShIoTiny.<\/p>\n<p>Prvotna ideja, na kateri je temeljil krmilnik <b>ShIoTiny<\/b> \u2014 \u010drpali\u0161\u010de za namakanje \u2014 ni vsem primerna in zanimiva. Zato sem vzel vsem razumljivo in mnogim koristno sistem za upravljanje zra\u010denja kot primer.<\/p>\n<p>Povem, da ideja projekta ni moja, ampak <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/masterkit\/blog\/385281\/\">sem jo \u010drpal \u043e\u0442\u0441\u044e\u0434\u0430<\/a><\/noindex> in nato prilagodil k <b>ShIoTiny<\/b>.<\/p>\n<h4>Najprej razumi, kaj \u017eeli\u0161<\/h4>\n<p>\nProces izbolj\u0161evanja je neskon\u010den. In prav ta lastnost je pokopala \u0161tevilne dobre ideje in projekte. Razvijalec namesto, da bi izdal morda neidealno, a delujo\u010do stvar, je nadaljeval z njenim popolnjevanjem. In je izbolj\u0161eval, dokler konkurenti niso za\u010deli prehitevati, izdajo morda neidealno (v\u010dasih povsem grozljivo), a delujo\u010do re\u0161itev.<\/p>\n<p>Zato je zelo pomembno vedeti, kje postaviti piko v projektu. Ali, druga\u010de povedano, moramo dolo\u010diti, kaj \u017eelimo dose\u010di na koncu projekta iz tistega, kar imamo na za\u010detku. V ru\u0161\u010dini obstaja \u010dudovita kratka in jedrnata beseda 'na\u010drt', ki se uporablja za dokument, ki se pripravlja prav z namenom opisati pot do nastanka ne\u010desa, katerega du\u0161evno zaostali prevajalci in defektni mened\u017eerji v zadnjem \u010dasu nekako za\u010deli imenovati 'cestna karta'. No, naj bog poskrbi za njih.<\/p>\n<p>Na\u0161 na\u010drt bo tak\u0161en. Predpostavimo, da obstaja prostor, v katerem lahko vlaga ob\u010dasno mo\u010dno naraste. Na primer, kopalnica ali kuhinja. Vlaga je neprijetna in na\u010dinov, kako se z njo boriti, je veliko: prezra\u010devati prostor. Na\u010dinov prezra\u010devanja je precej, vendar se bomo verjetno izognili eksoti\u010dnim in zastarelim metodam, kot so su\u017enji s podobami, in se osredoto\u010dili na obi\u010dajen ventilator. Ventilatorji so cenej\u0161i, pa tudi la\u017eje jih je najti pri nas.<\/p>\n<p>Na kratko, \u017eelimo upravljati ventilator: ga vklopiti in, seveda, izklopiti. Natan\u010dneje, \u017eelimo, da se sam vklopi in izklopi, ko je to potrebno.<\/p>\n<p>Preostalo je, da dolo\u010dimo: pod kak\u0161nimi pogoji se mora ventilator vklopiti in pod kak\u0161nimi izklopiti.<\/p>\n<p>Tu je vse o\u010ditno: \u010de je vlaga nad dolo\u010deno mejno vrednostjo, se ventilator vklopi in odpuha zrak; ko se vlaga vrne nazaj v normalo, se ventilator izklopi.<\/p>\n<p>Pozorni bralec bo takoj opazil besedo 'dolo\u010dene'. Kdo jo je dolo\u010dil? Kako je bila dolo\u010dena?<\/p>\n<p>Mejno vlago lahko dolo\u010dimo na ve\u010d na\u010dinov. Obravnavali bomo dva: prvi - z uporabo spremenljivega upora in drugi - prek omre\u017eja s protokolom MQTT. Vsak od teh na\u010dinov ima svoje prednosti in slabosti, ki jih bomo obravnavali pozneje.<\/p>\n<p>Za tiste, ki niso razumeli, pojasnjujem, da je 'mejna vlaga' dolo\u010dena raven vlage, pri kateri je potrebno vklju\u010diti ventilator.<\/p>\n<p>Naslednje vpra\u0161anje: ali naj uporabniku omogo\u010dimo, da ventilator aktivira neposredno? To pomeni, da ne glede na raven vlage, s pritiskom na gumb? To mo\u017enost bomo predvideli. Ventilator je namre\u010d potreben ne le pri pove\u010dani vlagi, temve\u010d tudi za odstranjevanje neprijetnih vonjav iz prostora, ki jih ljudje imenujejo 'smrad'.<\/p>\n<p>Torej, razumeli smo, kaj \u017eelimo, in tudi nekoliko, kako bo to delovalo. Na kratko povzemimo vse funkcije na\u0161ega sistema upravljanja prezra\u010devanja:<\/p>\n<ul>\n<li> nastavitev mejne ravni vlage (dve mo\u017enosti);<\/li>\n<li> merjenje ravni vlage;<\/li>\n<li> samodejno vklop ventilatorja;<\/li>\n<li> samodejno izklop ventilatorja;<\/li>\n<li> ro\u010dno vklop ventilatorja (s pritiskom na gumb).<\/li>\n<\/ul>\n<p>\nTorej, na\u010drt je jasen. Potrebno je uresni\u010diti vse zgoraj navedene funkcije v na\u0161em programu. Na podlagi tega \"na\u010drta\" bomo ukrepali. Najprej bomo narisali strukturalno shemo naprave.<\/p>\n<h4>Strukturalna shema naprave<\/h4>\n<p>\nNa splo\u0161no bomo imeli tak\u0161ne sheme dve. Prva je za razli\u010dico, kjer je pragovna raven vlage dolo\u010dena z variabilnim upornikom. Druga shema pa je za razli\u010dico, kjer je pragovna raven vlage dolo\u010dena preko omre\u017eja po protokolu MQTT.<\/p>\n<p>Toda ker se ti shemi razlikujeta le po enem elementu \u2014 variabilnem uporniku \"nastavitve pragovne ravni vlage\", bomo narisali le eno strukturalno shemo. Seveda strukturalna shema po GOST-u izgleda druga\u010de. Vendar se ne osredoto\u010damo na stare in\u017eenirje, temve\u010d na mlado generacijo. Zato je razumljivost pomembnej\u0161a.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/519f40496a8e459c22d69e7f0eaeee1d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTorej, kaj vidimo na sliki? Ventilator je povezan na rele <b>Relay1<\/b> kontrolerja. <b>ShIoTiny<\/b>Opozarjam, da je ventilator naprava, ki deluje pod visokim napetostjo. Zato, \u010de kdo stori to sam \u2014 bodite previdni. To pomeni, da je predno svoje prste ali merilne naprave vstavite v shemo \u2014 izklopite vsaj ventilator. In \u0161e en nasvet. \u010ce va\u0161 ventilator presega <b>250W<\/b>, ga ne povezujejte neposredno na <b>ShIoTiny<\/b> \u2014 samo preko zaganja\u010da.<\/p>\n<p>Torej, glede ventilatorja imamo vse jasno. Zdaj gumb \"ro\u010dnega vklopa\" ventilatorja. Povezan je na vhod <b>Input1<\/b>. Tukaj ni ve\u010d kaj razlagati.<\/p>\n<p>Senzor temperature in ravni vlage <b>DHT-11<\/b> (ali <b>DHT-22<\/b> ali njihovi analogi). Za njegovo povezovanje je predviden poseben vhod na kontrolerju. <b>ShIoTiny<\/b>Kot je razvidno na sliki \u2014 povezovanje tak\u0161nega senzorja tudi ne predstavlja te\u017eav.<\/p>\n<p>Nazadnje pa variabilni upornik, ki dolo\u010da pragovno raven vlage. Natan\u010dneje \u2014 delilnik, sestavljen iz variabilnega in stacionarnega upornika. Te\u017eav s povezovanjem ni, vendar pojasnim, da je vgrajen ADC na <b>ESP8266<\/b> prera\u010dunan na maksimalno 1 Volt. Zato potrebujemo napetostni delilnik pribli\u017eno 5-krat.<\/p>\n<p>In \u0161e enkrat naj spomnim, da ta delilnik ni potreben, \u010de je pragovna raven vlage dolo\u010dena preko omre\u017eja po protokolu MQTT.<\/p>\n<p>Za\u010dnemo z ustvarjanjem algoritma delovanja naprave v urejevalniku ElDraw ShIoTiny. Kako priti do tega urejevalnika, lahko preberete v prej\u0161njih \u010dlankih ali v navodilih, povezava do katerih je na za\u010detku \u010dlanka.<\/p>\n<h4>Prva mo\u017enost, najpreprostej\u0161a<\/h4>\n<p>\nZa\u010dnimo s preprostim: vklop relaja <b>Relay1<\/b> ob prese\u017eenju praga vla\u017enosti za dolo\u010den \u010das.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/e9f8d30627cf7cdbebccf863c2b2f808.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKot vidimo, ni ni\u010d zapletenega: le \u0161tirje vozli, razen vozlov-komentarjev. <b>DHT11<\/b> \u2014 to je senzor temperature in vla\u017enosti (lahko ga zamenjate s <b>DHT22<\/b>).<\/p>\n<p>Konstanta <b>CONST<\/b> \u2014 prag vla\u017enosti, v odstotkih.<\/p>\n<p>Primerjalnik \u2014 vozli\u0161\u010de, ki primerja dve \u0161tevilki in daje na izhodu 1, \u010de je predpogoj izpolnjen, in 0, \u010de pogoj ni izpolnjen.<\/p>\n<p>V na\u0161em primeru bo tak pogoj <b>A&gt;B<\/b>, gde <b>A<\/b> \u2014 izmerjena raven vla\u017enosti, merjena s senzorjem, in <b>B<\/b> \u2014 prag iste vla\u017enosti.<\/p>\n<p>Ko izmerjena raven vla\u017enosti (<b>A<\/b>) prese\u017ee prag vla\u017enosti (<b>B<\/b>), se na izhodu primerjalnika <b>A&gt;B<\/b> pojavi 1 in rel\u00e9 se vklopi. In obratno, ko raven vla\u017enosti pride v normalo (to pomeni, da <b>A&lt;=B<\/b>), se na izhodu primerjalnika <b>A&gt;B<\/b> se pojavi 0 in rel\u00e9 se izklopi.<\/p>\n<p>Vse jasno? Kdor ne, naj prebere \u0161e enkrat ali si ogleda opis delovanja vozlov v navodilih.<\/p>\n<p>Opa\u017eam, da se podatki s senzorja <b>DHT11<\/b> osve\u017eujejo pribli\u017eno enkrat na 10 sekund. Zato se rel\u00e9 ne more vklopiti in izklopiti pogosteje kot enkrat na 10 sekund.<\/p>\n<p>Vse bi bilo v redu, vendar bi radi prag vla\u017enosti nastavili s pomo\u010djo potenciometra. Ni\u010d la\u017ejega!<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/3042bda4fe16e3fbad2d3f46f0beccb4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPreprosto zamenjamo vozli\u0161\u010de-konstanto z vozli\u0161\u010dem ADC. Saj smo prav na ADC priklju\u010dili delilec napetosti s potenciometrom.<\/p>\n<p>Napetost na vhodu ADC se spreminja od 0 do 1 V. Medtem pa se vla\u017enost na izhodu senzorja spreminja od 0 do 100 %. Kako jih primerjamo? Preprosto. Vozli\u0161\u010de ADC v <b>ShIoTiny<\/b> ne le, da meri napetost na vhodu, ampak jo zna tudi <i><b>skalirati in premakniti<\/b><\/i>.<\/p>\n<p>To pomeni, da bo na izhodu vozli\u0161\u010da ADC1 (ADC) vrednost <b>X<\/b>, izra\u010dunana po formuli <\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/d01bc0ff4e6962252fced695d3894d32.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>, gde <img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/ac0bf727edb4c759d12268376ec6ad9b.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2014 napetost na vhodu ADC (od 0 do 1 V); <b>k<\/b> \u2014 razpon (ADC range) in <b>b<\/b>\u2014 pomik (ADC offset). Tako, \u010de nastavimo <b>k=100<\/b> in <b>b=0<\/b>, se bo pri spremembi <img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/0afbeb2e49d5a107bc54d6bbd87ba23c.jpeg\" style=\"display:block;margin: 0 auto;\" \/> v razponu od 0 do 1, vrednost <b>X<\/b> na izhodu vozli\u0161\u010da ADC spreminjala v razponu od 0 do 100. Torej, numeri\u010dno enaka razponu spremembe vla\u017enosti od 0 do 100%.<\/p>\n<p>Ali, poenostavljeno, z vrtenjem motorja z nastavljivim upornostjo lahko nastavite pragovno raven vla\u017enosti od 0 do 100. Edina nev\u0161e\u010dnost je, da ni nobenih prikazovalnih naprav. Ampak v praksi, \u010de na motorju z nastavljivim upornostjo naredimo 6 delitev 0%, 20%, 40%, 60%, 80%, 100%), je to dovolj za nastavitev pragovne ravni vla\u017enosti.<\/p>\n<p>Kako nastaviti faktorje <b>k<\/b> \u2014 razpon (ADC range) in <b>b<\/b>-odstopanje (ADC offset)? Preprosto kot tvorba jabolka! Kliknite z mi\u0161ko na vozli\u0161\u010de <b>ADC1<\/b> in pred va\u0161imi o\u010dmi se bo odprlo nastavitveno okno. V njem lahko nastavite vse, kar potrebujete. Za na\u0161 primer bo to tak\u0161no okno, kot je na sliki.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/ff81992b4fe236f5de6d17ca6bf8187c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTorej, imamo preprosto delujo\u010do re\u0161itev. Za\u010dnimo jo izbolj\u0161evati.<br \/>\nMimogrede, preprosta re\u0161itev ima eno prednost \u2014 ne potrebuje interneta. Je povsem avtonomna.<\/p>\n<h4>Druga razli\u010dica, priklju\u010dimo gumb<\/h4>\n<p>\nVse deluje in vsi so veseli. Ampak imamo te\u017eavo, ne moremo vklopiti prezra\u010devanja prisilno. \u017de smo se dogovorili, da bo na vhodu <b>Input1<\/b> priklju\u010den gumb, ki bo vklapljal in izklapljal ventilator prisilno, ne glede na senzor vla\u017enosti.<br \/>\nPri\u0161el je \u010das, da obdelamo ta gumb v na\u0161i shemi-programu.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/673c274a5be680ce7c3ef1f9572f93fa.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBlok obdelave pritiska gumba je ozna\u010den z oran\u017eno \u010drto. Predstavlja \u0161tevec pritiska gumba, ki se ponastavi na ni\u010d, ko vrednost na njegovem izhodu prese\u017ee enko (zelena \u010drta, izhod vozli\u0161\u010da <b>CT<\/b>).<\/p>\n<p>Vse deluje tako preprosto, kot prej: \u0161tevec <b>CT<\/b> \u0161teje pritiske gumba, priklju\u010denega na vhod <b>Input1<\/b>. To pomeni, da se vrednost na izhodu tega \u0161teveca z vsakim pritiskom gumba pove\u010duje za 1.<\/p>\n<p>Ko ta vrednost postane enaka dvema (to je ve\u010d kot 1), se na izhodu komparatorja <b>A&gt;B<\/b> pojavlja 1. In ta 1 ponastavi \u0161tevec <b>CT<\/b> na ni\u010d. Misli se komparator, spodnji po shemi!<\/p>\n<p>Tako imamo dve stanja na\u0161ega gumba \u2014 0 in 1. \u010ce bi potrebovali ve\u010d stanj (3 ali 4 ali \u0161e ve\u010d) \u2014 bi bilo dovolj spremeniti konstanto <b>CONST<\/b> z enke na drugo vrednost.<\/p>\n<p>Torej imamo dva pogoja za vklop ventilatorja: prese\u017eek nastavljene ravni vla\u017enosti in enkratno pritiskanje gumba. Ko je izpolnjen kateri koli od pogojev, se ventilator vklopi. In deloval bo, dokler ne pritisnejo gumba <b>In<\/b> ravni vla\u017enosti ne pride v normalo.<\/p>\n<p>Seveda, algoritem lahko \u0161e dodatno zaplete\u0161, vendar tega ne bomo po\u010deli \u2014 pustimo prostor za ustvarjalnost tistim, ki to \u017eelijo.<\/p>\n<h4>Tretja mo\u017enost, povezujemo se z internetom<\/h4>\n<p>\nVse, kar smo opisali, deluje povsem dobro. Ampak, kje so? Kajti vsak najstni\u0161ki hipster-haker-skrivar se bo posmehoval tistemu, ki obra\u010da gumb in pritiska tipko, namesto da bi upravljal s pametnim telefonom! Obrat gumbov \u2014 to je 'ne moderno'. Ampak drgnjenje prsta po pametnem telefonu, dokler prst ne krvavi \u2014 to je vrhunec \u017eelja hipster-hakerja-skrivarja (nikoli nisem mogel lo\u010diti vseh \u2014 tako da, \u010de sem se zmotil, oprosti).<\/p>\n<p>Toda bodimo milostni do omenjenih oseb. Upravljanje preko interneta ima tudi resni\u010dne prednosti. Prvi\u010d, to je preglednost. Obstaja mno\u017eica aplikacij za vse platforme, ki omogo\u010dajo s par dotiki ustvariti povsem uporabno nadzorno plo\u0161\u010do na\u0161ega kontrolerja-karlsona. Drugi\u010d, to je mo\u017enost oddaljenega spremljanja vla\u017enosti v prostoru. In, tretji\u010d, lahko vidimo ne samo to, ali ventilator deluje \u2014 se vrti ali ne, ampak tudi, kak\u0161na je nastavljena meja vla\u017enosti. In \u010de se ventilator vklopi samodejno ali ro\u010dno. Na splo\u0161no vse, kar si \u017eelite.<\/p>\n<p>Seveda, za nek ventilator je velika \u010dast \u2014 toliko pozornosti. Ampak to je le primer.<\/p>\n<p>Torej, za povezavo z internetom bomo uporabili tehnologijo <b>MQTT<\/b> in istoimenski protokol.<br \/>\nDa bi lahko uporabili to tehnologijo, potrebujemo <b>MQTT-broker<\/b>. To je poseben stre\u017enik, ki oskrbuje <b>MQTT-stranke<\/b>, na primer <b>ShIoTIny<\/b> in va\u0161 pametni telefon.<\/p>\n<p>Osnovna ideja tehnologije <b>MQTT<\/b> je, da vsak od strank objavi na MQTT-brokerju (stre\u017eniku) poljubne podatke pod dolo\u010denim imenom (to imenujemo <b>topic<\/b> v terminologiji <b>MQTT<\/b>). Druge stranke se lahko naro\u010dijo na poljubne podatke po njihovem imenu (<b>topic<\/b>) in prejemajo novo objavljene podatke. To pomeni, da se izmenjava podatkov odvija po principu klient-broker-klient.<\/p>\n<p>Jaz <i><b>ne bom<\/b><\/i> se osredoto\u010dil na podrobnosti. Na internetu je mno\u017eica \u010dlankov in u\u010dnih vsebin o tem, kako deluje <b>MQTT<\/b> in kak\u0161ne so obstoje\u010de aplikacije za ustvarjanje nadzornih plo\u0161\u010d. Preprosto bom pokazal, kako sprejemati in objavljati podatke preko <b>ShIoTiny<\/b>.<\/p>\n<p>Kot broker sem uporabljal <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cloudmqtt.com\/\">www.cloudmqtt.com<\/a><\/noindex>, ampak princip je povsod enak.<\/p>\n<p>Torej, predpostavimo, da ste se registrirali na <b>MQTT-brokerju<\/b>. Na splo\u0161no vam posrednik izda (ali zahteva, da ustvarite) uporabni\u0161ko ime in geslo (za avtorizacijo) ter vrata za povezavo. Pove\u017eite se <b>ShIoTiny<\/b> k <b>z MQTT posrednikom<\/b> na dva na\u010dina \u2014 z obi\u010dajno povezavo in <b>, \u010deprav se tega zelo sramuje.<\/b> (<b>SSL<\/b>).<\/p>\n<p>Vse te nastavitve <b>ShIoTiny<\/b> vnesite na zavihku <b>Omre\u017eje<\/b>, odseku <b>MQTT povezava do stre\u017enika<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/3a16cbd07a64428568e7c03f178e87ef.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u010ce va\u0161 <b>MQTT-broker<\/b> ne zahteva avtorizacije \u2014 pustite polji za uporabni\u0161ko ime in geslo prazni.<\/p>\n<p>Parametri <b>MQTT predpon<\/b> zahteva posebno razlago.<\/p>\n<p>Predpon MQTT parametrov je niz, ki se doda imenu teme (<b>topic<\/b>) pri objavi in naro\u010danju na MQTT posredniku. Da dolo\u010dite <b>MQTT predpon<\/b> za va\u0161 krmilnik, ga morate preprosto vnesti v polje \u201e<b>Predpon teme MQTT<\/b>\u00bb (\u00ab<b>MQTT predpon<\/b>\u201c). Predpon vedno za\u010dne s po\u0161evnico (<b>\u00ab\/\u00bb<\/b>)! \u010ce v polju ne vnesete po\u0161evnice \u2014 se ta doda samodejno. V predponu ni mogo\u010de uporabljati znakov <b>\u00ab#\u00bb<\/b> in <b>\u00ab+\u00bb<\/b>. Druge omejitve ni.<\/p>\n<p>Na primer, \u010de objavite parameter \u201e<b>status<\/b>\u201c (ali se nanj naro\u010date), in je va\u0161 predpon dolo\u010den kot \u201e<b>\/shiotiny\/<\/b>\u201c, bo ta parameter objavljen na posredniku z imenom \u201e<b>\/shiotiny\/status<\/b>\u201c. \u010ce je va\u0161 predpon prazen, bodo vsi parametri na posredniku za\u010deli s po\u0161evnico (<b>\u00ab\/\u00bb<\/b>): \u00ab<b>status<\/b>\u201c se bo objavil kot \u201e<b>\/status<\/b>\u00bb.<\/p>\n<p>Torej, predpostavimo, da ste se registrirali na <b>MQTT-brokerju<\/b> in ste dobili uporabni\u0161ko ime, geslo in vrata. Nato ste te nastavitve vnesli na zavihku <b>Omre\u017eje<\/b>, odseku <b>MQTT povezava do stre\u017enika<\/b> kontrolerja. <b>ShIoTiny<\/b>.<\/p>\n<p>Predpostavimo, da je predpon nastavljen na \u201e<b>\/room\/<\/b>\u00bb.<\/p>\n<p>Za\u010deli bomo s tem, da bomo objavili stanje vseh klju\u010dnih parametrov: rele <b>Realay1<\/b>, stanje ro\u010dnega vklju\u010devanja, stanje samodejnega vklju\u010devanja in na koncu pragovnih ter trenutnih nivojev vla\u017enosti. In kot bonus \u2014 temperaturo v prostoru. Kako to dose\u010di, si oglejte na sliki.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/ed016ae37bb0cb1197e2e4fd649a7c4f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKot vidite, se razlikuje od prej\u0161nje razli\u010dice \u2014 le vozli\u0161\u010da \u201e<b>MQTT objava<\/b>\u201c. Ob upo\u0161tevanju predpona se objavljajo naslednji parametri:<br \/>\n<img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/34b67dd1932f30de777a680802f71c59.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKot vidite, je stanje sistema pred nami!<\/p>\n<p>Toda ne \u017eelimo le opazovati, temve\u010d tudi upravljati. Kaj storiti? Zelo preprosto. Odrekli se bomo nastavljanju pragovne ravni vla\u017enosti s pomo\u010djo <b>ADC<\/b> in uporabnega upornika ter bomo dolo\u010dali to pragovno raven vla\u017enosti direktno s pametnim telefonom! <b>MQTT<\/b> Odstranimo vozli\u0161\u010de ADC iz sheme in vanjo vklju\u010dimo tri nova vozli\u0161\u010da:<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enega prostora (projekt-primer)\" src=\"\/wp-content\/uploads\/2019\/08\/c32d9ec2c1a082e0a1ead0b04526eba5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFLASH shranjevanje <b>FLASH obnova<\/b>, <b>MQTT opis<\/b> in <b>Funkcija vozli\u0161\u010da<\/b>.<\/p>\n<p>je o\u010ditna: prejme parameter <b>Funkcija vozli\u0161\u010da<\/b> (pragovna raven vla\u017enosti) s <b>\/room\/trigHset<\/b> MQTT posrednika <b>. Kaj pa potem stori z podatki? Preprosto jih vrne vozli\u0161\u010du<\/b>. <b>FLASH obnova<\/b>, ki v tem primeru shrani te podatke v neizbrisljivo spomin pod imenom <b>trigH<\/b>. Po tem, vozli\u0161\u010de <b>MQTT opis<\/b> prebere iz neizbrisljivega spomina podatke pod imenom <b>trigH<\/b> in kaj se zgodi naprej, \u017ee vemo.<\/p>\n<p>Zakaj vse te zapletenosti? Zakaj ne bi takoj predali pridobljenih podatkov vhodu komparatorja? <\/p>\n<p>Kot je dejal tovari\u0161 \u0160. Holmes \u2014 <i>to je elementarno<\/i>! Nih\u010de ne garantira, da se bo va\u0161e naprave po vklopu povezalo z <b>z MQTT posrednikom<\/b>. Vla\u017enost je treba meriti. In ventilator je treba vklju\u010diti. Brez informacij o pragu vla\u017enosti pa to ni mogo\u010de! Zato na\u0161e naprave ob vklopu pridobijo prej shranjen prag vla\u017enosti iz neizbrisljivega spomina in ga uporabijo za sprejemanje odlo\u010ditev. Ko pa se vzpostavi povezava z <b>MQTT posrednikom<\/b> in nekdo objavi novo vrednost <b>\/room\/trigHset<\/b>, se bo ta nova vrednost uporabljala.<\/p>\n<p>Nato lahko izmislite vse, kar \u017eelite. Na primer, poleg vla\u017enosti vklju\u010dite \u0161e merjenje temperature. Ali dodajte 'pametno' upravljanje osvetlitve (imamo \u0161e dve neizkori\u0161\u010deni rele in dva vhoda). Vse je v va\u0161ih rokah!<\/p>\n<h4>Zaklju\u010dek<\/h4>\n<p>\nTako smo obravnavali nekaj primerov izvajanja najpreprostej\u0161ega kontrolerja, temelje\u010dega na ShIoTiny. Morda bo to nekomu koristilo.<\/p>\n<p>Kot vedno, predloge, \u017eelje, vpra\u0161anja, tiskarske napake in drugo \u2014 na email: <b>shiotiny@yandex.ru<\/b><br \/>\n<br \/>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/464485\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438 \u043e \u0447\u0435\u043c \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0446\u0438\u043a\u043b \u0441\u0442\u0430\u0442\u0435\u0439 \u043e ShIoTiny \u2014 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0447\u0438\u043f\u0430 ESP8266. \u0412 \u044d\u0442\u043e\u0442 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0446\u0438\u0438 \u0432 \u0432\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u0441 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u043e\u0439 \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f ShIoTiny. \u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u0435\u0440\u0438\u0438. ShIoTiny: \u043c\u0430\u043b\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0435\u0449\u0435\u0439 \u0438\u043b\u0438 \u00ab\u0437\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28079,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37423","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438 \u043e \u0447\u0435\u043c \u044d\u0442\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47ShIoTiny: \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0446\u0438\u044f \u0432\u043b\u0430\u0436\u043d\u043e\u0433\u043e \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u044f (\u043f\u0440\u043e\u0435\u043a\u0442-\u043f\u0440\u0438\u043c\u0435\u0440) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438 \u043e \u0447\u0435\u043c \u044d\u0442\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:17:33+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:17:33+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47ShIoTiny: prezra\u010devanje vla\u017enega prostora (projekt-primer) | ProHoster","description":"Glavne teze ali o \u010dem je to.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47ShIoTiny: \u0432\u0435\u043d\u0442\u0438\u043b\u044f\u0446\u0438\u044f \u0432\u043b\u0430\u0436\u043d\u043e\u0433\u043e \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u044f (\u043f\u0440\u043e\u0435\u043a\u0442-\u043f\u0440\u0438\u043c\u0435\u0440) | ProHoster","og:description":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438 \u043e \u0447\u0435\u043c \u044d\u0442\u0430.","og:url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:17:33+00:00","article:modified_time":"2019-10-31T19:17:33+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37423","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 17:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:27:24","updated":"2026-01-23 17:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/37423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=37423"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/37423\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/28079"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=37423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=37423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=37423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}