Orodha ya maudhui:
- Hatua ya 1: Uainishaji wa vifaa na programu
- Hatua ya 2: Kuhifadhi Hati za Mtumiaji
- Hatua ya 3: Kuweka Fomu yako ya Wavuti katika SPIFFS
- Hatua ya 4: Kupanga Kazi
- Hatua ya 5: Kusoma Joto na Thamani za Unyevu Kutoka SHT25
- Hatua ya 6: Kuchapisha Maadili kwa ThingSpeak Kutumia ThingSpeak MQTT API
- Hatua ya 7: Taarifa ya hali ya hewa Arifa ya Barua pepe
- Hatua ya 8: Kanuni ya Jumla
Video: Ripoti ya Hali ya Hewa Kutumia ThingSpeak MQTT na IFTTT Applets: Hatua 8
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
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
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
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
- Pakua zana: https://github.com/esp8266/arduino-esp8266fs-plug …….
- Katika saraka yako ya sketchbook ya Arduino, tengeneza saraka ya zana ikiwa haipo bado
- Ondoa zana kwenye saraka ya zana (njia itaonekana kama /Arduino/tools/ESP8266FS/tool/esp8266fs.jar)
- Anzisha tena Arduino IDE
- Fungua mchoro (au unda mpya na uihifadhi)
- Nenda kwenye saraka ya mchoro (chagua Mchoro> Onyesha Folda ya Mchoro)
- Unda saraka iliyoitwa data na faili zozote unazotaka kwenye mfumo wa faili hapo. Tumepakia ukurasa wetu wa HTML na jina la webform.html
- Hakikisha umechagua bodi, bandari, na kufungwa Serial Monitor
- 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
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
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
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
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:
Sensorer ya hali ya hewa ya hali ya hewa na Kiunga cha data cha GPRS (SIM Card): Hatua 4
Sensor ya hali ya hewa ya hali ya hewa na GPRS (SIM Card) Kiunga cha Takwimu: Muhtasari wa MradiHii ni sensorer ya hali ya hewa inayotumia betri kulingana na joto la BME280 la joto / shinikizo / unyevu na ATMega328P MCU. Inatumika kwa betri mbili za 3.6 V lithiamu thionyl AA. Inayo matumizi ya chini ya kulala ya 6 µA. Inatuma data
Onyesho rahisi la hali ya hewa kwa kutumia Raspberry PI na hali ya hewa ya CyntechHAT: Hatua 4
Onyesho rahisi la hali ya hewa kwa kutumia Raspberry PI na Cyntech WeatherHAT: * Mnamo 2019 Yahoo ilibadilisha API, na hii iliacha kufanya kazi. Sikujua mabadiliko hayo. Mnamo Septemba ya 2020 mradi huu umesasishwa kutumia OPENWEATHERMAP API Angalia sehemu iliyosasishwa hapa chini, habari hii iliyobaki bado ni nzuri
Kituo cha Hali ya Hewa cha NaTaLia: Kituo cha Hali ya Hewa ya Arduino Inayotumiwa Imefanywa kwa Njia Sahihi: Hatua 8 (na Picha)
Kituo cha Hali ya Hewa cha NaTaLia: Kituo cha Hali ya Hewa ya Arduino Inayotumiwa Imefanywa kwa Njia Sawa: Baada ya mwaka 1 wa kufanikiwa katika maeneo 2 tofauti ninashiriki mipango yangu ya mradi wa kituo cha hali ya hewa na kuelezea jinsi ilibadilika kuwa mfumo ambao unaweza kuishi kwa muda mrefu vipindi kutoka kwa nguvu ya jua. Ukifuata
Mshumaa wa Hali ya Hewa - Hali ya hewa na Joto kwa haraka: 8 Hatua
Mshumaa wa Hali ya Hewa - Hali ya Hewa na Joto kwa haraka: Kutumia mshumaa huu wa kichawi, unaweza kujua hali ya joto na hali ya sasa nje mara moja
Acurite 5 katika Kituo cha hali ya hewa 1 Kutumia Raspberry Pi na Weewx (Vituo vingine vya hali ya hewa vinaendana): Hatua 5 (na Picha)
Acurite 5 katika Kituo cha hali ya hewa 1 Kutumia Raspberry Pi na Weewx (Vituo vingine vya hali ya hewa vinaendana): Wakati nilikuwa nimenunua Acurite 5 katika kituo cha hali ya hewa cha 1 nilitaka kuweza kuangalia hali ya hewa nyumbani kwangu nilipokuwa mbali. Nilipofika nyumbani na kuitengeneza niligundua kuwa lazima ningepaswa kuwa na onyesho lililounganishwa na kompyuta au kununua kitovu chao cha busara,