Sisukord:
- Samm: riistvara ja tarkvara spetsifikatsioon
- 2. toiming: kasutaja mandaatide salvestamine
- 3. samm: veebivormi seadistamine SPIFFS -is
- 4. samm: ülesannete ajastamine
- Samm: temperatuuri ja niiskuse väärtuste lugemine SHT25 -st
- 6. samm: väärtuste avaldamine ThingSpeak'is, kasutades ThingSpeak MQTT API -d
- Samm: ilmateate e -posti teatis
- 8. samm: üldine kood
Video: Ilmateade ThingSpeak MQTT ja IFTTT aplettide abil: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Sissejuhatus
Pilvepõhine ilmarakendus, mis pakub meiliteatisena igapäevaseid ilmateateid. See veebirakendus mõõdab temperatuuri ja niiskust, kasutades SHT25 ja Adafruit Huzzah ESP8266. See pakub meile reaalajas andmeid temperatuuri ja niiskuse kohta ning tunni analüüse. Andmete saatmiseks kasutatakse ThingSpeak MQTT API -d ja hiljem saadame kasutajale e -posti teel märguande, kui temperatuur jõuab IFTTT -protokolli abil määratud künniseni. SHT25 on Sensirioni toodetud temperatuuri ja niiskuse andurid. SHT25 pakub kõrget täpsust ± 2% RH. Selle niiskus on vahemikus 0 kuni 100% ja temperatuurivahemik -40 kuni 125 ° C. See on 8 sekundi anduri reageerimisajaga palju usaldusväärsem ja kiirem.
Funktsioonid
- Pakub teile reaalajas analüüse ja statistikat, kasutades Thing Speak MQTT API-d
- IFTTT abil antakse kasutajale määratud ajal e -posti märguanne
- Ülesannete plaanijat kasutatakse ülesande ajastamiseks, näiteks andurite andmete toomine, andurite näitude avaldamine, MQTT teema tellimine
- See kasutab I2C protokolli anduri näidu hankimiseks, mis on täpsem, laiendatav ja skaleeritav
- unerežiimis, kui seade on jõudeolekus või üleskutsele tagasi ei helistata.
- tõhus ülesannete ajastamine tagab probleemideta kasutamise
- Hostitakse eraldi veebileht, kus kasutaja peab esitama oma kasutaja mandaadi, et vältida seadme vilkumist iga kord, kui jõuate teiste WiFi -võrkude juurde
- SPIFFS -i kasutatakse meie veebisaidi salvestamiseks, et muuta meie kood loetavaks ja vähem kohmakaks
Samm: riistvara ja tarkvara spetsifikatsioon
Riistvara spetsifikatsioon
- Adafruit esp8266 Huzzah pardal
- Huzzah Board Shield
- SHT25 andurimoodul
- I2C kaabel
Tarkvara spetsifikatsioon
- Arduino IDE
- IFTTT Thing Speak
- MQTT API
2. toiming: kasutaja mandaatide salvestamine
Siin kasutame SHT25 I2C andurit, et lugeda temperatuuri ja suhtelise niiskuse reaalajas väärtust ning postitada need väärtused pilve. Aeg -ajalt värskendatud anduri väärtuse saamiseks ja nende värskenduste samaaegseks postitamiseks kasutame Arduino ülesannete ajakava raamatukogu. Pilvetoimingute jaoks kasutame ThingSpeak MQTT API -d. Hiljem esitame IFTTT apletide abil kasutajale reaalajas ilmateate. Saate oma ilmajaama koostamiseks järgida neid samme. Niisiis, DIY.
Enne kui edasi minna. Peame salvestama kasutaja mandaadi. Sel eesmärgil majutame veebiserverit aadressil 192.169.1.4. Oleme oma veebivormi salvestanud SPIFFS -i. Kui seade käivitub, võõrustab see 60 sekundit veebiserverit. Kasutaja peaks neid samme järgima.
- Ühendage AP ESPuseriga, see on loetletud teie saadaolevate WiFi -võrkude loendis. Looge ühendus selle AP -ga ja sisestage parool "*******"
- Kui see on ühendatud, minge oma brauserisse ja sisestage IP 192.168.1.4.
- Sisestage sisestusväljadele oma kohaliku WiFi SSID ja parool ning sisestage SUBMIT
- Need mandaadid salvestatakse EEPROM -i
- 60 sekundi pärast katkeb seade AP-st automaatselt
- Järgmine kord, kui seadme sisse lülitate, ei pea kasutaja seda protseduuri järgima. Seade otsib automaatselt kasutaja mandaadi EEPROM -ist ja jätkab andurite näitude hankimist I2C -liideselt ja postitamist pilve
// --------- AP konfiguratsioon ------------ // IPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0);
Serial.print ("Pöörduspunkti seadistamine …");
WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
Serial.print ("Kasutaja mandaadi seadistamine");
WiFi.softAP (ssidAP, passAP);
server.on ("/", handleRoot);
server.onNotFound (onHandleNotFound);
server.begin ();
APTimer = millis ();
while (millis ()-APTimer <APIvaheaeg) {
server.handleClient ();
}
// **************************** KÄSITSEJUUR ****************** ********* // void handleRoot () {
if (server.hasArg ("ssid") && server.hasArg ("parool"))
{
// Kui kõik vormiväljad sisaldavad andmekõnet
handelSubmit ()
handleSubmit (); }
muu {
// Kuva vorm uuesti
// lugeda spiffides sisalduvat faili
Failifail = SPIFFS.open ("/webform.html", "r");
server.streamFile (fail, "tekst/html");
// ärge unustage faili sulgeda
file.close ();
}}
// Kontrollige olekut, et sellel on argumendid ssid ja parool
// Seejärel kirjuta volikirjad ROMile
ROMwrite (String (server.arg ("ssid")), String (server.arg ("parool")))
3. samm: veebivormi seadistamine SPIFFS -is
SPIFFS
Serial Peripheral Interface Flash File System ehk lühidalt SPIFFS. See on kerge failisüsteem SPI välklambiga mikrokontrolleritele. ESP8266 pardal oleval välklambil on teie veebilehtede jaoks palju ruumi, eriti kui teil on versioon 1 MB, 2 MB või 4 MB. Oleme oma veebilehe ka Flash -süsteemi salvestanud. Andmete üleslaadimiseks spiffidesse peame järgima mõningaid samme
- Laadige tööriist alla:
- Looge oma Arduino visandiraamatu kataloogis tööriistade kataloog, kui seda veel pole
- Pakkige tööriist tööriistade kataloogi (tee näeb välja /Arduino/tools/ESP8266FS/tool/esp8266fs.jar)
- Taaskäivitage Arduino IDE
- Avage visand (või looge uus ja salvestage see)
- Minge visandikataloogi (valige Visand> Kuva visandikaust)
- Looge seal failisüsteemis kataloog nimega andmed ja kõik failid, mida soovite. Laadisime üles oma HTML -lehe nimega webform.html
- Veenduge, et olete valinud tahvli, pordi ja suletud jadamonitori
- Valige Tööriistad> ESP8266 Sketch Data Upload. See peaks alustama failide üleslaadimist välkfailisüsteemi ESP8266. Kui see on tehtud, kuvatakse IDE olekuribal teade SPIFFS Image Uploaded.
Failifail = SPIFFS.open ("/webform.html", "r");
server.streamFile (fail, "tekst/html");
// ärge unustage faili sulgeda
file.close ();
4. samm: ülesannete ajastamine
Selles õpetuses teeme kahte toimingut:
- Lugege SHT25 andmeid I2C protokolli abil
- Postitage värskendatud andmed pilve, kasutades ThingSpeak MQTT API -d
Selle saavutamiseks kasutame TaskScheduleri teeki. Oleme kavandanud kaks erinevat ülesannet, mis viitavad kahele erinevale kontrollitoimingule. seda tehakse järgmiselt
- Ülesanne 1 on anduri väärtuse lugemiseks, see ülesanne kestab 1 sekund, kuni see jõuab 10 sekundi aegumiseni.
- Kui ülesanne 1 jõuab aegumiseni, loome ühenduse kohaliku Wifi ja MQTT maakleriga.
- Nüüd on ülesanne 2 lubatud ja keelame ülesande 1.
- Kui ülesanne 2 jõuab oma aegumiseni, on ülesanne 1 uuesti lubatud ja ülesanne 2 keelatud. jälle saame siin värskendatud väärtuse ja protsess läheb edasi
- kui tagasihelistamisele ei helistata või seade on jõudeolekus, läheb see valgusrežiimi, säästes seega energiat.
// --------- ülesande tagasihelistamise prototüüp ------------ //
tühine ülesanneI2CCallback ();
void taskI2CDisable ();
tühine ülesanneWiFiCallback ();
tühine ülesanneWiFiDisable ();
// --------- Ülesanded ------------ //
Ülesanne tI2C (2 * TASK_SECOND, TASK_FOREVER ja & taskI2CCallback, & ts, false, NULL ja taskI2CDisable);
Task tWiFi (20* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL ja & taskWiFiDisable);
// lubada tI2C tI2C.enable ();
Samm: temperatuuri ja niiskuse väärtuste lugemine SHT25 -st
I2C on kahejuhtmeline liides, mis kasutab põhiseadmega suhtlemiseks ainult kahte juhtmest. Üks neist on SCL (jadakell) ja teine SDA (jadaandmed). Igal alamseadmel on ainulaadne aadress. SHT 25-l on ka 8-bitine aadress ja sellele pääseb juurde 0x44 aadressiga. sellel on 8 bitti aadressist, kus tegelik aadress on 7 bitti ja parempoolsemat LSB -bitti 0 kasutatakse seadme lugemise või seadmesse kirjutamise signaalimiseks. Kui bit 0 on seatud väärtusele 1, loeb põhiseade alamseadmest I2C. I2C on palju usaldusväärsem, skaleeritavam ja kiirem ning isegi sellel on palju töörežiime, mis muudab selle palju energiasäästlikumaks
Temperatuuri ja niiskuse väärtuste lugemiseks kasutame Wire.h raamatukogu. See teek hõlbustab i2c suhtlust anduri ja põhiseadme vahel. 0x44 on SHT25 I2C -aadress. SHT25 töötab erinevas töörežiimis. Selle jaoks saate viidata andmelehele. Kasutame ühe võtte tegemiseks vastavalt MSB ja LSB -d vastavalt 0x2C ja 0x06
6. samm: väärtuste avaldamine ThingSpeak'is, kasutades ThingSpeak MQTT API -d
Temperatuuri ja niiskuse väärtuste pilve postitamiseks kasutame ThingSpeak MQTT API -d. ThingSpeak on IoT platvorm. ThingSpeak on tasuta veebiteenus, mis võimaldab teil andurite andmeid pilve koguda ja salvestada. MQTT on IoT-süsteemides levinud protokoll madala taseme seadmete ja andurite ühendamiseks. MQTT -d kasutatakse lühisõnumite edastamiseks maaklerile ja maaklerilt. ThingSpeak on hiljuti lisanud MQTT maakleri, et seadmed saaksid ThingSpeakile sõnumeid saata. Sellest postitusest saate ThingSpeak Channeli seadistamiseks järgida protseduuri
ThingSpeak MQTT
MQTT on avaldamise/tellimise arhitektuur, mis on välja töötatud peamiselt ribalaiuse ja piiratud võimsusega seadmete ühendamiseks traadita võrkude kaudu. See on lihtne ja kerge protokoll, mis töötab üle TCP/IP -pesade või WebSocketide. MQTT -d WebSocketsi kaudu saab kaitsta SSL -iga. Avaldamise/tellimise arhitektuur võimaldab sõnumeid kliendiseadmetesse edastada, ilma et seade peaks serverit pidevalt küsitlema. Klient on mis tahes seade, mis loob vahendajaga ühenduse ja saab teabele juurdepääsemiseks teemasid avaldada või tellida. Teema sisaldab maakleri marsruutimisteavet. Iga klient, kes soovib sõnumeid saata, avaldab need teatud teemal ja iga klient, kes soovib sõnumeid saada, tellib teatud teema
Avaldage ja tellige ThingSpeak MQTT abil
- Avaldamine kanalite kanalite kanalites /avaldamine /
- Avaldamine teatud väljale kanalites/avaldamine/väljad/väli/
- Tellige kanalivälja kanalid/tellige //
- Telli privaatse kanali voo kanalid // telli/väljad/väli/
- Tellige kõik kanali väljad. kanalid // tellida/fields/feild/
tühine ülesanneWiFiCallback ()
{
Serial.println ("taskWiFiCallbackStarted");
Serial.print ("selle ülesande ajalõpp: / t");
Serial.println (tWiFi.getTimeout ());
kui (! mqttCli.connected ())
{
Serial.println ("Klient pole ühendatud");
taasühendageMQTT ();
}
String teemaString = "kanalid/"+String (kanaliID)+"/avaldada/"+String (writeAPIKey);
int topicPikkus = topicString.length ()+1;
char teemaPuhver [teemaPikkus];
topicString.toCharArray (topicBuffer, topicPikkus+1);
Serial.println (topicBuffer);
String dataString = String ("field1 =" + String (tempC, 1) + "& field2 =" + String (tempF, 1) + "& field3 =" + String (niiske, 1));
int dataLength = dataString.length ()+1;
bait dataBuffer [dataLength];
dataString.getBytes (dataBuffer, dataLength);
mqttCli.beginPublish (topicBuffer, dataLength, false);
Serial.println (mqttCli.write (dataBuffer, dataLength)? "Avaldatud": "avaldatud ebaõnnestus");
mqttCli.endPublish ();
//mqttCli.loop ();
}
Samm: ilmateate e -posti teatis
Kasutame IFTTT aplette, et anda reaalajas ilmateade kasutajale e-posti teel. Niisiis, oleme selle ThingSpeaki kaudu rakendanud. Keskmistame temperatuuri ja niiskuse viiekordse väärtuse. Kui viimase kirje väärtus on keskmisest suurem. See käivitab meiliteatise "see on kuum päev". ja kui see on keskmisest väiksem. See käivitab meiliteatise "Milline ilus päev". Iga päev kell 10.00 (IST) saame meili teel märguande
kanali ID = ******;
iftttURL = 'https://maker.ifttt.com/**************';
niiskuseandmed = asiSpeakRead (kanali ID, 'väljad', 3, 'numbripäevad', 5); tempData = thingSpeakRead (kanali ID, 'väljad', 1, 'numbripäevad', 5);
perHumid = max (niiskuseandmed) -min (niiskuseandmed);
humidValue = 0,1*perHumid+min (niiskuseandmed);
perTemp = max (tempData) -min (tempData);
tempValue = 0,1*perTemp+min (tempData);
urlTemp = strcat ('https://api.thingspeak.com/channels/', string (kanali ID), '/fields/1/last.txt');
urlHumid = strcat ('https://api.thingspeak.com/channels/', string (kanali ID), '/fields/3/last.txt'); lastTempValue = str2num (veebilugemine (urlTemp)); lastHumidValue = str2num (veebilugemine (urlHumid));
if (lastTempValue
if (lastTempValue> tempValue || lastHumidValue> humidValue)
plantMessage = 'On kuum päev.'; webwrite (iftttURL, 'value1', plantMessage, 'value2', lastTempValue, 'value3', lastHumidValue); lõpp
8. samm: üldine kood
Üldine kood
Üldine kood on saadaval selles GitHubi hoidlas
Piirangud
- Andmete avaldamisel, kasutades suure osa andmete avaldamise meetodit, on mõningaid probleeme. Selle probleemi lahendamiseks kasutame funktsiooni write ()
- Enne uute andmete SPIFFS -i üleslaadimist tuleb SPIFFS vormindada.
- Funktsiooni delay () kasutamine on keelatud. delay () takistab taustal toimimist. Selle asemel looge viivitusi millis () abil, kui see on vajalik
Autorid
- ESP826WebServer
- Ülesannete planeerija
- SHT 25
- ThingSpeak MQTT API
- IFTTT
- PubSubClient
Soovitan:
Lihtne ilmateade, kasutades Raspberry PI ja Cyntech WeatherHAT: 4 sammu
Lihtne ilmakuva Raspberry PI ja Cyntech WeatherHAT abil: * 2019. aastal muutis Yahoo oma API -d ja see lakkas töötamast. Ma ei olnud muutusest teadlik. Aasta septembris uuendati seda projekti, et kasutada OPENWEATHERMAP API -d. Vaadake allpool olevat värskendatud jaotist, ülejäänud teave on endiselt hea
TTS ilmateade: 5 sammu
TTS Ilmateade: Tavaliselt otsustan enne väljaminekut, kas tuua vihmavari ilmaolude põhjal. Kunagi tegin valesid otsuseid, sest ilm oli viimase kahe nädala jooksul muutlik out väljas käies oli päikseline, et ei võtnud vihmavarju kaasa ja
Ühendkuningriigi rongi- ja ilmateade: 5 sammu
Ühendkuningriigi rongi- ja ilmakuva: see juhend on mõeldud patareitoitega Ühendkuningriigi rongide väljumiste ja ilmastiku kuva jaoks. See kasutas National Rail OpenLDBWS andmebaasi, et saada konkreetse kohaliku raudteejaama kohta reaalajas teavet rongi väljumise kohta ja seda kuvada. See kasutab avatud ilma
ESP32 -põhine M5Stack M5stick C ilmateade koos DHT11 -ga - Jälgige temperatuuri niiskuse ja kuumuse indeksit mudelil M5stick-C koos DHT11-ga: 6 sammu
ESP32 -põhine M5Stack M5stick C ilmateade koos DHT11 -ga | Jälgige temperatuuri niiskuse ja kuumuse indeksit M5stick-C-l DHT11 abil: Tere poisid, selles juhendis õpime, kuidas ühendada DHT11 temperatuuriandur m5stick-C-ga (m5stacki arendusplaat) ja kuvada see m5stick-C ekraanil. Nii loeme selles õpetuses temperatuuri, niiskust ja amp; ma kuumutan
SIM900 GSM -põhine ilmateade: 3 sammu (koos piltidega)
SIM900 GSM -põhine ilmateade: me vajame oma mobiiltelefonis alati ilmateateid. See võib olla kas veebirakendusest või süsteemirakendusest, mis kasutab Internetti. Kuid siin näitan teile viisi, kuidas kasutada meie mobiiltelefonide tekstisõnumite funktsiooni temperatuuri ja niiskuse värskenduste saamiseks, saate