{"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\/pl\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","title":{"rendered":"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/a6e9c8239a90c713bd1b3b21891cbc13.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>G\u0142\u00f3wne tezy lub o czym jest ten artyku\u0142<\/h4>\n<p>\nKontynuujemy cykl artyku\u0142\u00f3w o <b>ShIoTiny<\/b> \u2014 wizualnie programowalnym kontrolerze opartym na chipie <b>ESP8266<\/b>.<\/p>\n<p>W tym artykule om\u00f3wiono na przyk\u0142adzie projektu zarz\u0105dzania wentylacj\u0105 w \u0142azience lub innym pomieszczeniu o podwy\u017cszonej wilgotno\u015bci, jak buduje si\u0119 program dla <b>ShIoTiny<\/b>.<\/p>\n<h4>Poprzednie artyku\u0142y z serii.<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: ma\u0142a automatyzacja, Internet rzeczy lub \u201ena sze\u015b\u0107 miesi\u0119cy przed urlopem\u201d<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463285\/\">ShIoTiny: w\u0119z\u0142y, po\u0142\u0105czenia i zdarzenia, czyli cechy rysowania program\u00f3w<\/a><\/noindex><\/p>\n<h4>Linki<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">Binarne oprogramowanie, schemat kontrolera i dokumentacja<\/a><\/noindex> <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\/blob\/master\/doc\/ShIoT-esp8266-01_obzor.pdf\">Instrukcja i opis w\u0119z\u0142\u00f3w<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/esppower.ru\/mqtt-android\/\">Konfiguracja brokera MQTT cloudmqtt.com<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/393277\/\">Panel sterowania MQTT dashboard dla Androida<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Wprowadzenie<\/h4>\n<p>\nNie ma poznania bez do\u015bwiadczenia. To prawda, potwierdzona przez czas i pokolenia. Dlatego nie ma nic lepszego do nauki praktycznych umiej\u0119tno\u015bci ni\u017c pr\u00f3by zrobienia czego\u015b samodzielnie. I przyk\u0142ady, kt\u00f3re pokazuj\u0105, co mo\u017cna robi\u0107, a czego nie warto pr\u00f3bowa\u0107, b\u0119d\u0105 tutaj jak najbardziej na miejscu. Cudze b\u0142\u0119dy oczywi\u015bcie nie zapobiegn\u0105 pojawieniu si\u0119 w\u0142asnych, ale mog\u0105 pom\u00f3c w ograniczeniu ich liczby.<\/p>\n<p>Pytania i listy czytelnik\u00f3w poprzednich artyku\u0142\u00f3w sk\u0142oni\u0142y mnie do stworzenia ma\u0142ego projektu-przyk\u0142adu zarz\u0105dzania wentylacj\u0105, aby pokaza\u0107, jak dzia\u0142aj\u0105 w\u0119z\u0142y ShIoTiny.<\/p>\n<p>Pocz\u0105tkowy pomys\u0142, na kt\u00f3rym oparty jest kontroler <b>ShIoTiny<\/b> \u2014 stacja pompowo-nawadniaj\u0105ca \u2014 nie wszystkim b\u0119dzie odpowiada\u0107 i nie ka\u017cdy uzna j\u0105 za interesuj\u0105c\u0105. Dlatego wzi\u0105\u0142em og\u00f3lnie zrozumia\u0142\u0105 i wielu przydatn\u0105 system zarz\u0105dzania wentylacj\u0105 jako przyk\u0142ad.<\/p>\n<p>Powiem, \u017ce pomys\u0142 projektu nie jest m\u00f3j, a <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/masterkit\/blog\/385281\/\">czerpa\u0142em go st\u0105d<\/a><\/noindex> i nast\u0119pnie dostosowa\u0142em do <b>ShIoTiny<\/b>.<\/p>\n<h4>Najpierw zrozum, czego chcesz<\/h4>\n<p>\nProces doskonalenia jest niesko\u0144czony. I to w\u0142a\u015bnie ta cecha zrujnowa\u0142a wiele dobrych pomys\u0142\u00f3w i projekt\u00f3w. Programista, zamiast wyda\u0107 rzecz, kt\u00f3ra mo\u017ce nie jest idealna, ale dzia\u0142a \u2014 kontynuowa\u0142 jej doskonalenie. I udoskonala\u0142 j\u0105, a\u017c konkurenci go wyprzedzali, wydaj\u0105c rozwi\u0105zania, kt\u00f3re mo\u017ce nie s\u0105 idealne (a cz\u0119sto wr\u0119cz biedne), ale dzia\u0142aj\u0105.<\/p>\n<p>Dlatego bardzo wa\u017cne jest, aby wiedzie\u0107, gdzie postawi\u0107 kropk\u0119 w projekcie. Innymi s\u0142owy, nale\u017cy okre\u015bli\u0107, co chcemy osi\u0105gn\u0105\u0107 na ko\u0144cu projektu z tego, co mamy na pocz\u0105tku. W j\u0119zyku rosyjskim istnieje doskona\u0142e kr\u00f3tkie i zwi\u0119z\u0142e s\u0142owo \u201eplan\u201d, kt\u00f3re umys\u0142owo ograniczeni t\u0142umacze i niedorozwini\u0119ci mened\u017cerowie w ostatnim czasie z jakiego\u015b powodu zacz\u0119li nazywa\u0107 \u201emap\u0105 drogow\u0105\u201d. C\u00f3\u017c, niech ich b\u0119dzie.<\/p>\n<p>Nasz plan b\u0119dzie taki. Za\u0142\u00f3\u017cmy, \u017ce mamy pomieszczenie, w kt\u00f3rym wilgotno\u015b\u0107 mo\u017ce czasami znacznie wzrasta\u0107. Na przyk\u0142ad takie jak \u0142azienka lub kuchnia. Wilgotno\u015b\u0107 to co\u015b nieprzyjemnego, a spos\u00f3b walki z ni\u0105 jest stary jak \u015bwiat: przewietrzy\u0107 pomieszczenie. Jest wiele sposob\u00f3w wentylacji. Jednak zrezygnujemy z egzotycznych i staromodnych metod, takich jak czarnosk\u00f3rzy z wachlarzami, i skupimy si\u0119 na zwyk\u0142ym wentylatorze. Wentylatory s\u0105 ta\u0144sze, a ich znalezienie w naszych stronach jest prostsze.<\/p>\n<p>Jednym s\u0142owem, chcemy sterowa\u0107 wentylatorem: w\u0142\u0105cza\u0107 go i odpowiednio wy\u0142\u0105cza\u0107. A dok\u0142adniej, chcemy, aby w\u0142\u0105cza\u0142 si\u0119 i wy\u0142\u0105cza\u0142 samodzielnie, gdy zajdzie taka potrzeba.<\/p>\n<p>Pozostaje okre\u015bli\u0107: w jakich warunkach wentylator powinien si\u0119 w\u0142\u0105cza\u0107, a w jakich \u2014 wy\u0142\u0105cza\u0107.<\/p>\n<p>Tutaj wszystko jest oczywiste: je\u015bli wilgotno\u015b\u0107 przekracza jak\u0105\u015b ustalon\u0105 warto\u015b\u0107 \u2014 wentylator si\u0119 w\u0142\u0105cza i wydmuchuje powietrze; gdy wilgotno\u015b\u0107 powraca do normy \u2014 wentylator si\u0119 wy\u0142\u0105cza.<\/p>\n<p>Uwa\u017cny czytelnik od razu zwr\u00f3ci uwag\u0119 na s\u0142owo \u201eustalonej\u201d. Przez kogo ustalonej? Jak ustalonej?<\/p>\n<p>Pr\u00f3g wilgotno\u015bci mo\u017cna ustali\u0107 na kilka sposob\u00f3w. Rozwa\u017cymy dwa z nich: pierwszy \u2014 za pomoc\u0105 regulowanego oporu, a drugi \u2014 przez sie\u0107 za pomoc\u0105 protoko\u0142u MQTT. Ka\u017cda z tych metod ma swoje zalety i wady, kt\u00f3re zostan\u0105 om\u00f3wione p\u00f3\u017aniej.<\/p>\n<p>Dla tych, kt\u00f3rzy nie zrozumieli, wyja\u015bni\u0119, \u017ce \u201epr\u00f3g wilgotno\u015bci\u201d to taki poziom wilgotno\u015bci, przy przekroczeniu kt\u00f3rego konieczne jest w\u0142\u0105czenie wentylatora.<\/p>\n<p>Kolejne pytanie: czy dawa\u0107 u\u017cytkownikowi mo\u017cliwo\u015b\u0107 w\u0142\u0105czenia wentylatora bezpo\u015brednio? To znaczy niezale\u017cnie od poziomu wilgotno\u015bci, po naci\u015bni\u0119ciu przycisku? Tak\u0105 mo\u017cliwo\u015b\u0107 przewidzieli\u015bmy. Wentylator mo\u017ce by\u0107 potrzebny nie tylko przy podwy\u017cszonej wilgotno\u015bci, ale tak\u017ce do usuni\u0119cia z pomieszczenia na przyk\u0142ad nieprzyjemnego zapachu, zwanej powszechnie \u201esmrodem\u201d.<\/p>\n<p>Tak wi\u0119c zrozumieli\u015bmy, czego chcemy i troch\u0119, jak to b\u0119dzie dzia\u0142a\u0107. Kr\u00f3tko wymie\u0144my wszystkie funkcje naszego systemu zarz\u0105dzania wentylacj\u0105:<\/p>\n<ul>\n<li> ustawienie progu poziomu wilgotno\u015bci (dwie opcje);<\/li>\n<li> pomiar poziomu wilgotno\u015bci;<\/li>\n<li> automatyczne w\u0142\u0105czanie wentylatora;<\/li>\n<li> automatyczne wy\u0142\u0105czanie wentylatora;<\/li>\n<li> r\u0119czne w\u0142\u0105czanie wentylatora (po naci\u015bni\u0119ciu przycisku).<\/li>\n<\/ul>\n<p>\nZatem plan jest jasny. Musimy zrealizowa\u0107 wszystkie wy\u017cej wymienione funkcje w naszym programie. Na podstawie tego \u201eplanu\u201d b\u0119dziemy dzia\u0142a\u0107. Na pocz\u0105tek narysujemy schemat strukturalny urz\u0105dzenia.<\/p>\n<h4>Schemat strukturalny urz\u0105dzenia<\/h4>\n<p>\nW og\u00f3le rzecz bior\u0105c, b\u0119dziemy mie\u0107 dwa takie schematy. Pierwszy \u2014 dla wariantu, w kt\u00f3rym poziom wilgotno\u015bci jest ustawiany za pomoc\u0105 potencjometru. Drugi schemat \u2014 dla wariantu, w kt\u00f3rym poziom wilgotno\u015bci jest ustawiany przez sie\u0107 za pomoc\u0105 protoko\u0142u MQTT.<\/p>\n<p>Jednak poniewa\u017c te schematy b\u0119d\u0105 r\u00f3\u017cni\u0142y si\u0119 tylko jednym elementem \u2014 potencjometrem \u201eustawienie poziomu wilgotno\u015bci\u201d, narysujemy tylko jeden schemat strukturalny. Oczywi\u015bcie, schemat strukturalny zgodny z norm\u0105 wygl\u0105da inaczej. Ale nie kierujemy si\u0119 tutaj in\u017cynierami, a m\u0142odszym pokoleniem. Dlatego przejrzysto\u015b\u0107 jest wa\u017cniejsza.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/519f40496a8e459c22d69e7f0eaeee1d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWi\u0119c co widzimy na rysunku? Wentylator jest pod\u0142\u0105czony do przeka\u017anika <b>Relay1<\/b> kontrolera <b>ShIoTiny<\/b>. Zauwa\u017cam, \u017ce wentylator to urz\u0105dzenie pracuj\u0105ce pod wysokim napi\u0119ciem. Dlatego, je\u015bli kto\u015b samodzielnie zamierza to zrobi\u0107 \u2014 nale\u017cy zachowa\u0107 ostro\u017cno\u015b\u0107. Czyli przynajmniej, zanim w\u0142o\u017cysz swoje palce lub przyrz\u0105dy pomiarowe do schematu \u2014 od\u0142\u0105cz wentylator od zasilania. I druga uwaga. Je\u015bli tw\u00f3j wentylator ma moc wi\u0119ksz\u0105 ni\u017c <b>250W<\/b>, to nie pod\u0142\u0105czaj go bezpo\u015brednio do <b>ShIoTiny<\/b> \u2014 tylko przez rozrusznik.<\/p>\n<p>Rozwi\u0105za\u0142em kwesti\u0119 wentylatora. Teraz przycisk \u201er\u0119czne w\u0142\u0105czenie\u201d wentylatora. Jest pod\u0142\u0105czony do wej\u015bcia <b>Input1<\/b>. Tu nie ma nic wi\u0119cej do wyja\u015bnienia.<\/p>\n<p>Czujnik temperatury i wilgotno\u015bci <b>DHT-11<\/b> (lub <b>DHT-22<\/b> lub ich odpowiedniki). Dla jego pod\u0142\u0105czenia przewidziano specjalne wej\u015bcie na kontrolerze <b>ShIoTiny<\/b>. Jak wida\u0107 na rysunku \u2014 pod\u0142\u0105czenie takiego czujnika te\u017c nie stanowi problemu.<\/p>\n<p>I wreszcie, potencjometr, kt\u00f3ry ustawia poziom wilgotno\u015bci. Dok\u0142adniej \u2014 dzielnik sk\u0142adaj\u0105cy si\u0119 z potencjometru i opornika sta\u0142ego. Nie ma problem\u00f3w z jego pod\u0142\u0105czeniem, ale wyja\u015bni\u0119, \u017ce wbudowany ADC na <b>ESP8266<\/b> jest zaprojektowany maksymalnie na 1V. Dlatego potrzebny jest dzielnik napi\u0119cia o warto\u015bci oko\u0142o 5 razy.<\/p>\n<p>I jeszcze raz przypomn\u0119, \u017ce ten dzielnik nie jest potrzebny, je\u015bli poziom wilgotno\u015bci ustawia si\u0119 za pomoc\u0105 protoko\u0142u MQTT.<\/p>\n<p>Zacznijmy tworzy\u0107 algorytm dzia\u0142ania urz\u0105dzenia w edytorze ElDraw ShIoTiny. Jak si\u0119 do niego dosta\u0107, mo\u017cesz przeczyta\u0107 w wcze\u015bniejszych artyku\u0142ach lub w instrukcji, do kt\u00f3rej link znajduje si\u0119 na pocz\u0105tku artyku\u0142u.<\/p>\n<h4>Opcja pierwsza, najprostsza<\/h4>\n<p>\nZacznijmy od prostego: w\u0142\u0105czenia przeka\u017anika <b>Relay1<\/b> przy przekroczeniu progowego poziomu wilgotno\u015bci przez okre\u015blony czas.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/e9f8d30627cf7cdbebccf863c2b2f808.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJak widzimy, nic skomplikowanego: zaledwie cztery w\u0119z\u0142y, nie licz\u0105c w\u0119z\u0142\u00f3w-komentarzy. <b>DHT11<\/b> \u2014 to czujnik temperatury i wilgotno\u015bci (mo\u017cna wymieni\u0107 na <b>DHT22<\/b>).<\/p>\n<p>Sta\u0142a <b>CONST<\/b> \u2014 progowy poziom wilgotno\u015bci, w procentach.<\/p>\n<p>Komparator \u2014 w\u0119ze\u0142 por\u00f3wnuj\u0105cy dwie liczby i generuj\u0105cy na wyj\u015bciu 1, je\u015bli dane warunki s\u0105 spe\u0142nione i 0, je\u015bli warunki nie s\u0105 spe\u0142nione.<\/p>\n<p>W naszym przypadku takim warunkiem b\u0119dzie <b>A&gt;B<\/b>, gdzie <b>A<\/b> \u2014 zmierzony przez czujnik poziom wilgotno\u015bci, a <b>B<\/b> \u2014 progowy poziom tej samej wilgotno\u015bci.<\/p>\n<p>Gdy tylko zmierzony poziom wilgotno\u015bci (<b>A<\/b>) przekroczy progowy poziom wilgotno\u015bci (<b>B<\/b>), na wyj\u015bciu komparatora <b>A&gt;B<\/b> pojawi si\u0119 1 i przeka\u017anik zostanie w\u0142\u0105czony. I odwrotnie, gdy poziom wilgotno\u015bci wr\u00f3ci do normy (to znaczy <b>A&lt;=B<\/b>), na wyj\u015bciu komparatora <b>A&gt;B<\/b> pojawi si\u0119 0 i przeka\u017anik zostanie wy\u0142\u0105czony.<\/p>\n<p>Czy wszystko jasne? Kto nie jest do ko\u0144ca pewien \u2014 przeczytaj jeszcze raz lub zajrzyj do opisu dzia\u0142ania w\u0119z\u0142\u00f3w w instrukcji.<\/p>\n<p>Zauwa\u017cam, \u017ce dane z czujnika <b>DHT11<\/b> aktualizowane s\u0105 mniej wi\u0119cej co 10 sekund. Dlatego przeka\u017anik nie mo\u017ce w\u0142\u0105cza\u0107 si\u0119 i wy\u0142\u0105cza\u0107 cz\u0119\u015bciej ni\u017c raz na 10 sekund.<\/p>\n<p>Inaczej m\u00f3wi\u0105c, chcieliby\u015bmy ustawi\u0107 progowy poziom wilgotno\u015bci za pomoc\u0105 potencjometru. Nic prostszego!<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/3042bda4fe16e3fbad2d3f46f0beccb4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPo prostu wymienimy w\u0119ze\u0142-const na w\u0119ze\u0142 ADC. To do ADC pod\u0142\u0105czyli\u015bmy dzielnik napi\u0119cia z potencjometrem.<\/p>\n<p>Napi\u0119cie na wej\u015bciu ADC zmienia si\u0119 od 0 do 1 V. A wilgotno\u015b\u0107 na wyj\u015bciu czujnika zmienia si\u0119 od 0 do 100%. Jak wi\u0119c je por\u00f3wnujemy? To proste. W\u0119ze\u0142 ADC w <b>ShIoTiny<\/b> nie tylko mierzy napi\u0119cie na wej\u015bciu, ale tak\u017ce potrafi je <i><b>skalowa\u0107 i przesuwa\u0107.<\/b><\/i>.<\/p>\n<p>To znaczy, na wyj\u015bciu w\u0119z\u0142a ADC1 (A\/C) otrzymamy warto\u015b\u0107 <b>X<\/b>, obliczon\u0105 wed\u0142ug wzoru <\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/d01bc0ff4e6962252fced695d3894d32.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>, gdzie <img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/ac0bf727edb4c759d12268376ec6ad9b.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2014 napi\u0119cie na wej\u015bciu ADC (od 0 do 1 V); <b>k<\/b> \u2014 zakres (zakres ADC) i <b>b<\/b>-przesuni\u0119cie (offset ADC). W ten spos\u00f3b, je\u015bli ustalimy <b>k=100<\/b> i <b>b=0<\/b>, to przy zmianie <img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/0afbeb2e49d5a107bc54d6bbd87ba23c.jpeg\" style=\"display:block;margin: 0 auto;\" \/> w zakresie od 0 do 1, warto\u015b\u0107 <b>X<\/b> na wyj\u015bciu w\u0119z\u0142a ADC b\u0119dzie zmienia\u0107 si\u0119 w zakresie od 0 do 100. To znaczy, liczbowo r\u00f3wn\u0105 zakresowi zmian wilgotno\u015bci od 0 do 100%.<\/p>\n<p>Prosto m\u00f3wi\u0105c, obracaj\u0105c silnik zmiennego oporu, mo\u017cna ustawi\u0107 pr\u00f3g wilgotno\u015bci od 0 do 100. Jedynym niedogodno\u015bci\u0105 jest to, \u017ce nie ma \u017cadnych urz\u0105dze\u0144 wy\u015bwietlaj\u0105cych. Ale w praktyce, je\u015bli w silniku zmiennego oporu zrobi\u0107 6 podzia\u0142\u00f3w (0%, 20%, 40%, 60%, 80%, 100%) \u2014 to wystarczy, \u017ceby ustawi\u0107 pr\u00f3g wilgotno\u015bci.<\/p>\n<p>Jak ustawi\u0107 wsp\u00f3\u0142czynniki <b>k<\/b> \u2014 zakres (zakres ADC) i <b>b<\/b>- przesuni\u0119cie (offset ADC)? To proste jak bu\u0142ka z mas\u0142em! Wska\u017anikiem myszy kliknij w w\u0119ze\u0142 <b>ADC1<\/b> i od razu pojawi si\u0119 okno ustawie\u0144. W nim mo\u017cesz ustawi\u0107 wszystko, co potrzebujesz. W naszym przypadku b\u0119dzie to takie okno, jak na rysunku.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/ff81992b4fe236f5de6d17ca6bf8187c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTak, mamy najprostsze dzia\u0142aj\u0105ce rozwi\u0105zanie. Zaczniemy je udoskonala\u0107.<br \/>\nPrzy okazji, najprostsze rozwi\u0105zanie ma jedn\u0105 zalet\u0119 \u2014 nie potrzebuje internetu. Jest ca\u0142kowicie autonomiczne.<\/p>\n<h4>Druga opcja, pod\u0142\u0105czamy przycisk<\/h4>\n<p>\nWszystko dzia\u0142a, wszyscy s\u0105 zadowoleni. Ale jest problem, nie mo\u017cemy w\u0142\u0105czy\u0107 wentylacji wymuszonej. Ju\u017c um\u00f3wili\u015bmy si\u0119, \u017ce do wej\u015bcia <b>Input1<\/b> b\u0119dzie pod\u0142\u0105czony przycisk, kt\u00f3ry b\u0119dzie w\u0142\u0105cza\u0142 i wy\u0142\u0105cza\u0142 wentylator wymuszony, nie zwracaj\u0105c uwagi na czujnik wilgotno\u015bci.<br \/>\nNadszed\u0142 czas na przetworzenie tego przycisku w naszej schemacie-programie.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/673c274a5be680ce7c3ef1f9572f93fa.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBlok przetwarzania naci\u015bni\u0119cia przycisku wyr\u00f3\u017cniony jest pomara\u0144czow\u0105 lini\u0105. To licznik naci\u015bni\u0119\u0107 przycisku, kt\u00f3ry resetuje si\u0119 do zera, gdy warto\u015b\u0107 na jego wyj\u015bciu przekroczy jedynk\u0119 (zielona linia, wyj\u015bcie w\u0119z\u0142a <b>CT<\/b>).<\/p>\n<p>Wszystko dzia\u0142a tu tak samo jak wcze\u015bniej: licznik <b>CT<\/b> liczy naci\u015bni\u0119cia przycisku, pod\u0142\u0105czonego do wej\u015bcia <b>Input1<\/b>. To znaczy, \u017ce warto\u015b\u0107 na wyj\u015bciu tego licznika zwi\u0119ksza si\u0119 o 1 przy ka\u017cdym naci\u015bni\u0119ciu przycisku.<\/p>\n<p>Gdy ta warto\u015b\u0107 stanie si\u0119 r\u00f3wna dw\u00f3m (to znaczy wi\u0119cej ni\u017c 1), natychmiast na wyj\u015bciu komparatora <b>A&gt;B<\/b> pojawi si\u0119 1. A ta 1 zresetuje licznik <b>CT<\/b> do zera. Mowa tu o komparatorze, dolnym na schemacie!<\/p>\n<p>W ten spos\u00f3b mamy dwa stany naszego przycisku \u2014 0 i 1. Gdyby\u015bmy potrzebowali wi\u0119cej stan\u00f3w (3 lub 4 lub jeszcze wi\u0119cej) \u2014 wystarczy zmieni\u0107 sta\u0142\u0105 <b>CONST<\/b> z jedynki na inn\u0105 warto\u015b\u0107.<\/p>\n<p>Tak, mamy dwa warunki w\u0142\u0105czenia wentylatora: przekroczenie ustalonego poziomu wilgotno\u015bci i pojedyncze naci\u015bni\u0119cie przycisku. Przy spe\u0142nieniu kt\u00f3regokolwiek z warunk\u00f3w wentylator w\u0142\u0105czy si\u0119. I b\u0119dzie dzia\u0142a\u0107, dop\u00f3ki ponownie nie zostanie naci\u015bni\u0119ty przycisk <b>I<\/b> lub poziom wilgotno\u015bci nie wr\u00f3ci do normy.<\/p>\n<p>Mo\u017cna oczywi\u015bcie jeszcze bardziej skomplikowa\u0107 algorytm, ale tego nie zrobimy \u2014 zostawimy pole dla tw\u00f3rczo\u015bci ch\u0119tnym.<\/p>\n<h4>Trzeci\u0105 opcj\u0119, \u0142\u0105czymy si\u0119 z internetem<\/h4>\n<p>\nWszystko, co opisali\u015bmy \u2014 jest ca\u0142kowicie operacyjne. A co z mod\u0105? Przecie\u017c ka\u017cdy nastolatek-hacker z wysypk\u0105 za\u015bmieje si\u0119 z tego, kto kr\u0119ci pokr\u0119t\u0142em i naciska przycisk, zamiast zarz\u0105dza\u0107 z telefonu! Kr\u0119cenie pokr\u0119t\u0142em \u2014 to 'niemodne'. A oto przesuwanie palcem po smartfonie, wycieraj\u0105c ten palec do krwi \u2014 to szczyt pragnienia hipo-hacker\u00f3w (nigdy nie mog\u0142em ich wszystkich odr\u00f3\u017cni\u0107 \u2014 wi\u0119c je\u015bli si\u0119 pomyli\u0142em, przepraszam).<\/p>\n<p>Ale b\u0119dziemy pob\u0142a\u017cliwi wobec tych osobnik\u00f3w. Zarz\u0105dzanie przez internet ma te\u017c swoje prawdziwe zalety. Po pierwsze, to przejrzysto\u015b\u0107. Istnieje mn\u00f3stwo aplikacji na wszystkie platformy, kt\u00f3re pozwalaj\u0105 za pomoc\u0105 kilku klikni\u0119\u0107 stworzy\u0107 ca\u0142kiem u\u017cyteczn\u0105 panel kontrolny naszego kontrolera-karla. Po drugie, to mo\u017cliwo\u015b\u0107 zdalnego monitorowania stanu wilgotno\u015bci w pomieszczeniu. I po trzecie, mo\u017cna widzie\u0107 nie tylko to, co robi wentylator \u2014 kr\u0119ci si\u0119 czy nie, ale r\u00f3wnie\u017c to, jaki poziom wilgotno\u015bci zosta\u0142 ustawiony. I to \u2014 wentylator w\u0142\u0105czy\u0142 si\u0119 automatycznie czy r\u0119cznie. Generalnie wszystko, co sobie \u017cyczysz.<\/p>\n<p>Oczywi\u015bcie, dla jakiego\u015b wentylatora to za du\u017co zachodu \u2014 tyle uwagi. Ale to tylko przyk\u0142ad.<\/p>\n<p>Zatem do po\u0142\u0105czenia z internetem wykorzystamy technologi\u0119 <b>MQTT<\/b> oraz protok\u00f3\u0142 o tej samej nazwie.<br \/>\nAby skorzysta\u0107 z tej technologii, potrzebujemy <b>MQTT-brokera<\/b>. To specjalny serwer, kt\u00f3ry obs\u0142uguje <b>MQTT-klient\u00f3w<\/b>, na przyk\u0142ad <b>ShIoTIny<\/b> i Tw\u00f3j smartfon.<\/p>\n<p>Sedno technologii <b>MQTT<\/b> polega na tym, \u017ce ka\u017cdy z klient\u00f3w publikuje na MQTT-brokerze (serwerze) dowolne dane pod okre\u015blon\u0105 nazw\u0105 (nazywan\u0105 <b>temat<\/b> w terminologii <b>MQTT<\/b>). Inne klienci mog\u0105 subskrybowa\u0107 dowolne dane po ich nazwie (<b>temat<\/b>) i otrzymywa\u0107 nowo opublikowane dane. W ten spos\u00f3b ca\u0142y wymiana danych odbywa si\u0119 na zasadzie klient-broker-klient.<\/p>\n<p>Ja <i><b>nie b\u0119d\u0119<\/b><\/i> zatrzymywa\u0142 si\u0119 na szczeg\u00f3\u0142ach. W internecie jest mn\u00f3stwo artyku\u0142\u00f3w i materia\u0142\u00f3w edukacyjnych na temat tego, jak dzia\u0142a <b>MQTT<\/b> i jakie s\u0105 programy do tworzenia paneli kontrolnych. Po prostu poka\u017c\u0119, jak mo\u017cemy odbiera\u0107 i publikowa\u0107 dane za pomoc\u0105 <b>ShIoTiny<\/b>.<\/p>\n<p>Jako broker u\u017cy\u0142em <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cloudmqtt.com\/\">www.cloudmqtt.com<\/a><\/noindex>, ale zasada jest wsz\u0119dzie taka sama.<\/p>\n<p>Za\u0142\u00f3\u017cmy zatem, \u017ce zarejestrowa\u0142e\u015b si\u0119 na <b>MQTT-brokerze<\/b>Og\u00f3lnie rzecz bior\u0105c, broker wyda Ci (lub poprosi o wymy\u015blenie) nazw\u0119 u\u017cytkownika i has\u0142o (do autoryzacji), a tak\u017ce port do po\u0142\u0105czenia. Po\u0142\u0105cz <b>ShIoTiny<\/b> do <b>z brokerem MQTT<\/b> na dwa sposoby \u2014 zwyk\u0142e po\u0142\u0105czenie i przez <b>TLS<\/b> (<b>SSL<\/b>).<\/p>\n<p>Wszystkie te parametry <b>ShIoTiny<\/b> wprowadza si\u0119 na zak\u0142adce <b>Networking<\/b>, w sekcji <b>Po\u0142\u0105czenie MQTT z serwerem<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/3a16cbd07a64428568e7c03f178e87ef.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJe\u015bli Tw\u00f3j <b>MQTT-brokera<\/b> nie wymaga autoryzacji \u2014 nie wprowadzaj loginu i has\u0142a (pozostaw te pola puste).<\/p>\n<p>Parametr <b>Prefiks tematu MQTT<\/b> wymaga osobnego wyja\u015bnienia.<\/p>\n<p>Prefiks parametr\u00f3w MQTT \u2014 to ci\u0105g dodawany do nazwy tematu (<b>temat<\/b>) przy publikacji i subskrypcji na brokerze MQTT. Aby ustawi\u0107 <b>prefiks MQTT<\/b> dla swojego kontrolera, wystarczy go wpisa\u0107 w polu \u201e<b>Prefiks tematu MQTT<\/b>\u00bb (\u00ab<b>Prefiks tematu MQTT<\/b>\u201d). Prefiks zawsze zaczyna si\u0119 od uko\u015bnika (<b>\u00ab\/\u00bb<\/b>)! Je\u015bli nie wpiszesz uko\u015bnika w polu, zostanie on dodany automatycznie. W prefiksie nie mo\u017cna u\u017cywa\u0107 znak\u00f3w <b>\u00ab#\u00bb<\/b> i <b>\u00ab+\u00bb<\/b>. Nie ma innych ogranicze\u0144.<\/p>\n<p>Na przyk\u0142ad, je\u015bli publikujesz parametr \u201e<b>status<\/b>\u201d (lub si\u0119 na niego subskrybujesz), a Tw\u00f3j prefiks to \u201e<b>\/shiotiny\/<\/b>\u201d, to na brokerze ten parametr zostanie opublikowany jako \u201e<b>\/shiotiny\/status<\/b>\u201d. Je\u015bli masz ustawiony pusty prefiks, wszystkie parametry na brokerze b\u0119d\u0105 zaczyna\u0142y si\u0119 od uko\u015bnika (<b>\u00ab\/\u00bb<\/b>): \u00ab<b>status<\/b>\u201d b\u0119dzie publikowane jako \u201e<b>\/status<\/b>\u00bb.<\/p>\n<p>Zak\u0142adaj\u0105c, \u017ce zarejestrowa\u0142e\u015b si\u0119 na <b>MQTT-brokerze<\/b> i otrzyma\u0142e\u015b login, has\u0142o i port. Nast\u0119pnie wpisa\u0142e\u015b te parametry na zak\u0142adce <b>Networking<\/b>, w sekcji <b>Po\u0142\u0105czenie MQTT z serwerem<\/b> kontrolera <b>ShIoTiny<\/b>.<\/p>\n<p>Zak\u0142adamy, \u017ce prefiks zosta\u0142 ustawiony na warto\u015b\u0107 \u201e<b>\/room\/<\/b>\u00bb.<\/p>\n<p>Zacznijmy od tego, \u017ce opublikujemy stan wszystkich kluczowych parametr\u00f3w: przeka\u017anik <b>Realay1<\/b>, stan r\u0119cznego w\u0142\u0105czenia, stan automatycznego w\u0142\u0105czenia oraz, w ko\u0144cu, pr\u00f3g i bie\u017c\u0105cy poziom wilgotno\u015bci. A na koniec bonus \u2014 temperatura w pomieszczeniu. Jak to zrobi\u0107, zobacz na rysunku.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/ed016ae37bb0cb1197e2e4fd649a7c4f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJak widzimy, r\u00f3\u017cnica od poprzedniej wersji \u2014 to tylko w\u0119z\u0142y \u201e<b>Publikowanie MQTT<\/b>\u201d. Z uwzgl\u0119dnieniem prefiksu publikowane s\u0105 nast\u0119puj\u0105ce parametry:<br \/>\n<img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/34b67dd1932f30de777a680802f71c59.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJak widzimy, stan ca\u0142ego systemu jest u nas na widoku!<\/p>\n<p>Ale chcemy nie tylko widzie\u0107, ale i zarz\u0105dza\u0107. Co robi\u0107? Bardzo prosto. Zrezygnujemy z ustawiania progu wilgotno\u015bci za pomoc\u0105 <b>ADC<\/b> i potencjometru i b\u0119dziemy ustala\u0107 ten pr\u00f3g bezpo\u015brednio z telefonu! <b>MQTT<\/b> Usuwamy w\u0119ze\u0142 ADC z schematu i wstawiamy tam trzy nowe w\u0119z\u0142y:<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: wentylacja pomieszcze\u0144 wilgotnych (projekt-przyk\u0142ad)\" src=\"\/wp-content\/uploads\/2019\/08\/c32d9ec2c1a082e0a1ead0b04526eba5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrzechowywanie FLASH <b>Odtwarzanie FLASH<\/b>, <b>Opisz MQTT<\/b> i <b>Funkcja w\u0119z\u0142a<\/b>.<\/p>\n<p>jest oczywista: otrzymuje parametr <b>Funkcja w\u0119z\u0142a<\/b> (pr\u00f3g wilgotno\u015bci) z <b>\/room\/trigHset<\/b> brokera MQTT <b>. Ale co on robi z danymi dalej? Po prostu oddaje je w\u0119z\u0142owi<\/b>. <b>Odtwarzanie FLASH<\/b>, kt\u00f3ry z kolei przechowuje te dane w pami\u0119ci nieulotnej pod nazw\u0105 <b>trigH<\/b>. Po tym w\u0119ze\u0142 <b>Opisz MQTT<\/b> odczytuje z pami\u0119ci nieulotnej dane pod nazw\u0105 <b>trigH<\/b> a co si\u0119 dalej wydarzy, ju\u017c wiemy.<\/p>\n<p>Po co takie komplikacje? Dlaczego nie mo\u017cna od razu przekaza\u0107 uzyskanych danych do komparatora? <\/p>\n<p>Jak mawia\u0142 towarzysz S. Holmes \u2014 <i>to elementarne<\/i>! Nikt nie gwarantuje, \u017ce po w\u0142\u0105czeniu twojego urz\u0105dzenia, po\u0142\u0105czy si\u0119 z <b>z brokerem MQTT<\/b>. A trzeba te\u017c mierzy\u0107 wilgotno\u015b\u0107. I trzeba w\u0142\u0105czy\u0107 wentylator. Ale bez informacji o progowym poziomie wilgotno\u015bci to niemo\u017cliwe! Dlatego nasze urz\u0105dzenie przy w\u0142\u0105czeniu wyci\u0105ga wcze\u015bniej zapami\u0119tany progowy poziom wilgotno\u015bci z pami\u0119ci nieulotnej i wykorzystuje go do podejmowania decyzji. A dopiero gdy nawi\u0105\u017ce po\u0142\u0105czenie z <b>brokerem MQTT<\/b> i kto\u015b opublikuje now\u0105 warto\u015b\u0107 <b>\/room\/trigHset<\/b>, wtedy zostanie wykorzystana ta nowa warto\u015b\u0107.<\/p>\n<p>Dalej mo\u017cesz wymy\u015bla\u0107 wszystko, co chcesz. Na przyk\u0142ad, opr\u00f3cz wilgotno\u015bci wprowadzi\u0107 te\u017c pomiar temperatury. Lub doda\u0107 'inteligentne' sterowanie o\u015bwietleniem (mamy jeszcze dwa nieu\u017cywane przeka\u017aniki i dwa wej\u015bcia). Wszystko jest w twoich r\u0119kach!<\/p>\n<h4>Podsumowanie<\/h4>\n<p>\nOto zbadali\u015bmy kilka przyk\u0142ad\u00f3w realizacji najprostszej w istocie kontrolera opartego na ShIoTiny. Mo\u017ce komu\u015b to si\u0119 przyda.<\/p>\n<p>Jak zawsze, sugestie, \u017cyczenia, pytania, b\u0142\u0119dy drukarskie i inne \u2014 na maila: <b>shiotiny@yandex.ru<\/b><br \/>\n<br \/>\u0179r\u00f3d\u0142o: <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.1.1 - 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\/pl\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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: wentylacja wilgotnego pomieszczenia (projekt-przyk\u0142ad) | ProHoster","description":"G\u0142\u00f3wne tezy lub o czym to jest.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/37423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=37423"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/37423\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/28079"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=37423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=37423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=37423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}