{"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\/it\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","title":{"rendered":"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/a6e9c8239a90c713bd1b3b21891cbc13.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>Punti principali o di cosa parla questo articolo<\/h4>\n<p>\nContinuiamo il ciclo di articoli su <b>ShIoTiny<\/b> \u2014 un controller programmabile visivamente basato su chip <b>ESP8266<\/b>.<\/p>\n<p>In questo articolo si parla, utilizzando l'esempio di un progetto di gestione della ventilazione in un bagno o in un'altra stanza ad alta umidit\u00e0, di come costruire un programma per <b>ShIoTiny<\/b>.<\/p>\n<h4>Articoli precedenti della serie.<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: automazione leggera, internet delle cose o \"sei mesi prima della ferie\"<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463285\/\">ShIoTiny: nodi, collegamenti ed eventi o caratteristiche del disegno dei programmi<\/a><\/noindex><\/p>\n<h4>Link<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">Firmware binari, schema del controller e documentazione<\/a><\/noindex> <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\/blob\/master\/doc\/ShIoT-esp8266-01_obzor.pdf\">Istruzioni e descrizione dei nodi<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/esppower.ru\/mqtt-android\/\">Configurazione del broker MQTT cloudmqtt.com<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/393277\/\">Pannello di controllo MQTT dashboard per Android<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Introduzione<\/h4>\n<p>\nNon c'\u00e8 comprensione senza esperienza. Questa \u00e8 una verit\u00e0 comprovata dal tempo e dalle generazioni. Quindi, non c'\u00e8 niente di meglio per imparare abilit\u00e0 pratiche che cercare di fare qualcosa da soli. E gli esempi che mostrano cosa si pu\u00f2 fare e cosa non si dovrebbe provare saranno opportuni. Gli errori altrui, ovviamente, non possono prevenire l'emergere di errori propri, ma possono aiutare a ridurre il numero di questi ultimi.<\/p>\n<p>Le domande e le lettere dei lettori degli articoli precedenti mi hanno spinto a realizzare un piccolo progetto esemplificativo sulla gestione della ventilazione, per dimostrare come funzionano i moduli ShIoTiny.<\/p>\n<p>L'idea iniziale, da cui \u00e8 nato il controller <b>ShIoTiny<\/b> \u2014 una stazione di pompaggio e irrigazione \u2014 non \u00e8 adatta e interessante per tutti. Pertanto, ho scelto un sistema di gestione della ventilazione, comprensibile per tutti e utile per molti, come esempio.<\/p>\n<p>Posso dire che l'idea del progetto non \u00e8 mia, ma <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/masterkit\/blog\/385281\/\">l'ho presa da qui<\/a><\/noindex> e poi l'ho adattata a <b>ShIoTiny<\/b>.<\/p>\n<h4>Inizia a capire cosa vuoi<\/h4>\n<p>\nIl processo di miglioramento \u00e8 infinito. Ed \u00e8 proprio questa caratteristica che ha rovinato molte buone idee e progetti. Il progettista, invece di rilasciare un prodotto funzionante anche se non perfetto, continuava a perfezionarlo. E lo perfezionava finch\u00e9 i concorrenti non lo superavano, rilasciando soluzioni magari non ideali (e spesso sinceramente brutte), ma funzionanti.<\/p>\n<p>\u00c8 quindi molto importante sapere dove mettere il punto in un progetto. In altre parole, \u00e8 necessario definire cosa vogliamo ottenere alla fine del progetto partendo da ci\u00f2 che abbiamo all'inizio. In italiano, il termine per un documento redatto proprio per descrivere il percorso di creazione di qualcosa \u00e8 semplicemente \"piano\", una parola che di recente traduttori poco capaci e manager deficienti hanno inspiegabilmente cominciato a chiamare \"roadmap\". Ma lasciamo perdere.<\/p>\n<p>Il nostro piano sar\u00e0 il seguente. Supponiamo di avere una stanza in cui l'umidit\u00e0 pu\u00f2 aumentare notevolmente. Ad esempio, come nel bagno o in cucina. L'umidit\u00e0 \u00e8 una cosa sgradevole e il modo per combatterla \u00e8 antico come il mondo: arieggiare l'ambiente. Ci sono molti modi per farlo. Ma, forse, rinunceremo ai metodi esotici e antiquati come i negri con le ventole e ci fermeremo su un semplice ventilatore. I ventilatori sono pi\u00f9 economici e pi\u00f9 facili da trovare dalle nostre parti.<\/p>\n<p>In breve, vogliamo controllare il ventilatore: accenderlo e, di conseguenza, spegnerlo. Pi\u00f9 precisamente, vogliamo che si accenda e si spenga da solo quando necessario.<\/p>\n<p>Resta da definire: quali condizioni devono attivare e disattivare il ventilatore.<\/p>\n<p>Qui \u00e8 tutto chiaro: se l'umidit\u00e0 supera una certa soglia, il ventilatore si accende e aspira l'aria; quando l'umidit\u00e0 torna nella norma, il ventilatore si spegne.<\/p>\n<p>Il lettore attento si soffermer\u00e0 subito sulla parola \u00abassegnata\u00bb. Da chi \u00e8 assegnata? Come \u00e8 assegnata?<\/p>\n<p>La soglia di umidit\u00e0 pu\u00f2 essere impostata in diversi modi. Esamineremo due metodi: il primo \u2014 tramite un potenziometro, e il secondo \u2014 attraverso la rete utilizzando il protocollo MQTT. Ognuno di questi metodi ha vantaggi e svantaggi, che verranno discussi in seguito.<\/p>\n<p>Per coloro che non lo hanno capito, chiarisco che \u00absoglia di umidit\u00e0\u00bb \u00e8 il livello di umidit\u00e0 oltre il quale \u00e8 necessario accendere il ventilatore.<\/p>\n<p>La domanda successiva \u00e8: dobbiamo dare all'utente la possibilit\u00e0 di accendere il ventilatore direttamente? Cio\u00e8, indipendentemente dal livello di umidit\u00e0, premendo un pulsante? Prevederemo questa possibilit\u00e0. Infatti, il ventilatore pu\u00f2 essere necessario non solo in caso di umidit\u00e0 elevata, ma anche per rimuovere dall'ambiente, ad esempio, un cattivo odore, noto comunemente come \"puzza\".<\/p>\n<p>Quindi, abbiamo capito cosa vogliamo e anche un po' come funzioner\u00e0. Riassumiamo brevemente tutte le funzionalit\u00e0 del nostro sistema di gestione della ventilazione:<\/p>\n<ul>\n<li> impostazione del livello di umidit\u00e0 di soglia (due opzioni);<\/li>\n<li> misurazione del livello di umidit\u00e0;<\/li>\n<li> accensione automatica del ventilatore;<\/li>\n<li> spegnimento automatico del ventilatore;<\/li>\n<li> accensione manuale del ventilatore (premendo un pulsante).<\/li>\n<\/ul>\n<p>\nQuindi, il piano \u00e8 chiaro. Dobbiamo implementare tutte le funzioni sopra elencate nel nostro programma. In base a questo \"piano\" procederemo. Iniziamo disegnando lo schema strutturale del dispositivo.<\/p>\n<h4>Schema strutturale del dispositivo<\/h4>\n<p>\nIn generale, avremo due schemi. Il primo \u00e8 per la variante in cui il livello di umidit\u00e0 di soglia \u00e8 impostato tramite una resistenza variabile. Il secondo schema \u00e8 per la variante in cui il livello di umidit\u00e0 di soglia \u00e8 impostato tramite rete attraverso il protocollo MQTT.<\/p>\n<p>Tuttavia, poich\u00e9 questi schemi differiranno solo per un elemento \u2014 la resistenza variabile \"impostazione del livello di umidit\u00e0 di soglia\" \u2014 disegneremo solo uno schema strutturale. Certo, lo schema strutturale secondo la normativa \u00e8 diverso. Ma ci rivolgiamo non agli ingegneri esperti, ma alla nuova generazione. Pertanto, la chiarezza \u00e8 pi\u00f9 importante.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/519f40496a8e459c22d69e7f0eaeee1d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuindi, cosa vediamo nell'immagine? Il ventilatore \u00e8 collegato al rel\u00e8 <b>Relay1<\/b> del controllore <b>ShIoTiny<\/b>. Vorrei sottolineare che il ventilatore \u00e8 un dispositivo che opera ad alta tensione. Pertanto, se qualcuno decide di realizzare un progetto del genere, faccia attenzione. Cio\u00e8, almeno, prima di inserire le dita o strumenti di misurazione nello schema \u2014 disattivare almeno il ventilatore. E un secondo avviso. Se il vostro ventilatore \u00e8 pi\u00f9 potente di <b>250W<\/b>, non collegatelo direttamente a <b>ShIoTiny<\/b> \u2014 solo tramite un contattore.<\/p>\n<p>Abbiamo risolto il problema della ventola. Ora passiamo al pulsante \u00abaccensione manuale\u00bb della ventola. \u00c8 collegato all'ingresso <b>Input1<\/b>. Non c'\u00e8 nulla da aggiungere.<\/p>\n<p>Sensore di temperatura e umidit\u00e0 <b>DHT-11<\/b> (o <b>DHT-22<\/b> o loro equivalenti). \u00c8 previsto un ingresso speciale sul controller per collegarlo <b>ShIoTiny<\/b>. Come si pu\u00f2 vedere nell'immagine, collegare questo sensore non presenta problemi.<\/p>\n<p>Infine, una resistenza variabile che stabilisce la soglia di umidit\u00e0. Pi\u00f9 precisamente, un partitore composto da una resistenza variabile e una costante. Non ci sono problemi nel collegarlo, ma voglio spiegare che l'ADC incorporato su <b>ESP8266<\/b> \u00e8 progettato per una tensione massima di 1 Volt. Ecco perch\u00e9 \u00e8 necessario un partitore di tensione di circa 5 volte.<\/p>\n<p>Ricordo ancora una volta che questo partitore non \u00e8 necessario se la soglia di umidit\u00e0 \u00e8 impostata tramite rete utilizzando il protocollo MQTT.<\/p>\n<p>Iniziamo a costruire l'algoritmo di funzionamento del dispositivo nell'editor ElDraw ShIoTiny. Per sapere come accedervi, \u00e8 possibile leggere gli articoli precedenti o il manuale, il cui link \u00e8 presente all'inizio dell'articolo.<\/p>\n<h4>Prima opzione, la pi\u00f9 semplice<\/h4>\n<p>\nIniziamo con la semplice accensione del rel\u00e8 <b>Relay1<\/b> al superamento della soglia di umidit\u00e0 per un tempo impostato.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/e9f8d30627cf7cdbebccf863c2b2f808.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome vediamo, non c'\u00e8 nulla di complicato: solo quattro nodi, escluse le nodi di commento. <b>DHT11<\/b> \u00e8 il sensore di temperatura e umidit\u00e0 stesso (pu\u00f2 essere sostituito con <b>DHT22<\/b>).<\/p>\n<p>Costante <b>CONST<\/b> \u00e8 il livello di umidit\u00e0 di soglia, in percentuale.<\/p>\n<p>Il comparatore \u00e8 un nodo che confronta due numeri e fornisce in uscita 1 se la condizione specificata \u00e8 vera e 0 se la condizione non \u00e8 soddisfatta.<\/p>\n<p>Nel nostro caso, tale condizione sar\u00e0 <b>A&gt;B<\/b>, dove <b>A<\/b> il livello di umidit\u00e0 misurato dal sensore, e <b>B<\/b> il livello di soglia della stessa umidit\u00e0.<\/p>\n<p>Non appena il livello di umidit\u00e0 misurato (<b>A<\/b>) supera il livello di soglia dell'umidit\u00e0 (<b>B<\/b>), il comparatore produce 1 e il rel\u00e8 si attiva. E viceversa, non appena il livello di umidit\u00e0 torna alla normalit\u00e0 (cio\u00e8 <b>A&gt;B<\/b> si accender\u00e0 1 e il rel\u00e8 si attiver\u00e0. E viceversa, non appena il livello di umidit\u00e0 torner\u00e0 alla normalit\u00e0 (cio\u00e8 <b>A&lt;=B<\/b>), il comparatore produce 1 e il rel\u00e8 si attiva. E viceversa, non appena il livello di umidit\u00e0 torna alla normalit\u00e0 (cio\u00e8 <b>A&gt;B<\/b> produce 0 e il rel\u00e8 si disattiva.<\/p>\n<p>Tutto chiaro? Per chi non lo fosse, leggete di nuovo o consultate la descrizione del funzionamento dei nodi nelle istruzioni.<\/p>\n<p>Nota che i dati del sensore <b>DHT11<\/b> si aggiornano circa una volta ogni 10 secondi. Pertanto, il rel\u00e8 non potr\u00e0 attivarsi e disattivarsi pi\u00f9 di una volta ogni 10 secondi.<\/p>\n<p>Tutto bello, ma vorremmo impostare il livello di soglia dell'umidit\u00e0 tramite un potenziometro. Non c'\u00e8 niente di pi\u00f9 facile!<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/3042bda4fe16e3fbad2d3f46f0beccb4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSostituiamo semplicemente il nodo costante con il nodo ADC. Infatti, \u00e8 proprio all'ADC che abbiamo collegato il divisore di tensione con un resistore variabile.<\/p>\n<p>La tensione all'ingresso dell'ADC varia da 0 a 1 Volt. Mentre l'umidit\u00e0 in uscita dal sensore varia da 0 a 100%. Come li confrontiamo? \u00c8 semplice. Il nodo ADC <b>ShIoTiny<\/b> non misura solo la tensione all'ingresso, ma \u00e8 anche in grado di <i><b>scalare e spostare<\/b><\/i>.<\/p>\n<p>Cio\u00e8, all'uscita del nodo ADC1 (ADC) ci sar\u00e0 un valore <b>X<\/b>, calcolato secondo la formula <\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/d01bc0ff4e6962252fced695d3894d32.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>, dove <img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/ac0bf727edb4c759d12268376ec6ad9b.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2014 tensione all'ingresso dell'ADC (da 0 a 1V); <b>k<\/b> \u2014 intervallo (ADC range) e <b>b<\/b>-offset (ADC offset). Pertanto, se impostiamo <b>k=100<\/b> e <b>b=0<\/b>, allora al variare <img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/0afbeb2e49d5a107bc54d6bbd87ba23c.jpeg\" style=\"display:block;margin: 0 auto;\" \/> nell'intervallo da 0 a 1, il valore <b>X<\/b> in uscita dal nodo ADC varier\u00e0 nell'intervallo da 0 a 100. Cio\u00e8, numericamente uguale all'intervallo di variazione dell'umidit\u00e0 da 0 a 100%.<\/p>\n<p>In altre parole, ruotando il manico del resistore variabile, possiamo impostare il livello di soglia di umidit\u00e0 da 0 a 100. L'unico inconveniente \u00e8 che non ci sono dispositivi di visualizzazione. Ma in pratica, se si fanno 6 suddivisioni sul manico del resistore variabile (0%, 20%, 40%, 60%, 80%, 100%) \u2014 questo \u00e8 sufficiente per impostare il livello di soglia di umidit\u00e0.<\/p>\n<p>Come possiamo impostare i coefficienti <b>k<\/b> \u2014 intervallo (ADC range) e <b>b<\/b>-offset (ADC offset)? Certo, \u00e8 pi\u00f9 semplice di un colpo di cucchiaio! Clicca con il mouse sul nodo <b>ADC1<\/b> e subito si aprir\u00e0 la finestra di configurazione. Qui puoi impostare tutto ci\u00f2 di cui hai bisogno. Nel nostro caso, sar\u00e0 una finestra come quella nell'immagine.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/ff81992b4fe236f5de6d17ca6bf8187c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuindi, abbiamo una soluzione di lavoro molto semplice. Iniziamo a migliorarla.<br \/>\nA proposito, la soluzione pi\u00f9 semplice ha un vantaggio: non ha bisogno di Internet. \u00c8 completamente autonoma.<\/p>\n<h4>Seconda opzione, colleghiamo un pulsante<\/h4>\n<p>\nTutto funziona e tutti sono felici. Ma c'\u00e8 un problema: non possiamo attivare la ventilazione forzata. Abbiamo gi\u00e0 stabilito che all'ingresso <b>Input1<\/b> abbiamo un pulsante collegato che accender\u00e0 e spegner\u00e0 il ventilatore forzatamente, senza tenere conto del sensore di umidit\u00e0.<br \/>\n\u00c8 arrivato il momento di elaborare questo pulsante nel nostro schema-del programma.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/673c274a5be680ce7c3ef1f9572f93fa.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl blocco di elaborazione della pressione del pulsante \u00e8 evidenziato da una linea arancione. \u00c8 un contatore di pressioni del pulsante che si azzera quando il valore in uscita supera uno (linea verde, uscita del nodo <b>CT<\/b>).<\/p>\n<p>Qui tutto funziona in modo altrettanto semplice come prima: il contatore <b>CT<\/b> fa il conteggio delle pressioni del pulsante collegato all'ingresso <b>Input1<\/b>. Cio\u00e8, il valore in uscita di questo contatore aumenta di 1 ad ogni pressione del pulsante.<\/p>\n<p>Non appena questo valore raggiunge due (cio\u00e8 superiore a 1), in uscita dal comparatore <b>A&gt;B<\/b> apparir\u00e0 1. E questo 1 azzerer\u00e0 il contatore <b>CT<\/b> a zero. Si intende il comparatore, il pi\u00f9 basso nello schema!<\/p>\n<p>Quindi, il nostro pulsante ha due stati: 0 e 1. Se avessimo bisogno di pi\u00f9 stati (3, 4 o anche di pi\u00f9) sarebbe sufficiente cambiare la costante <b>CONST<\/b> da uno a un altro valore.<\/p>\n<p>Quindi abbiamo due condizioni per attivare la ventola: superamento del livello di umidit\u00e0 impostato e pressione singola del pulsante. Al verificarsi di una delle due condizioni, la ventola si accender\u00e0 e funzioner\u00e0 fino a quando non verr\u00e0 premuto di nuovo il pulsante <b>E<\/b> e il livello di umidit\u00e0 non torner\u00e0 nella norma.<\/p>\n<p>Naturalmente, si potrebbe anche complicare ulteriormente l'algoritmo, ma non lo faremo \u2014 lasceremo spazio per la creativit\u00e0 di chi lo desidera.<\/p>\n<h4>Terza opzione, ci connettiamo a Internet.<\/h4>\n<p>\nTutto ci\u00f2 che abbiamo descritto \u00e8 perfettamente funzionante. E per quanto riguarda i fronzoli? Qualsiasi hipster hacker con l'acne rider\u00e0 di chi gira la manopola e preme un pulsante, invece di gestire tutto tramite smartphone! Girare la manopola \u00e8 \"fuori moda\". Ma strofinare un dito sullo smartphone fino a farsi sanguinare \u00e8 il picco dei desideri dell'hipster hacker (non ho mai potuto distinguere tra di loro \u2014 quindi se erro, perdonatemi).<\/p>\n<p>Ma siamo indulgenti verso queste persone. Gestire tramite internet ha anche vantaggi reali. In primo luogo, la chiarezza. Ci sono moltissime applicazioni per tutte le piattaforme, che permettono con pochi tocchi di creare un pannello di controllo assolutamente utilizzabile per il nostro controllore Carlson. In secondo luogo, la possibilit\u00e0 di osservare a distanza lo stato di umidit\u00e0 nell'ambiente. E, in terzo luogo, \u00e8 possibile vedere non solo se la ventola sta girando o meno, ma anche quale \u00e8 il livello di umidit\u00e0 impostato. E se la ventola \u00e8 stata accesa automaticamente o manualmente. Insomma, tutto ci\u00f2 che desiderate.<\/p>\n<p>Certo, per una semplice ventola \u00e8 un onore ricevere cos\u00ec tanta attenzione. Ma questo \u00e8 solo un esempio.<\/p>\n<p>Pertanto, per connettersi a Internet utilizzeremo la tecnologia <b>MQTT<\/b> e il protocollo omonimo.<br \/>\nPer sfruttare questa tecnologia, abbiamo bisogno di un <b>broker MQTT<\/b>. Questo \u00e8 un server speciale che gestisce <b>i client MQTT<\/b>, ad esempio <b>ShIoTIny<\/b> e il tuo smartphone.<\/p>\n<p>Il principio della tecnologia <b>MQTT<\/b> \u00e8 che qualsiasi client pubblica sul broker MQTT (server) dati casuali sotto un nome specifico (chiamato <b>topic<\/b> nella terminologia <b>MQTT<\/b>). Altri client possono iscriversi ai dati casuali tramite il loro nome (<b>topic<\/b>) e ricevere i dati appena pubblicati. In altre parole, tutto lo scambio di dati avviene secondo il principio client-broker-client.<\/p>\n<p>Io <i><b>Non mi soffermer\u00f2<\/b><\/i> sui dettagli. Su Internet ci sono molte articoli e tutorial su come funziona <b>MQTT<\/b> e quali programmi esistono per creare pannelli di controllo. Mostrer\u00f2 semplicemente come ricevere e pubblicare dati tramite <b>ShIoTiny<\/b>.<\/p>\n<p>Come broker ho utilizzato <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cloudmqtt.com\/\">www.cloudmqtt.com<\/a><\/noindex>, ma il principio \u00e8 lo stesso ovunque.<\/p>\n<p>Pertanto, consideriamo che ti sei registrato su <b>un broker MQTT<\/b>. In generale, il broker ti fornir\u00e0 (o richieder\u00e0 di inventare) un nome utente e una password (per l'autenticazione), oltre a una porta per la connessione. Per connettersi al <b>ShIoTiny<\/b> a <b>broker MQTT<\/b> ci sono due modi: connessione normale e tramite <b>TLS<\/b> (<b>SSL<\/b>).<\/p>\n<p>Tutti questi parametri <b>ShIoTiny<\/b> vengono inseriti nella scheda <b>Networking<\/b>, sezione <b>Connessione MQTT al server<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/3a16cbd07a64428568e7c03f178e87ef.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe il tuo <b>broker MQTT<\/b> non richiede autenticazione, non inserire username e password (lascia questi campi vuoti).<\/p>\n<p>Caratteristica <b>Prefisso del topic MQTT<\/b> richiede una spiegazione separata.<\/p>\n<p>Il prefisso dei parametri MQTT \u00e8 una stringa che viene aggiunta al nome del topic (<b>topic<\/b>) durante la pubblicazione e l'iscrizione su un broker MQTT. Per impostare <b>il prefisso MQTT<\/b> per il tuo controllore, devi semplicemente inserirlo nel campo \"<b>Prefisso del topic MQTT<\/b>\u00bb (\u00ab<b>Prefisso del topic MQTT<\/b>\"). Il prefisso inizia sempre con una barra (<b>\u00ab\/\u00bb<\/b>)! Se non inserisci la barra nel campo di input, verr\u00e0 aggiunta automaticamente. Non \u00e8 possibile utilizzare i caratteri <b>\u00ab#\u00bb<\/b> e <b>\u00ab+\u00bb<\/b>. Non ci sono altre restrizioni.<\/p>\n<p>Ad esempio, se pubblichi il parametro \"<b>status<\/b>\" (o ti iscrivi ad esso), e il tuo prefisso \u00e8 impostato su \"<b>\/shiotiny\/<\/b>\", allora su un broker questo parametro sar\u00e0 pubblicato con il nome \"<b>\/shiotiny\/status<\/b>\". Se hai impostato un prefisso vuoto, tutti i parametri sul broker inizieranno con la barra (<b>\u00ab\/\u00bb<\/b>): \u00ab<b>status<\/b>\" sar\u00e0 pubblicato come \"<b>\/status<\/b>\u00bb.<\/p>\n<p>Quindi, consideriamo che ti sei registrato su <b>un broker MQTT<\/b> e hai ricevuto username, password e porta. Poi hai scritto questi parametri nella scheda <b>Networking<\/b>, sezione <b>Connessione MQTT al server<\/b> del controllore <b>ShIoTiny<\/b>.<\/p>\n<p>Consideriamo che il prefisso sia stato impostato su \"<b>\/room\/<\/b>\u00bb.<\/p>\n<p>Iniziamo pubblicando lo stato di tutti i parametri chiave: rel\u00e8 <b>Rel\u00e81<\/b>, stato dell'accensione manuale, stato dell'accensione automatica e, infine, livelli di soglia e attuali di umidit\u00e0. E in pi\u00f9, la temperatura della stanza. Come fare, lo vediamo nell'immagine.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/ed016ae37bb0cb1197e2e4fd649a7c4f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome possiamo vedere, la differenza rispetto alla versione precedente \u00e8 solo nei nodi \u00ab<b>Pubblicazione MQTT<\/b>\u00bb. Considerando il prefisso, vengono pubblicati i seguenti parametri:<br \/>\n<img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/34b67dd1932f30de777a680802f71c59.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome vediamo, lo stato dell'intero sistema \u00e8 chiaro come il sole!<\/p>\n<p>Ma vogliamo non solo vedere, ma anche controllare. Cosa fare? \u00c8 molto semplice. Abbandoneremo l'installazione del livello di soglia di umidit\u00e0 tramite <b>ADC<\/b> e un resistore variabile e definiremo direttamente questo livello di soglia di umidit\u00e0 dal <b>MQTT<\/b> proprio smartphone!<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilazione di un ambiente umido (progetto di esempio)\" src=\"\/wp-content\/uploads\/2019\/08\/c32d9ec2c1a082e0a1ead0b04526eba5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRimuoviamo il nodo ADC dallo schema e inseriamo tre nuovi nodi: <b>Memoria FLASH<\/b>, <b>Ripristino FLASH<\/b> e <b>Descrizione MQTT<\/b>.<\/p>\n<p>La funzione del nodo <b>Descrizione MQTT<\/b> \u00e8 evidente: riceve il parametro <b>\/room\/trigHset<\/b> (livello di soglia di umidit\u00e0) dal <b>broker MQTT<\/b>. Ma cosa fa con i dati dopo? Semplicemente li restituisce al nodo <b>Memoria FLASH<\/b>, che a sua volta salva questi dati nella memoria non volatile con il nome <b>trigH<\/b>. Dopo di che, il nodo <b>Ripristino FLASH<\/b> legge dalla memoria non volatile i dati con il nome <b>trigH<\/b> e ci\u00f2 che accade dopo gi\u00e0 lo sappiamo.<\/p>\n<p>Perch\u00e9 tanta complessit\u00e0? Perch\u00e9 non possiamo subito passare i dati ottenuti all'ingresso del comparatore? <\/p>\n<p>Come diceva il compagno Sh.Holmes \u2014 <i>\u00e8 elementare<\/i>! Nessuno garantisce che, dopo l'accensione del dispositivo, questo si collegher\u00e0 a <b>broker MQTT<\/b>. E bisogna misurare l'umidit\u00e0. E bisogna accendere il ventilatore. Ma senza informazioni sul livello soglia di umidit\u00e0, questo \u00e8 impossibile! Perci\u00f2, il nostro dispositivo, all'accensione, estrae il livello soglia di umidit\u00e0 precedentemente memorizzato dalla memoria non volatile e lo utilizza per prendere decisioni. E quando si stabilisce la connessione con <b>il broker MQTT<\/b> e qualcuno pubblica un nuovo valore <b>\/room\/trigHset<\/b>, allora verr\u00e0 utilizzato questo nuovo valore.<\/p>\n<p>Da qui in poi puoi inventare qualsiasi cosa. Ad esempio, oltre all'umidit\u00e0 puoi iniziare a tenere conto anche della temperatura. O aggiungere un controllo \u00abintelligente\u00bb dell'illuminazione (abbiamo ancora due rel\u00e8 e due ingressi non utilizzati). Tutto \u00e8 nelle tue mani!<\/p>\n<h4>Conclusione<\/h4>\n<p>\nEcco, abbiamo esaminato alcuni esempi di implementazione di un controller basilare basato su ShIoTiny. Magari sar\u00e0 utile a qualcuno.<\/p>\n<p>Come sempre, inviate proposte, suggerimenti, domande, refusi e altro all'indirizzo email: <b>shiotiny@yandex.ru<\/b><br \/>\n<br \/>Fonte: <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 4.9.10 - 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 \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\" \/>\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\/it\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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: ventilazione di spazi umidi (progetto di esempio) | ProHoster","description":"Principali argomenti o di cosa tratta questo articolo. Continuiamo il ciclo di articoli su ShIoTiny, il controller programmabile visivamente basato sul chip ESP8266. In questo articolo, utilizzando l'esempio di un progetto per la gestione della ventilazione in un bagno o in un'altra stanza con elevata umidit\u00e0, viene mostrato come costruire un programma per ShIoTiny. Articoli precedenti della serie. ShIoTiny: automazione leggera, Internet delle cose o \u00abper","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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 \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","og:url":"https:\/\/prohoster.info\/it\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=37423"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37423\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/28079"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=37423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=37423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=37423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}