Obsah:

Správa o počasí pomocou apletov ThingSpeak MQTT a IFTTT: 8 krokov
Správa o počasí pomocou apletov ThingSpeak MQTT a IFTTT: 8 krokov

Video: Správa o počasí pomocou apletov ThingSpeak MQTT a IFTTT: 8 krokov

Video: Správa o počasí pomocou apletov ThingSpeak MQTT a IFTTT: 8 krokov
Video: POČASÍ – NEZkreslená věda VII 2024, December
Anonim
Správa o počasí pomocou apletov ThingSpeak MQTT a IFTTT
Správa o počasí pomocou apletov ThingSpeak MQTT a IFTTT

Úvod

Cloudová aplikácia o počasí poskytujúca denné správy o počasí ako e-mailové upozornenie. Táto webová aplikácia meria teplotu a vlhkosť pomocou SHT25 a Adafruit Huzzah ESP8266. Poskytuje nám údaje o teplote a vlhkosti v reálnom čase a hodinovú analýzu. Údaje sa odosielajú pomocou rozhrania ThingSpeak MQTT API a neskôr poskytujeme používateľovi e -mailové upozornenie vždy, keď teplota dosiahne priradenú prahovú hodnotu, pomocou protokolu IFTTT. SHT25 sú snímače teploty a vlhkosti vyrobené spoločnosťou Sensirion. SHT25 poskytuje vysokú úroveň presnosti okolo ± 2% relatívnej vlhkosti. Rozsah vlhkosti je od 0 do 100% a teplotný rozsah od -40 do 125 ° C. Je to oveľa spoľahlivejšie a rýchlejšie s dobou odozvy senzora 8 sekúnd.

Vlastnosti

  • Poskytuje vám analýzy a štatistiky v reálnom čase pomocou rozhrania Thing Speak MQTT API
  • E -mailové upozornenie je používateľovi poskytnuté v stanovenom čase pomocou IFTTT
  • Plánovač úloh sa používa na naplánovanie úlohy, ako je načítanie údajov zo senzorov, publikovanie nameraných hodnôt senzora, prihlásenie sa na tému MQTT
  • Na načítanie údajov zo senzora používa protokol I2C, ktorý je presnejší, rozšíriteľnejší a škálovateľnejší
  • režim spánku, keď je zariadenie nečinné alebo sa nevyvolá žiadne spätné volanie úlohy.
  • efektívne plánovanie úloh poskytuje bezproblémové používanie
  • Je umiestnená samostatná webová stránka, na ktorej musí používateľ poskytnúť svoje prihlasovacie údaje, aby sa zabránilo blikaniu zariadenia zakaždým, keď je v dosahu iných sietí Wi -Fi.
  • SPIFFS sa používa na ukladanie našej webovej stránky, aby bol náš kód čitateľný a menej nemotorný

Krok 1: Špecifikácia hardvéru a softvéru

Špecifikácia hardvéru a softvéru
Špecifikácia hardvéru a softvéru
Špecifikácia hardvéru a softvéru
Špecifikácia hardvéru a softvéru

Špecifikácia hardvéru

  • Doska Adafruit esp8266 Huzzah
  • Štít Huzzah Board
  • Senzorový modul SHT25
  • I2C kábel

Špecifikácia softvéru

  • Arduino IDE
  • Hovorte o IFTTT
  • MQTT API

Krok 2: Uloženie poverení používateľa

Ukladanie poverení používateľa
Ukladanie poverení používateľa
Ukladanie poverení používateľa
Ukladanie poverení používateľa

Tu používame snímač SHT25 I2C na čítanie hodnoty teploty a relatívnej vlhkosti v reálnom čase a odosielanie týchto hodnôt do cloudu. Aby sme z času na čas získali aktualizovanú hodnotu senzora a súčasne odoslali tieto aktualizácie, používame knižnicu plánovača úloh Arduina. Na cloudové operácie používame ThingSpeak MQTT API. Neskôr poskytujeme používateľovi správu o počasí v reálnom čase pomocou apletov IFTTT. Pri vytváraní vlastnej meteorologickej stanice môžete postupovať podľa týchto krokov. Takže, urob si sám

Predtým, ako budete pokračovať ďalej. Potrebujeme uložiť prihlasovacie údaje používateľa. Za týmto účelom hostíme webový server na adrese 192.169.1.4. Náš webový formulár sme uložili do formátu SPIFFS. Akonáhle sa zariadenie spustí, je hostiteľom webového servera na 60 sekúnd. Užívateľ by mal postupovať podľa týchto krokov.

  • Pripojte sa k AP ESPuser, ktorý je uvedený v zozname dostupných sietí Wi -Fi. Pripojte sa k tomuto prístupovému bodu a zadajte heslo „*******“
  • Akonáhle sa pripojí, Choďte do svojho prehliadača a zadajte IP 192.168.1.4.
  • Do vstupných polí zadajte SSID a heslo miestnej WiFi siete a zadajte SUBMIT
  • Tieto poverenia budú uložené v pamäti EEPROM
  • Po 60 sekundách sa zariadenie automaticky odpojí od prístupového bodu
  • Keď používateľ najbližšie zapne zariadenie, nemusí tento postup dodržať. Zariadenie automaticky vyzdvihne prihlasovacie údaje používateľa z pamäte EEPROM a bude pokračovať v získavaní údajov zo senzorov z rozhrania I2C a ich odosielaní do cloudu.

// --------- Konfigurácia AP ------------ // Adresa IP ap_local_IP (192, 168, 1, 4); IP adresa ap_gateway (192, 168, 1, 254); IP adresa ap_subnet (255, 255, 255, 0);

Serial.print ("Konfigurácia prístupového bodu …");

WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);

Serial.print („Nastavenie poverení používateľa“);

WiFi.softAP (ssidAP, passAP);

server.on ("/", handleRoot);

server.onNotFound (onHandleNotFound);

server.begin ();

APTimer = millis ();

while (millis ()-APTimer <APInterval) {

server.handleClient ();

}

// **************************** KORENO RUKY ****************** ********* // neplatné handleRoot () {

if (server.hasArg ("ssid") && server.hasArg ("heslo"))

{

// Ak všetky polia formulára obsahujú dátové volanie

handelSubmit ()

handleSubmit (); }

inak {

// Znova zobrazte formulár

// prečítajte si súbor obsiahnutý v spiffoch

Súbor súboru = SPIFFS.open ("/webform.html", "r");

server.streamFile (súbor, "text/html");

// nezabudnite súbor zavrieť

file.close ();

}}

// Skontrolujte stav, či obsahuje argumenty ssid a heslo

// Potom napíšte poverenia do ROM

ROMwrite (String (server.arg ("ssid")), String (server.arg ("heslo")))

Krok 3: Nastavenie webového formulára v SPIFFS

SPIFFS

Sériové periférne rozhranie Flash File System alebo skrátene SPIFFS. Je to ľahký súborový systém pre mikrokontroléry s čipom SPI flash. Integrovaný flash čip ESP8266 má dostatok miesta pre vaše webové stránky, najmä ak máte verziu 1 MB, 2 MB alebo 4 MB. Webovú stránku sme tiež uložili do systému Flash System. Na odoslanie údajov do formátu spiff je potrebné vykonať niekoľko krokov

  1. Stiahnite si nástroj:
  2. V adresári skicárov Arduino vytvorte adresár nástrojov, ak ešte neexistuje
  3. Rozbaľte nástroj do adresára nástrojov (cesta bude vyzerať ako /Arduino/tools/ESP8266FS/tool/esp8266fs.jar)
  4. Reštartujte Arduino IDE
  5. Otvorte skicu (alebo vytvorte novú a uložte ju)
  6. Prejdite do adresára náčrtu (zvoľte Náčrt> Zobraziť priečinok náčrtu)
  7. V systéme súborov vytvorte priečinok s názvom data a všetky súbory, ktoré chcete. Nahrali sme našu stránku HTML s názvom webform.html
  8. Uistite sa, že ste vybrali dosku, port a zatvorený sériový monitor
  9. Vyberte položku Nástroje> ESP8266 Nahranie údajov skice. Tým by sa malo začať odosielanie súborov do systému súborov ESP8266 flash. Po dokončení sa v stavovom riadku IDE zobrazí správa Nahraný obrázok SPIFFS.

Súbor súboru = SPIFFS.open ("/webform.html", "r");

server.streamFile (súbor, "text/html");

// nezabudnite súbor zavrieť

file.close ();

Krok 4: Plánovanie úloh

V tomto návode vykonávame dve operácie:

  • Prečítajte si údaje z SHT25 pomocou protokolu I2C
  • Uverejnite aktualizované údaje v cloude pomocou rozhrania ThingSpeak MQTT API

Aby sme to dosiahli, používame knižnicu TaskScheduler. Naplánovali sme dve rôzne úlohy týkajúce sa dvoch rôznych riadiacich operácií. toto sa robí nasledovne

  • Úloha 1 je na prečítanie hodnoty senzora. Táto úloha trvá 1 sekundu, kým nedosiahne časový limit 10 sekúnd.
  • Keď úloha 1 vyprší časový limit, pripájame sa k miestnemu brokerovi Wifi a MQTT.
  • Teraz je úloha 2 povolená a deaktivujeme ju. Úloha 1 Úloha 2 je na zverejnenie údajov senzora sprostredkovateľovi Thing Speak MQTT, táto úloha trvá 20 sekúnd, kým nedosiahne časový limit 20 sekúnd.
  • Keď úloha 2 uplynie časový limit, úloha 1 sa znova povolí a úloha 2 sa vypne. opäť tu dostávame aktualizovanú hodnotu a proces pokračuje
  • keď nie je zavolané žiadne spätné volanie alebo je zariadenie nečinné, prejde do režimu spánku, čím šetrí energiu.

// --------- prototyp pre spätné volanie úlohy ------------ //

zrušiť úlohuI2CCallback ();

zrušiť úlohuI2CDisable ();

zrušiť úlohuWiFiCallback ();

zrušiť úlohuWiFiDisable ();

// --------- Úlohy ------------ //

Úloha tI2C (2 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable);

Úloha tWiFi (20* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

// povoliť tI2C tI2C.enable ();

Krok 5: Čítanie hodnôt teploty a vlhkosti z SHT25

Čítanie hodnôt teploty a vlhkosti z SHT25
Čítanie hodnôt teploty a vlhkosti z SHT25

I2C je dvojvodičové rozhranie, ktoré na komunikáciu s hlavným zariadením používa iba dva vodiče. Jeden je SCL (sériové hodiny) a druhý je SDA (sériové údaje). Každé podradené zariadenie má jedinečnú adresu. SHT 25 má tiež 8-bitovú adresu a je k nemu prístup pomocou adresy 0x44. má 8 bitov adresy, kde 7 bitov je skutočná adresa, a zatiaľ čo úplne vpravo LSB bit 0 sa používa na signalizáciu čítania zo zariadenia alebo zapisovania do zariadenia. Ak je bit 0 nastavený na 1, potom hlavné zariadenie bude čítať zo zariadenia slave I2C. I2C je oveľa spoľahlivejší, škálovateľnejší a rýchlejší, a dokonca má mnoho režimov prevádzky, vďaka ktorým je energeticky oveľa efektívnejšia

Na čítanie hodnôt teploty a vlhkosti používame knižnicu Wire.h. Táto knižnica uľahčuje komunikáciu i2c medzi senzorom a hlavným zariadením. 0x44 je adresa I2C pre SHT25. SHT25 funguje v inom režime prevádzky. Môžete sa na to obrátiť v technickom liste. Na operáciu jedného záberu používame 0x2C a 0x06 ako MSB a LSB

Krok 6: Publikovanie hodnôt do ThingSpeak pomocou ThingSpeak MQTT API

Publikovanie hodnôt do ThingSpeak pomocou ThingSpeak MQTT API
Publikovanie hodnôt do ThingSpeak pomocou ThingSpeak MQTT API

Na odosielanie našich hodnôt teploty a vlhkosti do cloudu používame ThingSpeak MQTT API. ThingSpeak je platforma IoT. ThingSpeak je bezplatná webová služba, ktorá vám umožňuje zbierať a ukladať údaje senzorov v cloude. MQTT je bežný protokol používaný v systémoch IoT na pripojenie zariadení a senzorov nízkej úrovne. MQTT sa používa na odosielanie krátkych správ brokerovi a od neho. ThingSpeak nedávno pridal brokera MQTT, aby zariadenia mohli odosielať správy do ThingSpeak. Z tohto príspevku môžete postupovať podľa pokynov na nastavenie kanála ThingSpeak

ThingSpeak MQTT

MQTT je architektúra publikovania/prihlásenia na odber, ktorá je vyvinutá predovšetkým na pripojenie zariadení s obmedzenou šírkou pásma a obmedzeným výkonom prostredníctvom bezdrôtových sietí. Je to jednoduchý a ľahký protokol, ktorý beží cez sokety TCP/IP alebo WebSockets. MQTT cez WebSocket môže byť zabezpečený pomocou SSL. Architektúra publikovania/predplatného umožňuje odosielanie správ na klientske zariadenia bez toho, aby zariadenie potrebovalo nepretržite dotazovať server. Klient je akékoľvek zariadenie, ktoré sa pripája k maklérovi a môže publikovať alebo sa prihlásiť na odber tém na prístup k informáciám. Téma obsahuje informácie o smerovaní pre makléra. Každý klient, ktorý chce odosielať správy, ich publikuje na určitú tému a každý klient, ktorý chce dostávať správy, sa prihlási na určitú tému.

Publikujte a prihláste sa na odber pomocou ThingSpeak MQTT

  • Publikovanie na kanáloch kanálov kanálov /publikovanie /
  • Publikovanie v konkrétnych kanáloch/publikovanie/polia/pole/
  • Prihlásiť sa na odber kanálov v kanáli/prihlásiť sa na odber //
  • Prihláste sa na odber kanálov kanála súkromných kanálov // odoberať/polia/pole/
  • Prihláste sa na odber všetkých polí kanála. kanály // odber/polia/feild/

zrušiť úlohuWiFiCallback ()

{

Serial.println ("taskWiFiCallbackStarted");

Serial.print ("časový limit pre túto úlohu: / t");

Serial.println (tWiFi.getTimeout ());

if (! mqttCli.connected ())

{

Serial.println („Klient nie je pripojený“);

reconnectMQTT ();

}

Reťazec topicString = "kanály/"+Reťazec (ID kanála)+"/publikovať/"+Reťazec (writeAPIKey);

int topicLength = topicString.length ()+1;

char topicBuffer [topicLength];

topicString.toCharArray (topicBuffer, topicLength+1);

Serial.println (topicBuffer);

Reťazec dataString = String ("field1 =" + String (tempC, 1) + "& field2 =" + String (tempF, 1) + "& field3 =" + String (humid, 1));

int dataLength = dataString.length ()+1;

byte dataBuffer [údajová dĺžka];

dataString.getBytes (dataBuffer, dataLength);

mqttCli.beginPublish (topicBuffer, dataLength, false);

Serial.println (mqttCli.write (dataBuffer, dataLength)? "Publikované": "publikované zlyhalo");

mqttCli.endPublish ();

//mqttCli.loop ();

}

Krok 7: E -mailové upozornenie na správu o počasí

Správa o počasí E -mailové upozornenie
Správa o počasí E -mailové upozornenie
Správa o počasí E -mailové upozornenie
Správa o počasí E -mailové upozornenie

Používame aplety IFTTT na odosielanie e-mailových upozornení na správy o počasí v reálnom čase používateľovi. Implementovali sme to teda prostredníctvom ThingSpeak. Priemerujeme 5-stupňové hodnoty teploty a vlhkosti. Kedykoľvek je hodnota posledného záznamu väčšia ako priemerná hodnota. Spustí to e -mailové upozornenie „je horúci deň“. a keď je nižšia ako priemerná hodnota. Spustí sa e -mailové upozornenie „Aký krásny deň“. Každý deň okolo 10:00 (IST) dostaneme e -mailové upozornenie

channelID = ******;

iftttURL = 'https://maker.ifttt.com/*************' ';

vlhkosťData = thingSpeakRead (ID kanála, 'polia', 3, 'NumDays', 5); tempData = thingSpeakRead (channelID, 'Fields', 1, 'NumDays', 5);

perHumid = max (údaje o vlhkosti) -min (údaje o vlhkosti);

humidValue = 0,1*perHumid+min (údaje o vlhkosti);

perTemp = max (tempData) -min (tempData);

tempValue = 0,1*perTemp+min (tempData);

urlTemp = strcat ('https://api.thingspeak.com/channels/', string (channelID), '/fields/1/last.txt');

urlHumid = strcat ('https://api.thingspeak.com/channels/', string (channelID), '/fields/3/last.txt'); lastTempValue = str2num (webread (urlTemp)); lastHumidValue = str2num (webread (urlHumid));

if (lastTempValue

if (lastTempValue> tempValue || lastHumidValue> humidValue)

plantMessage = 'Je horúci deň.'; webwrite (iftttURL, 'value1', plantMessage, 'value2', lastTempValue, 'value3', lastHumidValue); koniec

Krok 8: Celkový kód

Celkový kód
Celkový kód
Celkový kód
Celkový kód
Celkový kód
Celkový kód

Celkový kód

Celkový kód je k dispozícii v tomto úložisku GitHub

Obmedzenia

  • Existujú určité problémy so zverejňovaním údajov pomocou metódy publikovania pre veľkú väčšinu údajov. Na vyriešenie tohto problému používame funkciu write ()
  • Pred odoslaním nových údajov do formátu SPIFFS by mal byť formát SPIFFS naformátovaný.
  • Nesmiete používať funkciu delay (). delay () bráni operácii na pozadí. Namiesto toho vytvorte oneskorenia pomocou milis () iba vtedy, ak je to nevyhnutné

Kredity

  • Webový server ESP826
  • Plánovač úloh
  • SHT 25
  • ThingSpeak MQTT API
  • IFTTT
  • PubSubClient

Odporúča: