Pemantauan Cuaca dengan NodeMCU esp 8266 via OpenWeatherMap Service

esp 8266 wather forecast, node mcu OpenWeatherMap

Dalam post ini saya akan sharing mengenai penggunaan / pengambilan data respon yang diperoleh dari request via Web API. Dengan menggunakan ESP 8266 (saya menggunakan NodeMCU) memiliki beberapa kemudahan di fitur koneksi wifi, dan dukungan library untuk melakukan API Request. Dikutip dari wikipedia, "OpenWeatherMap is an online service, owned by OpenWeather Ltd, that provides global weather data, including current weather data, forecasts, nowcasts and historical data (starting from 1979), utilising meteorological broadcast services and raw data from airport weather stations, radar stations and other weather stations". Nah terdapat beberapa service yang dapat dicoba secara gratis lho (pastinya daftar akun terlebih dahulu) seperti Current Weather Data dan Dailly Forecast (selangkapnya di OpenWeatherMap).  Percobaan yang dilakukan adalah mengambil Current Weather Data dan ditampilkan dalam display OLED 128x64. Untuk dokumen API nya dapat dilihat di sini


Pencarian lain: NodeMCU esp 8266 weather forecast, NodeMCU OpenWeatherMap data display, Perkiraan cuaca dengan NodeMCU esp 8266Pemantauan Cuaca dengan ESP 8266, Iot weather monitoring system


Komponen yang digunakan adalah nodeMCU dan OLED display 128x64 0,96 Inch yang disusun seperti berikut
Node MCU esp 8266 weather forecast
Sebelumnya pastikan sudah login ke akun OpenWeatherMap lanjut pilih menu tab API Keys. Maka akan tampil tabel yang bersisi kode API key default. Kode API ini dapat langsung dimanfaatkan menggunakan request API sebagai mana pada dokumennya dan juga nanti akan dimasukkan dalam program.
Sebagai contoh apabila kita gunakan untuk request current weather data berdasarkan nama kota (Jakarta)
api.openweathermap.org/data/2.5/weather?q={city name}&appid={API key}
Node MCU esp 8266 weather forecast
Data yang diperoleh memiliki format JSON. Dengan melakukan parsing data tersebut, kita dapat mengambil beberapa parameter untuk ditampilkan di display seperti Temperatur, Humidity, kondisi cuaca, dll

Sebelum bereksperiment ke program nodeMCU, pastikan beberapa library sudah terinstall yaitu Adafruit_GFX, Adafruit SSD 1306, Arduino Json, Rtclib, Time dan Timezone. Versi library yang saya gunakan sesuai yang ada di gambar ini ya
Node MCU esp 8266 weather forecast
Node MCU esp 8266 weather forecast
Node MCU esp 8266 weather forecast
Node MCU esp 8266 weather forecast
Node MCU esp 8266 weather forecast
Node MCU weather forecast
Untuk fungsi/penggunaan dari library diatas adalah:
  1. Adafruit_GFX, Adafruit SSD 1306 untuk fungsi display di Oled 128x64
  2. Arduino Json digunakan untuk proses parsing data JSON hasil dari request web API
  3. Rtclib, Time dan Timezone digunakan untuk konversi waktu. Jadi dari hasil data parsing akan diambil parameter "dt" yang isinya adalah Waktu penghitungan data dalam format unix UTC. Nah data ini akan dikonversi ke format standar "YY/MM/DD" serta dikonversi ke timezone GMT+7 (WIB).   
Untuk Kode Programnya dapat langsung dicolek-colek dibawah ini 

Selanjutnya buat file header dengan nama "icon.h". icon.h akan berisi gambar icon dari kondisi cuaca seperti mendung, hujan, petir, cerah. Membuat file header dapat melalui new tab - type "icon.h" - OK
Node MCU OpenWeatherMap
Node MCU OpenWeatherMap
Node MCU OpenWeatherMap
Isi halaman header icon.h dengan code berikut

Kalau sudah tinggal upload program ke esp 8266 (node mcu), Sesuaikan jenis board dan port COM yang digunakan. Untuk hasilnya akan seperti dibawah ini
perkiraan cuaca BMKG dengan Node MCU
Node MCU esp 8266 iot weather forecast