Мазмуну:
- 1 -кадам: Аппараттык жана программалык камсыздоонун өзгөчөлүгү
- 2 -кадам: Колдонуучунун грамоталарын сактоо
- 3 -кадам: Webformду SPIFFSке орнотуу
- 4 -кадам: Тапшырмаларды пландаштыруу
- 5 -кадам: SHT25тен Температураны жана Нымдуулукту Окуу
- 6 -кадам: ThingSpeak MQTT API колдонуп ThingSpeak үчүн баалуулуктарды жарыялоо
- 7 -кадам: Аба ырайы жөнүндө электрондук почта билдирүүсү
- 8 -кадам: Жалпы код
Video: ThingSpeak MQTT жана IFTTT апплеттерин колдонуу менен аба ырайы отчету: 8 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Киришүү
Булутка негизделген аба ырайы тиркемеси электрондук почта билдирүүсү катары күнүмдүк аба ырайы отчетторун берет. Бул веб -тиркеме SHT25 жана Adafruit Huzzah ESP8266 аркылуу температураны жана нымдуулукту өлчөйт. Бул бизге реалдуу убакыт температурасы жана нымдуулугу жөнүндө маалыматтарды жана сааттык аналитиканы берет. Маалыматтар ThingSpeak MQTT API аркылуу жөнөтүлөт жана кийинчерээк биз температура IFTTT протоколу аркылуу белгиленген чегине жеткенде колдонуучуга электрондук почта аркылуу билдирүү жөнөтөбүз. SHT25 - бул Sensirion тарабынан жасалган температура жана нымдуулук сенсорлору. SHT25 ± 2% RH айланасында тактыктын жогорку деңгээлин камсыздайт. Анын нымдуулук диапазону 0дөн 100% га чейин жана температуранын диапазону -40тан 125 ° Сге чейин. Бул 8 сек сенсордун жооп берүү убактысы менен алда канча ишенимдүү жана тез.
Өзгөчөлүктөрү
- Thing Speak MQTT API аркылуу сизге реалдуу убакытта аналитика жана статистика берилет
- Электрондук почта билдирүүсү колдонуучуга белгиленген убакта IFTTT аркылуу берилет
- Тапшырмаларды пландаштыруу сенсорлордон маалыматтарды алуу, сенсорлорду жарыялоо, MQTT темасына жазылуу сыяктуу тапшырманы пландаштыруу үчүн колдонулат.
- Бул I2C протоколун колдонуп, сенсордун тактыгын, кеңейтилишинин жана масштабдуулугунун көрсөткүчүн алуу үчүн
- түзмөк бош турганда же эч кандай кайра чалуу чакырылганда уйку режими.
- натыйжалуу иш планы кыйынчылыксыз колдонууну камсыз кылат
- Өзүнчө веб -баракча жайгаштырылган, анда колдонуучу башка wifi тармактары жеткиликтүү болгондо, түзмөгүңүздүн жарк этип кетпеши үчүн колдонуучунун ишеним грамоталарын бериши керек.
- SPIFFS биздин веб -баракчаны кодубузду окуу үчүн жана анча ыңгайсыз кылуу үчүн колдонулат
1 -кадам: Аппараттык жана программалык камсыздоонун өзгөчөлүгү
Аппараттык мүнөздөмө
- Adafruit esp8266 Huzzah тактасы
- Huzzah Board Shield
- SHT25 Sensor модулу
- I2C кабели
Программалык камсыздоонун өзгөчөлүгү
- Arduino IDE
- IFTTT Thing Speak
- MQTT API
2 -кадам: Колдонуучунун грамоталарын сактоо
Бул жерде биз SHT25 I2C сенсорун колдонуп, температуранын жана салыштырмалуу нымдуулуктун реалдуу убактысын окуп, бул маанини булутка жайгаштырабыз. Мезгил -мезгили менен жаңыртылган сенсордун маанисин алуу үчүн жана бул жаңыртууларды бир убакта жайгаштыруу үчүн биз Arduino's Task Scheduler Library колдонобуз. Булут операциялары үчүн биз ThingSpeak MQTT API колдонобуз. Кийинчерээк биз IFTTT апплетин колдонуп, колдонуучуга реалдуу убакытта аба ырайы тууралуу отчет берип жатабыз. Сиз өз метеостанциясын жасоо үчүн бул кадамдарды аткарсаңыз болот. Ошентип, DIY.
Андан ары улантуудан мурун. Биз колдонуучунун грамоталарын сакташыбыз керек. Бул үчүн биз 192.169.1.4 веб -серверин жайгаштырып жатабыз. Биз веб формабызды SPIFFSте сактадык. Түзмөк башталгандан кийин, ал 60 секундага веб -серверге ээ болот. Колдонуучу бул кадамдарды аткарышы керек.
- AP ESPuserге туташыңыз, бул сиздин жеткиликтүү wifi тармагыңыздын тизмесинде көрсөтүлгөн. Бул APга туташыңыз жана "*******" сырсөзүн киргизиңиз
- Ал туташкандан кийин, браузериңизге IP 192.168.1.4 кирет.
- Кириш талааларына жергиликтүү WiFiңыздын SSID жана сырсөзүн киргизип, ЖӨНӨТҮҢҮЗДҮ киргизиңиз
- Бул грамоталар EEPROMда сакталат
- 60 секунддан кийин Түзмөк APден автоматтык түрдө ажыратылат
- Кийинки жолу сиз аппаратты күйгүзгөнүңүздө, колдонуучу бул процедураны аткаруунун кажети жок, түзмөк колдонуучунун грамоталарын EEPROMдон автоматтык түрдө алып, I2C интерфейсинен сенсордун окуусун алуу менен аны булутка жайгаштырууну улантат.
// --------- AP конфигурациясы ------------ // IPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0);
Serial.print ("Кирүү түйүнүн конфигурациялоо…");
WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
Serial.print ("Колдонуучунун грамоталарын орнотуу");
WiFi.softAP (ssidAP, passAP);
server.on ("/", handleRoot);
server.onNotFound (onHandleNotFound);
server.begin ();
APTimer = millis ();
while (millis ()-APTimer <APInterval) {
server.handleClient ();
}
// **************************** КОЛДУН ТҮБҮ ****************** ********* // void handleRoot () {
эгер (server.hasArg ("ssid") && server.hasArg ("сырсөз")))
{
// Эгерде бардык форма талааларында маалымат чалуусу камтылса
handelSubmit ()
handleSubmit (); }
башка {
// Форманы кайра көрсөтүү
// spiffs камтылган файлды окуу
Файл файлы = SPIFFS.open ("/webform.html", "r");
server.streamFile (файл, "текст/html");
// файлды жабууну унутпаңыз
file.close ();
}}
// Анын аргументтери ssid жана пароль экенин текшериңиз
// Андан кийин грамоталарды ROMго жазыңыз
ROMwrite (String (server.arg ("ssid")), String (server.arg ("сырсөз"))))
3 -кадам: Webformду SPIFFSке орнотуу
SPIFFS
Сериялык перифериялык интерфейс Flash File System, же кыскача айтканда SPIFFS. Бул SPI флеш-чипи бар микроконтроллерлер үчүн жеңил салмактагы файл тутуму. ESP8266 борттогу флеш -чипи веб -баракчаларыңыз үчүн көп орунга ээ, айрыкча сизде 1MB, 2MB же 4MB версиясы бар. Биз дагы веб -баракчабызды Flash системасында сактадык. Биз спифтерге маалыматтарды жүктөө үчүн бир нече кадамдарды жасашыбыз керек
- Куралды жүктөп алыңыз:
- Сиздин Arduino эскиздер каталогунда, эгер ал жок болсо, куралдар каталогун түзүңүз
- Куралды куралдар каталогуна чыгарыңыз (жол /Arduino/tools/ESP8266FS/tool/esp8266fs.jar окшойт)
- Arduino IDEди кайра жүктөңүз
- Эскизди ачыңыз (же жаңысын түзүңүз жана аны сактаңыз)
- Эскиз каталогуна өтүңүз (Эскиз> Эскиз Папкасын көрсөтүңүз)
- Дайындар каталогун жана ал жердеги файл тутумунда каалаган файлдарды түзүңүз. Биз webform.html аты бар HTML баракчабызды жүктөдүк
- Такта, порт жана жабык сериялык мониторду тандаганыңызды текшериңиз
- Куралдар> ESP8266 эскиз маалыматын жүктөөнү тандаңыз. Бул файлдарды ESP8266 флеш системасына жүктөөнү башташы керек. Бүткөндөн кийин, IDE абал тилкеси SPIFFS Image Uploaded билдирүүсүн көрсөтөт.
Файл файлы = SPIFFS.open ("/webform.html", "r");
server.streamFile (файл, "текст/html");
// файлды жабууну унутпаңыз
file.close ();
4 -кадам: Тапшырмаларды пландаштыруу
Бул үйрөткүчтө биз эки операцияны аткарып жатабыз:
- I2C протоколун колдонуп SHT25тен маалыматтарды окуңуз
- ThingSpeak MQTT API аркылуу булутка жаңыртылган маалыматты жайгаштырыңыз
Бул үчүн биз TaskScheduler китепканасын колдонобуз. Биз эки башка көзөмөлдөө операциясына тиешелүү эки башка тапшырманы пландаштырдык. бул төмөнкүчө жасалат
- 1 -тапшырма сенсордун маанисин окуу үчүн, бул тапшырма 1 секундага созулат, ал 10 сек убактысына жетет.
- Task1 өз мөөнөтүнө жеткенде, биз жергиликтүү Wifi жана MQTT брокерине туташып жатабыз.
- Эми 2 -тапшырма иштетилди жана биз 1 -тапшырманы өчүрүп жатабыз, 2 -тапшырма сенсордун маалыматын Thing Speak MQTT брокерине жарыялоо үчүн, бул тапшырма 20 секундага чейин 20 секунд иштейт.
- Task2 өз мөөнөтүнө жеткенде, Task 1 кайра иштетилет жана Task2 өчүрүлөт. бул жерде дагы, биз жаңыртылган баалуулукка ээ болуп жатабыз жана процесс уланууда
- эч кандай кайра чалуу же түзмөк бош турганда Light Sleep режимине өтөт, ошондо кубатты үнөмдөйт.
// --------- тапшырманы кайра чалуу үчүн прототип ------------ //
Void taskI2CCallback ();
Void taskI2CDisable ();
Void taskWiFiCallback ();
void taskWiFiDisable ();
// --------- Милдеттер ------------ //
Милдет tI2C (2 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable);
Милдет tWiFi (20* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
// tI2C иштетүү tI2C.enable ();
5 -кадам: SHT25тен Температураны жана Нымдуулукту Окуу
I2C-бул эки зымдуу интерфейс, ал башкы түзмөк менен байланышуу үчүн эки зымды гана колдонот. Бири SCL (Serial Clock), экинчиси SDA (Serial Data). Ар бир кулдук аппараттын уникалдуу дареги бар. SHT 25 дагы 8-бит дарегине ээ жана ага 0x44 дареги аркылуу кирүүгө болот. анын 8 бит дареги бар, анда 7 бит чыныгы дарек, ал эми LSB бит 0 түзмөктөн окуу же жазуу үчүн сигнал берүү үчүн колдонулат. Эгерде бит 0 1ге коюлса, анда башкы түзмөк кул I2C түзмөгүнөн окуйт. I2C алда канча ишенимдүү, масштабдуу жана ылдам, ал тургай аны иштөөнүн көптөгөн режимдери бар, бул аны энергияны үнөмдүү кылат.
Биз Wire.h китепканасын температура жана нымдуулук баалуулуктарын окуу үчүн колдонобуз. Бул китепкана сенсор менен башкы түзмөктүн ортосундагы i2c байланышын жеңилдетет. 0x44 SHT25 үчүн I2C дареги. SHT25 ар кандай режимде иштейт. Бул үчүн маалымат барагына кайрылсаңыз болот. Биз 0x2C жана 0x06ны MSB жана LSB катары бир ок операциясы үчүн колдонобуз
6 -кадам: ThingSpeak MQTT API колдонуп ThingSpeak үчүн баалуулуктарды жарыялоо
Температураны жана нымдуулукту булутка жайгаштыруу үчүн биз ThingSpeak MQTT API колдонобуз. ThingSpeak - бул IoT платформасы. ThingSpeak булуттагы сенсордук маалыматтарды чогултууга жана сактоого мүмкүндүк берген акысыз веб кызматы. MQTT-IoT системаларында төмөнкү деңгээлдеги түзмөктөрдү жана сенсорлорду туташтыруу үчүн колдонулган жалпы протокол. MQTT брокерге кыска билдирүүлөрдү берүү үчүн колдонулат. ThingSpeak жакында MQTT брокерин кошту, ошондуктан түзмөктөр ThingSpeakке билдирүүлөрдү жөнөтө алышат. Бул посттон ThingSpeak каналын орнотуу процедурасын аткарсаңыз болот
ThingSpeak MQTT
MQTT-бул жазуу/жазылуу архитектурасы, ал негизинен өткөрүү жөндөмдүүлүгүн жана кубаттуулугу чектелген түзмөктөрдү зымсыз тармактар аркылуу туташтыруу үчүн иштелип чыккан. Бул TCP/IP розеткалары же WebSockets аркылуу иштеген жөнөкөй жана жеңил протокол. WebSockets аркылуу MQTT SSL менен корголушу мүмкүн. Жарыялоо/жазылуу архитектурасы билдирүүлөрдү кардар түзмөктөрүнө серверди үзгүлтүксүз сурамжылоого муктаж болбостон жөнөтүүгө мүмкүндүк берет. Кардар - бул брокерге туташкан жана маалыматка жетүү үчүн темаларга жазыла турган же жазыла турган каалаган түзмөк. Тема брокер үчүн багыттоо маалыматын камтыйт. Билдирүүлөрдү жөнөтүүнү каалаган ар бир кардар аларды белгилүү бир темага жарыялайт, ал эми билдирүүлөрдү алгысы келген ар бир кардар белгилүү бир темага жазылат.
ThingSpeak MQTT аркылуу жарыялоо жана жазылуу
- Канал каналына жарыялоо /жарыялоо /
- Белгилүү бир талаа каналдарына жарыялоо/жарыялоо/талаалар/талаа/
- Каналга жазылыңыз талаа каналдары/жазылыңыз //
- Жеке каналдын канал каналдарына жазылуу // жазылуу/талаалар/талаа/
- Каналдын бардык тармактарына жазылыңыз. каналдар // жазылуу/талаалар/feild/
Void taskWiFiCallback ()
{
Serial.println ("taskWiFiCallbackStarted");
Serial.print ("бул тапшырманы аткаруу убактысы: / t");
Serial.println (tWiFi.getTimeout ());
эгер (! mqttCli.connected ())
{
Serial.println ("Кардар туташкан жок");
reconnectMQTT ();
}
String topicString = "каналдар/"+Стринг (channelID)+"/жарыялоо/"+Стринг (writeAPIKey);
int topicLength = topicString.length ()+1;
char topicBuffer [topicLength];
topicString.toCharArray (topicBuffer, topicLength+1);
Serial.println (topicBuffer);
String dataString = String ("field1 =" + String (tempC, 1) + "& field2 =" + String (tempF, 1) + "& field3 =" + String (humid, 1));
int dataLength = dataString.length ()+1;
байт dataBuffer [dataLength];
dataString.getBytes (dataBuffer, dataLength);
mqttCli.beginPublish (topicBuffer, dataLength, false);
Serial.println (mqttCli.write (dataBuffer, dataLength)? "Published": "жарыяланган жок");
mqttCli.endPublish ();
//mqttCli.loop ();
}
7 -кадам: Аба ырайы жөнүндө электрондук почта билдирүүсү
Биз IFTTT апплеттерин колдонуучуга реалдуу убакытта аба ырайы жөнүндө электрондук почта аркылуу эскертүү берүү үчүн колдонуп жатабыз. Ошентип, биз аны ThingSpeak аркылуу ишке ашырдык. Биз температуранын жана нымдуулуктун 5 фай маанилерин орточо эсептеп жатабыз. Акыркы жазуунун мааниси орточо мааниден чоң болгондо. Бул электрондук почта билдирүүсүн "бул күн ысык" деп баштайт. жана орточо мааниден азыраак болгондо. Бул "кандай сонун күн" электрондук почта билдирүүсүн пайда кылат. Күн сайын саат 10:00 чамасында (IST) бизге электрондук почта аркылуу билдирүү келет
channelID = ******;
iftttURL = 'https://maker.ifttt.com/**************';
moistData = thingSpeakRead (channelID, 'Fields', 3, 'NumDays', 5); tempData = thingSpeakRead (channelID, 'Fields', 1, 'NumDays', 5);
perHumid = max (moistData) -мин (moistData);
humidValue = 0.1*perHumid+min (moistData);
perTemp = max (tempData) -min (tempData);
tempValue = 0.1*perTemp+min (tempData);
urlTemp = strcat ('https://api.thingspeak.com/channels/', сап (channelID), '/fields/1/last.txt');
urlHumid = strcat ('https://api.thingspeak.com/channels/', сап (channelID), '/fields/3/last.txt'); lastTempValue = str2num (webread (urlTemp)); lastHumidValue = str2num (webread (urlHumid));
if (lastTempValue
if (lastTempValue> tempValue || lastHumidValue> humidValue)
plantMessage = 'Бул ысык күн.'; webwrite (iftttURL, 'value1', plantMessage, 'value2', lastTempValue, 'value3', lastHumidValue); аяктоо
8 -кадам: Жалпы код
Жалпы код
Жалпы код бул GitHub репозиторийинде жеткиликтүү
Чектөөлөр
- Маалыматты жарыялоодо кээ бир маселелер бар, биз жазуу () функциясын колдонуп жаткан бул маселени чечүү үчүн маалыматтын чоң бөлүгүнүн методун жарыялоо.
- Жаңы маалыматтарды SPIFFSке жүктөөдөн мурун SPIFFS форматталышы керек.
- Delay () функциясын колдонбошуңуз керек. delay () фондук иштөөгө тоскоолдук кылат. Тескерисинче, millis () менен кечигүүнү зарыл болгондо гана түзүңүз
Кредиттер
- ESP826WebServer
- Task Scheduler
- SHT 25
- ThingSpeak MQTT API
- IFTTT
- PubSubClient
Сунушталууда:
Ардуино жана ThingSpeak колдонулган мини аба ырайы станциясы: 4 кадам
Ардуино жана ThingSpeak колдонулган мини аба ырайы станциясы: баарына салам. Бул Нускамада мен сизге жекече мини -метеостанциясын жасоо боюнча кадамдарды көрсөтөм. Ошондой эле, биз ThingSpeak API аркылуу аба -ырайы маалыматтарыбызды серверлерине жүктөп берүү үчүн колдонобуз, болбосо аба ырайынын максаты эмне
DHT11 менен ESP32 негизделген M5Stack M5stick C аба ырайы монитору - DHT11 менен M5stick-Cдеги температуранын нымдуулугун жана жылуулук индексин көзөмөлдөңүз: 6 кадам
DHT11 менен ESP32 негизделген M5Stack M5stick C аба ырайы монитору | DHT11 менен M5stick-Cдеги температуранын нымдуулугун жана жылуулук индексин көзөмөлдөңүз: Салам балдар, бул көрсөтмөлөрдө биз DHT11 температура сенсорун m5stick-C менен (m5stack менен иштеп чыгуу тактасы) кантип интерфейс кылууну жана m5stick-C дисплейинде көрсөтүүнү үйрөнөбүз. Ошентип, бул үйрөткүчтө биз температураны, нымдуулукту & жылуулук мен
Акыркы 1-2 күндүн ичинде трендди көрүү үчүн Arduino, BME280 жана дисплей менен аба ырайы станциясы: 3 кадам (сүрөттөр менен)
Акыркы 1-2 күндүн ичинде трендди көрүү үчүн Arduino, BME280 жана дисплей менен метеорологиялык станция: Саламатсызбы! Алар учурдагы абанын басымын, температурасын жана нымдуулугун көрсөтөт. Аларга акыркы 1-2 күндүн ичинде курстун презентациясы жетишпеди. Бул процесске ээ болмок
Аба ырайы шамы - Аба ырайы жана температура бир караганда: 8 кадам
Аба ырайы шамы - Аба ырайы жана Температура Бир Караганда: Бул сыйкырдуу шамды колдонуп, сиз учурдагы температураны жана шарттарды дароо сыртта айта аласыз
Суу бөтөлкөсүн колдонуу менен аба ырайы бузулган зымсыз тармак адаптери: 4 кадам (сүрөттөр менен)
Суу бөтөлкөсүнүн жардамы менен аба ырайы бузулган адаптер: Иракта жүргөндө, мен зымсыз тармак адаптеримди аба ырайынан ажыратуу үчүн суу бөтөлкөсүн колдондум. Бул жөнөкөй жол -жобосу, бирок абдан натыйжалуу. Албетте, бул көрсөтмө Жакынкы Чыгыштагы эркектер менен аялдарга кызмат кылуу үчүн эң пайдалуу болот, бирок ошондой эле колдонулушу мүмкүн