Obsah:
- Krok 1: Specifikace hardwaru a softwaru
- Krok 2: Ukládání pověření uživatele
- Krok 3: Nastavení webového formuláře v SPIFFS
- Krok 4: Plánování úkolů
- Krok 5: Čtení hodnot teploty a vlhkosti z SHT25
- Krok 6: Publikování hodnot do ThingSpeak pomocí ThingSpeak MQTT API
- Krok 7: E -mailové upozornění na hlášení o počasí
- Krok 8: Celkový kód
Video: Zprávy o počasí pomocí aplikací ThingSpeak MQTT a IFTTT: 8 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Úvod
Cloudová aplikace o počasí poskytující denní zprávy o počasí jako e-mailové upozornění. Tato webová aplikace měří teplotu a vlhkost pomocí SHT25 a Adafruit Huzzah ESP8266. Poskytuje nám údaje o teplotě a vlhkosti v reálném čase a hodinovou analýzu. Data jsou odesílána pomocí rozhraní ThingSpeak MQTT API a později poskytujeme uživateli e -mailové upozornění, kdykoli teplota dosáhne přiřazeného prahu pomocí protokolu IFTTT. SHT25 jsou snímače teploty a vlhkosti od společnosti Sensirion. SHT25 poskytuje vysokou přesnost kolem ± 2% RH. Rozsah vlhkosti je mezi 0 až 100% a teplotní rozsah mezi -40 až 125 ° C. Je mnohem spolehlivější a rychlejší s dobou odezvy senzoru 8 sekund.
Funkce
- Poskytuje analýzy a statistiky v reálném čase pomocí rozhraní Thing Speak MQTT API
- E -mailové oznámení je uživateli poskytnuto v určený čas pomocí IFTTT
- Plánovač úloh se používá k naplánování úlohy, jako je načítání dat ze senzorů, publikování údajů ze senzorů, přihlášení k tématu MQTT
- Využívá protokol I2C k načtení údajů ze snímače, které jsou přesnější, rozšiřitelné a škálovatelné
- režim spánku, když je zařízení nečinné nebo není voláno žádné zpětné volání úkolu.
- efektivní plánování úkolů zajišťuje bezproblémové používání
- Je hostována samostatná webová stránka, na které musí uživatel poskytnout svá uživatelská pověření, aby se vyhnul blikání vašeho zařízení pokaždé, když je v dosahu jiných wifi sítí
- SPIFFS slouží k ukládání naší webové stránky, aby byl náš kód čitelný a méně neohrabaný
Krok 1: Specifikace hardwaru a softwaru
Specifikace hardwaru
- Deska Adafruit esp8266 Huzzah
- Štít Huzzah Board
- Senzorový modul SHT25
- Kabel I2C
Specifikace softwaru
- Arduino IDE
- IFTTT Thing Speak
- MQTT API
Krok 2: Ukládání pověření uživatele
Zde používáme snímač SHT25 I2C ke čtení hodnoty teploty a relativní vlhkosti v reálném čase a odesílání těchto hodnot do cloudu. Abychom čas od času získali aktualizovanou hodnotu senzoru a současně zveřejnili tyto aktualizace, používáme knihovnu plánovače úloh Arduina. Pro cloudové operace používáme ThingSpeak MQTT API. Později poskytujeme uživateli zprávy o počasí v reálném čase pomocí appletů IFTTT. Chcete -li si vytvořit vlastní meteorologickou stanici, můžete postupovat podle těchto kroků. Takže DIY.
Než budete pokračovat dále. Musíme uložit přihlašovací údaje uživatele. Za tímto účelem hostujeme webový server na adrese 192.169.1.4. Náš webový formulář jsme uložili ve formátu SPIFFS. Jakmile se zařízení spustí, bude hostovat webový server po dobu 60 sekund. Uživatel by měl postupovat podle těchto kroků.
- Připojte se k AP ESPuser, který je uveden v seznamu dostupných sítí Wi -Fi. Připojte se k tomuto přístupovému bodu a zadejte heslo „*******“
- Jakmile se připojí, přejděte do prohlížeče a zadejte IP 192.168.1.4.
- Do vstupních polí zadejte SSID a heslo vaší místní WiFi a zadejte SUBMIT
- Tato pověření budou uložena v paměti EEPROM
- Po 60 sekundách se zařízení automaticky odpojí od přístupového bodu
- Až příště zapnete zařízení, uživatel nemusí tento postup dodržovat, zařízení automaticky načte přihlašovací údaje uživatele z EEPROM a bude pokračovat v získávání údajů ze senzorů z rozhraní I2C a odesílání do cloudu
// --------- Konfigurace 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 ("Konfigurace přístupového bodu …");
WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
Serial.print („Nastavení přihlašovacích údajů uživatele“);
WiFi.softAP (ssidAP, passAP);
server.on ("/", handleRoot);
server.onNotFound (onHandleNotFound);
server.begin ();
APTimer = millis ();
while (millis ()-APTimer <APInterval) {
server.handleClient ();
}
// **************************** Kořen rukojeti ****************** ********* // neplatné handleRoot () {
if (server.hasArg ("ssid") && server.hasArg ("heslo"))
{
// Pokud všechna pole formuláře obsahují datové volání
handelSubmit ()
handleSubmit (); }
jinak {
// Znovu zobrazit formulář
// přečtěte si soubor obsažený ve spiffech
Soubor souboru = SPIFFS.open ("/webform.html", "r");
server.streamFile (soubor, "text/html");
// nezapomeňte soubor zavřít
file.close ();
}}
// Zkontrolujte stav, zda obsahuje argumenty ssid a heslo
// Poté zapište přihlašovací údaje do ROM
ROMwrite (String (server.arg ("ssid")), String (server.arg ("heslo")))
Krok 3: Nastavení webového formuláře v SPIFFS
SPIFFS
Serial Peripheral Interface Flash File System nebo zkráceně SPIFFS. Je to lehký souborový systém pro mikrokontroléry s flash čipem SPI. Integrovaný flash čip ESP8266 má dostatek místa pro vaše webové stránky, zvláště pokud máte verzi 1 MB, 2 MB nebo 4 MB. Naši webovou stránku jsme také uložili do systému Flash. Při nahrávání dat do spiffů musíme dodržet několik kroků
- Stáhněte si nástroj:
- V adresáři skicářů Arduino vytvořte adresář nástrojů, pokud ještě neexistuje
- Rozbalte nástroj do adresáře nástrojů (cesta bude vypadat jako /Arduino/tools/ESP8266FS/tool/esp8266fs.jar)
- Restartujte Arduino IDE
- Otevřete skicu (nebo vytvořte novou a uložte ji)
- Přejděte do adresáře skici (zvolte Skica> Zobrazit složku skici)
- V systému souborů vytvořte adresář s názvem data a všechny soubory, které chcete. Nahráli jsme naši HTML stránku s názvem webform.html
- Ujistěte se, že jste vybrali desku, port a zavřený sériový monitor
- Vyberte Nástroje> Nahrání dat skici ESP8266. To by mělo začít nahrávat soubory do systému souborů ESP8266 flash. Po dokončení se na stavovém řádku IDE zobrazí zpráva Nahraný obrázek SPIFFS.
Soubor souboru = SPIFFS.open ("/webform.html", "r");
server.streamFile (soubor, "text/html");
// nezapomeňte soubor zavřít
file.close ();
Krok 4: Plánování úkolů
V tomto kurzu provádíme dvě operace:
- Odečtěte data z SHT25 pomocí protokolu I2C
- Zveřejněte aktualizovaná data do cloudu pomocí rozhraní ThingSpeak MQTT API
Abychom toho dosáhli, používáme knihovnu TaskScheduler. Naplánovali jsme dva různé úkoly odkazující na dvě různé řídicí operace. to se provádí následovně
- Úkol 1 je pro čtení hodnoty senzoru, který běží po dobu 1 sekundy, dokud nedosáhne časového limitu 10 sekund.
- Když úkol 1 dosáhne časového limitu, připojujeme se k místnímu brokerovi Wifi a MQTT.
- Nyní je povolen úkol 2 a deaktivujeme úkol 1 úkol 2 slouží k publikování dat senzoru zprostředkovateli Thing Speak MQTT, tento úkol běží 20 sekund, dokud nedosáhne časového limitu 20 sekund
- Když úkol 2 dosáhne časového limitu, úkol 1 je znovu povolen a úkol 2 je deaktivován. zde opět získáváme aktualizovanou hodnotu a proces pokračuje
- když není vyvoláno žádné zpětné volání nebo je zařízení nečinné, přejde do režimu spánku, čímž šetří energii.
// --------- prototyp pro zpětné volání úkolu ------------ //
zrušit taskI2CCallback ();
zrušit taskI2CDisable ();
zrušit taskWiFiCallback ();
zrušit taskWiFiDisable ();
// --------- Úkoly ------------ //
Úkol tI2C (2 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable);
Úkol tWiFi (20* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
// povolit tI2C tI2C.enable ();
Krok 5: Čtení hodnot teploty a vlhkosti z SHT25
I2C je dvouvodičové rozhraní, které ke komunikaci s hlavním zařízením používá pouze dva vodiče. Jeden je SCL (Serial Clock) a druhý je SDA (Serial Data). Každé podřízené zařízení má jedinečnou adresu. SHT 25 má také 8bitovou adresu a lze k ní přistupovat pomocí adresy 0x44. má 8 bitů adresy, kde 7 bitů je skutečná adresa a zatímco bit 0 LSB zcela vpravo se používá k signalizaci čtení ze zařízení nebo zápisu do něj. Pokud je bit 0 nastaven na 1, pak hlavní zařízení bude číst ze zařízení slave I2C. I2C je mnohem spolehlivější, škálovatelnější a rychlejší a dokonce má mnoho provozních režimů, díky nimž je energeticky mnohem efektivnější
Ke čtení hodnot teploty a vlhkosti používáme knihovnu Wire.h. Tato knihovna usnadňuje i2c komunikaci mezi senzorem a hlavním zařízením. 0x44 je adresa I2C pro SHT25. SHT25 pracuje v jiném provozním režimu. K tomu se můžete obrátit na datový list. Používáme 0x2C a 0x06 jako MSB, respektive LSB pro provoz s jedním výstřelem
Krok 6: Publikování hodnot do ThingSpeak pomocí ThingSpeak MQTT API
K odesílání našich hodnot teploty a vlhkosti do cloudu používáme rozhraní ThingSpeak MQTT API. ThingSpeak je platforma IoT. ThingSpeak je bezplatná webová služba, která vám umožňuje shromažďovat a ukládat data ze senzorů v cloudu. MQTT je běžný protokol používaný v systémech IoT k připojení zařízení a senzorů nízké úrovně. MQTT se používá k předávání krátkých zpráv brokerovi a od něj. ThingSpeak nedávno přidal brokera MQTT, aby zařízení mohla odesílat zprávy do ThingSpeak. Z tohoto příspěvku můžete postupovat podle pokynů k nastavení kanálu ThingSpeak
ThingSpeak MQTT
MQTT je architektura pro publikování/předplatné, která je vyvinuta především pro připojení zařízení s omezenou šířkou pásma a omezeným výkonem prostřednictvím bezdrátových sítí. Je to jednoduchý a lehký protokol, který běží přes sokety TCP/IP nebo WebSockets. MQTT přes WebSocket lze zabezpečit pomocí SSL. Architektura publikování/odběru umožňuje zasílání zpráv na klientská zařízení, aniž by zařízení muselo nepřetržitě provádět dotazování serveru. Klient je jakékoli zařízení, které se připojuje k makléři a může publikovat nebo se přihlásit k odběru témat za účelem přístupu k informacím. Téma obsahuje informace o směrování pro makléře. Každý klient, který chce odesílat zprávy, je publikuje na určité téma a každý klient, který chce dostávat zprávy, se přihlásí k určitému tématu
Publikovat a přihlásit se k odběru pomocí ThingSpeak MQTT
- Publikování na kanály kanálu kanálu /publikovat /
- Publikování na konkrétní kanály/publikování/pole/pole/
- Přihlaste se k odběru kanálů pole kanálu/přihlaste se k odběru //
- Přihlaste se k odběru kanálů kanálu soukromých kanálů // odběr/pole/pole/
- Přihlaste se k odběru všech polí kanálu. kanály // odběr/pole/feild/
zrušit úkolWiFiCallback ()
{
Serial.println ("taskWiFiCallbackStarted");
Serial.print ("časový limit pro tento úkol: / t");
Serial.println (tWiFi.getTimeout ());
if (! mqttCli.connected ())
{
Serial.println („Klient není připojen“);
reconnectMQTT ();
}
Řetězec topicString = "kanály/"+Řetězec (ID kanálu)+"/publikovat/"+Řetězec (writeAPIKey);
int topicLength = topicString.length ()+1;
char topicBuffer [topicLength];
topicString.toCharArray (topicBuffer, topicLength+1);
Serial.println (topicBuffer);
Řetězec dataString = String ("pole1 =" + Řetězec (tempC, 1) + "& pole2 =" + Řetězec (tempF, 1) + "& pole3 =" + Řetězec (vlhký, 1));
int dataLength = dataString.length ()+1;
byte dataBuffer [dataLength];
dataString.getBytes (dataBuffer, dataLength);
mqttCli.beginPublish (topicBuffer, dataLength, false);
Serial.println (mqttCli.write (dataBuffer, dataLength)? "Publikováno": "publikováno neúspěšně");
mqttCli.endPublish ();
//mqttCli.loop ();
}
Krok 7: E -mailové upozornění na hlášení o počasí
Pomocí apletů IFTTT dáváme uživateli hlášení o počasí v reálném čase. Implementovali jsme to tedy prostřednictvím ThingSpeak. Průměrujeme pětistupňové hodnoty teploty a vlhkosti. Kdykoli je hodnota posledního záznamu větší než průměrná hodnota. Spustí e -mailové upozornění „je horký den“. a když je nižší než průměrná hodnota. Spustí e -mailové oznámení „Jaký krásný den“. Každý den kolem 10:00 (IST) budeme dostávat e -mailové oznámení
channelID = ******;
iftttURL = 'https://maker.ifttt.com/**************';
vlhkostData = thingSpeakRead (ID kanálu, 'Pole', 3, 'NumDays', 5); tempData = thingSpeakRead (channelID, 'Fields', 1, 'NumDays', 5);
perHumid = max (vlhkostní data) -min (vlhkostní data);
humidValue = 0,1*perHumid+min (data 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 horký den.'; webwrite (iftttURL, 'value1', plantMessage, 'value2', lastTempValue, 'value3', lastHumidValue); konec
Krok 8: Celkový kód
Celkový kód
Celkový kód je k dispozici v tomto úložišti GitHub
Omezení
- Existují určité problémy s publikováním dat pomocí metody publikování pro velkou část dat. K vyřešení tohoto problému používáme funkci write ()
- SPIFFS by měl být naformátován před odesláním nových dat do SPIFFS.
- Nesmíte používat funkci delay (). delay () brání provozu na pozadí. Místo toho vytvořte zpoždění pomocí millis (), pouze pokud je to nutné
Kredity
- Webový server ESP826
- Plánovač úkolů
- SHT 25
- ThingSpeak MQTT API
- IFTTT
- PubSubClient
Doporučuje:
(Projekt IOT) Získejte data o počasí pomocí ESP8266 a Openweather API: 5 kroků
(Projekt IOT) Získání údajů o počasí pomocí ESP8266 a Openweather API: V tomto pokynu vytvoříme jednoduchý projekt IOT, ve kterém načteme data o počasí našeho města z openweather.com/api a zobrazíme je pomocí softwaru pro zpracování
Inteligentní distribuovaný systém sledování počasí IoT pomocí NodeMCU: 11 kroků
Inteligentní distribuovaný systém sledování počasí IoT pomocí NodeMCU: Všichni možná víte o tradiční meteorologické stanici; ale přemýšleli jste někdy nad tím, jak to vlastně funguje? Protože je tradiční meteorologická stanice nákladná a objemná, hustota těchto stanic na jednotku plochy je mnohem menší, což přispívá k
Monitorování počasí pomocí ESP32_DHT11_OLED_Thingspeak: 7 kroků
Monitorování počasí pomocí ESP32_DHT11_OLED_Thingspeak: V tomto tutoriálu vytvoříte monitor počasí, který monitoruje teplotu a vlhkost pomocí ESP32 a DHT11. Je zobrazen na displeji OLED. A je nahrán do ThingSpeak. ESP32 je účinný nástroj IOT. Jedná se o levný systém
Údaje o počasí pomocí Tabulek Google a Google Script: 7 kroků
Údaje o počasí pomocí tabulek Google a skriptu Google: V tomto Blogtutu budeme odesílat hodnoty senzoru SHT25 do listů Google pomocí Adafruit huzzah ESP8266, který pomáhá odesílat data na internet. Odesílání dat do buňky listu Google je velmi užitečné a základním způsobem, který ukládá data
Vytvořte si vlastní MQTT EInk displej pro čas, zprávy a údaje o životním prostředí: 7 kroků
Vytvořte si vlastní MQTT EInk displej pro čas, zprávy a data o životním prostředí: „THE“je mini MQTT informační displej pro čas, zprávy a informace o životním prostředí. S 4,2palcovou obrazovkou eInk je její koncept jednoduchý-zobrazovat informace na rotačním základě a aktualizovat každých pár minut. Data mohou být libovolného zdroje