{"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\/da\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","title":{"rendered":"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/a6e9c8239a90c713bd1b3b21891cbc13.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>Hovedpunkter eller hvad denne artikel handler om<\/h4>\n<p>\nVi forts\u00e6tter cyklussen af artikler om <b>ShIoTiny<\/b> \u2014 en visuelt programmerbar controller baseret p\u00e5 chippen <b>ESP8266<\/b>.<\/p>\n<p>I denne artikel forklares det med eksemplet p\u00e5 et ventilationsstyringsprojekt i et badev\u00e6relse eller andet rum med h\u00f8j luftfugtighed, hvordan man opbygger programmet til <b>ShIoTiny<\/b>.<\/p>\n<h4>Tidligere artikler i serien.<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: lille automation, internet of things eller 'seks m\u00e5neder f\u00f8r ferien'<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463285\/\">ShIoTiny: noder, forbindelser og begivenheder eller tr\u00e6k ved programmering<\/a><\/noindex><\/p>\n<h4>Links<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">Bin\u00e6re firmware, controller diagram og dokumentation<\/a><\/noindex> <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\/blob\/master\/doc\/ShIoT-esp8266-01_obzor.pdf\">Instruktioner og beskrivelse af enheder<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/esppower.ru\/mqtt-android\/\">Ops\u00e6tning af MQTT broker cloudmqtt.com<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/393277\/\">MQTT dashboard kontrolpanel til Android<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Introduktion<\/h4>\n<p>\nForst\u00e5else uden erfaring er umulig. Dette er en sandhed, der er blevet bekr\u00e6ftet af tiden og generationer. Derfor er der ikke noget bedre til at l\u00e6re praktiske f\u00e6rdigheder end at fors\u00f8ge at lave noget selv. Og eksempler, der viser, hvad man kan g\u00f8re, og hvad man ikke b\u00f8r g\u00f8re, vil v\u00e6re meget nyttige. Andres fejl kan selvf\u00f8lgelig ikke forhindre ens egne fejl, men de kan hj\u00e6lpe med at reducere antallet af sidstn\u00e6vnte.<\/p>\n<p>Sp\u00f8rgsm\u00e5l og breve fra l\u00e6serne af de tidligere artikler har f\u00e5et mig til at lave et lille projekt-eksempel p\u00e5 ventilationsstyring for at vise, hvordan ShIoTiny enheder fungerer.<\/p>\n<p>Den oprindelige id\u00e9, som controlleren blev skabt ud fra <b>ShIoTiny<\/b> \u2014 en pumpestation \u2014 er ikke for alle og vil ikke v\u00e6re interessant for alle. S\u00e5 jeg tog et almenkendt og nyttigt ventilationsstyringssystem som eksempel.<\/p>\n<p>Jeg vil sige, at projektideen ikke er min, men <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/masterkit\/blog\/385281\/\">jeg hentede den herfra<\/a><\/noindex> og tilpassede den til <b>ShIoTiny<\/b>.<\/p>\n<h4>F\u00f8rst skal du forst\u00e5, hvad du vil<\/h4>\n<p>\nForbedringsprocessen er uendelig. Og netop denne egenskab har \u00f8delagt mange gode id\u00e9er og projekter. Udvikleren fortsatte i stedet for at frigive noget, der var m\u00e5ske ikke perfekt, men funktionelt \u2014 med at forbedre det. Og han forbedrede det, indtil konkurrenterne overhalede ham ved at udgive noget, der m\u00e5ske ikke var perfekt (og ofte direkte skr\u00e6mmende), men som fungerede.<\/p>\n<p>Derfor er det meget vigtigt at vide, hvor man s\u00e6tter punktum i projektet. Med andre ord skal vi fastsl\u00e5, hvad vi \u00f8nsker at opn\u00e5 i slutningen af projektet ud fra det, vi har i starten. P\u00e5 russisk findes der et glimrende kort og pr\u00e6cist ord, \u201eplan\u201c, som overs\u00e6ttere og defekte ledere af en eller anden grund er begyndt at kalde \u201ek\u00f8replan\u201c i den seneste tid. Men lad os glemme dem.<\/p>\n<p>Vores plan vil v\u00e6re som f\u00f8lger. Antag, at vi har et rum, hvor fugtighed til tider kan stige kraftigt. For eksempel et rum som badev\u00e6relset eller k\u00f8kkenet. Fugtighed er en ubehagelig ting, og den gamle metode til at bek\u00e6mpe den er lige s\u00e5 gammel som verden: at lufte rummet ud. Der findes mange m\u00e5der at lufte ud p\u00e5. Men vi vil frav\u00e6lge eksotiske og gammeldags metoder som fx personer med fjerdragter og i stedet holde os til en almindelig ventilator. Ventilatorer er billigere, og de er ogs\u00e5 nemmere at finde her i vores omr\u00e5de.<\/p>\n<p>Kort sagt \u00f8nsker vi at styre ventilatoren: t\u00e6nde den og naturligvis slukke den. Mere pr\u00e6cist \u00f8nsker vi, at den t\u00e6nder og slukker af sig selv, n\u00e5r det er n\u00f8dvendigt.<\/p>\n<p>Det er tilbage at fastsl\u00e5: under hvilke forhold skal ventilatoren t\u00e6nde, og under hvilke forhold skal den slukkes.<\/p>\n<p>Her er alt indlysende: hvis fugtigheden er over en bestemt gr\u00e6nse, t\u00e6nder ventilatoren og suger luften; n\u00e5r fugtigheden er normal, slukker ventilatoren.<\/p>\n<p>Den opm\u00e6rksomme l\u00e6ser vil straks h\u00e6fte sig ved ordet \u201egiven\u201c. Af hvem er den givet? Hvordan er den givet?<\/p>\n<p>Man kan indstille t\u00e6rskelfugtigheden p\u00e5 flere m\u00e5der. Vi vil se p\u00e5 to af dem: den f\u00f8rste \u2014 ved hj\u00e6lp af variabel modstand og den anden \u2014 via netv\u00e6rket gennem MQTT-protokollen. Hver af disse metoder har fordele og ulemper, som vi vil se n\u00e6rmere p\u00e5 senere.<\/p>\n<p>For dem, der ikke forstod, vil jeg uddybe, at \u201et\u00e6rskelfugtighed\u201c er det niveau af fugtighed, som kr\u00e6ver, at ventilatoren t\u00e6ndes, n\u00e5r det overskrides.<\/p>\n<p>N\u00e6ste sp\u00f8rgsm\u00e5l: skal brugeren have ret til at t\u00e6nde for ventilatoren direkte? Det vil sige, uanset fugtighedsniveauet, ved at trykke p\u00e5 en knap? Vi vil s\u00f8rge for en s\u00e5dan mulighed. For ventilatoren kan v\u00e6re n\u00f8dvendig ikke kun ved h\u00f8j fugtighed, men ogs\u00e5 til at fjerne ubehagelige lugte fra rummet, som folk kalder \"lugt\".<\/p>\n<p>S\u00e5 vi har forst\u00e5et, hvad vi vil, og endda lidt om, hvordan det vil fungere. Lad os kort opsummere alle funktionerne i vores ventilationssystem:<\/p>\n<ul>\n<li> indstilling af t\u00e6rskelniveau for fugtighed (to muligheder);<\/li>\n<li> m\u00e5ling af fugtighedsniveau;<\/li>\n<li> automatisk t\u00e6nding af ventilatoren;<\/li>\n<li> automatisk slukning af ventilatoren;<\/li>\n<li> manuel t\u00e6nding af ventilatoren (ved at trykke p\u00e5 en knap).<\/li>\n<\/ul>\n<p>\nS\u00e5 planen er klar. Det er n\u00f8dvendigt at implementere alle de n\u00e6vnte funktioner i vores program. Vi vil handle baseret p\u00e5 denne \"plan\". For at begynde med, skal vi tegne et strukturelt diagram af enheden.<\/p>\n<h4>Strukturelt diagram af enheden<\/h4>\n<p>\nGenerelt set vil vi have to s\u00e5danne diagrammer. Det f\u00f8rste \u2014 for varianten, hvor t\u00e6rskelniveauet for fugtighed indstilles med en variabel modstand. Det andet diagram \u2014 for varianten, hvor t\u00e6rskelniveauet for fugtighed indstilles via netv\u00e6rket gennem MQTT-protokollen.<\/p>\n<p>Men da disse diagrammer kun vil adskille sig med \u00e9t element \u2014 den variable modstand \"indstilling af t\u00e6rskelniveau for fugtighed\", vil vi kun tegne \u00e9t strukturelt diagram. Selvf\u00f8lgelig ser det strukturelle diagram if\u00f8lge GOST anderledes ud. Men vi fokuserer ikke p\u00e5 ingeni\u00f8rer, men p\u00e5 den yngre generation. Derfor er klarhed vigtigere.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/519f40496a8e459c22d69e7f0eaeee1d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5 hvad ser vi p\u00e5 tegningen? Ventilatoren er tilsluttet rel\u00e6et <b>Relay1<\/b> kontrolleren <b>ShIoTiny<\/b>. Jeg vil bem\u00e6rke, at ventilatoren er en enhed, der arbejder med h\u00f8j sp\u00e6nding. S\u00e5, hvis nogen laver s\u00e5dan noget selv \u2014 v\u00e6r forsigtig. Det vil sige, som minimum, f\u00f8r du stikker dine fingre eller m\u00e5leapparater ind i diagrammet \u2014 sluk for str\u00f8mmen til ventilatoren. Og den anden bem\u00e6rkning. Hvis din ventilator er mere kraftfuld end <b>250W<\/b>, b\u00f8r du ikke tilslutte den direkte til <b>ShIoTiny<\/b> det \u2014 kun gennem en kontaktor.<\/p>\n<p>Vi har forst\u00e5et ventilatoren. Nu knappen \"manuel t\u00e6nding\" af ventilatoren. Den er tilsluttet indgangen <b>Input1<\/b>. Her er der ikke mere at forklare.<\/p>\n<p>Temperatur- og fugtighedssensor <b>DHT-11<\/b> (eller <b>DHT-22<\/b> eller deres analoger). Der er en speciel indgang p\u00e5 controlleren til at tilslutte dem. <b>ShIoTiny<\/b>. Som det ses p\u00e5 tegningen \u2014 er tilslutningen af en s\u00e5dan sensor heller ikke et problem.<\/p>\n<p>Og endelig, det variable modstand, der angiver t\u00e6rskelniveauet for fugtighed. Mere pr\u00e6cist \u2014 en divisor best\u00e5ende af en variabel og en konstant modstand. Der er ingen problemer med at tilslutte det, men jeg vil pr\u00e6cisere, at den indbyggede ADC p\u00e5 <b>ESP8266<\/b> er maksimalt beregnet til 1 Volt. Derfor er en sp\u00e6ndingsdeler p\u00e5 cirka 5 gange n\u00f8dvendig.<\/p>\n<p>Og jeg minder endnu engang om, at denne divider ikke er n\u00f8dvendig, hvis t\u00e6rskelniveauet for fugtigheden angives over netv\u00e6rket via MQTT-protokollen.<\/p>\n<p>Lad os begynde at oprette algoritmen for enhedens funktion i ElDraw ShIoTiny editoren. Hvordan man kommer ind i denne editor kan l\u00e6ses i tidligere artikler eller i manualen, som der er et link til i begyndelsen af artiklen.<\/p>\n<h4>Den f\u00f8rste mulighed, den enkleste.<\/h4>\n<p>\nVi begynder med det enkle: aktivering af rel\u00e6et. <b>Relay1<\/b> ved overskridelse af t\u00e6rskelniveauet for fugtighed i en given periode.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/e9f8d30627cf7cdbebccf863c2b2f808.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom vi kan se, er der ikke noget sv\u00e6rt: kun fire noder, uden at t\u00e6lle kommentar nodene. <b>DHT11<\/b> \u2014 det er selve temperatur- og fugtighedssensoren (kan \u00e6ndres til <b>DHT22<\/b>).<\/p>\n<p>Konstant <b>CONST<\/b> \u2014 t\u00e6rskelniveauet for fugtighed i procent.<\/p>\n<p>Komparatoren \u2014 en enhed, der sammenligner to tal og giver 1 p\u00e5 udgangen, hvis den angivne betingelse er opfyldt, og 0, hvis betingelsen ikke er opfyldt.<\/p>\n<p>I vores tilf\u00e6lde vil betingelsen v\u00e6re <b>A&gt;B<\/b>, hvor <b>A<\/b> \u2014 det m\u00e5lte niveau for fugtighed, og <b>B<\/b> \u2014 t\u00e6rskelniveauet for den samme fugtighed.<\/p>\n<p>S\u00e5 snart det m\u00e5lte fugtighedsniveau (<b>A<\/b>) overstiger t\u00e6rskelniveauet for fugtighed (<b>B<\/b>), vil der straks komme 1 p\u00e5 komparatorens udgang, og rel\u00e6et t\u00e6ndes. Og omvendt, s\u00e5 snart fugtighedsniveauet vender tilbage til det normale (dvs. <b>A&gt;B<\/b> A&lt;=B <b>), vil der komme 0, og rel\u00e6et slukkes.<\/b>), vil der straks komme 1 p\u00e5 komparatorens udgang, og rel\u00e6et t\u00e6ndes. Og omvendt, s\u00e5 snart fugtighedsniveauet vender tilbage til det normale (dvs. <b>A&gt;B<\/b> Er alt klart? Hvis nogen ikke forstod det helt \u2014 l\u00e6s det igen eller kig ind i beskrivelsen af nodernes funktion i manualen.<\/p>\n<p>Jeg bem\u00e6rker, at dataene fra sensoren<\/p>\n<p>opdateres cirka en gang hvert 10. sekund. Derfor vil rel\u00e6et ikke kunne t\u00e6nde og slukke oftere end en gang hvert 10. sekund. <b>DHT11<\/b> Alt ville v\u00e6re fint, men vi ville gerne angive t\u00e6rskelniveauet for fugtigheden med en variabel modstand. Der er ikke noget nemmere!<\/p>\n<p>Vi udskifter blot konstant enheden med ADC'en. For det er til ADC'en, vi har tilsluttet sp\u00e6ndingsdeleren med den variable modstand.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/3042bda4fe16e3fbad2d3f46f0beccb4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi skal bare erstatte konstantnode med ADC-noden. For det er til ADC, vi har tilsluttet sp\u00e6ndingsdeleren med den variable modstand.<\/p>\n<p>Sp\u00e6ndingen p\u00e5 indgangen til ADC \u00e6ndrer sig fra 0 til 1 Volt. Men fugtigheden p\u00e5 sensorens udgang varierer fra 0 til 100 %. Hvordan sammenligner vi dem? Det er enkelt. ADC-enheden i <b>ShIoTiny<\/b> m\u00e5ler ikke blot sp\u00e6ndingen p\u00e5 indgangen, men kan ogs\u00e5 <i><b>skalere og forskyde<\/b><\/i>.<\/p>\n<p>Det vil sige, at v\u00e6rdien p\u00e5 udgangen af ADC1 (ADC) vil v\u00e6re <b>X<\/b>, beregnet efter formlen <\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/d01bc0ff4e6962252fced695d3894d32.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>, hvor <img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/ac0bf727edb4c759d12268376ec6ad9b.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2014 sp\u00e6nding p\u00e5 indgangen af ADC (fra 0 til 1V); <b>k<\/b> \u2014 r\u00e6kkevidde (ADC range) og <b>b<\/b>\u2014 forskydning (ADC offset). S\u00e5 hvis vi angiver <b>k=100<\/b> og <b>b=0<\/b>, s\u00e5 vil v\u00e6rdien <img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/0afbeb2e49d5a107bc54d6bbd87ba23c.jpeg\" style=\"display:block;margin: 0 auto;\" \/> p\u00e5 udgangen af ADC-enheden \u00e6ndre sig i intervallet fra 0 til 100. Det vil sige, at det numerisk svarer til fugtighedsvariationen fra 0 til 100%. <b>X<\/b> Eller for at sige det enkelt, ved at dreje p\u00e5 variabelmodstanden kan vi indstille gr\u00e6nsev\u00e6rdien for fugtigheden fra 0 til 100. Den eneste ulempe er, at der ikke er nogen visningsenheder. Men i praksis, hvis vi laver 6 indstillinger p\u00e5 variabelmodstanden ved 0%, 20%, 40%, 60%, 80%, 100%) \u2014 s\u00e5 er det nok til at indstille gr\u00e6nsev\u00e6rdien for fugtigheden.<\/p>\n<p>Hvordan s\u00e6tter vi koefficienterne<\/p>\n<p>- forskydning (ADC offset)? Det er lettere end en leg! Peg med musen p\u00e5 enheden <b>k<\/b> \u2014 r\u00e6kkevidde (ADC range) og <b>b<\/b>og vil straks f\u00e5 et konfigurationsvindue. I det kan du indstille alt, hvad du har brug for. For vores tilf\u00e6lde vil det v\u00e6re et vindue som p\u00e5 billedet. <b>ADC1<\/b> S\u00e5 vi har en simpel l\u00f8sning til at begynde med. Lad os forbedre den.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/ff81992b4fe236f5de6d17ca6bf8187c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor resten, den enkleste l\u00f8sning har en fordel \u2014 den kr\u00e6ver ikke internet. Den er helt autonom.<br \/>\nAnden mulighed, vi tilslutter en knap<\/p>\n<h4>Alt fungerer, og alle er glade. Men det er et problem, at vi ikke kan t\u00e6nde ventilationen manuelt. Vi har allerede aftalt, at der vil v\u00e6re tilsluttet en knap til indgangen<\/h4>\n<p>\nsom vil t\u00e6nde og slukke for ventilatoren manuelt, uden at tage hensyn til fugtighedssensoren. <b>Input1<\/b> Det er tid til at behandle denne knap i vores skema-program.<br \/>\nBlokken til behandling af knaptryk er markeret med en orange linje. Den fungerer som en t\u00e6ller for knaptryk, som nulstilles, n\u00e5r v\u00e6rdien p\u00e5 udgangen overstiger \u00e9n (den gr\u00f8nne linje, udgang af enheden<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/673c274a5be680ce7c3ef1f9572f93fa.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHer fungerer det hele liges\u00e5 simpelt som f\u00f8r: t\u00e6lleren <b>CT<\/b>).<\/p>\n<p>t\u00e6ller knaptryk tilsluttet indgangen <b>CT<\/b> . Det vil sige, at v\u00e6rdien p\u00e5 denne t\u00e6llers udgang \u00f8ges med 1 for hvert knaptryk. <b>Input1<\/b>S\u00e5 snart denne v\u00e6rdi bliver lig med to (det vil sige st\u00f8rre end 1), s\u00e5<\/p>\n<p>vil udgangen fra komparatoren. <b>A&gt;B<\/b> der vil komme 1. Og denne 1 nulstiller t\u00e6lleren <b>CT<\/b> til nul. Det henviser til comparatoren, den nedre i skemaet!<\/p>\n<p>Dermed har vores knap to tilstande \u2014 0 og 1. Hvis vi havde brug for flere tilstande (3 eller 4 eller endnu flere) \u2014 ville det v\u00e6re tilstr\u00e6kkeligt at \u00e6ndre konstanten <b>CONST<\/b> fra en til en anden v\u00e6rdi.<\/p>\n<p>S\u00e5 vi har to betingelser for at t\u00e6nde bl\u00e6seren: overskridelse af det angivne fugtighedsniveau og et enkelt tryk p\u00e5 knappen. N\u00e5r nogen af betingelserne er opfyldt, t\u00e6nder bl\u00e6seren. Og den vil k\u00f8re, indtil knappen trykkes igen <b>Og<\/b> fugtighedsniveauet vender tilbage til det normale.<\/p>\n<p>Man kan selvf\u00f8lgelig komplicere algoritmen endnu mere, men vi vil ikke g\u00f8re det \u2014 vi vil efterlade plads til kreativitet for dem, der \u00f8nsker det.<\/p>\n<h4>Tredje mulighed, vi opretter forbindelse til internettet<\/h4>\n<p>\nAlt, hvad vi har beskrevet, er ganske funktionelt. Men hvad med stilen? Enhver teenagehacker-hacker vil grine af dem, der drejer en knap og trykker p\u00e5 en knap i stedet for at styre fra en smartphone! At dreje p\u00e5 en knap er \"ikke moderne\". Men at glide fingeren over smartphonen, s\u00e5 den bl\u00f8der \u2014 det er spidse \u00f8nsker for hipsteren-hackers (jeg har aldrig kunnet skelne dem \u2014 s\u00e5 hvis jeg har lavet en fejl, undskyld).<\/p>\n<p>Men lad os v\u00e6re eftergivende over for de n\u00e6vnte personligheder. Der er ogs\u00e5 reelle fordele ved internetstyring. For det f\u00f8rste er der klarhed. Der er mange apps til alle platforme, som g\u00f8r det muligt med et par tryk at skabe et ganske brugbart kontrolpanel til vores controller-carlson. For det andet er der mulighed for at overv\u00e5ge fugtigheden i rummet p\u00e5 afstand. Og for det tredje kan du se ikke kun, hvad bl\u00e6seren g\u00f8r \u2014 om den drejer eller ej, men ogs\u00e5 hvilket t\u00e6rskelniveau for fugtighed der er indstillet. Og om bl\u00e6seren er startet automatisk eller manuelt. Generelt, alt hvad du \u00f8nsker.<\/p>\n<p>Selvf\u00f8lgelig, for en bestemt bl\u00e6ser er der meget \u00e6re \u2014 s\u00e5 meget opm\u00e6rksomhed. Men det er kun et eksempel.<\/p>\n<p>S\u00e5 til at oprette forbindelse til internettet vil vi bruge teknologien <b>MQTT<\/b> og det samme protokol.<br \/>\nFor at bruge denne teknologi har vi brug for <b>en MQTT-broker<\/b>. Det er en speciel server, der betjener <b>MQTT-klienter<\/b>, for eksempel <b>ShIoTIny<\/b> og din smartphone.<\/p>\n<p>Essensen af teknologien <b>MQTT<\/b> best\u00e5r i, at enhver af klienterne offentligg\u00f8r vilk\u00e5rlige data p\u00e5 MQTT-brokeren (serveren) under et bestemt navn (kaldet <b>emne<\/b> i terminologien <b>MQTT<\/b>). Andre kunder kan abonnere p\u00e5 vilk\u00e5rlige data baseret p\u00e5 deres navn (<b>emne<\/b>) og modtage nyudgivne data. Det vil sige, at al dataudveksling foreg\u00e5r p\u00e5 princippet kunde-m\u00e6gler-kunde.<\/p>\n<p>Jeg <i><b>vil ikke<\/b><\/i> fokusere p\u00e5 detaljerne. Der findes masser af artikler og tutorials p\u00e5 internettet om, hvordan <b>MQTT<\/b> og hvilke programmer der findes til at oprette kontrolpaneler. Jeg vil blot vise, hvordan vi modtager og offentligg\u00f8r data ved hj\u00e6lp af <b>ShIoTiny<\/b>.<\/p>\n<p>Som m\u00e6gler har jeg brugt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cloudmqtt.com\/\">www.cloudmqtt.com<\/a><\/noindex>, men princippet er det samme overalt.<\/p>\n<p>S\u00e5 lad os anta, at du har registreret dig p\u00e5 <b>MQTT-m\u00e6gler<\/b>. I almindelighed vil m\u00e6gleren give dig (eller kr\u00e6ve, at du opfinder) et brugernavn og adgangskode (til autentificering), samt en port til forbindelse. For at forbinde til <b>ShIoTiny<\/b> pull-requesten p\u00e5 GitHub <b>MQTT-m\u00e6gler<\/b> kan g\u00f8res p\u00e5 to m\u00e5der \u2014 normal forbindelse og via <b>TLS<\/b> (<b>SSL<\/b>).<\/p>\n<p>Alle disse parametre indtastes i <b>ShIoTiny<\/b> fanen <b>Netv\u00e6rk<\/b>, sektion <b>MQTT-forbindelse til server<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/3a16cbd07a64428568e7c03f178e87ef.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvis din <b>en MQTT-broker<\/b> ikke kr\u00e6ver autentificering \u2014 indtast ikke brugernavn og adgangskode (ladh disse felter st\u00e5 tomme).<\/p>\n<p>Parameter <b>MQTT-emnepr\u00e6fiks<\/b> kr\u00e6ver en s\u00e6rskilt forklaring.<\/p>\n<p>MQTT-pr\u00e6fiks er en streng, der tilf\u00f8jes til emnets navn (<b>emne<\/b>) ved offentligg\u00f8relse og abonnement p\u00e5 MQTT-m\u00e6gleren. For at indstille <b>MQTT-pr\u00e6fiks<\/b> for din controller, skal du blot indtaste det i inputfeltet \"<b>MQTT-emnepr\u00e6fiks<\/b>\u00bb (\u00ab<b>MQTT-emnepr\u00e6fiks<\/b>\"). Pr\u00e6fikset starter altid med et skr\u00e5streg (<b>\u00ab\/\u00bb<\/b>)! Hvis du ikke indtaster skr\u00e5streg i inputfeltet, vil det blive tilf\u00f8jet automatisk. I pr\u00e6fikset m\u00e5 der ikke bruges tegn <b>\u00ab#\u00bb<\/b> og <b>\u00ab+\u00bb<\/b>. Der er ingen andre begr\u00e6nsninger.<\/p>\n<p>For eksempel, hvis du offentligg\u00f8r parameteren \"<b>status<\/b>\" (eller abonnerer p\u00e5 den), og dit pr\u00e6fiks er sat til \"<b>\/shiotiny\/<\/b>\", s\u00e5 vil denne parameter blive offentliggjort p\u00e5 m\u00e6gleren under navnet \"<b>\/shiotiny\/status<\/b>\". Hvis du har angivet et tomt pr\u00e6fiks, vil alle parametre p\u00e5 m\u00e6gleren starte med skr\u00e5streg (<b>\u00ab\/\u00bb<\/b>): \u00ab<b>status<\/b>\" vil blive offentliggjort som \"<b>\/status<\/b>\u00bb.<\/p>\n<p>S\u00e5 lad os antage, at du har registreret dig p\u00e5 <b>MQTT-m\u00e6gler<\/b> og f\u00e5et brugernavn, adgangskode og port. Derefter har du angivet disse parametre i fanen <b>Netv\u00e6rk<\/b>, sektion <b>MQTT-forbindelse til server<\/b> kontrolleren <b>ShIoTiny<\/b>.<\/p>\n<p>Lad os antage, at pr\u00e6fikset er indstillet til \"<b>\/room\/<\/b>\u00bb.<\/p>\n<p>Lad os starte med at offentligg\u00f8re tilstanden af alle n\u00f8gleparametre: rel\u00e6 <b>Realay1<\/b>, tilstanden for manuel aktivering, tilstanden for automatisk aktivering og endelig t\u00e6rskel- og aktuelle fugtighedsniveauer. Og som en bonus \u2014 temperaturen i rummet. S\u00e5dan g\u00f8r du, se p\u00e5 billedet.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/ed016ae37bb0cb1197e2e4fd649a7c4f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom vi kan se, er forskellen fra den tidligere version \u2014 kun noderne \"<b>MQTT-publicering<\/b>\". Med pr\u00e6fikset offentligg\u00f8res f\u00f8lgende parametre:<br \/>\n<img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/34b67dd1932f30de777a680802f71c59.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom vi kan se, har vi hele systemets tilstand lige ved h\u00e5nden!<\/p>\n<p>Men vi \u00f8nsker ikke kun at se, men ogs\u00e5 at styre. Hvad g\u00f8r vi? Meget simpelt. Vi dropper installationen af t\u00e6rskelniveauet for fugt ved hj\u00e6lp af <b>ADC<\/b> og variable modstande, og vi vil angive dette t\u00e6rskelniveau for fugt direkte fra vores smartphone! <b>MQTT<\/b> Vi fjerner ADC-enheden fra skemaet og tilf\u00f8jer tre nye enheder:<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilation af fugtige rum (projekt-eksempel)\" src=\"\/wp-content\/uploads\/2019\/08\/c32d9ec2c1a082e0a1ead0b04526eba5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFLASH store <b>FLASH restore<\/b>, <b>MQTT describe<\/b> og <b>Funktionen af enheden<\/b>.<\/p>\n<p>er \u00e5benlys: den modtager parameteren <b>Funktionen af enheden<\/b> (t\u00e6rskelniveau for fugt) fra <b>\/room\/trigHset<\/b> MQTT-broker <b>. Men hvad g\u00f8r den s\u00e5 med dataene? Den sender dem bare videre til enheden<\/b>, som gemmer disse data i non-volatile hukommelse under navnet <b>FLASH restore<\/b>trigH <b>. Derefter l\u00e6ser enheden<\/b>dataene fra non-volatile hukommelse med navnet <b>MQTT describe<\/b> og hvad der sker derefter, ved vi allerede. <b>. Derefter l\u00e6ser enheden<\/b> Hvorfor s\u00e5 mange komplikationer? Hvorfor kan man ikke bare sende de modtagne data direkte til komparatoren?<\/p>\n<p>Som vores ven S. Holmes plejer at sige \u2014 <\/p>\n<p>det er element\u00e6rt <i>! Ingen kan garantere, at dit apparat efter t\u00e6nding vil forbindes til<\/i>. Men fugtigheden skal m\u00e5les. Og viften skal t\u00e6ndes. Men uden information om t\u00e6rskelniveauet for fugt er det umuligt! Derfor henter vores enhed ved t\u00e6nding det tidligere gemte t\u00e6rskelniveau for fugt fra non-volatile hukommelse og bruger det til at tr\u00e6ffe beslutninger. Og n\u00e5r forbindelsen til <b>MQTT-m\u00e6gler<\/b>MQTT-brokeren <b>er etableret, og nogen sender en ny v\u00e6rdi<\/b> , vil denne nye v\u00e6rdi blive brugt. <b>\/room\/trigHset<\/b>Herefter kan I finde p\u00e5 alt muligt. For eksempel kan vi udover fugt ogs\u00e5 m\u00e5le temperaturen. Eller tilf\u00f8je 'smart' belysningsstyring (vi har stadig to rel\u00e6er og to indgange tilbage). Alt i jeres h\u00e6nder!<\/p>\n<p>S\u00e5dan har vi set p\u00e5 flere eksempler p\u00e5 implementeringen af en simpel controller baseret p\u00e5 ShIoTiny. M\u00e5ske vil dette v\u00e6re nyttigt for nogen.<\/p>\n<h4>Konklusion<\/h4>\n<p>\nSom altid, forslag, \u00f8nsker, sp\u00f8rgsm\u00e5l, trykfejl osv. \u2014 send til<\/p>\n<p>shiotiny@yandex.ru <b>shiotiny@yandex.ru<\/b><br \/>\n<br \/>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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: ventilation af fugtige rum (projekt-eksempel) | ProHoster","description":"\ud83e\udd47ShIoTiny: ventilation af fugtige rum (projekt-eksempel) | ProHoster","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/37423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=37423"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/37423\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/28079"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=37423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=37423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=37423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}