ESP32: Extract and display weather information from api.met.no to a Waveshare e-paper display. – Writing

I would like to combine an ESP32 with an e-paper screen and a battery to display weather information.

The ESP32 board is Waveshare’s e-paper driver board that’s documented here: https://www.waveshare.com/wiki/E-Paper_ESP32_Driver_Board

The e-paper screen is Waveshare’s 4.26” 800×480 raw display (black/white) that’s documented here: https://www.waveshare.com/wiki/4.26inch_e-Paper_HAT_Manual#Overview (not the HAT version)

The battery will be a 3.7V LiPo with 2000-5000mAh (exact model TBD).

I would prefer to extract weather information from MET (api.met.no). I’ve tested Locationforcast and Nowcast, but haven’t been able to get hour-by-hour weather (they only have 6-hour intervals or 5-minute intervals for the next two hours) and am open to considering other providers. This device will be operating in Norway.

The program should preform the following (see the attached PDF for drawings):
1. Connect to Wifi: I want to be able to manually configure the SSID & password by connecting the board to my IDE.
2. Get weather data for a specific location (can also configured directly in the program, e.g. GET https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=59.931&lon=10.718 – though later I might want to grab location data based on other parameters such as the network connection)
3. Apply some logic to extract the relevant data (e.g. simple parameters like “symbol_code: cloudy” or more complex calculations that determine which time periods will have rain). I can provide an Excel with an overview of the data “mapping” I’m considering, but it will also depend on which parameters are available. The concept is also detailed in the PDF and the logic mostly evolves around information related to rainfall and high/low temperatures.
4. Display this information on the e-paper screen, including the last updated time and battery status. For the icons, I will provide my own set of bitmap-files (unless you have suggestions for a better solution).
5. Enter deep sleep or equivalent to minimise battery usage.

The program should update its information every 30 minutes during daytime (e.g. from 07:00 to 23:00), though I would like to set a different update frequenc and time interval later.

Product URL for the Waveshare ESP32 board: https://www.waveshare.com/e-paper-esp32-driver-board.htm
Product URL for the Waveshare e-paper screen: https://www.waveshare.com/product/displays/e-paper/epaper-2/4.26inch-e-paper.htm

I can ship you products for testing/development.

I should also mention that I drafted a prototype using the Arduino IDE with an ESP32 module, as well as libraries for WiFi, HTTP, JSON and display drivers (GxEPD2). I’ll attach the .ino, but this is a quick and dirty proof of concept and I want something that’s professionalized. I think the included PDF better explains my end goal. It’s also important that API calls are in accordance with the providers requirements, e.g. for MET they must have a User-Agent and be HTTPS.

Hourly Range: $25.00-$80.00

Posted On: April 26, 2024 14:07 UTC
Category: Firmware Development
Skills:C, C++, ESP32, API Integration

Country: Norway

click to apply

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *