Daftar Isi:
- Langkah 1: Spesifikasi Perangkat Keras dan Perangkat Lunak
- Langkah 2: Menyimpan Kredensial Pengguna
- Langkah 3: Menyiapkan Formulir Web Anda di SPIFFS
- Langkah 4: Penjadwalan Tugas
- Langkah 5: Membaca Nilai Suhu dan Kelembaban Dari SHT25
- Langkah 6: Memublikasikan Nilai ke ThingSpeak Menggunakan ThingSpeak MQTT API
- Langkah 7: Pemberitahuan Email Laporan Cuaca
- Langkah 8: Kode Keseluruhan
Video: Laporan Cuaca Menggunakan Applet ThingSpeak MQTT dan IFTTT: 8 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
pengantar
Aplikasi cuaca berbasis cloud yang menyediakan laporan cuaca harian sebagai notifikasi email. Aplikasi web ini mengukur Suhu dan Kelembaban menggunakan SHT25 dan Adafruit Huzzah ESP8266. Ini memberi kami data Suhu dan Kelembaban Waktu Nyata dan analitik per jam. Data dikirim menggunakan ThingSpeak MQTT API dan kemudian kami memberikan pemberitahuan email kepada pengguna setiap kali suhu mencapai ambang batas yang ditetapkan menggunakan protokol IFTTT. SHT25 adalah Sensor Suhu dan Kelembaban buatan Sensiion. SHT25 memberikan tingkat akurasi yang tinggi sekitar ±2% RH. Kisaran Kelembabannya antara 0 hingga 100% dan Kisaran suhu antara -40 hingga 125 °C. Ini jauh lebih andal dan cepat dengan 8 detik waktu respons Sensor.
Fitur
- Memberi Anda analitik dan statistik waktu nyata menggunakan Thing Speak MQTT API
- Pemberitahuan Email diberikan kepada pengguna pada waktu yang ditentukan menggunakan IFTTT
- Penjadwal Tugas digunakan untuk Menjadwalkan tugas seperti mengambil data dari sensor, Memublikasikan pembacaan sensor, Berlangganan topik MQTT
- Ini menggunakan protokol I2C untuk mengambil pembacaan sensor yang lebih akurat, dapat diperluas, dan skalabel
- mode tidur saat perangkat menganggur atau tidak ada panggilan balik tugas yang dipanggil.
- penjadwalan tugas yang efektif memberikan penggunaan tanpa kerumitan
- Halaman web terpisah di-host di mana pengguna harus memberikan kredensial penggunanya untuk menghindari mem-flash perangkat Anda setiap kali dalam jangkauan jaringan wifi lain
- SPIFFS digunakan untuk menyimpan halaman web kami agar kode kami dapat dibaca dan tidak canggung
Langkah 1: Spesifikasi Perangkat Keras dan Perangkat Lunak
Spesifikasi Perangkat Keras
- Adafruit esp8266 papan Huzzah
- Perisai Papan Huzzah
- Modul Sensor SHT25
- kabel I2C
Spesifikasi Perangkat Lunak
- Arduino IDE
- IFTTT Hal Berbicara
- API MQTT
Langkah 2: Menyimpan Kredensial Pengguna
Di sini kami menggunakan sensor SHT25 I2C untuk membaca nilai Suhu dan Kelembaban Relatif waktu-nyata dan memposting nilai ini ke cloud. Untuk mendapatkan nilai sensor yang diperbarui dari waktu ke waktu dan untuk memposting pembaruan ini secara bersamaan, kami menggunakan Perpustakaan Penjadwal Tugas Arduino. Untuk operasi cloud, kami menggunakan ThingSpeak MQTT API. Nanti kami menyediakan laporan cuaca real-time kepada pengguna menggunakan applet IFTTT. Anda dapat mengikuti langkah-langkah ini untuk membuat stasiun cuaca Anda sendiri. Jadi, DIY.
Sebelum melangkah lebih jauh. Kita perlu menyimpan kredensial pengguna. Untuk tujuan ini, kami meng-hosting server web di 192.169.1.4. Kami telah menyimpan formulir web kami di SPIFFS. Setelah perangkat mulai meng-host server web selama 60 detik. Pengguna harus mengikuti langkah-langkah ini.
- Hubungkan ke AP ESPuser, Ini tercantum dalam daftar jaringan wifi yang tersedia. Hubungkan ke AP ini dan masukkan kata sandi "*******"
- Setelah terhubung, Buka browser Anda masukkan IP 192.168.1.4.
- Masukkan SSID dan kata sandi WiFi lokal Anda di bidang input dan masukkan KIRIM
- Kredensial ini akan disimpan di EEPROM
- Setelah 60 detik Perangkat akan secara otomatis memutuskan sambungan dari AP
- Lain kali ketika Anda menghidupkan perangkat, Pengguna tidak harus mengikuti prosedur ini, Perangkat akan secara otomatis mengambil kredensial pengguna dari EEPROM dan melanjutkan dengan mendapatkan pembacaan sensor dari Antarmuka I2C dan mempostingnya ke cloud
//--------- Konfigurasi 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("Konfigurasi titik akses…");
WiFi.softAPConfig(ap_local_IP, ap_gateway, ap_subnet);
Serial.print("Menyiapkan Kredensial Pengguna");
WiFi.softAP(ssidAP, passAP);
server.on("/", handleRoot);
server.onNotFound(onHandleNotFound);
server.mulai();
APTimer = milis();
while(milis()-APTimer <APInterval){
server.handleClient();
}
//******************************MENANGANI ROOT****************** *********//void handleRoot() {
if (server.hasArg("ssid")&& server.hasArg("password"))
{
//Jika semua kolom formulir berisi panggilan data
handelKirim()
menanganiKirim(); }
lain {
//Menampilkan ulang formulir
//baca file yang ada di spiffs
File file =SPIFFS.open("/webform.html", "r");
server.streamFile(file, "teks/html");
//jangan lupa tutup filenya
file.tutup();
}}
// Periksa status yang memiliki argumen ssid dan kata sandi
//Kemudian tulis kredensial ke ROM
ROMwrite(String(server.arg("ssid")), String(server.arg("password")))
Langkah 3: Menyiapkan Formulir Web Anda di SPIFFS
SPIFFS
Sistem File Flash Antarmuka Periferal Serial, atau disingkat SPIFFS. Ini adalah sistem file ringan untuk mikrokontroler dengan chip flash SPI. Chip flash onboard ESP8266 memiliki banyak ruang untuk halaman web Anda, terutama jika Anda memiliki versi 1MB, 2MB, atau 4MB. Kami juga telah menyimpan halaman web kami di Sistem Flash. Ada beberapa langkah yang perlu kita ikuti untuk mengunggah data ke spiffs
- Unduh alatnya:
- Di direktori sketchbook Arduino Anda, buat direktori tools jika belum ada
- Buka paket alat ke direktori alat (jalurnya akan terlihat seperti /Arduino/tools/ESP8266FS/tool/esp8266fs.jar)
- Mulai ulang Arduino IDE
- Buka sketsa (atau buat sketsa baru dan simpan)
- Masuk ke direktori sketch (pilih Sketch > Show Sketch Folder)
- Buat direktori bernama data dan file apa pun yang Anda inginkan di sistem file di sana. Kami telah mengunggah halaman HTML kami dengan nama webform.html
- Pastikan Anda telah memilih board, port, dan Serial Monitor yang tertutup
- Pilih Alat > Unggah Data Sketsa ESP8266. Ini harus mulai mengunggah file ke sistem file flash ESP8266. Setelah selesai, bilah status IDE akan menampilkan pesan SPIFFS Image Uploaded.
File file =SPIFFS.open("/webform.html", "r");
server.streamFile(file, "teks/html");
//jangan lupa tutup filenya
file.tutup();
Langkah 4: Penjadwalan Tugas
Dalam tutorial ini, kami melakukan dua operasi:
- Baca data dari SHT25 menggunakan protokol I2C
- Posting data yang diperbarui ke cloud menggunakan ThingSpeak MQTT API
Untuk mencapai ini kami menggunakan perpustakaan TaskScheduler. Kami telah menjadwalkan dua tugas berbeda yang mengacu pada dua operasi kontrol yang berbeda. ini dilakukan sebagai berikut
- Tugas 1 adalah untuk membaca nilai sensor tugas ini berjalan selama 1 detik hingga mencapai batas waktu 10 detik.
- Ketika Task1 mencapai batas waktunya, Kami terhubung ke Wifi lokal dan broker MQTT.
- Sekarang Tugas 2 diaktifkan dan kami menonaktifkan Tugas 1 Tugas 2 adalah untuk mempublikasikan data sensor ke broker Thing Speak MQTT tugas ini berjalan selama 20 detik hingga mencapai batas waktu 20 detik
- Ketika Task2 mencapai batas waktunya, Tugas 1 diaktifkan lagi dan Tugas2 dinonaktifkan. di sini lagi, kami mendapatkan nilai yang diperbarui dan prosesnya terus berlanjut
- ketika tidak ada panggilan balik yang dipanggil atau perangkat dalam keadaan idle, ia beralih ke Light Sleep sehingga menghemat daya.
//---------prototipe untuk panggilan balik tugas------------//
batalkan tugasI2CCallback();
void taskI2CDsable();
batalkan tugasWiFiCallback();
void taskWiFiDisable();
//--------Tugas------------//
Tugas tI2C(2 * TASK_SECOND, TASK_FOREVER, &taskI2CCallback, &ts, false, NULL, &taskI2CDDisable);
Task tWiFi(20* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable);
//aktifkan tI2C tI2C.enable();
Langkah 5: Membaca Nilai Suhu dan Kelembaban Dari SHT25
I2C adalah antarmuka dua kabel yang hanya menggunakan dua kabel untuk berkomunikasi dengan perangkat utama. Yang satu adalah SCL (Serial Clock) dan yang lainnya adalah SDA (Serial Data). Setiap perangkat budak memiliki alamat yang unik. SHT 25 juga memiliki alamat 8-bit dan dapat diakses dengan alamat 0x44. ia memiliki 8 bit alamat di mana 7 bit adalah alamat sebenarnya dan sementara paling kanan LSB bit 0 digunakan untuk membaca sinyal dari atau menulis ke perangkat. Jika bit 0 diset ke 1 maka perangkat master akan membaca dari perangkat I2C slave. I2C jauh lebih andal, terukur dan cepat dan bahkan memiliki banyak mode operasi yang membuatnya jauh lebih hemat energi
Kami menggunakan perpustakaan Wire.h untuk membaca nilai suhu dan kelembaban. Pustaka ini memfasilitasi komunikasi i2c antara sensor dan perangkat master. 0x44 adalah alamat I2C untuk SHT25. SHT25 beroperasi dalam mode operasi yang berbeda. Anda dapat merujuk ke lembar data untuk itu. Kami menggunakan 0x2C dan 0x06 sebagai MSB dan LSB masing-masing untuk operasi tembakan tunggal
Langkah 6: Memublikasikan Nilai ke ThingSpeak Menggunakan ThingSpeak MQTT API
Untuk memposting nilai suhu dan Kelembaban kami ke cloud, kami menggunakan ThingSpeak MQTT API. ThingSpeak adalah platform IoT. ThingSpeak adalah layanan web gratis yang memungkinkan Anda mengumpulkan dan menyimpan data sensor di cloud. MQTT adalah protokol umum yang digunakan dalam sistem IoT untuk menghubungkan perangkat dan sensor tingkat rendah. MQTT digunakan untuk menyampaikan pesan singkat ke dan dari broker. ThingSpeak baru-baru ini menambahkan broker MQTT sehingga perangkat dapat mengirim pesan ke ThingSpeak. Anda dapat mengikuti prosedur untuk mengatur Saluran ThingSpeak dari pos ini
HalSpeak MQTT
MQTT adalah arsitektur publish/subscribe yang dikembangkan terutama untuk menghubungkan bandwidth dan perangkat yang dibatasi daya melalui jaringan nirkabel. Ini adalah protokol sederhana dan ringan yang berjalan di atas soket TCP/IP atau WebSockets. MQTT melalui WebSockets dapat diamankan dengan SSL. Arsitektur publish/subscribe memungkinkan pesan didorong ke perangkat klien tanpa perangkat perlu terus-menerus melakukan polling ke server. Klien adalah perangkat apa pun yang terhubung ke broker dan dapat menerbitkan atau berlangganan topik untuk mengakses informasi. Topik berisi informasi perutean untuk broker. Setiap klien yang ingin mengirim pesan memublikasikannya ke topik tertentu, dan setiap klien yang ingin menerima pesan berlangganan topik tertentu
Publikasikan dan Berlangganan menggunakan ThingSpeak MQTT
- Memublikasikan ke saluran umpan saluran /publish/
- Menerbitkan ke saluran bidang tertentu /publish/fields/field/
- Berlangganan saluran bidang saluran /berlangganan//
- Berlangganan saluran umpan saluran pribadi //subscribe/fields/field/
- Berlangganan ke semua bidang saluran. saluran// berlangganan/bidang/feild /
batalkan tugasWiFiCallback()
{
Serial.println("taskWiFiCallbackStarted");
Serial.print("batas waktu untuk tugas ini: \t");
Serial.println(tWiFi.getTimeout());
jika(!mqttCli.connected())
{
Serial.println("Klien tidak terhubung");
sambungkan kembaliMQTT();
}
String topicString ="channels/"+String(channelID)+"/publish/"+String(writeAPIKey);
int topicLength = topicString.length()+1;
char topicBuffer[panjang topik];
topicString.toCharArray(topicBuffer, topicLength+1);
Serial.println(topicBuffer);
String dataString = String("field1="+ String(tempC, 1) + "&field2=" + String(tempF, 1) + "&field3=" + String(lembab, 1));
int dataLength = dataString.length()+1;
byte dataBuffer[panjang data];
dataString.getBytes(dataBuffer, dataLength);
mqttCli.beginPublish(topicBuffer, dataLength, false);
Serial.println(mqttCli.write(dataBuffer, dataLength) ? "diterbitkan": "diterbitkan gagal");
mqttCli.endPublish();
//mqttCli.loop();
}
Langkah 7: Pemberitahuan Email Laporan Cuaca
Kami menggunakan applet IFTTT untuk memberikan pemberitahuan email laporan cuaca real-time kepada pengguna. Jadi, Kami telah menerapkannya melalui ThingSpeak. Kami rata-rata nilai 5-fay suhu dan kelembaban. Setiap kali nilai entri terakhir lebih besar dari nilai rata-rata. Ini akan memicu pemberitahuan email "ini hari yang panas". dan bila lebih kecil dari nilai rata-rata. Ini akan memicu pemberitahuan email "Hari yang indah". Setiap hari sekitar pukul 10.00 (IST) kami akan mendapatkan email notifikasi
saluranID= ******;
iftttURL='https://maker.ifttt.com/***************';
moistureData=thingSpeakRead(channelID, 'Fields', 3, 'NumDays', 5); tempData = thingSpeakRead(channelID, 'Fields', 1, 'NumDays', 5);
perHumid=max(moistureData)-min(moistureData);
humidValue=0,1*perHumid+min(MoistureData);
perTemp=max(tempData)-min(tempData);
tempValue=0.1*perTemp+min(tempData);
urlTemp=strcat('https://api.thingspeak.com/channels/', string(channelID), '/fields/1/last.txt');
urlHumid = strcat('https://api.thingspeak.com/channels/', string(channelID), '/fields/3/last.txt'); lastTempValue=str2num(webread(urlTemp)); lastHumidValue = str2num(webread(urlHumid));
jika (nilaiTempterakhir
if (lastTempValue>tempValue || lastHumidValue>humidValue)
plantMessage=' Ini hari yang panas.'; webwrite(iftttURL, 'value1', plantMessage, 'value2', lastTempValue, 'value3', lastHumidValue); akhir
Langkah 8: Kode Keseluruhan
Kode Keseluruhan
Kode keseluruhan tersedia di repositori GitHub ini
Keterbatasan
- Ada beberapa masalah dengan memublikasikan data menggunakan metode publikasikan untuk sebagian besar data. Untuk mengatasi masalah ini, kami menggunakan fungsi write()
- SPIFFS harus diformat sebelum mengunggah data baru ke SPIFFS.
- Anda tidak boleh menggunakan fungsi delay(). delay() menghalangi operasi latar belakang. Sebagai gantinya, buat penundaan menggunakan milis() hanya jika diperlukan
Kredit
- ESP826WebServer
- Penjadwal Tugas
- THT 25
- ThingSpeak MQTT API
- IFTTT
- PubSubClient
Direkomendasikan:
Laporan Berkala Excel: 6 Langkah
Laporan Berkala Excel: Berikut adalah tip saya untuk laporan konsumsi berkala di Excel 2010. Dalam video tutorial di bawah ini, laporan ini memberi tahu kami tentang konsumsi spesifik listrik, air, oksigen, nitrogen per ton produk jadi, menurut mingguan, bulanan, kuartalan
Stasiun Cuaca Mini Menggunakan Arduino dan ThingSpeak: 4 Langkah
Stasiun Cuaca Mini Menggunakan Arduino dan ThingSpeak: Halo semuanya. Dalam Instruksi ini, saya akan memandu Anda melalui langkah-langkah untuk membuat stasiun cuaca mini yang dipersonalisasi. Selain itu, kami akan menggunakan ThingSpeak API untuk mengunggah data cuaca kami ke server mereka, atau apa tujuan
Loactor Dengan Apakah Laporan Langsung Menggunakan Bot Obrolan: 4 Langkah
Loactor Dengan Apakah Laporan Langsung Menggunakan Bot Obrolan: Melalui WhatsApp, dapatkan variabel (lokasi, ketinggian, tekanan …) dari NodeMCU seperti yang diminta atau kirim perintah ke NodeMCU melalui API Twilio. Selama beberapa minggu, saya telah bekerja dengan API Twilio, terutama untuk perpesanan WhatsApp, dan bahkan membuat aplikasi
ThingSpeak, IFTTT, Sensor Suhu dan Kelembaban dan Google Sheet: 8 Langkah
ThingSpeak, IFTTT, Sensor Suhu dan Kelembaban dan Google Sheet: Dalam proyek ini, kami akan mengukur suhu dan kelembaban menggunakan sensor suhu dan kelembaban NCD, ESP32, dan ThingSpeak. Kami juga akan mengirimkan pembacaan suhu dan kelembaban yang berbeda ke Google Sheet menggunakan ThingSpeak dan IFTTT untuk menganalisis
Stasiun Cuaca 5 in 1 Acurite Menggunakan Raspberry Pi dan Weewx (Stasiun Cuaca lain Kompatibel): 5 Langkah (dengan Gambar)
Stasiun Cuaca Acurite 5 in 1 Menggunakan Raspberry Pi dan Weewx (Stasiun Cuaca Lainnya Kompatibel): Ketika saya membeli stasiun cuaca Acurite 5 in 1, saya ingin dapat memeriksa cuaca di rumah saya saat saya pergi. Ketika saya sampai di rumah dan memasangnya, saya menyadari bahwa saya harus menghubungkan layar ke komputer atau membeli hub pintar mereka