A calm, three-colour poster of your day for the RockBase NM-EPD-420 e-paper devkit.
0.6.0 · Forked from fiedoruk/emini-home · tested on one NM-EPD-420 · ESP-IDF v6.0.2 · MIT
Photo of a device running 0.6.0 · Weather in the Print composition
nm-epd-weather puts the weather forecast, your indoor climate, one headline, a note in your own words, the sky above you and the air you breathe on the RockBase NM-EPD-420's 400 × 300 display, using its black, white, and red pigments. You set it up in your phone's browser, without an app or an account. After that the device does the rest on its own, and no emini.ink server sits in between.
This project is a custom port of the original emini-home repository, adapted specifically for the RockBase NM-EPD-420 which features an ESP32-S3 with 16 MiB flash, 8 MiB PSRAM, and an onboard AHT20 temperature and humidity sensor.
Install · Phone panel · Build · Hardware
Warning
Version 0.6.0 has been installed and tested on one RockBase NM-EPD-420. Read the status before you install. The preflight check in the installation guide tells you to stop if your device's boot data differs from the tested one. It cannot tell a monochrome board from a three-colour one, and only the three-colour NM-EPD-420 is supported.
Rhythm and Atlas, drawn on a computer by the renderer from sample data. The photo at the top shows Print.
Rhythm draws the coming hours as a curve, and Atlas gives the sky half of the page. Each screen can keep one composition, or use In turn and move on to the next one each time it comes back to the display. The weather screen shows the range for the next 24 hours under the temperature and a short line about precipitation, such as “Rain from 18:00”.
There is no grey on this display, so the renderer mixes the three pigments in ordered dither patterns to draw warmth, light and cloud. Coloured patterns are never finer than 2 pixels, while black and paper patterns can still use single pixels.
Two more screens arrived in earlier versions, both switched off until you enable them in the panel. Sky shows sunrise, sunset, the length of the day and the Moon's phase, worked out on the device from your saved location; nothing is downloaded for it. Air shows the European air quality index, PM2.5 over the next 24 hours, the UV index with a sunscreen hint and, in Europe, four pollens, from Open-Meteo's Air Quality service (CC BY 4.0). Each has the same three compositions as the weather.
Sky (Warsaw, equinox) and Air (Berlin, May), drawn from sample data
Three pigments and no grey mean every tone on this display is a pattern. The panel lets you choose the brush that paints it, in Settings → Appearance: grain (blue noise, the default), halftone dots, or the ordered grid.
News and Your note, drawn from sample data
News comes from BBC World by default, or from a public RSS or Atom feed of your choice, as long as it is served over HTTPS. The note is yours: a reminder, a line from a friend, a few words to keep in view.
Headlines and notes in Simplified Chinese are drawn with Noto Sans CJK glyphs (the whole of GB 2312, 6 763 characters, plus punctuation); lines break between characters, so a Chinese feed such as a news site's RSS works as it is. The screens themselves speak Simplified Chinese too: every label, footer and sentence, the date as 9月15日, and air quality, UV and pollen by name. Choose the language in the phone panel, or hold the lower side button for five seconds on the device.
Unlike the original emini-home which relied solely on internet weather APIs, this port utilizes the RockBase NM-EPD-420's onboard AHT20 sensor to display local indoor temperature and humidity. The sensor runs on a dedicated FreeRTOS background task, querying the I2C bus every 10 minutes and feeding the data to the main rendering engine.
On first start the display shows a setup screen. Join the emini.ink Wi-Fi
network it shows, open http://192.168.4.1, type the pairing code from the
display, and move the device onto your home network. From then on the panel
lives at the device's own address on that network (Settings → Your device);
the setup network exists only for the 5-minute setup window. In Breath, the
default power mode, press the round OK button on the device first and give it a
few seconds: the panel then answers for five minutes. Then search for your town,
pick your screens and their compositions, and choose one screen, a day rhythm
or a rotation, with quiet hours for the night.
Panel screenshots were taken in a browser on a computer, with sample data.
The phone panel guide walks through every step.
Since 0.6.0 nm-epd-weather has two power modes, chosen in the panel under Settings → Battery.
-
Breath, the default, turns Wi-Fi off between downloads. About twice an hour the device switches the radio on, fetches the weather and the news, and lets it sleep again. While it sleeps the phone panel cannot reach the device. Press the round OK button, wait a few seconds, and the panel opens for five minutes. The five minutes start again whenever you ask for something in the panel, such as opening it, a preview or a save; what the panel checks by itself does not count.
-
Open keeps Wi-Fi connected, so the panel answers at any time, as in earlier releases. The battery runs down roughly two to four times faster, by our estimate.
On a USB cable and while the setup window is open, the device keeps Wi-Fi on in either mode.
The full manual installation requires esptool and a terminal. The
installation guide has eight steps, and most of the time
goes into two full backups. In short:
-
Back up the whole flash twice.
-
Run
tools/preflight.pyon the backups. It compares them with the tested RockBase NM-EPD-420 and saysREADYorSTOP. -
Write two files from the release: the partition table at
0x8000and the application at0x20000. The bootloader and factory data stay untouched. -
Verify, start and continue on your phone.
Where nm-epd-weather 0.6.0 stands:
-
Tested on one RockBase NM-EPD-420 Devkit (ESP32-S3, 16 MiB flash, 8 MiB octal PSRAM). The preflight check compares your backups with that unit's factory flash.
-
Phone setup has been done end to end from an iPhone on that unit, from the setup Wi-Fi to the panel on the home network. Android phones have not been tried yet.
-
Starting over, which erases only the settings area, has been done on that unit: the area read back empty and the device opened the setup screen.
-
Location comes from a town you search for in the panel, or from an estimate based on your internet address, which can land on your provider's city.
-
Battery life depends on the power mode. It has not been comprehensively tested for the NM-EPD-420 in this port. The panel shows voltage and a rough percentage.
-
Updates are installed over USB. There is no over-the-air update mechanism.
The device talks to MET Norway for weather, to the news feed you choose, to FreeIPAPI for an approximate location and to public time servers. While the Air screen is switched on, it also sends the saved coordinates to the Open-Meteo Air Quality API for air quality, UV and pollen. Weather, news and air quality are fetched only while their screens are switched on. When you search for a town, your phone's browser sends the search to Open-Meteo. Each of these services sees an ordinary request from your internet address. Nothing goes to the original emini servers, and the firmware has no analytics. The panel runs over HTTP on your local network and settings are stored on the device without encryption, so keep the device on a network and in a home you trust. Details: privacy.
The firmware builds with ESP-IDF v6.0.2. The RockBase NM-EPD-420 requires external RAM for frame buffer allocations. Ensure that Octal Mode PSRAM is enabled in idf.py menuconfig. See
building from source. Hardware details and the flash layout
are in hardware.
Please report vulnerabilities privately through GitHub security advisories. SECURITY.md lists the known limits of this release.
nm-epd-weather is released under the MIT License.
-
This port is forked from the original emini-home by fiedoruk.
-
Weather data from MET Norway, licensed CC BY 4.0.
-
Air quality, UV and pollen from the Open-Meteo Air Quality API, licensed CC BY 4.0.
-
Place search by Open-Meteo.com, using location data from GeoNames, licensed CC BY 4.0.
-
Approximate location from FreeIPAPI.
-
Headlines belong to their publishers; the default feed is BBC World.
-
Typeface: Atkinson Hyperlegible Next (SIL OFL 1.1).
-
Chinese glyphs: Noto Sans CJK SC (SIL OFL 1.1), GB 2312 levels 1 and 2.
-
Small text (12 and 16 px): TRMNL12 and TRMNL16 pixel fonts by Heavyweight Digital Type Foundry for TRMNL (SIL OFL 1.1).
-
Built on ESP-IDF; all components and licences are listed in third-party notices.
RockBase and NM-EPD-420 may be trademarks of their owner. nm-epd-weather is an independent project.









