{"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\/nl\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","title":{"rendered":"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/a6e9c8239a90c713bd1b3b21891cbc13.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>Belangrijke punten of waar dit artikel over gaat<\/h4>\n<p>\nWe gaan verder met de serie artikelen over <b>ShIoTiny<\/b> \u2014 de visueel programmeerbare controller op basis van een chip <b>ESP8266<\/b>.<\/p>\n<p>In dit artikel wordt aan de hand van een project voor het regelen van de ventilatie in een badkamer of een andere ruimte met verhoogde luchtvochtigheid uitgelegd hoe het programma wordt opgebouwd voor <b>ShIoTiny<\/b>.<\/p>\n<h4>De vorige artikelen in de serie.<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: kleine automatisering, Internet of Things of \"zes maanden voor vakantie\"<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463285\/\">ShIoTiny: knooppunten, verbindingen en gebeurtenissen of de kenmerken van het tekenen van programma's<\/a><\/noindex><\/p>\n<h4>Links<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">Binaire firmware, schema van de controller en documentatie<\/a><\/noindex> <br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\/blob\/master\/doc\/ShIoT-esp8266-01_obzor.pdf\">Handleiding en beschrijving van de modules<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/esppower.ru\/mqtt-android\/\">Configuratie van de MQTT-broker cloudmqtt.com<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/393277\/\">MQTT-dashboard voor Android<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Inleiding<\/h4>\n<p>\nBegrip komt niet buiten ervaring. Dit is een waarheid die door de tijd en generaties is bewezen. Daarom is er niets beter voor het aanleren van praktische vaardigheden dan zelf iets proberen te doen. En voorbeelden die laten zien wat mogelijk is en wat niet, zullen zeker van pas komen. De fouten van anderen kunnen natuurlijk niet voorkomen dat je zelf fouten maakt, maar ze kunnen helpen om het aantal fouten te verminderen.<\/p>\n<p>Vragen en brieven van lezers van eerdere artikelen hebben me aangespoord om een klein voorbeeldproject voor de ventilatiebeheersing te maken, om te laten zien hoe de ShIoTiny-modules werken.<\/p>\n<p>Het oorspronkelijke idee, waarop de controller is gebaseerd <b>ShIoTiny<\/b> \u2014 de pomp- en irrigatiestation \u2014 is niet voor iedereen geschikt en interessant. Daarom heb ik een voor iedereen begrijpelijk en door velen nuttig ventilatiesysteem als voorbeeld genomen.<\/p>\n<p>Ik moet zeggen dat het idee van het project niet van mij is, maar <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/masterkit\/blog\/385281\/\">ik heb het hier vandaan gehaald<\/a><\/noindex> en vervolgens aangepast aan <b>ShIoTiny<\/b>.<\/p>\n<h4>Eerst moet je begrijpen wat je wilt<\/h4>\n<p>\nHet proces van verbetering is eindeloos. En precies deze eigenschap heeft vele goede idee\u00ebn en projecten de das omgedaan. De ontwikkelaar bleef bezig met het perfectioneren van de oplossing, in plaats van een misschien niet perfecte, maar werkende versie vrij te geven. En hij perfectioneerde het totdat concurrenten hem voorbijstaken met oplossingen die misschien niet perfect (en vaak ronduit slecht) waren, maar wel werkten.<\/p>\n<p>Daarom is het heel belangrijk om te weten waar je de punt in het project zet. Of met andere woorden, je moet bepalen wat we aan het einde van het project willen bereiken, op basis van wat we in het begin hebben. In het Russisch bestaat er een prachtig kort en bondig woord \u2018plan\u2019 voor een document dat precies wordt opgesteld om de weg naar creatie te beschrijven, een woord dat achterlijke vertalers en gebrekkige managers de laatste tijd om de een of andere reden zijn gaan noemen \u2018routekaart\u2019. Maar goed, laat ze maar.<\/p>\n<p>Ons plan zal als volgt zijn. Laten we aannemen dat er een ruimte is waar de luchtvochtigheid soms sterk kan toenemen. Bijvoorbeeld een badkamer of keuken. Vochtigheid is een ongewenste factor en de oplossing om ermee om te gaan is zolang als de wereld oud: de ruimte ventileren. Er zijn behoorlijk wat manieren om te ventileren. Maar we zullen ons beperken tot de gebruikelijke ventilator in plaats van exotische en ouderwetse methoden zoals slaven met waaier. Ventilatoren zijn goedkoper en bovendien gemakkelijker in onze omgeving te vinden.<\/p>\n<p>Kortom, we willen de ventilator bedienen: deze in- en uitschakelen. Juist, we willen dat deze automatisch aan- en uitgaat wanneer dat nodig is.<\/p>\n<p>We moeten nog bepalen: onder welke omstandigheden de ventilator moet inschakelen en onder welke omstandigheden - uitschakelen.<\/p>\n<p>Dit is vrij duidelijk: als de luchtvochtigheid boven een bepaalde drempel ligt - schakelt de ventilator in en trekt lucht naar buiten; als de luchtvochtigheid weer normaal is - schakelt de ventilator uit.<\/p>\n<p>De oplettende lezer zal onmiddellijk de aandacht vestigen op het woord \"bepaalde\". Door wie bepaald? Hoe bepaald?<\/p>\n<p>De drempelwaarde voor de luchtvochtigheid kan op verschillende manieren worden ingesteld. We zullen twee daarvan bekijken: de eerste - via een variabele weerstand en de tweede - via het netwerk met behulp van het MQTT-protocol. Elk van deze methoden heeft zijn voor- en nadelen, die we later zullen bespreken.<\/p>\n<p>Voor degenen die het niet begrepen hebben, laat ik het uitleggen: \"drempelvochtigheid\" is het niveau van vochtigheid, boven welk er behoefte is aan het inschakelen van de ventilator.<\/p>\n<p>De volgende vraag is: moet de gebruiker het recht krijgen om de ventilator rechtstreeks in te schakelen? Dus ongeacht het vochtigheidsniveau, met een druk op de knop? We zullen zo'n mogelijkheid voorzien. De ventilator kan immers nodig zijn, niet alleen bij verhoogde vochtigheid, maar ook om bijvoorbeeld een onaangename geur, die in de volksmond \"stank\" wordt genoemd, uit de ruimte te verwijderen.<\/p>\n<p>Dus, we begrijpen wat we willen en hebben zelfs een beetje idee hoe het zal werken. Laten we kort de functies van ons ventilatiesysteem samenvatten:<\/p>\n<ul>\n<li> instellen van de drempelwaarde voor de luchtvochtigheid (twee opties);<\/li>\n<li> meten van het vochtigheidsniveau;<\/li>\n<li> automatisch inschakelen van de ventilator;<\/li>\n<li> automatisch uitschakelen van de ventilator;<\/li>\n<li> handmatig inschakelen van de ventilator (met een druk op de knop).<\/li>\n<\/ul>\n<p>\nDus, het plan is duidelijk. We moeten alle boven genoemde functies in ons programma implementeren. Op basis van dit 'plan' zullen we handelen. Laten we beginnen met het tekenen van een structuurdiagram.<\/p>\n<h4>Structuurdiagram<\/h4>\n<p>\nOver het algemeen hebben we twee van zulke diagrammen. De eerste is voor de optie waarin het drempelniveau van de luchtvochtigheid door een variabele weerstand wordt ingesteld. Het tweede diagram is voor de optie waarin het drempelniveau van de luchtvochtigheid via het netwerk door het MQTT-protocol wordt ingesteld.<\/p>\n<p>Maar omdat deze schema's slechts in \u00e9\u00e9n element verschillen \u2014 de variabele weerstand voor het 'instellen van het drempelniveau van de luchtvochtigheid' \u2014 zullen we slechts \u00e9\u00e9n structuurdiagram tekenen. Uiteraard ziet een structuurdiagram volgens de GOST er anders uit. Maar we richten ons niet op doorgewinterde ingenieurs, maar op de jonge generatie. Daarom is duidelijkheid belangrijker.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/519f40496a8e459c22d69e7f0eaeee1d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDus, wat zien we op de afbeelding? De ventilator is verbonden met het relais <b>Relay1<\/b> van de controller. <b>ShIoTiny<\/b>Ik wil erop wijzen dat de ventilator een apparaat is dat werkt onder hoge spanning. Dus, als iemand zo'n systeem zelf gaat maken \u2014 wees voorzichtig. Dat wil zeggen, zorg er in ieder geval voor dat je de spanning van de ventilator uitschakelt voordat je je vingers of meetinstrumenten in het schema steekt. En een tweede opmerking. Als je ventilator krachtiger is dan <b>250W<\/b>, dan is het niet verstandig om deze direct aan te sluiten op <b>ShIoTiny<\/b> \u2014 alleen via een starter.<\/p>\n<p>We hebben de ventilator nu behandeld. Nu de knop voor 'handmatige inschakeling' van de ventilator. Deze is verbonden met de ingang <b>Input1<\/b>. Hier hoef je eigenlijk verder niet meer over uit te leggen.<\/p>\n<p>De temperatuur- en luchtvochtigheidssensor <b>DHT-11<\/b> (of <b>DHT-22<\/b> of hun tegenhangers). Voor de aansluiting is er een speciale ingang op de controller <b>ShIoTiny<\/b>. Zoals te zien is op de afbeelding, is de aansluiting van zo'n sensor ook geen probleem.<\/p>\n<p>En ten slotte de variabele weerstand die het drempelniveau van de luchtvochtigheid bepaalt. Juist \u2014 een spanningsdeler, bestaande uit een variabele en een constante weerstand. Er zijn geen problemen met de aansluiting, maar ik wil uitleggen dat de ingebouwde ADC op <b>ESP8266<\/b> maximaal is ontworpen voor 1 Volt. Daarom is een spanningsdeler die ongeveer 5 keer bedraagt nodig.<\/p>\n<p>En nogmaals, dit spanningsdeler is niet nodig als het drempelniveau van de luchtvochtigheid via het netwerk door het MQTT-protocol wordt ingesteld.<\/p>\n<p>Laten we beginnen met het opstellen van het werkalgoritme van het apparaat in de ElDraw ShIoTiny editor. Hoe je bij deze editor komt, kun je lezen in eerdere artikelen of in de handleiding, waarvan de link aan het begin van het artikel staat.<\/p>\n<h4>Optie \u00e9\u00e9n, de eenvoudigste<\/h4>\n<p>\nLaten we beginnen met het eenvoudige: het inschakelen van het relais <b>Relay1<\/b> bij overschrijding van de drempelwaarde voor vochtigheid gedurende een bepaalde tijd.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/e9f8d30627cf7cdbebccf863c2b2f808.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZoals we zien, is er niets moeilijks: slechts vier knooppunten, zonder de commentaar-knooppunten mee te tellen. <b>DHT11<\/b> \u2014 dat is eigenlijk de temperatuur- en vochtigheidssensor (je kunt het vervangen door <b>DHT22<\/b>).<\/p>\n<p>Constante <b>CONST<\/b> \u2014 drempelwaarde voor vochtigheid, in procenten.<\/p>\n<p>De comparator is een knooppunt dat twee getallen vergelijkt en 1 op de uitgang geeft als aan de opgegeven voorwaarde wordt voldaan en 0 als de voorwaarde niet wordt voldaan.<\/p>\n<p>In ons geval is die voorwaarde <b>A&gt;B<\/b>, waar <b>A<\/b> \u2014 het door de sensor gemeten vochtigheidsniveau, en <b>B<\/b> \u2014 de drempelwaarde van dezelfde vochtigheid.<\/p>\n<p>Zodra het gemeten vochtigheidsniveau (<b>A<\/b>) de drempelwaarde voor vochtigheid (<b>B<\/b>) overschrijdt, komt er direct een 1 op de uitgang van de comparator en wordt het relais ingeschakeld. En omgekeerd, zodra het vochtigheidsniveau weer normaal is (dat wil zeggen <b>A&gt;B<\/b> A&lt;=B <b>verschijnt er 0 en wordt het relais uitgeschakeld.<\/b>) overschrijdt, komt er direct een 1 op de uitgang van de comparator en wordt het relais ingeschakeld. En omgekeerd, zodra het vochtigheidsniveau weer normaal is (dat wil zeggen <b>A&gt;B<\/b> Is alles duidelijk? Voor degenen die het niet helemaal begrijpen \u2014 lees het nog eens of kijk in de beschrijving van de knooppunten in de handleiding.<\/p>\n<p>Ik merk op dat de gegevens van de sensor<\/p>\n<p>ongeveer elke 10 seconden worden bijgewerkt. Daarom kan het relais niet vaker aan en uit worden schakelt dan eens per 10 seconden. <b>DHT11<\/b> Dat zou allemaal goed zijn, maar we zouden graag de drempelwaarde voor vochtigheid willen instellen met een potentiometer. Dat is heel eenvoudig!<\/p>\n<p>We vervangen gewoon de constante-knoop door een ADC-knoop. Dit is immers waar we de spanningsdeler met de potentiometer op hebben aangesloten.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/3042bda4fe16e3fbad2d3f46f0beccb4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe spanning op de ingang van de ADC varieert van 0 tot 1 Volt. Maar de vochtigheid op de uitgang van de sensor varieert van 0 tot 100%. Hoe vergelijken we deze? Heel eenvoudig. De ADC-knoop in<\/p>\n<p>meet niet alleen de spanning op de ingang, maar kan deze ook <b>ShIoTiny<\/b> schalen en verschuiven <i><b>Dat wil zeggen, de uitgang van de ADC1 (ADC) knoop zal de waarde hebben<\/b><\/i>.<\/p>\n<p>, berekend met de formule <b>X<\/b>\u2014 de spanning op de ingang van de ADC (van 0 tot 1V); <\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/d01bc0ff4e6962252fced695d3894d32.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>, waar <img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/ac0bf727edb4c759d12268376ec6ad9b.jpeg\" style=\"display:block;margin: 0 auto;\" \/> \u2014 het bereik (ADC range) en <b>k<\/b> -de verschuiving (ADC offset). Dus als we <b>b<\/b>k=100 <b>b=0<\/b> en <b>, dan zal, bij wijziging van<\/b>het bereik van 0 tot 1, de waarde <img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/0afbeb2e49d5a107bc54d6bbd87ba23c.jpeg\" style=\"display:block;margin: 0 auto;\" \/> op de uitgang van de ADC-knoop vari\u00ebren van 0 tot 100. Dat wil zeggen, numeriek gelijk aan het bereik van de vochtigheid van 0 tot 100%. <b>X<\/b> De uitgang van de ADC-knoop zal vari\u00ebren van 0 tot 100. Dit betekent dat het numeriek gelijk is aan het wijzigingenbereik van de luchtvochtigheid van 0 tot 100%.<\/p>\n<p>Of eenvoudig gezegd, door de regelbare weerstandsmotor te draaien, kun je het drempelniveau van de vochtigheid instellen van 0 tot 100. Het enige ongemak is dat er geen weergaveapparaten zijn. Maar in de praktijk, als je zes onderverdelingen maakt op de weerstandsmotor (0%, 20%, 40%, 60%, 80%, 100%) \u2014 dan is dat voldoende om het drempelniveau van de vochtigheid in te stellen.<\/p>\n<p>Hoe stellen we de coefficients in <b>k<\/b> -de verschuiving (ADC offset). Dus als we <b>b<\/b>-offset (ADC offset)? Dat is eenvoudig als wat dan ook! Klik met de muis op de knoop <b>ADC1<\/b> en er verschijnt meteen een instellingenvenster. Hierin kun je alles instellen wat je nodig hebt. Voor ons geval zal dit venster eruitzien zoals op de afbeelding.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/ff81992b4fe236f5de6d17ca6bf8187c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDus we hebben de eenvoudigste werkende oplossing. Laten we deze verbeteren.<br \/>\nOverigens heeft de eenvoudigste oplossing \u00e9\u00e9n voordeel \u2014 het heeft geen internet nodig. Het is volledig autonoom.<\/p>\n<h4>Tweede optie, we koppelen een knop aan<\/h4>\n<p>\nAlles werkt en iedereen is blij. Maar er is een probleem, we kunnen de ventilatie niet handmatig inschakelen. We hebben al afgesproken dat <b>Input1<\/b> we een knop aansluiten die de ventilator handmatig in- en uitschakelt, ongeacht de vochtigheidssensor.<br \/>\nHet is tijd om deze knop in onze schakeling-programma te verwerken.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/673c274a5be680ce7c3ef1f9572f93fa.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet blok voor het verwerken van de knopdruk is gemarkeerd met een oranje lijn. Het is een drukknop teller die op nul wordt gereset wanneer de waarde op zijn uitgang hoger is dan \u00e9\u00e9n (groene lijn, uitgang van de knoop <b>CT<\/b>).<\/p>\n<p>Hier werkt alles net zo eenvoudig als voorheen: de teller <b>CT<\/b> telt de drukken van de knop die op de ingang is aangesloten. <b>Input1<\/b>Dat wil zeggen, de waarde op de uitgang van deze teller neemt met elk druk op de knop met 1 toe.<\/p>\n<p>Zodra deze waarde gelijk wordt aan twee (dat wil zeggen, meer dan 1), verschijnt er onmiddellijk 1 op de uitgang van de comparator. <b>A&gt;B<\/b> En deze 1 zet de teller <b>CT<\/b> terug naar nul. Hiermee wordt de comparator bedoeld, de onderste in het schema!<\/p>\n<p>Dus onze knop heeft twee toestanden \u2014 0 en 1. Als we meer toestanden nodig hadden (3 of 4 of nog meer) \u2014 dan zouden we voldoende hebben gehad om de constante <b>CONST<\/b> van \u00e9\u00e9n naar een andere waarde te wijzigen.<\/p>\n<p>Dus we hebben twee voorwaarden voor het inschakelen van de ventilator: het overschrijden van het ingestelde vochtigheidsniveau en een enkele druk op de knop. Bij het voldoen aan een van de voorwaarden zal de ventilator inschakelen. En hij blijft werken totdat de knop opnieuw wordt ingedrukt <b>En<\/b> of het vochtigheidsniveau weer normaal is.<\/p>\n<p>Natuurlijk kunnen we het algoritme nog verder compliceren, maar dat gaan we niet doen \u2014 we laten ruimte voor creativiteit voor degenen die dat willen.<\/p>\n<h4>Optie drie, we maken verbinding met het internet<\/h4>\n<p>\nAlles wat we hebben beschreven \u2014 is volledig functioneel. Maar wat met de status? Elke onzekere hipster-hacker-cracker zal iemand belachen die aan de knop draait en op de knop drukt in plaats van met zijn smartphone te bedienen! Aan de knop draaien is 'niet cool'. Maar met je vinger over de smartphone vegen, totdat die bloedig is \u2014 dat is de piek van de verlangens van de hipster-hacker-cracker (ik kon ze nooit onderscheiden \u2014 dus als ik het fout heb, verontschuldig me).<\/p>\n<p>Maar laten we mild zijn tegenover deze personen. Internetbeheer heeft echte voordelen. Ten eerste is er duidelijkheid. Er zijn talloze applicaties voor alle platforms waarmee je met een paar tikken een volledig bruikbare controlepaneel voor onze controller-karlson kunt maken. Ten tweede is er de mogelijkheid om op afstand de luchtvochtigheid in de ruimte te observeren. Ten derde kun je niet alleen zien of de ventilator draait of niet, maar ook wat de ingestelde drempelwaarde voor luchtvochtigheid is. En of de ventilator automatisch of handmatig is ingeschakeld. Kortom, alles wat je maar wilt.<\/p>\n<p>Natuurlijk, voor een bepaalde ventilator is het veel eer om zoveel aandacht te krijgen. Maar dit is slechts een voorbeeld.<\/p>\n<p>Dus, voor de verbinding met het internet gaan we de technologie gebruiken <b>MQTT<\/b> en het gelijknamige protocol.<br \/>\nOm deze technologie te gebruiken, hebben we nodig <b>een MQTT-broker<\/b>. Dit is een speciale server die bedient <b>MQTT-clients<\/b>, bijvoorbeeld <b>ShIoTIny<\/b> en je smartphone.<\/p>\n<p>De essentie van de technologie <b>MQTT<\/b> is dat elke client willekeurige gegevens op de MQTT-broker (server) publiceert onder een specifieke naam (die wordt genoemd <b>topic<\/b> in de terminologie <b>MQTT<\/b>). Andere clients kunnen zich abonneren op willekeurige gegevens op hun naam (<b>topic<\/b>) en de nieuw gepubliceerde gegevens ontvangen. Dit betekent dat alle gegevensuitwisseling plaatsvindt volgens het principe client-broker-client.<\/p>\n<p>Ik <i><b>Ik zal niet<\/b><\/i> diep ingaan op de details. Op internet zijn er talloze artikelen en tutorials over hoe het werkt <b>MQTT<\/b> en welke programma's er zijn om controlepanelen te maken. Ik laat je gewoon zien hoe we gegevens kunnen ontvangen en publiceren via <b>ShIoTiny<\/b>.<\/p>\n<p>Als broker heb ik gebruikt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cloudmqtt.com\/\">www.cloudmqtt.com<\/a><\/noindex>, maar het principe is overal hetzelfde.<\/p>\n<p>Dus laten we aannemen dat je je hebt geregistreerd bij <b>MQTT-broker<\/b>In het algemeen geeft de broker u (of vraagt u om) een gebruikersnaam en wachtwoord (voor authenticatie), evenals de poort voor de verbinding. Verbind <b>ShIoTiny<\/b> aan <b>met de MQTT-broker<\/b> op twee manieren \u2014 een gewone verbinding en via <b>TLS<\/b> (<b>SSL<\/b>).<\/p>\n<p>Al deze parameters worden <b>ShIoTiny<\/b> ingevoerd op het tabblad <b>Netwerken<\/b>, sectie <b>MQTT-verbinding met de server<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/3a16cbd07a64428568e7c03f178e87ef.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAls uw <b>een MQTT-broker<\/b> geen authenticatie vereist \u2014 voer dan geen gebruikersnaam en wachtwoord in (laat deze velden leeg).<\/p>\n<p>Parameter <b>MQTT-topicprefix<\/b> vergt verdere uitleg.<\/p>\n<p>Het MQTT-parameterprefix is een tekenreeks die wordt toegevoegd aan de onderwerpnaam (<b>topic<\/b>) bij het publiceren en abonneren op de MQTT-broker. Om <b>het MQTT-prefix<\/b> voor uw controller in te stellen, moet u het gewoon invoeren in het invoerveld '<b>MQTT-onderwerpprefix<\/b>\u00bb (\u00ab<b>MQTT-topicprefix<\/b>'). Het prefix begint altijd met een schuine streep (<b>\u00ab\/\u00bb<\/b>)! Als u geen schuine streep in het invoerveld invoert, wordt deze automatisch toegevoegd. In het prefix kunnen geen symbolen <b>\u00ab#\u00bb<\/b> en <b>\u00ab+\u00bb<\/b>. Voor de rest zijn er geen beperkingen.<\/p>\n<p>Bijvoorbeeld, als u de parameter '<b>status<\/b>' publiceert (of zich erop abonneert), en uw prefix is ingesteld als '<b>\/shiotiny\/<\/b>', dan wordt deze parameter op de broker gepubliceerd onder de naam '<b>\/shiotiny\/status<\/b>'. Als u een leeg prefix hebt ingesteld, beginnen alle parameters op de broker met een schuine streep (<b>\u00ab\/\u00bb<\/b>): \u00ab<b>status<\/b>' wordt gepubliceerd als '<b>\/status<\/b>\u00bb.<\/p>\n<p>Laten we aannemen dat u zich heeft geregistreerd op <b>MQTT-broker<\/b> en een gebruikersnaam, wachtwoord en poort heeft ontvangen. Vervolgens heeft u deze parameters ingevoerd op het tabblad <b>Netwerken<\/b>, sectie <b>MQTT-verbinding met de server<\/b> van de controller. <b>ShIoTiny<\/b>.<\/p>\n<p>Laten we aannemen dat de prefix is ingesteld op '<b>\/room\/<\/b>\u00bb.<\/p>\n<p>Laten we beginnen met het publiceren van de status van alle belangrijke parameters: relais <b>Relay1<\/b>, handmatige inschakeling, automatische inschakeling en, tenslotte, de drempel- en actuele vochtigheidsniveaus. En als bonus \u2014 de temperatuur in de kamer. Hoe dat te doen, zie afbeelding.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/ed016ae37bb0cb1197e2e4fd649a7c4f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZoals we zien, is het verschil met de vorige versie \u2014 alleen de knooppunten '<b>MQTT Publiceren<\/b>'. Met inachtneming van het prefix worden de volgende parameters gepubliceerd:<br \/>\n<img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/34b67dd1932f30de777a680802f71c59.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZoals we zien, hebben we de volledige status van het systeem in het zicht!<\/p>\n<p>Maar we willen niet alleen zien, maar ook beheren. Hoe doen we dat? Heel eenvoudig. We geven de instelling van het drempelniveau voor vochtigheid op met behulp van <b>de ADC<\/b> en de variabele weerstand en stellen dat drempelniveau direct in via <b>MQTT<\/b> onze smartphone!<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: ventilatie van een vochtige ruimte (projectvoorbeeld)\" src=\"\/wp-content\/uploads\/2019\/08\/c32d9ec2c1a082e0a1ead0b04526eba5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWe verwijderen de ADC-knoop uit het schema en voegen daar drie nieuwe knopen aan toe: <b>FLASH opslaan<\/b>, <b>FLASH herstellen<\/b> en <b>MQTT beschrijven<\/b>.<\/p>\n<p>De functie van de knoop <b>MQTT beschrijven<\/b> is duidelijk: deze ontvangt de parameter <b>\/room\/trigHset<\/b> (drempelniveau voor vochtigheid) van <b>de MQTT-broker.<\/b>Maar wat doet hij vervolgens met de gegevens? Simpelweg doorgeven aan de knoop <b>FLASH opslaan<\/b>, dat op zijn beurt deze gegevens opslaat in niet-vluchtig geheugen onder de naam <b>trigH<\/b>. Daarna leest de node <b>FLASH herstellen<\/b> de gegevens uit het niet-vluchtig geheugen onder de naam <b>trigH<\/b> en wat er daarna gebeurt weten we al.<\/p>\n<p>Waarom zulke complicaties? Waarom kunnen we de ontvangen gegevens niet meteen aan de comparator geven? <\/p>\n<p>Zoals kameraad S. Holmes zei \u2014 <i>dat is elementair<\/i>! Niemand garandeert dat uw apparaat na inschakeling zich zal verbinden met <b>met de MQTT-broker<\/b>. En we moeten de vochtigheid meten. En de ventilator moet aangezet worden. Maar zonder informatie over het drempelniveau van de vochtigheid is dit onmogelijk! Daarom haalt ons apparaat bij inschakeling het eerder opgeslagen drempelniveau van de vochtigheid uit het niet-vluchtig geheugen en gebruikt dit voor de besluitvorming. Pas wanneer de verbinding met <b>de MQTT-broker<\/b> tot stand komt en iemand een nieuwe waarde publiceert <b>\/room\/trigHset<\/b>, dan zal deze nieuwe waarde worden gebruikt.<\/p>\n<p>Daarna kunt u alles bedenken wat u maar wilt. U kunt bijvoorbeeld naast de vochtigheid ook de temperatuur bijhouden. Of 'slimme' verlichting toevoegen (we hebben nog twee relais en twee ingangen ongebruikt). Alles ligt in uw handen!<\/p>\n<h4>Conclusie<\/h4>\n<p>\nWe hebben nu verschillende voorbeelden van de basisimplementatie van een controller op basis van ShIoTiny besproken. Misschien is dit nuttig voor iemand.<\/p>\n<p>Zoals altijd, opmerkingen, wensen, vragen, typefouten en meer \u2014 stuur ze naar: <b>shiotiny@yandex.ru<\/b><br \/>\n<br \/>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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: ventilatie van een vochtige ruimte (voorbeeldproject) | ProHoster","description":"Hoofdlijnen of waar dit over gaat.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/shiotiny-ventilyatsiya-vlazhnogo-pomeshheniya-proekt-primer","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/37423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=37423"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/37423\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/28079"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=37423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=37423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=37423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}