Appearance
E-Ink Display Spec
Device-side specification for the wifi e-ink displays (MEDORO panels, 800x480, black/white/red/yellow). Source: vendor OpenAPI 3.1 schema (eink-openapi-3.1.yaml). See Server E-Ink Integration for how SafeCall serves these devices.
Polling model
Each display is configured with a server URL. It calls it periodically:
GET https://<server>/eink/display?voltage=1.66&mac=A0:F2:62:46:F8:38mac— the display's MAC address (its identity)voltage— current battery voltage
The response body must be the layout JSON (no envelope), encoded as Windows-1250 (Central European, required for Czech diacritics). The firmware compares the version field with the version of the layout it last drew; if it differs, it redraws.
Layout document
json
{
"rotation": "0",
"validity": "30",
"version": "2",
"objects": [ ... ]
}| Field | Meaning |
|---|---|
rotation | Display rotation: 0–3 (quarter turns; 0 = landscape) |
validity | Seconds between device polls ("how often it checks whether the UI changed") |
version | Layout version, max 99, then restart from 1. The device redraws only when this changes |
objects | Drawing primitives, rendered in array order (later objects paint on top) |
All numeric values are integers encoded as strings ("50", not 50).
Drawing primitives
type | Fields | Description |
|---|---|---|
text | text, x, y, font, color | Text; (x, y) is the baseline-left position |
fillrect | x, y, w, h, color | Filled rectangle |
drawrect | x, y, w, h, color | Rectangle outline |
fillroundrect | x, y, w, h, r, color | Filled rounded rectangle |
drawroundrect | x, y, w, h, r, color | Rounded rectangle outline |
drawline | x0, y0, x1, y1, color | Line segment |
fillcircle | x, y, r, color | Filled circle (center + radius) |
drawcircle | x, y, r, color | Circle outline |
Colors
| Id | Color |
|---|---|
0 | Black (GxEPD_BLACK, default) |
1 | White (GxEPD_WHITE) |
2 | Red (GxEPD_RED) |
3 | Yellow (GxEPD_YELLOW) |
Fonts
Firmware font ids (Verdana, regular and bold):
| Id | Font | Id | Font |
|---|---|---|---|
0 | Verdana 10pt (default) | 6 | Verdana 32pt |
1 | Verdana Bold 24pt | 7 | Verdana Bold 10pt |
2 | Verdana 10pt | 8 | Verdana Bold 12pt |
3 | Verdana 12pt | 9 | Verdana Bold 16pt |
4 | Verdana 16pt | 10 | Verdana Bold 24pt |
5 | Verdana 24pt | 11 | Verdana Bold 32pt |
Encoding rules
- The JSON must be served as Windows-1250 bytes (
Content-Type: application/json; charset=windows-1250). UTF-8 responses render Czech characters incorrectly. - Characters outside Windows-1250 cannot be displayed; SafeCall substitutes
?. - Although the vendor schema describes the response as ISO-8859-2, deployed panels render byte
0xA9as©. Windows-1250 sendsŠas0x8A, which matches the firmware's Central European font table.
Constraints summary
versionwraps: 1 → 99 → 1. Never exceed 99.- Keep
validityreasonable — every poll wakes the radio and an e-ink redraw is slow and flashes the panel. - Display resolution of the deployed panels: 800x480 (coordinates up to
799/479in landscape).