Sisällysluettelo:
- Vaihe 1: Laitteisto- ja ohjelmistomääritykset
- Vaihe 2: Käyttäjätietojen tallentaminen
- Vaihe 3: Verkkolomakkeen määrittäminen SPIFFS -muodossa
- Vaihe 4: Tehtävien ajoitus
- Vaihe 5: Lämpötila- ja kosteusarvojen lukeminen SHT25: stä
- Vaihe 6: Arvojen julkaiseminen ThingSpeakiin ThingSpeak MQTT -sovellusliittymän avulla
- Vaihe 7: Sääilmoituksen sähköposti -ilmoitus
- Vaihe 8: Yleinen koodi
Video: Säätiedotus käyttämällä ThingSpeak MQTT- ja IFTTT -sovelmia: 8 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Johdanto
Pilvipohjainen sääsovellus, joka tarjoaa päivittäiset sääraportit sähköposti-ilmoituksena. Tämä verkkosovellus mittaa lämpötilan ja kosteuden käyttämällä SHT25 ja Adafruit Huzzah ESP8266. Se tarjoaa meille reaaliaikaisia lämpötila- ja kosteustietoja sekä tuntikohtaisia analyysejä. Tiedot lähetetään ThingSpeak MQTT API -sovellusliittymän avulla ja myöhemmin lähetämme käyttäjälle sähköposti -ilmoituksen aina, kun lämpötila saavuttaa määritetyn kynnyksen IFTTT -protokollaa käyttäen. SHT25 on Sensirionin valmistama lämpötila- ja kosteusanturi. SHT25 tarjoaa korkean tarkkuuden noin ± 2% RH. Sen kosteusalue on 0-100% ja lämpötila -alue -40-125 ° C. Se on paljon luotettavampi ja nopeampi, kun anturin vasteaika on 8 sekuntia.
ominaisuudet
- Tarjoaa reaaliaikaisia analyysejä ja tilastoja Thing Speak MQTT -sovellusliittymän avulla
- Sähköposti -ilmoitus toimitetaan käyttäjälle määrättynä ajankohtana IFTTT: n avulla
- Tehtävien ajoitustoimintoa käytetään tehtävän ajoitukseen, kuten tietojen noutamiseen antureista, anturilukemien julkaisemiseen, MQTT -aiheen tilaamiseen
- Se käyttää I2C -protokollaa anturilukeman noutamiseen, joka on tarkempi, laajennettavissa ja skaalautuva
- lepotilaan, kun laite on käyttämättömänä tai ei soita takaisin tehtävään.
- tehokas tehtävien ajoitus tarjoaa vaivatonta käyttöä
- Erillistä verkkosivua isännöidään, jossa käyttäjän on annettava käyttäjätiedot, jotta laite ei vilku aina, kun se on muiden wifi -verkkojen ulottuvilla
- SPIFFS: ää käytetään verkkosivustomme tallentamiseen, jotta koodimme olisi luettavissa ja vähemmän kömpelö
Vaihe 1: Laitteisto- ja ohjelmistomääritykset
Laitteiston tekniset tiedot
- Adafruit esp8266 Huzzah -taulu
- Huzzah Board Shield
- SHT25 -anturimoduuli
- I2C -kaapeli
Ohjelmiston tiedot
- Arduino IDE
- IFTTT Thing Speak
- MQTT -sovellusliittymä
Vaihe 2: Käyttäjätietojen tallentaminen
Tässä käytämme SHT25 I2C -anturia lämpötilan ja suhteellisen kosteuden reaaliaikaisen arvon lukemiseen ja julkaisemme nämä arvot pilveen. Saadaksemme päivitetyn anturin arvon ajoittain ja lähettääksemme nämä päivitykset samanaikaisesti käytämme Arduinon Task Scheduler -kirjastoa. Pilvitoiminnoissa käytämme ThingSpeak MQTT -sovellusliittymää. Myöhemmin tarjoamme käyttäjälle reaaliaikaisen sääraportin IFTTT-sovelmien avulla. Voit tehdä oman sääaseman noudattamalla näitä ohjeita. Joten, DIY.
Ennen kuin jatkat eteenpäin. Meidän on tallennettava käyttäjätiedot. Tätä varten isännöimme verkkopalvelinta osoitteessa 192.169.1.4. Olemme tallentaneet verkkolomakkeemme SPIFFS -tiedostoon. Kun laite käynnistyy, se isännöi verkkopalvelinta 60 sekunnin ajan. Käyttäjän tulee noudattaa näitä ohjeita.
- Muodosta yhteys AP ESPuseriin, tämä on käytettävissä olevien wifi -verkkojen luettelossa. Yhdistä tähän tukiasemaan ja kirjoita salasana "*******"
- Kun se on yhdistetty, siirry selaimeesi ja kirjoita IP 192.168.1.4.
- Kirjoita paikallisen WiFi -verkon SSID ja salasana syöttökenttiin ja kirjoita LÄHETÄ
- Nämä kirjautumistiedot tallennetaan EEPROMiin
- 60 sekunnin kuluttua laite katkaisee yhteyden AP: hen automaattisesti
- Seuraavan kerran, kun käynnistät laitteen, käyttäjän ei tarvitse noudattaa tätä menettelyä, laite hakee automaattisesti käyttäjän tunnistetiedot EEPROMista ja jatkaa anturilukemien hankkimista I2C -käyttöliittymästä ja julkaisemisen pilveen
// --------- AP-asetukset ------------ // IPAdd ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0);
Serial.print ("Tukiaseman määrittäminen …");
WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
Serial.print ("Käyttäjätunnusten määrittäminen");
WiFi.softAP (ssidAP, passAP);
server.on ("/", handleRoot);
server.onNotFound (onHandleNotFound);
server.begin ();
APTimer = millis ();
while (millis ()-APTimer <APInterval) {
server.handleClient ();
}
// **************************** KAHVAN JUURI ****************** ********* // void handleRoot () {
if (server.hasArg ("ssid") && server.hasArg ("salasana"))
{
// Jos kaikki lomakekentät sisältävät datapuhelun
handelLähetä ()
handleSubmit (); }
muu {
// Näytä lomake uudelleen
// lukee spiffien sisältämän tiedoston
Tiedostotiedosto = SPIFFS.open ("/webform.html", "r");
server.streamFile (tiedosto, "teksti/html");
// älä unohda sulkea tiedostoa
file.close ();
}}
// Tarkista tila, jossa on argumentit ssid ja password
// Kirjoita sitten kirjautumistiedot ROM -levylle
ROMwrite (Jono (server.arg ("ssid")), String (server.arg ("salasana")))
Vaihe 3: Verkkolomakkeen määrittäminen SPIFFS -muodossa
SPIFFS
Serial Peripheral Interface Flash File System tai lyhyesti SPIFFS. Se on kevyt tiedostojärjestelmä mikro-ohjaimille, joissa on SPI-flash-siru. ESP8266: n sisäisessä flash -sirussa on runsaasti tilaa verkkosivuillesi, varsinkin jos sinulla on 1 Mt, 2 Mt tai 4 Mt versio. Olemme myös tallentaneet verkkosivumme Flash -järjestelmään. Meidän on noudatettava muutamia vaiheita, jotta voimme ladata tietoja spiff -tiedostoihin
- Lataa työkalu:
- Luo työkaluhakemisto Arduino -luonnoskirjahakemistoosi, jos sitä ei vielä ole
- Pura työkalu työkalut -hakemistoon (polku näyttää /Arduino/tools/ESP8266FS/tool/esp8266fs.jar)
- Käynnistä Arduino IDE uudelleen
- Avaa luonnos (tai luo uusi ja tallenna se)
- Siirry luonnoshakemistoon (valitse Luonnos> Näytä luonnoskansio)
- Luo hakemisto nimeltä data ja kaikki tiedostot, jotka haluat siellä olevaan tiedostojärjestelmään. Olemme ladanneet HTML -sivumme, jonka nimi on webform.html
- Varmista, että olet valinnut piirilevyn, portin ja suljetun sarjamonitorin
- Valitse Työkalut> ESP8266 Sketch Data Upload. Tämän pitäisi aloittaa tiedostojen lataaminen ESP8266 flash -tiedostojärjestelmään. Kun olet valmis, IDE -tilarivillä näkyy SPIFFS Image Uploaded -viesti.
Tiedostotiedosto = SPIFFS.open ("/webform.html", "r");
server.streamFile (tiedosto, "teksti/html");
// älä unohda sulkea tiedostoa
file.close ();
Vaihe 4: Tehtävien ajoitus
Tässä opetusohjelmassa suoritamme kaksi toimintoa:
- Lue SHT25: n tiedot I2C -protokollan avulla
- Lähetä päivitetyt tiedot pilveen ThingSpeak MQTT -sovellusliittymän avulla
Tämän saavuttamiseksi käytämme TaskScheduler -kirjastoa. Olemme suunnitelleet kaksi eri tehtävää, jotka viittaavat kahteen erilaiseen ohjaustoimintoon. tämä tehdään seuraavasti
- Tehtävä 1 on anturin arvon lukemiseen, tämä tehtävä kestää 1 sekunnin, kunnes se saavuttaa 10 sekunnin aikakatkaisun.
- Kun Task1 saavuttaa aikakatkaisunsa Yhdistämme paikalliseen Wifi- ja MQTT -välittäjään.
- Tehtävä 2 on nyt käytössä ja poistamme käytöstä Tehtävä 1 Tehtävä 2 on anturitietojen julkaiseminen Thing Speak MQTT -välittäjälle, tämä tehtävä kestää 20 sekuntia, kunnes se saavuttaa 20 sekunnin aikakatkaisun
- Kun Task2 saavuttaa aikakatkaisunsa, tehtävä 1 otetaan uudelleen käyttöön ja tehtävä 2 on poistettu käytöstä. täällä taas saamme päivitetyn arvon ja prosessi jatkuu
- kun takaisinsoittoa ei soiteta tai laite on käyttämättömänä, se siirtyy Light Sleep -tilaan, mikä säästää virtaa.
// --------- tehtävän soittamisen prototyyppi ------------ //
mitätön tehtäväI2CCallback ();
void taskI2CDisable ();
mitätön tehtäväWiFiCallback ();
void taskWiFiDisable ();
// --------- Tehtävät ------------ //
Tehtävä tI2C (2 * TASK_SECOND, TASK_FOREVER ja & taskI2CCallback, & ts, false, NULL ja taskI2CDisable);
Tehtävä tWiFi (20* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL ja taskWiFiDisable);
// käyttöön tI2C tI2C.enable ();
Vaihe 5: Lämpötila- ja kosteusarvojen lukeminen SHT25: stä
I2C on kaksijohtiminen liitäntä, joka käyttää vain kahta johdinta kommunikoidakseen päälaitteen kanssa. Toinen on SCL (Serial Clock) ja toinen SDA (Serial Data). Jokaisella orjalaitteella on yksilöllinen osoite. SHT 25: llä on myös 8-bittinen osoite, ja siihen pääsee 0x44-osoitteella. sillä on 8 bittiä osoitetta, jossa 7 bittiä ovat todellinen osoite, ja kun taas oikeanpuoleista LSB -bittiä 0 käytetään signaalin lukemiseen laitteesta tai kirjoittamiseen laitteesta. Jos bitti 0 on asetettu arvoon 1, isäntälaite lukee orja I2C -laitteesta. I2C on paljon luotettavampi, skaalautuvampi ja nopeampi, ja jopa sillä on monia toimintatiloja, mikä tekee siitä paljon energiatehokkaampaa
Käytämme Wire.h -kirjastoa lämpötila- ja kosteusarvojen lukemiseen. Tämä kirjasto helpottaa i2c -tiedonsiirtoa anturin ja päälaitteen välillä. 0x44 on SHT25: n I2C -osoite. SHT25 toimii eri toimintatilassa. Voit viitata siihen tietolomakkeeseen. Käytämme 0x2C: tä ja 0x06 MSB: nä ja LSB: nä vastaavasti yhden laukauksen toiminnassa
Vaihe 6: Arvojen julkaiseminen ThingSpeakiin ThingSpeak MQTT -sovellusliittymän avulla
Lämpötila- ja kosteusarvojen lähettämiseen pilveen käytämme ThingSpeak MQTT -sovellusliittymää. ThingSpeak on IoT -alusta. ThingSpeak on ilmainen verkkopalvelu, jonka avulla voit kerätä ja tallentaa anturitietoja pilveen. MQTT on yleinen protokolla, jota käytetään IoT-järjestelmissä matalan tason laitteiden ja antureiden yhdistämiseen. MQTT: tä käytetään välittämään lyhytsanomia välittäjälle ja välittäjältä. ThingSpeak on äskettäin lisännyt MQTT -välittäjän, jotta laitteet voivat lähettää viestejä ThingSpeakille. Voit seurata ThingSpeak -kanavan määrittämistä tästä viestistä
ThingSpeak MQTT
MQTT on julkaisu/tilausarkkitehtuuri, joka on kehitetty ensisijaisesti kaistanleveyden ja tehonrajoitteisten laitteiden yhdistämiseksi langattomien verkkojen kautta. Se on yksinkertainen ja kevyt protokolla, joka toimii TCP/IP -pistorasioiden tai WebSockets -kanavien yli. MQTT WebSocketsin kautta voidaan suojata SSL: llä. Julkaise/tilaa tilausarkkitehtuuri mahdollistaa viestien siirtämisen asiakaslaitteisiin ilman, että laitteen tarvitsee jatkuvasti kysyä palvelinta. Asiakas on mikä tahansa laite, joka muodostaa yhteyden välittäjään ja voi julkaista tai tilata aiheita päästäkseen käsiksi tietoihin. Aihe sisältää välittäjän reititystiedot. Jokainen asiakas, joka haluaa lähettää viestejä, julkaisee ne tiettyyn aiheeseen, ja jokainen asiakas, joka haluaa vastaanottaa viestejä, tilaa tietyn aiheen
Julkaise ja tilaa ThingSpeak MQTT: llä
- Julkaiseminen kanavasyötteen kanaville /julkaisu /
- Julkaiseminen tietylle kenttäkanavalle/julkaisu/kentät/kenttä/
- Tilaa kanavakenttäkanavat/tilaa //
- Tilaa yksityiset kanavasyötteen kanavat // tilaa/kentät/kenttä/
- Tilaa kaikki kanavan kentät. kanavat // tilaa/kentät/feild/
tyhjä tehtäväWiFiCallback ()
{
Serial.println ("taskWiFiCallbackStarted");
Serial.print ("tämän tehtävän aikakatkaisu: / t");
Serial.println (tWiFi.getTimeout ());
jos (! mqttCli.connected ())
{
Serial.println ("Asiakas ei ole yhteydessä");
yhdistä uudelleenMQTT ();
}
String topicString = "kanavat/"+Jono (kanavatunnus)+"/julkaise/"+Jono (writeAPIKey);
int topicPituus = topicString.length ()+1;
char topicBuffer [topicPituus];
topicString.toCharArray (topicBuffer, topicPituus+1);
Serial.println (topicBuffer);
String dataString = Jono ("field1 =" + String (tempC, 1) + "& field2 =" + String (tempF, 1) + "& field3 =" + String (kostea, 1));
int dataLength = dataString.length ()+1;
tavu dataBuffer [dataLength];
dataString.getBytes (dataBuffer, dataLength);
mqttCli.beginPublish (topicBuffer, dataLength, false);
Serial.println (mqttCli.write (dataBuffer, dataLength)? "Julkaistu": "julkaistu epäonnistui");
mqttCli.endPublish ();
//mqttCli.loop ();
}
Vaihe 7: Sääilmoituksen sähköposti -ilmoitus
Käytämme IFTTT-sovelmia reaaliaikaisen sääilmoituksen lähettämiseen käyttäjälle sähköpostitse. Olemme siis toteuttaneet sen ThingSpeakin kautta. Laskemme lämpötilan ja kosteuden viiden vaiheen arvot keskimäärin. Aina kun viimeisen merkinnän arvo on keskiarvoa suurempi. Se laukaisee sähköposti -ilmoituksen "on kuuma päivä". ja kun se on pienempi kuin keskiarvo. Se lähettää sähköposti -ilmoituksen "Mikä kaunis päivä". Saamme sähköposti -ilmoituksen joka päivä noin klo 10.00 (IST)
kanavatunnus = ******;
iftttURL = 'https://maker.ifttt.com/**************' ';
kosteustiedot = asiaSpeakRead (kanavan tunnus, 'Kentät', 3, 'NumDays', 5); tempData = thingSpeakRead (kanavan tunnus, 'Kentät', 1, 'NumDays', 5);
perHumid = max (kosteustiedot) -min (kosteustiedot);
kosteusarvo = 0,1*perHumid+min (kosteustiedot);
perTemp = max (tempData) -min (tempData);
tempValue = 0,1*perTemp+min (tempData);
urlTemp = strcat ('https://api.thingspeak.com/channels/', merkkijono (kanavan tunnus), '/fields/1/last.txt');
urlHumid = strcat ('https://api.thingspeak.com/channels/', merkkijono (kanavan tunnus), '/fields/3/last.txt'); lastTempValue = str2num (webread (urlTemp)); lastHumidValue = str2num (webread (urlHumid));
if (lastTempValue
if (lastTempValue> tempValue || lastHumidValue> humidValue)
plantMessage = 'On kuuma päivä.'; webwrite (iftttURL, 'value1', plantMessage, 'value2', lastTempValue, 'value3', lastHumidValue); loppuun
Vaihe 8: Yleinen koodi
Yleinen koodi
Yleinen koodi on saatavilla tässä GitHub -arkistossa
Rajoitukset
- Tietojen julkaisemisessa käyttämällä julkaisumenetelmää suurelle osalle tietoja on ongelmia. Tämän ongelman ratkaisemiseksi käytämme write () -toimintoa
- SPIFFS on alustettava ennen uusien tietojen lataamista SPIFFS: ään.
- Älä käytä delay () -toimintoa. delay () estää taustatoiminnon. Luo sen sijaan viiveitä millis () -merkillä vain, jos se on tarpeen
Laajuus
- ESP826WebServer
- Tehtävien ajoitus
- SHT 25
- ThingSpeak MQTT API
- IFTTT
- PubSubClient
Suositeltava:
ThingSpeak käyttämällä ESP8266: 8 vaihetta
ThingSpeak ESP8266: n avulla: Nämä ovat ohjeet ESP32: n käyttämiseen tietojen lähettämiseen Thing Speakiin (MQTT Broker) ja vain valvottujen tietojen katseluun tai verkkosivustosi tietojen käyttämiseen tai projektin laajentamiseen
Lämpötila ja kosteus käyttämällä ESP32-DHT22-MQTT-MySQL-PHP: 7 vaihetta
Lämpötila ja kosteus ESP32-DHT22-MQTT-MySQL-PHP: n avulla: Tyttöystäväni halusi kasvihuoneen, joten tein hänelle sellaisen. Halusin kuitenkin lämpötila- ja kosteusanturin kasvihuoneeseen. Joten, googletin esimerkkejä ja aloin kokeilla. Päätelmäni oli, että kaikki löytämäni esimerkit eivät olleet aivan
ThingSpeak-IFTTT-ESP32-Ennakoivan koneen valvonta: 10 vaihetta
ThingSpeak-IFTTT-ESP32-Predictive-Machine-Monitoring: Tässä projektissa mitataan tärinää ja lämpötilaa käyttämällä NCD-tärinä- ja lämpötila-anturia, ESP32: ta ja ThingSpeakia. vibrin analysoimiseksi
ThingSpeak, IFTTT, lämpötila- ja kosteusanturi ja Google -taulukko: 8 vaihetta
ThingSpeak, IFTTT, lämpötila- ja kosteusanturi ja Google -taulukko: Tässä projektissa mitataan lämpötila ja kosteus käyttämällä NCD -lämpötila- ja kosteusanturia, ESP32: ta ja ThingSpeakia. Lähetämme myös erilaisia lämpötila- ja kosteuslukuja Google Sheetille ThingSpeakin ja IFTTT: n avulla analysoidaksesi
Pieni palohälytysilmaisin Esp8266 MQTT IFTTT Kotiautomaatio: 4 vaihetta
Pieni palohälytysilmaisin Esp8266 MQTT IFTTT Home Automation: Halusin havaita, onko kotini savuilmaisinjärjestelmä hälytyksessä. Minulla on kotona kahdeksan savunilmaisinta ja ne on kytketty toisiinsa. Jos toinen savuilmaisin on hälytyksessä, toinen saa signaalin yhdyssignaalijohdon kautta. Anturini lukee