Orodha ya maudhui:

Ripoti ya Hali ya Hewa Kutumia ThingSpeak MQTT na IFTTT Applets: Hatua 8
Ripoti ya Hali ya Hewa Kutumia ThingSpeak MQTT na IFTTT Applets: Hatua 8

Video: Ripoti ya Hali ya Hewa Kutumia ThingSpeak MQTT na IFTTT Applets: Hatua 8

Video: Ripoti ya Hali ya Hewa Kutumia ThingSpeak MQTT na IFTTT Applets: Hatua 8
Video: Overview of Syncopal Disorders 2024, Novemba
Anonim
Ripoti ya Hali ya Hewa Kutumia ThingSpeak MQTT na IFTTT Applets
Ripoti ya Hali ya Hewa Kutumia ThingSpeak MQTT na IFTTT Applets

Utangulizi

Programu ya hali ya hewa inayotegemea wingu inayotoa ripoti za kila siku za hali ya hewa kama arifa ya barua pepe. Kiwango hiki cha Maombi ya Wavuti Joto na Unyevu kwa kutumia SHT25 na Adafruit Huzzah ESP8266. Inatupatia data ya Joto la Wakati halisi na Unyevu na uchambuzi wa kila saa. Takwimu zinatumwa kwa kutumia ThingSpeak MQTT API na baadaye tunatoa arifu ya barua pepe kwa mtumiaji wakati wowote joto linafikia kizingiti kilichopewa kwa kutumia itifaki ya IFTTT. SHT25 ni sensorer ya joto na unyevu iliyotengenezwa na Sensirion. SHT25 hutoa kiwango cha juu cha usahihi karibu ± 2% RH. Aina yake ya Unyevu ni kati ya 0 hadi 100% na kiwango cha Joto ni kati ya -40 hadi 125 ° C. Inaaminika zaidi na haraka na sekunde 8 za wakati wa kujibu Sensorer.

Vipengele

  • Hukupa uchambuzi wa wakati halisi na takwimu ukitumia API ya Mfumo wa Kuongea wa MQTT
  • Arifa ya Barua pepe hutolewa kwa mtumiaji kwa wakati uliowekwa kwa kutumia IFTTT
  • Mpangilio wa Kazi hutumiwa Kupanga kazi kama kuchota data kutoka kwa sensorer, Kuchapisha usomaji wa sensa, Kujiandikisha kwa mada ya MQTT
  • Inatumia itifaki ya I2C kuleta usomaji wa sensorer ambayo ni sahihi zaidi, inayoweza kupanuka na ya kutisha
  • hali ya kulala wakati kifaa kiko wavivu au hakuna upigaji simu tena wa kazi unaoitwa.
  • Kupanga kazi kwa ufanisi kunatoa matumizi ya bure
  • Ukurasa tofauti wa wavuti unasimamiwa ambapo mtumiaji anapaswa kutoa hati zake za mtumiaji ili kuepuka kuangaza kifaa chako kila wakati unapofikiwa na mitandao mingine ya wifi
  • SPIFFS hutumiwa kuhifadhi ukurasa wetu wa wavuti ili kufanya nambari yetu iweze kusomeka na kidogo

Hatua ya 1: Uainishaji wa vifaa na programu

Uainishaji wa vifaa na programu
Uainishaji wa vifaa na programu
Uainishaji wa vifaa na programu
Uainishaji wa vifaa na programu

Ufafanuzi wa Vifaa

  • Adafruit esp8266 bodi ya Huzzah
  • Ngao ya Bodi ya Huzzah
  • Moduli ya Sensorer ya SHT25
  • Cable ya I2C

Uainishaji wa Programu

  • Arduino IDE
  • Jambo la IFTTT Ongea
  • API ya MQTT

Hatua ya 2: Kuhifadhi Hati za Mtumiaji

Kuhifadhi Hati za Mtumiaji
Kuhifadhi Hati za Mtumiaji
Kuhifadhi Hati za Mtumiaji
Kuhifadhi Hati za Mtumiaji

Hapa tunatumia sensorer ya SHT25 I2C kusoma thamani ya wakati halisi wa Joto na Unyevu wa Jamaa na kutuma thamani hizi kwa wingu. Ili kupata thamani ya sensorer iliyosasishwa mara kwa mara na kutuma sasisho hizi wakati huo huo tunatumia Maktaba ya Mratibu wa Kazi wa Arduino. Kwa shughuli za wingu, tunatumia ThingSpeak MQTT API. Baadaye tunatoa ripoti ya hali ya hewa ya wakati halisi kwa mtumiaji anayetumia applet za IFTTT. Unaweza kufuata hatua hizi kutengeneza kituo chako cha hali ya hewa. Kwa hivyo, DIY.

Kabla ya kuendelea zaidi. Tunahitaji kuokoa kitambulisho cha mtumiaji. Kwa kusudi hili, tunashikilia seva ya wavuti mnamo 192.169.1.4. Tumehifadhi fomu yetu ya wavuti katika SPIFFS. Mara tu kifaa kinapoanza huwa mwenyeji wa wavuti kwa sekunde 60. Mtumiaji anapaswa kufuata hatua hizi.

  • Unganisha na AP ESPuser, Hii imeorodheshwa katika orodha yako inapatikana ya mtandao wa wifi. Unganisha kwenye AP hii na uweke nywila "*******"
  • Mara tu inapounganishwa, Nenda kwenye kivinjari chako ingiza IP 192.168.1.4.
  • Ingiza SSID na nywila ya WiFi yako ya ndani kwenye uwanja wa kuingiza na ingiza SUBMIT
  • Hati hizi zitahifadhiwa katika EEPROM
  • Baada ya Kifaa cha sekunde 60 kitajiondoa kiatomati kutoka kwa AP
  • Wakati mwingine utakapowasha kifaa, Mtumiaji sio lazima afuate utaratibu huu, Kifaa kitachukua kiotomatiki hati za mtumiaji kutoka EEPROM na kuendelea na kupata usomaji wa sensorer kutoka kwa Kiunga cha I2C na kuiweka wingu

// --------- AP usanidi ------------ // IPAdressress ap_local_IP (192, 168, 1, 4); Anwani ya IP ap_gateway (192, 168, 1, 254); Anwani ya IP apububnet (255, 255, 255, 0);

Serial.print ("Inasanidi eneo la ufikiaji…");

WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);

Serial.print ("Kuweka Kitambulisho cha Mtumiaji");

WiFi.softAP (ssidAP, passAP);

seva.on ("/", handleRoot);

server.onNotFound (onHandleNotFound);

anza ();

APTimer = milimita ();

wakati (millis () - APTimer <APInterval) {

seva.handleClient ();

}

// **************************** HANDLE ROOT ****************** ********* // batili handleRoot () {

ikiwa (server.hasArg ("ssid") && server.hasArg ("nywila"))

{

// Ikiwa sehemu zote za fomu zina simu ya data

kusambaza ()

kushughulikiaTuma (); }

mwingine {

// Onyesha tena fomu

// soma faili iliyomo kwenye spiffs

Faili ya faili = SPIFFS. Fungua ("/ webform.html", "r");

server.streamFile (faili, "maandishi / html");

// usisahau kufunga faili

faili. karibu ();

}}

// Angalia hali ambayo ina hoja ssid na nywila

// Kisha andika hati kwa ROM

ROMwrite (Kamba (server.arg ("ssid")), Kamba (server.arg ("nywila")))

Hatua ya 3: Kuweka Fomu yako ya Wavuti katika SPIFFS

MABIBU

Mfumo wa Faili ya Kiunga cha Pembeni ya Siri, au SPIFFS kwa kifupi. Ni mfumo wa faili ya uzani mwepesi kwa watawala wadogo na chipu ya SPI. Chip ya ndani ya ESP8266 ina nafasi nyingi kwa kurasa zako za wavuti, haswa ikiwa una toleo la 1MB, 2MB au 4MB. Tumehifadhi pia ukurasa wetu wa wavuti katika Mfumo wa Flash. Kuna hatua chache tunazohitaji kufuata kupakia data kwa spiffs

  1. Pakua zana: https://github.com/esp8266/arduino-esp8266fs-plug …….
  2. Katika saraka yako ya sketchbook ya Arduino, tengeneza saraka ya zana ikiwa haipo bado
  3. Ondoa zana kwenye saraka ya zana (njia itaonekana kama /Arduino/tools/ESP8266FS/tool/esp8266fs.jar)
  4. Anzisha tena Arduino IDE
  5. Fungua mchoro (au unda mpya na uihifadhi)
  6. Nenda kwenye saraka ya mchoro (chagua Mchoro> Onyesha Folda ya Mchoro)
  7. Unda saraka iliyoitwa data na faili zozote unazotaka kwenye mfumo wa faili hapo. Tumepakia ukurasa wetu wa HTML na jina la webform.html
  8. Hakikisha umechagua bodi, bandari, na kufungwa Serial Monitor
  9. Chagua Zana> ESP8266 Sketch Data Pakia. Hii inapaswa kuanza kupakia faili kwenye mfumo wa faili ya ESP8266. Ukimaliza, upau wa hali ya IDE utaonyesha ujumbe wa Picha za SPIFFS.

Faili ya faili = SPIFFS. Fungua ("/ webform.html", "r");

server.streamFile (faili, "maandishi / html");

// usisahau kufunga faili

faili. karibu ();

Hatua ya 4: Kupanga Kazi

Katika mafunzo haya, tunafanya shughuli mbili:

  • Soma data kutoka SHT25 ukitumia itifaki ya I2C
  • Tuma data iliyosasishwa kwenye wingu ukitumia ThingSpeak MQTT API

Ili kufanikisha hili tunatumia maktaba ya TaskScheduler. Tumepanga majukumu mawili tofauti yakimaanisha shughuli mbili tofauti za kudhibiti. hii imefanywa kama ifuatavyo

  • Kazi 1 ni kusoma thamani ya sensa kazi hii inaendesha kwa sekunde 1 hadi itakapofikia muda wa sekunde 10.
  • Task1 inapofikia wakati wake wa kumaliza Tunaunganisha kwa Wifi wa karibu na broker wa MQTT.
  • Sasa Task 2 imewezeshwa na tunazima Task 1Task 2 ni kwa kuchapisha data ya sensorer kwa Thing Speak MQTT broker kazi hii inaendeshwa kwa sekunde 20 hadi itakapofikia muda wa sekunde 20.
  • Task2 inapofikia muda wake wa kumaliza Task 1 imewezeshwa tena na Task2 imezimwa. hapa tena, tunapata thamani iliyosasishwa na mchakato unaendelea
  • wakati hakuna kupiga simu tena kunakoitwa au kifaa hakikai huenda kwa Nuru Kulala na hivyo kuokoa nguvu.

// --------- mfano wa upigaji simu wa kazi ------------ //

kazi tupuI2CCallback ();

kazi tupuI2CDisable ();

kazi tupuWiFiCallback ();

kazi tupuWiFiDisable ();

// --------- Kazi ------------ //

Kazi tI2C (2 * TASK_SECOND, TASK_FOREVER, & taskI2CCbackback, & ts, uongo, NULL, & taskI2CDisable);

Kazi tWiFi (20 * TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, uwongo, NULL, & taskWiFiDisable);

// kuwezesha tI2C tI2C kuwezeshwa ();

Hatua ya 5: Kusoma Joto na Thamani za Unyevu Kutoka SHT25

Kusoma Joto na Thamani za Unyevu Kutoka SHT25
Kusoma Joto na Thamani za Unyevu Kutoka SHT25

I2C ni kiunganishi cha waya mbili ambacho hutumia waya mbili tu kuwasiliana na kifaa kikuu. Moja ni SCL (Serial Clock) na nyingine ni SDA (Serial Data). Kila kifaa cha mtumwa kina anwani ya kipekee. SHT 25 pia ina anwani ya 8-bit na inaweza kupatikana kwa anwani ya 0x44. ina 8bits ya anwani ambapo bits 7 ni anwani halisi na wakati kulia kidogo LSB 0 hutumiwa kuashiria kusoma kutoka au kuandika kwa kifaa. Ikiwa kidogo 0 imewekwa kuwa 1 basi kifaa kikuu kitasoma kutoka kwa kifaa cha I2C cha mtumwa. I2C ni ya kuaminika zaidi, inayoweza kutisha na ya haraka na hata ina njia nyingi za utendaji ambayo inafanya ufanisi zaidi wa nishati

Tunatumia maktaba ya Wire.h kusoma viwango vya joto na unyevu. Maktaba hii inawezesha mawasiliano ya i2c kati ya sensa na kifaa kikuu. 0x44 ni anwani ya I2C ya SHT25. SHT25 inafanya kazi kwa njia tofauti ya utendaji. Unaweza kutaja data ya data kwa hiyo. Tunatumia 0x2C na 0x06 kama MSB na LSB mtawaliwa kwa operesheni moja ya risasi

Hatua ya 6: Kuchapisha Maadili kwa ThingSpeak Kutumia ThingSpeak MQTT API

Kuchapisha Maadili kwa ThingSpeak Kutumia ThingSpeak MQTT API
Kuchapisha Maadili kwa ThingSpeak Kutumia ThingSpeak MQTT API

Kwa kuchapisha maadili yetu ya joto na Unyevu kwenye wingu tunatumia ThingSpeak MQTT API. ThingSpeak ni jukwaa la IoT. ThingSpeak ni huduma ya wavuti ya bure ambayo inakuwezesha kukusanya na kuhifadhi data za sensorer katika wingu. MQTT ni itifaki ya kawaida inayotumiwa katika mifumo ya IoT kuunganisha vifaa na sensorer za kiwango cha chini. MQTT hutumiwa kupitisha ujumbe mfupi kwenda na kutoka kwa broker. ThingSpeak hivi karibuni imeongeza broker ya MQTT ili vifaa viweze kutuma ujumbe kwa ThingSpeak. Unaweza kufuata utaratibu wa kuanzisha Kituo cha ThingSpeak kutoka kwa chapisho hili

ThingSpeak MQTT

MQTT ni usanifu wa kuchapisha / usajili ambao umetengenezwa haswa kuunganisha upelekaji wa umeme na vifaa vyenye nguvu juu ya mitandao isiyo na waya. Ni itifaki rahisi na nyepesi inayoendesha soketi za TCP / IP au Soketi za Wavuti. MQTT juu ya Wavuti inaweza kulindwa na SSL. Usanifu wa kuchapisha / usajili huwezesha ujumbe kusukumwa kwa vifaa vya mteja bila kifaa kinachohitaji kuendelea kuchafua seva. Mteja ni kifaa chochote kinachounganisha na broker na kinaweza kuchapisha au kujisajili kwa mada kupata habari. Mada ina habari ya uelekezaji kwa broker. Kila mteja anayetaka kutuma ujumbe anazichapisha kwenye mada fulani, na kila mteja anayetaka kupokea ujumbe anajiandikisha kwenye mada fulani.

Chapisha na Jisajili ukitumia ThingSpeak MQTT

  • Kuchapisha njia za kulisha chaneli / kuchapisha /
  • Kuchapisha kwa idhaa fulani za uwanja / kuchapisha / uwanja / uwanja /
  • Jisajili kwenye vituo vya uwanja wa kituo / jiunge //
  • Jisajili kwenye vituo vya faragha vya kulisha kituo // jiunge / uwanja / uwanja /
  • Jisajili kwenye sehemu zote za kituo. njia // jiandikishe / mashamba / feild /

kazi tupuWiFiCallback ()

{

Serial.println ("taskWiFiCallbackStart");

Serial.print ("muda wa kazi hii: / t");

Serial.println (tWiFi.getTimeout ());

ikiwa (! mqttCli. imeunganishwa ())

{

Serial.println ("Mteja hajaunganishwa");

unganisha tena MQTT ();

}

String topicString = "channels /" + String (channelID) + "/ publish /" + Kamba (writeAPIKey);

mada madaUrefu = madaString.length () + 1;

char madaBuffer [madaLength];

madaString.toCharArray (madaBuffer, madaUrefu + 1);

Serial.println (madaBuffer);

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

dataLength = dataString.length () + 1;

data byteBuffer [Urefu wa data];

dataString.getBytes (dataBuffer, dataLength);

mqttCli.anza kuchapisha (madaBuffer, dataLength, uwongo);

Serial.println (mqttCli.write (dataBuffer, dataLength)? "Iliyochapishwa": "iliyochapishwa imeshindwa");

mqttCli.endPublish ();

//mqttCli.loop ();

}

Hatua ya 7: Taarifa ya hali ya hewa Arifa ya Barua pepe

Ripoti ya hali ya hewa Arifa ya Barua pepe
Ripoti ya hali ya hewa Arifa ya Barua pepe
Ripoti ya hali ya hewa Arifa ya Barua pepe
Ripoti ya hali ya hewa Arifa ya Barua pepe

Tunatumia applet za IFTTT kutoa ripoti ya hali ya hewa ya wakati halisi kwa mtumiaji. Kwa hivyo, Tumeitekeleza kupitia ThingSpeak. Tunakadiri maadili 5-fay ya joto na unyevu. Wakati wowote thamani ya kiingilio cha mwisho ni kubwa kuliko wastani wa wastani. Itasababisha arifu ya barua pepe "ni siku ya moto". na wakati ni ndogo kuliko wastani wa thamani. Itasababisha arifu ya barua pepe "Siku njema gani". Kila siku karibu 10:00 asubuhi (IST) tutakuwa tukipata arifa ya barua pepe

channelID = ******;

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

unyevuData = kituSpeakRead (channelID, 'Fields', 3, 'NumDays', 5); tempData = kituSpeakRead (channelID, 'Fields', 1, 'NumDays', 5);

perHumid = max (unyevuData) -min (unyevuData);

Thamani ya unyevu = 0.1 * perHumid + min (unyevuData);

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

tempValue = 0.1 * perTemp + min (tempData);

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

urlHumid = strcat ('https://api.thingspeak.com/channel/', kamba (channelID), '/fields/3/last.txt'); mwishoTempValue = str2num (webread (urlTemp)); mwishoHumidValue = str2num (webread (urlHumid));

ikiwa (mwishoTempValue

ikiwa (mwishoTempValue> TempValue || mwishoHumidValue> humidValue)

mmeaMessage = 'Ni siku ya moto.'; andika mtandao (iftttURL, 'value1', PlantMessage, 'value2', lastTempValue, 'value3', lastHumidValue); mwisho

Hatua ya 8: Kanuni ya Jumla

Kanuni ya Jumla
Kanuni ya Jumla
Kanuni ya Jumla
Kanuni ya Jumla
Kanuni ya Jumla
Kanuni ya Jumla

Kanuni ya Jumla

Nambari ya jumla inapatikana katika hifadhi hii ya GitHub

Upungufu

  • Kuna maswala kadhaa na kuchapisha data kwa kutumia kuchapisha njia kwa idadi kubwa ya data. Kusuluhisha shida hii tunayotumia kazi ya kuandika ()
  • SPIFFS inapaswa kupangwa kabla ya kupakia data mpya kwa SPIFFS.
  • Haupaswi kutumia kazi ya kuchelewesha (). kuchelewesha () kunazuia operesheni ya nyuma. Badala yake, tengeneza ucheleweshaji kutumia millis () tu ikiwa ni lazima

Mikopo

  • Mtandao wa ESP826
  • Mratibu wa Kazi
  • SHT 25
  • ThingSpeak MQTT API
  • IFTTT
  • Mshauri wa PubSub

Ilipendekeza: