{"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\/hr\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","title":{"rendered":"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/a6e9c8239a90c713bd1b3b21891cbc13.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>Glavne teze ili o \u010demu se radi u ovom \u010dlanku<\/h4>\n<p>\nNastavljamo ciklus \u010dlanaka o <b>ShIoTiny<\/b> \u2014 vizualno programabilnom kontroleru temeljenom na \u010dipu <b>ESP8266<\/b>.<\/p>\n<p>U ovom \u010dlanku se na primjeru projekta upravljanja ventilacijom u kupaonici ili drugoj prostoriji s pove\u0107anom vlagom obja\u0161njava kako se gradi program za <b>ShIoTiny<\/b>.<\/p>\n<h4>Prethodni \u010dlanci serije.<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: mala automatizacija, internet stvari ili '\u0161est mjeseci prije odmora'<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463285\/\">ShIoTiny: \u010dvorovi, veze i doga\u0111aji ili osobitosti crtanja programa<\/a><\/noindex><\/p>\n<h4>Linkovi<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">Binarne firmware, shema kontrolera i dokumentacija<\/a><\/noindex> <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\/blob\/master\/doc\/ShIoT-esp8266-01_obzor.pdf\">Upute i opis \u010dvorova<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/esppower.ru\/mqtt-android\/\">Postavljanje MQTT posrednika cloudmqtt.com<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/393277\/\">Upravlja\u010dka plo\u010da MQTT dashboard za Android<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Uvod<\/h4>\n<p>\nRazumijevanje izvan iskustva ne postoji. To je istina koju je vrijeme i generacije provjerile. Stoga nema boljeg na\u010dina za u\u010denje prakti\u010dnim vje\u0161tinama nego poku\u0161ajem da se ne\u0161to u\u010dini samostalno. A primjeri koji pokazuju \u0161to se mo\u017ee raditi, a \u0161to ne bi trebalo, ovdje \u0107e biti vi\u0161e nego korisni. Tu\u0111e pogre\u0161ke, naravno, ne mogu sprije\u010diti pojavu vlastitih gre\u0161aka, ali mogu pomo\u0107i smanjiti njihov broj.<\/p>\n<p>Pitanja i pisma \u010ditatelja prethodnih \u010dlanaka potaknuli su me da izradim mali projekt-primjer upravljanja ventilacijom kako bih pokazao kako funkcioniraju \u010dvorovi ShIoTiny.<\/p>\n<p>Izvorna ideja na temelju koje je nastao kontroler <b>ShIoTiny<\/b> \u2014 pumpno-napojna stanica \u2014 nije zanimljiva i odgovara svima. Stoga sam uzeo svima poznati i mnogima koristan sustav upravljanja ventilacijom kao primjer.<\/p>\n<p>Re\u0107i \u0107u da ideja projekta nije moja, a <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/masterkit\/blog\/385281\/\">uzet sam je odavde<\/a><\/noindex> i zatim prilagodio za <b>ShIoTiny<\/b>.<\/p>\n<h4>Najprije razumij \u0161to \u017eeli\u0161<\/h4>\n<p>\nProces usavr\u0161avanja nije kona\u010dan. I upravo ta osobina je uni\u0161tila mnoge dobre ideje i projekte. Razvija\u010d, umjesto da objavi mo\u017eda ne savr\u0161enu, ali funkcionalnu stvar \u2014 nastavljao ju je usavr\u0161avati. I usavr\u0161avao je dok konkurenti nisu pre\u0161li preko njega, objavljuju\u0107i iako ne savr\u0161ena (a \u010desto o\u010dito lo\u0161a), ali funkcionalna rje\u0161enja.<\/p>\n<p>Zato je vrlo va\u017eno znati \u2014 gdje postaviti to\u010dku u projektu. Drugim rije\u010dima, trebamo odrediti \u0161to \u017eelimo posti\u0107i na kraju projekta s onim \u0161to imamo na po\u010detku. U hrvatskom jeziku postoji prekrasna kratka i sa\u017eeta rije\u010d \u201eplan\u201c, koju na\u017ealost neki prevoditelji i defektni menad\u017eeri u posljednje vrijeme nazivaju \u201ecestovna karta\u201c. No, da, neka im.<\/p>\n<p>Na\u0161 plan \u0107e izgledati ovako. Pretpostavimo da imamo prostoriju \u010dija se vla\u017enost mo\u017ee povremeno jako pove\u0107ati. Na primjer, kao \u0161to je kupaonica ili kuhinja. Vla\u017enost je neugodna, a borba protiv nje stara je kao svijet: prozra\u010divanje prostorije. Ima mnogo na\u010dina prozra\u010divanja. No, vjerojatno \u0107emo se odrediti protiv egzoti\u010dnih i zastarjelih metoda poput crnaca s lepezama i zadr\u017eati na obi\u010dnom ventilatoru. Ventilatori su jeftiniji, a i lak\u0161e ih je prona\u0107i ovdje.<\/p>\n<p>Ukratko, \u017eelimo upravljati ventilatorom: uklju\u010divati ga i, sukladno tome, isklju\u010divati. To\u010dnije, \u017eelimo da se sam uklju\u010duje i isklju\u010duje kada je potrebno.<\/p>\n<p>Ostaje da odredimo: pod kojim uvjetima ventilator treba uklju\u010diti, a pod kojim isklju\u010diti.<\/p>\n<p>Ovdje je sve o\u010dito: ako je vla\u017enost iznad odre\u0111enog praga \u2014 ventilator se uklju\u010duje i izvla\u010di zrak; kad vla\u017enost postane normalna \u2014 ventilator se isklju\u010duje.<\/p>\n<p>Pa\u017eljiv \u010ditatelj odmah \u0107e se primijetiti na rije\u010d \u201ezadanog\u201c. Od koga zadanog? Kako zadanog?<\/p>\n<p>Prag vla\u017enosti mo\u017ee se postaviti na nekoliko na\u010dina. Razmotrit \u0107emo dva od njih: prvi \u2014 pomo\u0107u promjenjivog otpora, a drugi \u2014 putem mre\u017ee putem protokola MQTT. Svaka od ovih metoda ima svoje prednosti i nedostatke, koje \u0107emo dalje razmotriti.<\/p>\n<p>Za one koji nisu shvatili, objasnit \u0107u da je \u201eprag vla\u017enosti\u201c razina vla\u017enosti pri kojoj je potrebno uklju\u010diti ventilator.<\/p>\n<p>Sljede\u0107e pitanje: treba li korisniku dati pravo da uklju\u010di ventilator direktno? To jest, nezavisno od razine vla\u017enosti, pritiskom na tipku? Tu mogu\u0107nost \u0107emo omogu\u0107iti. Ventilator mo\u017ee biti potreban ne samo pri povi\u0161enoj vla\u017enosti, ve\u0107 i za uklanjanje, na primjer, neugodnog mirisa, kojeg u narodu nazivaju 'smradom'.<\/p>\n<p>Dakle, shvatili smo \u0161to \u017eelimo i \u010dak imamo ideju o tome kako \u0107e to funkcionirati. Kratko \u0107emo pobrojati sve funkcije na\u0161eg sustava upravljanja ventilacijom:<\/p>\n<ul>\n<li> postavljanje praga vla\u017enosti (dvije opcije);<\/li>\n<li> mjerenje razine vla\u017enosti;<\/li>\n<li> automatsko uklju\u010divanje ventilatora;<\/li>\n<li> automatsko isklju\u010divanje ventilatora;<\/li>\n<li> ru\u010dno uklju\u010divanje ventilatora (pritiskom na tipku).<\/li>\n<\/ul>\n<p>\nDakle, plan je jasan. Potrebno je implementirati sve gore navedene funkcije u na\u0161 program. Na temelju ovog 'plana' \u0107emo djelovati. Prvo \u0107emo nacrtati strukturalnu shemu ure\u0111aja.<\/p>\n<h4>Strukturalna shema ure\u0111aja<\/h4>\n<p>\nUglavnom, takvih shema \u0107e biti dvije. Prva \u2014 za varijantu u kojoj se prag vla\u017enosti postavlja varijabilnim otporom. Druga shema \u2014 za varijantu u kojoj se prag vla\u017enosti postavlja putem mre\u017ee preko protokola MQTT.<\/p>\n<p>No po\u0161to \u0107e se ove sheme razlikovati samo po jednom elementu \u2014 varijabilni otpornik 'postavljanje praga vla\u017enosti', nacrtat \u0107emo samo jednu strukturalnu shemu. Naravno, strukturalna shema prema GOST-u izgleda druga\u010dije. No, ne orijentiramo se na in\u017eenjere starije generacije, ve\u0107 na mlade. Stoga je preglednost va\u017enija.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/519f40496a8e459c22d69e7f0eaeee1d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDakle, \u0161to vidimo na slici? Ventilator je spojen na relej <b>Relay1<\/b> kontrolera. <b>ShIoTiny<\/b>Sklanjam pa\u017enju da je ventilator ure\u0111aj koji radi pod visokim naponom. Stoga, ako netko \u017eeli sam napraviti ovakvo \u2014 oprez. To jest, barem, prije nego \u0161to stavite svoje prste ili mjera\u010de u shemu \u2014 isklju\u010dite barem ventilator. I drugo zapa\u017eanje. Ako je va\u0161 ventilator ja\u010di od <b>250W<\/b>, ne spajajte ga direktno na <b>ShIoTiny<\/b> \u0161to bi trebalo biti \u2014 samo preko kontaktora.<\/p>\n<p>Zavr\u0161ili smo s ventilatorom. Sada gumb 'ru\u010dno uklju\u010divanje' ventilatora. Spojen je na ulaz <b>Input1<\/b>. Ovdje se ne treba ni dodatno obja\u0161njavati.<\/p>\n<p>Senzor temperature i razine vla\u017enosti <b>DHT-11<\/b> (ili <b>DHT-22<\/b> ili njihovi analozi). Za njegovu povezivanje predvi\u0111en je poseban ulaz na kontroleru <b>ShIoTiny<\/b>. Kao \u0161to se mo\u017ee vidjeti na slici \u2014 povezivanje takvog senzora tako\u0111er ne predstavlja problem.<\/p>\n<p>I, kona\u010dno, promjenjivi otpor koji odre\u0111uje prag vla\u017enosti. To\u010dnije \u2014 razdjelnik koji se sastoji od promjenjivih i stalnih otpora. Problema s njegovim povezivanjem nema, ali \u0107u pojasniti da je ugra\u0111eni ADC na <b>ESP8266<\/b> ra\u010dunat maksimum na 1Volt. Stoga je potreban razdjelnik napona otprilike u omjeru 5 prema 1.<\/p>\n<p>I jo\u0161 jednom \u0107u napomenuti da taj razdjelnik nije potreban ako se prag vla\u017enosti postavlja putem mre\u017ee kori\u0161tenjem MQTT protokola.<\/p>\n<p>Po\u010dnimo sastavljati algoritam rada ure\u0111aja u editoru ElDraw ShIoTiny. Kako u\u0107i u taj editor, mo\u017eete pro\u010ditati u ranijim \u010dlancima ili u uputama, na koje se link nalazi na po\u010detku \u010dlanka.<\/p>\n<h4>Prva varijanta, najjednostavnija<\/h4>\n<p>\nPo\u010dnimo s jednostavnim: uklju\u010divanjem releja <b>Relay1<\/b> uzimaju\u0107i u obzir prag vla\u017enosti odre\u0111eno vrijeme.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/e9f8d30627cf7cdbebccf863c2b2f808.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKao \u0161to vidimo, ni\u0161ta slo\u017eeno: svega \u010detiri \u010dvora, ne ra\u010dunaju\u0107i \u010dvorove-komentare. <b>DHT11<\/b> \u2014 to je zapravo senzor temperature i vla\u017enosti (mo\u017ee se zamijeniti sa <b>DHT22<\/b>).<\/p>\n<p>Konstanta <b>CONST<\/b> \u2014 prag vla\u017enosti, u postocima.<\/p>\n<p>Komparator \u2014 \u010dvor koji uspore\u0111uje dva broja i daje na izlaz 1, ako je zadani uvjet ispunjen i 0, ako uvjet nije ispunjen.<\/p>\n<p>U na\u0161em slu\u010daju, takav uvjet \u0107e biti <b>A&gt;B<\/b>, gdje <b>A<\/b> \u2014 izmjerena razina vla\u017enosti od strane senzora, a <b>B<\/b> \u2014 prag iste vla\u017enosti.<\/p>\n<p>\u010cim izmjerena razina vla\u017enosti (<b>A<\/b>) prema\u0161i prag vla\u017enosti (<b>B<\/b>), odmah \u0107e na izlazu komparatora <b>A&gt;B<\/b> biti 1 i relej \u0107e se uklju\u010diti. I obratno, \u010dim razina vla\u017enosti do\u0111e u normalu (odnosno <b>A&lt;=B<\/b>), odmah \u0107e na izlazu komparatora <b>A&gt;B<\/b> bit \u0107e 0 i relej \u0107e se isklju\u010diti.<\/p>\n<p>Sve jasno? Oni kojima nije ba\u0161 \u2014 pro\u010ditajte jo\u0161 jednom ili zavirite u opis rada \u010dvorova u uputama.<\/p>\n<p>Napominjem da se podaci sa senzora <b>DHT11<\/b> a\u017euriraju otprilike jednom u 10 sekundi. Stoga relej ne mo\u017ee uklju\u010divati i isklju\u010divati se \u010de\u0161\u0107e od jednom u 10 sekundi.<\/p>\n<p>Sve bi bilo u redu, ali \u017eeljeli bismo postaviti prag vla\u017enosti pomo\u0107u promjenjivog otpornika. Nema ni\u0161ta jednostavnije!<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/3042bda4fe16e3fbad2d3f46f0beccb4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJednostavno \u0107emo zamijeniti \u010dvor-konstantu s \u010dvorom ADC. Jer upravo smo na ADC povezali razdjelnik napona s promjenjivim otpornikom.<\/p>\n<p>Napon na ulazu ADC-a se mijenja od 0 do 1 Volta. A vla\u017enost na izlazu senzora mijenja se od 0 do 100%. Kako ih uspore\u0111ujemo? Sve je jednostavno. ADC \u010dvor <b>ShIoTiny<\/b> ne samo da mjeri napon na ulazu, ve\u0107 ga tako\u0111er <i><b>mo\u017ee skalirati i pomaknuti<\/b><\/i>.<\/p>\n<p>To jest, na izlazu \u010dvora ADC1 (A\/D pretvara\u010d) bit \u0107e vrijednost <b>X<\/b>, izra\u010dunata prema formuli <\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/d01bc0ff4e6962252fced695d3894d32.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>, gdje <img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/ac0bf727edb4c759d12268376ec6ad9b.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2014 napon na ulazu ADC-a (od 0 do 1V); <b>k<\/b> \u2014 raspon (ADC raspon) i <b>b<\/b>- pomak (ADC offset). Dakle, ako postavimo <b>k=100<\/b> i <b>b=0<\/b>, tada \u0107e prilikom promjene <img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/0afbeb2e49d5a107bc54d6bbd87ba23c.jpeg\" style=\"display:block;margin: 0 auto;\" \/> u rasponu od 0 do 1, vrijednost <b>X<\/b> na izlazu \u010dvora ADC-a varirati u rasponu od 0 do 100. To jest, numeri\u010dki jednaka rasponu promjene vla\u017enosti od 0 do 100%.<\/p>\n<p>Ili, jednostavno re\u010deno, okretanjem potencijometra, mo\u017eemo postaviti prag vla\u017enosti od 0 do 100. Jedina neugodnost je \u0161to nema ure\u0111aja za prikazivanje. No, u praksi, ako na potencijometru napravimo 6 podjela 0%, 20%, 40%, 60%, 80%, 100%) \u2014 to je dovoljno da se postavi prag vla\u017enosti.<\/p>\n<p>Kako da postavimo koeficijente <b>k<\/b> \u2014 raspon (ADC raspon) i <b>b<\/b>- pomak (ADC offset)? Ma lako ko pasulj! Kliknite mi\u0161em na \u010dvor <b>ADC1<\/b> i odmah \u0107e se otvoriti prozor za pode\u0161avanje. U njemu mo\u017eete postaviti sve \u0161to vam treba. Za na\u0161 slu\u010daj to \u0107e biti prozor kao na slici.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/ff81992b4fe236f5de6d17ca6bf8187c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDakle, imamo najjednostavnije radno rje\u0161enje. Po\u010dnimo ga unaprijediti.<br \/>\nUsput, najjednostavnije rje\u0161enje ima jednu prednost \u2014 ne treba Internet. Potpuno je autonomno.<\/p>\n<h4>Druga opcija, pove\u017eemo dugme<\/h4>\n<p>\nSve radi i svi su zadovoljni. Ali u \u010demu je problem, ne mo\u017eemo uklju\u010diti ventilaciju prisilno. Ve\u0107 smo se dogovorili da \u0107e na ulazu <b>Input1<\/b> biti priklju\u010deno dugme koje \u0107e prisilno uklju\u010divati i isklju\u010divati ventilator, ne obra\u0107aju\u0107i pa\u017enju na senzor vla\u017enosti.<br \/>\nDo\u0161lo je vrijeme da obradimo ovo dugme u na\u0161em schematskom programu.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/673c274a5be680ce7c3ef1f9572f93fa.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBlok obrade pritiska dugmeta ozna\u010den je naran\u010dastom linijom. On predstavlja broja\u010d pritisaka dugmeta, koji se resetuje na nulu kada vrijednost na njegovom izlazu prema\u0161i jednu (zelena linija, izlaz \u010dvora <b>CT<\/b>).<\/p>\n<p>Sve ovdje radi isto jednostavno kao i prije: broja\u010d <b>CT<\/b> broji pritiske dugmeta, priklju\u010denog na ulazu <b>Input1<\/b>. To jest, vrijednost na izlazu ovog broja\u010da pove\u0107ava se za 1 sa svakim pritiskom dugmeta.<\/p>\n<p>\u010cim ta vrijednost postane jednaka dva (to jest ve\u0107a od 1), odmah na izlazu komparatora <b>A&gt;B<\/b> Pojavit \u0107e se 1. I ova 1 \u0107e resetirati broja\u010d <b>CT<\/b> na nulu. Misli se na komparator, donji po shemi!<\/p>\n<p>Dakle, na\u0161oj tipki su dva stanja \u2014 0 i 1. Da nam je trebala vi\u0161e stanja (3 ili 4 ili jo\u0161 vi\u0161e) \u2014 bilo bi dovoljno promijeniti konstantu <b>CONST<\/b> s jedinice na neku drugu vrijednost.<\/p>\n<p>Dakle, imamo dva uvjeta za uklju\u010divanje ventila: prekora\u010denje zadane razine vla\u017enosti i jedno pritiskanje tipke. U ispunjenju bilo kojeg od uvjeta ventilator \u0107e se uklju\u010diti. I radit \u0107e sve dok se ne pritisne tipka ponovno <b>I<\/b> razina vla\u017enosti ne do\u0111e u normalu.<\/p>\n<p>Naravno, mo\u017ee se jo\u0161 dodatno zakomplicirati algoritam, ali ne\u0107emo to \u010diniti \u2014 ostavit \u0107emo prostor za kreativnost \u017eeljnima.<\/p>\n<h4>Tre\u0107a opcija, povezujemo se na internet<\/h4>\n<p>\nSve \u0161to smo opisali \u2014 sasvim je funkcionalno. A gdje su zapravo 'folije'? Svaki pri\u0161tavi hipster-haker-kracker \u0107e se nasmijati onome tko okre\u0107e dugme i pritisne tipku, umjesto da upravlja s pametnog telefona! Okretanje dugmeta \u2014 to nije 'moderno'. A pomicanje prstom po pametnom telefonu, izgrebaju\u0107i taj prst do krvi \u2014 to je vrhunac \u017eelja hipstera-hakera-krackera (nikad nisam mogao razlikovati sve njih \u2014 tako da, ako sam pogrije\u0161io, oprostite).<\/p>\n<p>Ali bit \u0107emo blagi prema tim osobama. Upravljanje putem interneta ima i stvarne prednosti. Prvo, to je preglednost. Postoji mno\u0161tvo aplikacija za sve platforme, koje omogu\u0107uju jednostavno stvaranje potpuno upotrebljive upravlja\u010dke plo\u010de na\u0161eg kontrolera Karlsona s nekoliko dodirivanja. Drugo, postoji mogu\u0107nost daljinskog nadzora stanja vla\u017enosti u prostoriji. I, tre\u0107e, mo\u017eete vidjeti ne samo to \u0161to ventilator radi \u2014 okrene li se ili ne, ve\u0107 i koji je prag vla\u017enosti postavljen. I to \u2014 uklju\u010dio se ventilator automatski ili ru\u010dno. Ukratko, sve \u0161to po\u017eelite.<\/p>\n<p>Naravno, za neki ventilator je previ\u0161e pa\u017enje \u2014 ali to je samo primjer.<\/p>\n<p>Dakle, za povezivanje na internet koristit \u0107emo tehnologiju <b>MQTT<\/b> i istoimeni protokol.<br \/>\nDa bismo koristili ovu tehnologiju, potrebna nam je <b>MQTT poslu\u017eitelj<\/b>. To je poseban poslu\u017eitelj koji opslu\u017euje <b>MQTT klijente<\/b>, na primjer <b>ShIoTIny<\/b> i va\u0161 pametni telefon.<\/p>\n<p>Bit tehnologije <b>MQTT<\/b> sastoji se u tome da svaki od klijenata objavljuje na MQTT poslu\u017eitelju (serveru) proizvoljne podatke pod odre\u0111enim imenom (koje nazivamo <b>topic<\/b> u terminologiji <b>MQTT<\/b>). Drugi klijenti mogu se pretplatiti na proizvoljne podatke po njihovom imenu (<b>topic<\/b>) i primati nove objavljene podatke. To jest, cijela razmjena podataka odvija se na principu klijent-broker-klijent.<\/p>\n<p>Ja <i><b>ne\u0107u<\/b><\/i> usredoto\u010diti se na detalje. Na internetu ima puno \u010dlanaka i u\u010denja o tome kako funkcionira <b>MQTT<\/b> i koje postoje programe za izradu kontrolnih panela. Samo \u0107u pokazati kako primati i objavljivati podatke putem <b>ShIoTiny<\/b>.<\/p>\n<p>Kao broker koristio sam <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cloudmqtt.com\/\">www.cloudmqtt.com<\/a><\/noindex>, ali princip je svugdje isti.<\/p>\n<p>Dakle, pretpostavit \u0107emo da ste se registrirali na <b>MQTT brokeru<\/b>. U op\u0107em slu\u010daju, broker \u0107e vam dati (ili zahtijevati da osmislite) korisni\u010dko ime i lozinku (za autentifikaciju), kao i port za povezivanje. Povezati se <b>ShIoTiny<\/b> za <b>MQTT brokeru<\/b> mo\u017eete na dva na\u010dina \u2014 obi\u010dna povezanost i preko <b>TLS<\/b> (<b>SSL<\/b>).<\/p>\n<p>Sve te postavke u <b>ShIoTiny<\/b> unose se na kartici <b>Mre\u017eno<\/b>, odjeljak <b>MQTT Connection to server<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/3a16cbd07a64428568e7c03f178e87ef.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAko va\u0161 <b>MQTT poslu\u017eitelj<\/b> ne zahtijeva autentifikaciju \u2014 nemojte unositi korisni\u010dko ime i lozinku (ostavite ova polja prazna).<\/p>\n<p>Parametar <b>MQTT topic prefix<\/b> zahtijeva posebno obja\u0161njenje.<\/p>\n<p>Prefiks MQTT parametara \u2014 to je niz koji se dodaje nazivu teme (<b>topic<\/b>) prilikom objavljivanja i pretplate na MQTT broker. Da biste postavili <b>MQTT prefiks<\/b> za va\u0161 kontroler, jednostavno ga unesite u polje za unos \u201e<b>MQTT Topic Prefix<\/b>\u00bb (\u00ab<b>MQTT topic prefix<\/b>\u201d). Prefiks uvijek po\u010dinje sa kosom crtom (<b>\u00ab\/\u00bb<\/b>)! Ako ne unesete kosu crtu u polje za unos \u2014 ona \u0107e se automatski dodati. U prefiksu se ne mogu koristiti znakovi <b>\u00ab#\u00bb<\/b> i <b>\u00ab+\u00bb<\/b>. Druge zabrane ne postoje.<\/p>\n<p>Na primjer, ako objavljujete parametar \u201e<b>status<\/b>\u201e (ili se na njega pretpla\u0107ujete), a va\u0161 prefiks je postavljen kao \u201e<b>\/shiotiny\/<\/b>\u201c, tada \u0107e se na brokeru taj parametar objaviti pod imenom \u201e<b>\/shiotiny\/status<\/b>\u201c. Ako imate postavljen prazan prefiks, svi parametri na brokeru \u0107e po\u010deti sa kosom crtom (<b>\u00ab\/\u00bb<\/b>): \u00ab<b>status<\/b>\u201e \u0107e se objaviti kao \u201e<b>\/status<\/b>\u00bb.<\/p>\n<p>Dakle, pretpostavljamo da ste se registrirali na <b>MQTT brokeru<\/b> i dobili korisni\u010dko ime, lozinku i port. Zatim ste unijeli ove parametre na kartici <b>Mre\u017eno<\/b>, odjeljak <b>MQTT Connection to server<\/b> kontrolera. <b>ShIoTiny<\/b>.<\/p>\n<p>Pretpostavljamo da je prefiks postavljen na vrijednost \u201e<b>\/room\/<\/b>\u00bb.<\/p>\n<p>Po\u010det \u0107emo s time da \u0107emo objaviti stanje svih klju\u010dnih parametara: relej <b>Realay1<\/b>, stanje ru\u010dnog uklju\u010divanja, stanje automatskog uklju\u010divanja i, kona\u010dno, prag i trenutne razine vlage. I kao bonus \u2014 temperaturu u prostoriji. Kako to u\u010diniti, pogledajte na slici.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/ed016ae37bb0cb1197e2e4fd649a7c4f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKao \u0161to vidimo, razlika od prethodne varijante \u2014 samo \u010dvorovi \u201e<b>MQTT Publish<\/b>\u201c. S obzirom na prefiks, objavljuju se sljede\u0107i parametri:<br \/>\n<img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/34b67dd1932f30de777a680802f71c59.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKao \u0161to vidimo, sve stanje sustava je jasno kao dan!<\/p>\n<p>Ali \u017eelimo ne samo vidjeti, ve\u0107 i upravljati. \u0160to u\u010diniti? Vrlo jednostavno. Odustat \u0107emo od postavljanja praga vla\u017enosti putem <b>ADC<\/b> i promjenjivog otpornika i postaviti taj prag vla\u017enosti direktno <b>MQTT<\/b> s pametnog telefona!<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilacija vla\u017enih prostorija (projektni primjer)\" src=\"\/wp-content\/uploads\/2019\/08\/c32d9ec2c1a082e0a1ead0b04526eba5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUklanjamo ADC \u010dvor iz sheme i uklju\u010dujemo tri nova \u010dvora: <b>FLASH pohrana<\/b>, <b>FLASH obnova<\/b> i <b>MQTT opis<\/b>.<\/p>\n<p>Funkcija \u010dvora <b>MQTT opis<\/b> je o\u010dita: prima parametar <b>\/room\/trigHset<\/b> (prag vla\u017enosti) od <b>MQTT posrednika<\/b>. Ali \u0161to dalje radi s tim podacima? Jednostavno ih predaje \u010dvoru <b>FLASH pohrana<\/b>, koji, zauzvrat, pohranjuje te podatke u nevolatilnu memoriju pod imenom <b>trigH<\/b>. Nakon toga, \u010dvor <b>FLASH obnova<\/b> u\u010ditava iz nevolatilne memorije podatke pod imenom <b>trigH<\/b> i \u0161to se dalje doga\u0111a ve\u0107 znamo.<\/p>\n<p>Za\u0161to takve komplikacije? Za\u0161to odmah ne predati primljene podatke na ulaz komparatora? <\/p>\n<p>Kako je govorio drug \u0160. Holmes \u2014 <i>to je elementarno<\/i>! Nitko ne garantira da \u0107e se va\u0161e ure\u0111aj, nakon uklju\u010divanja, povezati s <b>MQTT brokeru<\/b>. A vla\u017enost je potrebno mjeriti. I ventilator je potrebno uklju\u010diti. No, bez informacija o pragu vla\u017enosti to nije mogu\u0107e! Stoga, na\u0161e ure\u0111aj, prilikom uklju\u010denja, izvla\u010di prethodno pohranjeni prag vla\u017enosti iz nevolatilne memorije i koristi ga za dono\u0161enje odluka. A kada se uspostavi veza s <b>MQTT posrednikom<\/b> i netko objavi novu vrijednost <b>\/room\/trigHset<\/b>, tada \u0107e se koristiti ta nova vrijednost.<\/p>\n<p>Dalje mo\u017eete smisliti \u0161to god \u017eelite. Na primjer, osim vla\u017enosti, dodati pra\u0107enje temperature. Ili uvesti \u201epametno\u201d upravljanje osvjetljenjem (imamo jo\u0161 dva releja i dva ulaza koja nisu iskori\u0161tena). Sve je u va\u0161im rukama!<\/p>\n<h4>Zaklju\u010dak<\/h4>\n<p>\nTako smo prou\u010dili nekoliko primjera implementacije jednog jednostavnog kontrolera temeljenog na ShIoTiny. Mo\u017eda \u0107e nekome biti korisno.<\/p>\n<p>Kao i uvijek, prijedlozi, \u017eelje, pitanja, gre\u0161ke i 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\/hr\/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=\"hr_HR\" \/>\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\/hr\/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: ventilacija vla\u017enog prostora (projekt-primjer) | ProHoster","description":"Glavne teze ili o \u010demu se radi.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/37423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=37423"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/37423\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/28079"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=37423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=37423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=37423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}