Obsah:

WiFi snímač teploty a vlhkosti IoT. Část: 8 IoT, domácí automatizace: 9 kroků
WiFi snímač teploty a vlhkosti IoT. Část: 8 IoT, domácí automatizace: 9 kroků

Video: WiFi snímač teploty a vlhkosti IoT. Část: 8 IoT, domácí automatizace: 9 kroků

Video: WiFi snímač teploty a vlhkosti IoT. Část: 8 IoT, domácí automatizace: 9 kroků
Video: Zigbee, Thread, Matter a Espressif (Petr Stehlík) 2024, Listopad
Anonim
WiFi snímač teploty a vlhkosti IoT. Část: 8 IoT, domácí automatizace
WiFi snímač teploty a vlhkosti IoT. Část: 8 IoT, domácí automatizace

Preambule

Tento článek dokumentuje praktickou robustnost a další vývoj dřívějšího Instructable: 'Pimping' vašeho prvního IoT WiFi zařízení. Část 4: IoT, domácí automatizace včetně všech potřebných softwarových funkcí, které umožní úspěšné nasazení v domácím domácím prostředí.

Úvod

Jak bylo uvedeno výše, tento Instructable popisuje spojení dřívějšího příkladu IoT se spolehlivým návrhem systémů umožňujícím úspěšné řešení praktických případů použití, jako je; Katastrofická ztráta napájení, selhání MQTT Broker, porucha WiFi N/W, vzdálená rekonfigurace senzoru, konfigurovatelná strategie hlášení pro snížení síťového provozu a kalibrace senzoru na míru.

Bylo vytvořeno celkem 6 vypnutých zařízení (viz obrázek 1 výše) a distribuovány po mém domě, aby vytvořily moji první senzorovou síť IoT.

Instructable také vidí recenzi konvence pojmenování MQTT, jak byla použita v úvodní sérii IoT Home Automation, která ustupuje vyváženější a praktičtější struktuře umožňující jednodušší ladění provozu IoT v prostředí zařízení s více IoT.

Následují úplné konstrukční detaily senzoru IoT včetně; konstrukce, zdrojový kód, strategie testování a konfigurace OpenHAB.

Jaké díly potřebuji?

  1. 1 sleva ESP8266-01,
  2. 2 off 1uF elektrolytické kondenzátory,
  3. 3 off 10K odpory,
  4. 1 vypnutý rezistor 330R,
  5. 1 off průměr 3 mm VEDENÝ,
  6. 1 off LD1117-33v, 3v3 LDO VReg. (Farnell zde),
  7. 1 vypnutý snímač teploty/vlhkosti DHT22,
  8. 1 off Dual 4way 0,1 "konektor,
  9. 1 ks plastový kryt CAMDENBOSS RX2008/S-5, zalévací box, ABS, 38 mm, 23 mm (Farnell zde),
  10. 1 vypnutý DC napájecí konektor, zástrčka, 1 A, 2 mm, montáž na panel (zde Farnell),
  11. 1 vypnutý chladič TO-220 24,4 ° C/W (Farnell zde),
  12. Různé smršťovací bužírky (žlutá, Ebay zde),
  13. Různé délky plochého kabelu IDC,
  14. Směs chladičů,
  15. Veroboard,
  16. Programovací zařízení ESP8266-01. Viz zde; Praktická konstrukce obvodu s páskou, krok 9 dále.

Jaký software potřebuji?

  1. Arduino IDE 1.6.9
  2. Arduino IDE nakonfigurováno pro programování ESP8266-01. Viz zde; Nastavení Arduino IDE k programování ESP8266-01

Jaké nástroje potřebuji?

  1. Páječka,
  2. Vrták a různé bity,
  3. Soubory,
  4. Pilka na kov,
  5. Robustní svěrák,
  6. Horkovzdušná pistole,
  7. DMM.

Jaké dovednosti potřebuji?

  1. Minimální znalost elektroniky,
  2. Znalost Arduina a jeho IDE,
  3. Základní výrobní dovednosti (pájení, řezání, pilování, vrtání atd.),
  4. Trochu trpělivosti,
  5. Trochu porozumění vaší domácí síti.

Pokrytá témata

  1. Přehled obvodu
  2. Přehled softwarového systému
  3. Přehled softwaru
  4. Kalibrace senzoru
  5. Úmluva o pojmenování témat MQTT
  6. Konfigurace OpenHAB
  7. Testování designu
  8. Závěr
  9. Použité reference

Odkazy na sérii

K části 7: Studujte ovladač světel (přepracován). Část 7: IoT, domácí automatizace

K části 9: Síťový ovladač IoT. Část 9: IoT, domácí automatizace

Krok 1: Přehled obvodu

Přehled obvodu
Přehled obvodu
Přehled obvodu
Přehled obvodu
Přehled obvodu
Přehled obvodu
Přehled obvodu
Přehled obvodu

Na obrázku 1 výše je zobrazen návrh celého obvodu pro snímač IoT.

Srdcem zařízení IoT je ESP8266-01, který je připojen k teplotnímu/vlhkostnímu senzoru DHT22 přes odpor 10K pro GPIO2. Externí zdroj 5 V je dodáván se spínaným napájením a je napájen do zařízení pomocí 2mm DC zásuvky pro montáž na panel a je regulován lokálně pomocí regulátoru napětí LD1117-33v, 3v3 LDO namontovaného na externím chladiči pomocí šroubu a matice s hlavou BZP M3.

Konstrukce obsahuje 3mm červenou diodu připojenou k GPIO0, která slouží k místní indikaci stavu zařízení IoT během spouštění nebo jakéhokoli následného chybového stavu. Lze jej také použít k identifikaci zařízení ruční aktivací prostřednictvím rozhraní openHAB.

Celá konstrukce se úhledně vejde do zalévacího boxu ABS, jak je uvedeno výše na obrázku 2, a byl navržen speciálně tak, aby zajistil, že senzor bude co nejdále od regulátoru, aby se zabránilo předpětí v důsledku účinků lokálního vytápění (obrázek 7 výše).

Deska s obvody je jeden kus veroboardu, nařezaný do tvaru a vyrobený tak, aby se vešel do skříně (obrázek 3 výše). Tato deska je upevněna na místě pomocí zapuštěného nylonového šroubu M3 a dvou matic, které zapadají do spodní části senzoru, což mu umožňuje sedět na rovném povrchu.

Obrázky 4… 6 ukazují různé stavy konstrukce.

Krok 2: Přehled softwarového systému

Přehled softwarového systému
Přehled softwarového systému
Přehled softwarového systému
Přehled softwarového systému

Toto zařízení pro snímání teploty a vlhkosti IoT obsahuje šest klíčových softwarových komponent, jak je znázorněno na obrázku 1 výše.

SPIFFS

Toto je integrovaný systém SPI Flash Filing System a slouží k uchovávání následujících informací (viz obr. 2 výše);

  • Ikony a html „Domovská stránka konfigurace senzoru“: Obsluhuje zařízení IoT, když se nemůže připojit k vaší WiFi síti IoT (obvykle kvůli nesprávným bezpečnostním informacím) a poskytuje uživateli prostředky pro vzdálenou konfiguraci senzoru bez potřeby přeprogramovat nebo nahrát nový obsah SPIFFS.
  • Informace o zabezpečení: Obsahuje informace používané při zapnutí zařízením IoT k připojení k vaší síti IoT WiFi a MQTT Broker. Informace odeslané prostřednictvím „domovské stránky konfigurace senzoru“jsou zapsány do tohoto souboru („secvals.txt“).
  • Informace o kalibraci: Informace obsažené v tomto souboru ('calvals.txt') se v případě potřeby používají ke kalibraci palubního snímače teploty/vlhkosti. Kalibrační konstanty lze do zařízení IoT zapisovat pouze prostřednictvím příkazů MQTT od brokera MQTT.

Poznámka: Chcete -li nejprve nastavit zařízení, podívejte se zde na úplné podrobnosti o tom, jak používat SPIFFS s Arduino IDE.

mDNS server

Tato funkce je vyvolána, když se zařízení IoT nepodařilo připojit k vaší WiFi síti jako WiFi stanice a místo toho se stalo přístupovým bodem WiFi, něco podobného domácímu WiFi routeru. V případě takového routeru byste se k němu obvykle připojili zadáním IP adresy například 192.168.1.1 (obvykle vytištěné na štítku nalepeném na krabici) přímo do adresního řádku prohlížeče, načež byste obdrželi přihlašovací stránku pro zadání uživatelské jméno a heslo, které vám umožní konfigurovat zařízení.

Pro ESP8266 v režimu AP (režim přístupového bodu) je zařízení standardně nastaveno na IP adresu 192.168.4.1, avšak při spuštěném serveru mDNS stačí do lišty URL prohlížeče zadat přátelské jméno „SENSORSVR.local“. „Domovská stránka konfigurace senzoru“.

Klient MQTT

Klient MQTT poskytuje všechny potřebné funkce; připojte se ke své síti IoT broker MQTT, přihlaste se k odběru témat podle svého výběru a zveřejněte užitečné zatížení k danému tématu. Stručně řečeno, poskytuje základní funkce IoT.

Webový server

Jak bylo uvedeno výše, pokud se zařízení IoT nemůže připojit k síti WiFi, jejíž SSID, P/W atd. Je definováno v souboru s bezpečnostními informacemi uloženém v SPIFFS, zařízení se stane přístupovým bodem. Po připojení k síti WiFi poskytované přístupovým bodem vám přítomnost webového serveru HTTP umožňuje přímé připojení k zařízení a změnu jeho konfigurace pomocí webového prohlížeče HTTP, jehož účelem je obsluhovat „domovskou stránku konfigurace senzoru“. Webová stránka stránky, která je rovněž uložena ve formátu SPIFFS.

WiFi stanice

Tato funkce dává zařízení IoT možnost připojit se k domácí WiFi síti pomocí parametrů v souboru s informacemi o zabezpečení, bez toho se vaše zařízení IoT nebude moci přihlásit/publikovat u MQTT Broker

WiFi přístupový bod

Možnost stát se přístupovým bodem WiFi je prostředek, pomocí kterého vám zařízení IoT umožňuje připojit se k němu a provádět změny konfigurace prostřednictvím stanice WiFi a prohlížeče (například Safari na Apple iPad).

Tento přístupový bod vysílá SSID = „SENZOR“+ posledních 6 číslic MAC adresy zařízení IoT. Heslo pro tuto uzavřenou síť je pomyslně pojmenováno „HESLO“

Krok 3: Přehled softwaru

Přehled softwaru
Přehled softwaru
Přehled softwaru
Přehled softwaru

Preamble K úspěšné kompilaci tohoto zdrojového kódu budete potřebovat následující knihovny navíc;

PubSubClient.h

  • Autor: Nick O'Leary
  • Účel: Umožňuje zařízení publikovat nebo odebírat témata MQTT s daným Brokerem
  • Od:

DHT.h

  • Autor: Adafruit
  • Účel: Knihovna pro snímač teploty/vlhkosti DHT
  • Od:

Přehled kódu

Software využívá stavový stroj, jak je znázorněno na obrázku 1 výše (úplná kopie zdroje je uvedena níže). Existuje 5 hlavních stavů, jak je uvedeno níže;

  • INIT

    Tento inicializační stav je prvním stavem zadaným po zapnutí

  • NOCONFIG

    Tento stav je zadán, pokud je po zapnutí detekován neplatný nebo chybějící soubor secvals.txt

  • Čeká na SZ

    Tento stav je přechodný, zadává se, zatímco neexistuje žádné připojení k síti WiFi

  • ČEKÁNÍ MQTT

    Tento stav je přechodný, zadává se po navázání připojení k WiFi síti a zatímco v této síti neexistuje žádné spojení s brokerem MQTT

  • AKTIVNÍ

    Toto je normální provozní stav zadaný po navázání připojení k WiFi síti i připojení MQTT Broker. V tomto stavu je teplotní a vlhkostní funkce senzoru zveřejněna u makléře MQTT

Události řídící přechody mezi stavy jsou popsány na obrázku 1 výše. Přechody mezi stavy se také řídí následujícími parametry SecVals;

  • 1. IP adresa makléře MQTT. V tečkované desítkové podobě AAA. BBB. CCC. DDD
  • 2. Broker Port MQTT. V celočíselném tvaru.
  • 3. Připojení MQTT Broker se pokusí provést před přepnutím z režimu STA do režimu AP. V celočíselném tvaru.
  • 4. SSID WiFi sítě. Ve volném textu.
  • 5. heslo WiFi sítě. Ve volném textu.

Jak bylo uvedeno výše, pokud se zařízení IoT nemůže připojit jako WiFi stanice k WiFi síti, jehož SSID a P/W je definováno v secvals.txt uloženém v SPIFFS, zařízení IoT se stane přístupovým bodem. Po připojení k tomuto přístupovému bodu bude sloužit na „domovské stránce konfigurace senzoru“, jak je uvedeno výše na obrázku 2 (zadáním „SENSORSVR.local“nebo 192.168.4.1 do adresního řádku prohlížeče). Tato domovská stránka umožňuje rekonfiguraci senzoru prostřednictvím prohlížeče

Vzdálený přístup ve stavu AKTIVNÍ

Po připojení k MQTT Broker je také možné zařízení jak rekalibrovat, tak překonfigurovat prostřednictvím tematických publikací MQTT. Soubor calvals.txt má přístup R/W a secvals.txt má přístup pouze pro zápis.

Ladění uživatele

Během zaváděcí sekvence LED zařízení IoT poskytuje následující zpětnou vazbu ladění

  • 1 Krátký záblesk: V souboru SPIFFS (secvals.txt) není umístěn žádný konfigurační soubor
  • 2 Krátké bliknutí: Zařízení IoT se pokouší připojit k síti WiFi
  • Nepřetržité osvětlení: Zařízení IoT se pokouší připojit k MQTT Broker
  • Vypnuto: Zařízení je aktivní
  • Poznámka 1: „Domovská stránka konfigurace senzoru“nepoužívá zabezpečené zásuvky, a proto se spoléhá na to, že je vaše síť zabezpečená.
  • Poznámka 2: Aby bylo možné naprogramovat každé zařízení IoT, bude řetězec MQTT před stažením vyžadovat úpravu. Důvodem je, že číslo senzoru bylo vloženo do řetězce tématu MQTT. tj. „WFD/THSen/100/HumdStatus/1“pro mých 6 zařízení jsou očíslovány 1… 6.

Krok 4: Kalibrace senzoru

Kalibrace senzoru
Kalibrace senzoru
Kalibrace senzoru
Kalibrace senzoru

Když se zařízení IoT zapne, jako součást zaváděcí sekvence se ze SPIFFS načte soubor s názvem 'cavals.txt'. Obsahem tohoto souboru jsou kalibrační konstanty, jak je uvedeno výše na obrázku 1. Tyto kalibrační konstanty se používají k úpravě hodnot získaných ze senzoru, aby byly uvedeny do souladu s referenčním zařízením. Existuje ještě jedna hodnota, která definuje strategii hlášení zařízení a je popsána níže spolu s postupem kalibrace senzorů.

Strategie hlášení Tento parametr určuje, jak vzdálený senzor hlásí jakékoli místní parametrické změny. Pokud je vybrána hodnota 0, vzdálený senzor zveřejní každou změnu, kterou vidí v hodnotách teploty nebo vlhkosti, pokaždé, když je snímač načten (přibližně každých 10 sekund). Jakákoli jiná hodnota zpozdí zveřejnění změny o 1… 60 minut. Úprava tohoto parametru umožňuje optimalizaci síťového provozu MQTT.

Kalibrace teploty

Ke kalibraci senzorů byly umístěny v těsné fyzické vzájemné blízkosti, jak je uvedeno výše na obrázku 2. Po jejich straně jsem umístil DMM s připojeným kalibrovaným termočlánkem (Fluke 87 V) a poté monitoroval výstupy z každého zařízení pomocí teploty OpenHAB trendovou stránku v průběhu dne, abyste získali dobrý teplotní výkyv. Zaznamenal jsem jak statický posun (zvýšená nula 'C'), tak rychlost změny každého zařízení (zisk nebo sklon grafu 'M') vzhledem k hodnotě hodnoty pocházející z kalibrovaného termočlánku. Potom jsem vypočítal jednoduchý vztah y = mx+c (zjistil jsem, že je dostatečně lineární, aby byl blízkým přiblížením k přímočarému grafu) a naprogramoval všechny potřebné opravy do kalibračních konstant pomocí MQTTSpy.

Poté byla zařízení monitorována dalších 24 hodin, aby byla zajištěna úspěšná kalibrace. Údajem toho bylo, že teplotní stopy na stránce trendů teplot OpenHAB byly téměř na sobě.

Pokud vás zajímá pouze přiblížení k teplotě, můžete všechny kalibrační hodnoty ponechat jako výchozí.

Kalibrace vlhkosti

Protože nemám žádné prostředky k přesnému zaznamenávání nebo dokonce kontrole místní okolní vlhkosti, ke kalibraci senzorů jsem použil podobný přístup jako výše, umístěním všech zařízení do těsné fyzické blízkosti (obr. 2) a prostým monitorováním jejich výstupu prostřednictvím OpenHAB Stránka o vlhkosti. Poté jsem vybral zařízení č. 1 jako kalibrační referenci a nakalibroval všechna zařízení v tomto ohledu.

Krok 5: Konvence pojmenování témat MQTT

Úmluva o pojmenování témat MQTT
Úmluva o pojmenování témat MQTT
Úmluva o pojmenování témat MQTT
Úmluva o pojmenování témat MQTT

Po mnoha pokusech a omylech jsem se usadil na konvenci pojmenování témat uvedenou na obrázku 1 výše.

Jmenovitě 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice'

Není to dokonalé, ale umožňuje použití užitečných filtrů pro zobrazení všech výstupů senzorů pro danou parametrickou hodnotu, což umožňuje snadné srovnání jako na obrázku 2 výše s MQTTSpy. Podporuje také přiměřeně rozšiřitelná logická seskupení funkcí v rámci daného zařízení IoT.

Při implementaci těchto témat do softwaru jsem používal pevně kódované řetězce témat s pevnými, vloženými číselnými identifikátory pro každé zařízení, na rozdíl od dynamického generování témat za běhu, aby se šetřilo na RAM a udržoval vysoký výkon.

Poznámka: Pokud si nejste jisti, jak používat MQTTSpy, podívejte se zde 'Nastavení makléře MQTT. Část 2: IoT, domácí automatizace '

Krok 6: Konfigurace OpenHAB

Konfigurace OpenHAB
Konfigurace OpenHAB
Konfigurace OpenHAB
Konfigurace OpenHAB
Konfigurace OpenHAB
Konfigurace OpenHAB

Upravil jsem konfiguraci OpenHAB uvedenou v mém dřívějším Instructable (zde) a přidal do jednotlivých položek pro;

  • Garáž,
  • Sál,
  • Obývací pokoj,
  • Kuchyně
  • Pokoj pro hosty
  • Hlavní ložnice

Na mapě webu viz obrázek 1 výše.

Pro každý z těchto záznamů jsem přidal jednotlivé mapy webů vystavující místní okolní hodnoty (viz obr. 2 výše);

  • Teplota
  • Vlhkost vzduchu
  • Tepelný index

Zahrnul jsem také přepínač pro ovládání místní LED namontované uvnitř senzoru.

Obrázky 3… 5 ukazují jednotlivé živé stopy po dobu 24 hodin pro teplotu, vlhkost a RSSI (Indikace síly přijímaného signálu, v podstatě měřítko toho, jak dobře senzor vidí WiFi síť).

Obrázek 6 uvádí příklad dlouhodobého trendu vlhkosti po dobu jednoho týdne.

Poznámka 1: Pokud si nejste jisti, jak používat OpenHAB, podívejte se sem „Nastavení a konfigurace OpenHAB. Část 6: IoT, domácí automatizace '

Poznámka 2: Kopie upraveného souboru Sitemap, souborů pravidel a položek, ikon atd. Je uvedena níže.

Krok 7: Testování návrhu

Testování designu
Testování designu
Testování designu
Testování designu

Z větší části jsem testoval zařízení IoT přes připojení MQTT s MQTT Spy, monitoroval výstup LED a ladil provoz na sériovém rozhraní. To mi umožnilo procvičit všechna dostupná předplatená témata a zkontrolovat publikované odpovědi. Ačkoli toho bylo dosaženo ručně a občas to bylo trochu zdlouhavé, umožnilo to 100% pokrytí.

Hlavní stavový stroj se však ukázal být trochu složitý na testování, protože spoléhal na přítomnost nebo nepřítomnost WiFi sítě, jejíž přístup vyžadoval specifické sady parametrů. Využívat k tomu domácí síť prostě nebylo praktické.

Abych tento problém vyřešil, vytvořil jsem vlastní sadu fiktivních sítí pomocí ESP8266-01 nakonfigurovaných jako přístupové body (obr. 1) s SSID „DummyNet1“a „DummyNet2“. Použití obvodu na obrázku 2 nad LED diodou indikovalo, zda se k němu připojilo zařízení IoT. I když to nebylo dokonalé testovací řešení (tj. Každá z těchto fiktivních WiFi sítí neobsahovala server MQTT), bylo možné stavový stroj plně otestovat.

Níže jsem vložil kopii zdrojového kódu.

Krok 8: Závěr

Všeobecné

Software v zařízeních IoT funguje spolehlivě po mnoho měsíců a nyní se zotavuje z výpadků elektrické energie v domácnosti (způsobených hlavně mnou). Celkově jsou to docela robustní zařízení poskytující konzistentní a přesná data.

Vylepšení

Při vývoji softwarových rutin pro čtení a zápis do SPIFFS jsem napsal kód, který v zadním pohledu může být o něco pokročilejší, než jsem zamýšlel, pomocí neplatných ukazatelů, přepracování a ukazatelů na ukazatele. I když je to velmi flexibilní a dělá to dobře, příště možná použiji JSON podle vzoru ConfigFile.ino, aby to bylo trochu jednodušší.

  • Arduino GIT HUB Core

    https://github.com/esp8266/Arduino

  • Zdroj ConfigFile.ino

    https://github.com/esp8266/Arduino/tree/master/libraries/esp8266/examples/ConfigFile

Seznam přání

Měl jsem v úmyslu použít klienta mDNS k připojení k makléři, ale knihovna byla příliš slabá. To je důvod, proč je nutné zadat IP adresu MQTT Broker na rozdíl od 'MQTTSVR.local'. Pokud by se knihovna mDNS v budoucnu stala stabilnější, přidám tuto možnost do zařízení.

Bylo by hezké mít prostředky jak pro přesné monitorování, tak pro regulaci okolní vlhkosti pro kalibraci senzorů proti. To však znamená, že zvolená metoda kalibrace poskytuje dobré relativní hodnoty a zdá se přiměřeně přesná v souladu se specifikací v datovém listu DHT22.

Nakonec, vzhledem ke složitosti softwaru, jsem zjistil, že testování kódu po zásadní změně začalo být časově náročné. O automatizovaném testování mohu uvažovat později.

Krok 9: Použité reference

K sestavení tohoto Instructable jsem použil následující zdroje;

PubSubClient.h

  • Autor: Nick O'Leary
  • Od:

DHT.h

  • Autor: Adafruit
  • Z:

Datový list DHT22

Doporučuje: