Obsah:
- Krok 1: Špecifikácia hardvéru a softvéru
- Krok 2: Uloženie poverení používateľa
- Krok 3: Nastavenie webového formulára v SPIFFS
- Krok 4: Plánovanie úloh
- Krok 5: Čítanie hodnôt teploty a vlhkosti z SHT25
- Krok 6: Publikovanie hodnôt do ThingSpeak pomocou ThingSpeak MQTT API
- Krok 7: E -mailové upozornenie na správu o počasí
- Krok 8: Celkový kód
Video: Správa o počasí pomocou apletov ThingSpeak MQTT a IFTTT: 8 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Ú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
- 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
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
- Stiahnite si nástroj:
- V adresári skicárov Arduino vytvorte adresár nástrojov, ak ešte neexistuje
- Rozbaľte nástroj do adresára nástrojov (cesta bude vyzerať ako /Arduino/tools/ESP8266FS/tool/esp8266fs.jar)
- Reštartujte Arduino IDE
- Otvorte skicu (alebo vytvorte novú a uložte ju)
- Prejdite do adresára náčrtu (zvoľte Náčrt> Zobraziť priečinok náčrtu)
- 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
- Uistite sa, že ste vybrali dosku, port a zatvorený sériový monitor
- 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
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
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í
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 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:
(Projekt IOT) Získajte údaje o počasí pomocou ESP8266 a Openweather API: 5 krokov
(Projekt IOT) Získajte údaje o počasí pomocou ESP8266 a Openweather API: V tomto návode postavíme jednoduchý projekt IOT, v ktorom načítame údaje o počasí nášho mesta z openweather.com/api a zobrazíte ich pomocou softvéru na spracovanie
Periodická správa programu Excel: 6 krokov
Periodická správa programu Excel: Tu sú moje tipy na pravidelné správy o spotrebe v programe Excel 2010. V nižšie uvedenom výukovom videu nám táto správa hovorí o špecifickej spotrebe elektriny, vody, kyslíka, dusíka na tonu hotových výrobkov podľa týždenných, mesačných a štvrťročných údajov.
Živá správa o Covide pomocou Raspberry Pi: 6 krokov
Živá správa o Covide pomocou Raspberry Pi: Ako vieme, celý svet je postihnutý pandémiou COVID-19 a takmer každý pracuje z domu. Všetci by sme mali toto trvanie využiť v najlepšom prípade na zlepšenie našich technických znalostí alebo napísanie dobrých Pythonických skriptov. Pozrime sa na jednoduchý Python
Údaje o počasí pomocou Tabuliek Google a Google Script: 7 krokov
Údaje o počasí pomocou tabuliek Google a skriptu Google: V tomto Blogtute pošleme namerané hodnoty senzora SHT25 do hárkov Google pomocou servera Adafruit huzzah ESP8266, ktorý pomáha odosielať údaje na internet. Odosielanie údajov do bunky hárka Google je veľmi užitočné. a základným spôsobom, ktorý ukladá údaje v
Vytvorte informačný panel o počasí pomocou rozhrania Dark Sky API: 5 krokov (s obrázkami)
Vytvorte informačný panel o počasí pomocou rozhrania Dark Sky API: Dark Sky sa špecializuje na predpovedanie počasia a vizualizáciu. Najlepším aspektom Dark Sky je ich API pre počasie, ktoré môžeme použiť na získanie údajov o počasí takmer z akéhokoľvek miesta na svete. Nie je to len daždivé alebo slnečné počasie, ale aj teplota