102 lines
4.1 KiB
Markdown
102 lines
4.1 KiB
Markdown
# ElinkInformer / TableWatch
|
||
|
||
E‑paper інформер на ESP32‑S3 (WeActStudio 2.9" tri‑color). Показує час великими цифрами, Wi‑Fi, батарею, погоду та дані з Notion. Є веб‑інтерфейс для керування інтервалами, а також оновлення прошивки через браузер.
|
||
|
||
## Функції
|
||
- великий годинник у стилі flip‑card
|
||
- статус‑бар: Wi‑Fi, батарея, погода, час
|
||
- таблиця Notion (5 записів) з полями `Name` + `Data/Date`
|
||
- чергування екранів (час/Notion) з налаштовуваними інтервалами
|
||
- Wi‑Fi portal налаштування (SSID `ElinkInformer-Setup`)
|
||
- веб‑інтерфейс з Bootstrap‑темою (mDNS `tablewatch.local`)
|
||
- оновлення прошивки через web upload
|
||
|
||
## Обладнання
|
||
- ESP32‑S3 (board: `esp32-s3-zero` у PlatformIO)
|
||
- WeActStudio 2.9" E‑Paper (GxEPD2_290_C90c)
|
||
|
||
## Піни дисплея
|
||
У `src/config.h`:
|
||
- `PIN_BUSY = 6`
|
||
- `PIN_RST = 7`
|
||
- `PIN_DC = 8`
|
||
- `PIN_CS = 9`
|
||
- `PIN_SCK = 10`
|
||
- `PIN_MOSI = 11`
|
||
|
||
## Батарея / ADC
|
||
Налаштування в `src/config.h`:
|
||
- `kBatteryAdcPin` (за замовчуванням `A0`)
|
||
- `kBatteryAdcRefMv` (3300 мВ)
|
||
- `kBatteryDividerNum`/`kBatteryDividerDen` (коефіцієнт подільника)
|
||
- `kBatteryMvMin`/`kBatteryMvMax` (межі 0–100%)
|
||
|
||
Калібруйте `kBatteryMvMin`/`kBatteryMvMax` під вашу батарею.
|
||
|
||
## Погода
|
||
- Джерело: Open‑Meteo (`kWeatherUrl`)
|
||
- Відображення: `Дніпро +3C дощ` (українські назви)
|
||
|
||
## Notion
|
||
- Використовується Notion API для читання бази.
|
||
- Потрібні поля в базі:
|
||
- `Name` (title)
|
||
- `Data` або `Date` або `Дата` (date)
|
||
- ID бази береться з URL (параметр `v` не потрібен).
|
||
- Токен інтеграції збережений у `kNotionToken`.
|
||
|
||
**Важливо:** інтеграцію потрібно додати до доступу бази (Share → додати інтеграцію).
|
||
|
||
## Веб‑інтерфейс
|
||
Доступ за адресою `http://tablewatch.local/` (mDNS) або IP.
|
||
|
||
Можна налаштувати:
|
||
- час показу екрана годинника
|
||
- час показу екрана Notion
|
||
- інтервал мережевої синхронізації
|
||
|
||
Кнопки:
|
||
- Оновлення прошивки (завантаження `.bin`)
|
||
- Перезавантаження
|
||
|
||
## Оновлення прошивки (Web)
|
||
Використовуйте файл `.bin` після збірки:
|
||
```bash
|
||
pio run
|
||
```
|
||
Файл з’явиться у `.pio/build/esp32-s3-devkitm-1/firmware.bin`.
|
||
|
||
## Збірка та прошивка (USB)
|
||
```bash
|
||
pio run
|
||
pio run -t upload
|
||
```
|
||
|
||
## Налаштування Wi‑Fi
|
||
Після старту пристрій піднімає portal:
|
||
- SSID: `ElinkInformer-Setup`
|
||
- Відкрити `192.168.4.1`
|
||
|
||
## Налаштування інтервалів
|
||
Параметри зберігаються в RTC:
|
||
- `gClockScreenSec` — екран часу
|
||
- `gTableScreenSec` — екран Notion
|
||
- `gNetSyncSec` — мережевий синх
|
||
|
||
Дефолти в `src/config.h`:
|
||
- `kDefaultClockScreenSec`
|
||
- `kDefaultTableScreenSec`
|
||
- `kDefaultNetSyncSec`
|
||
|
||
## Структура проєкту
|
||
- `src/config.h` — всі константи/налаштування
|
||
- `src/app_state.*` — стан та RTC змінні
|
||
- `src/display.*` — рендеринг дисплея
|
||
- `src/network.*` — Wi‑Fi, NTP, погода, Notion
|
||
- `src/web.*` — веб‑інтерфейс та OTA‑upload через web
|
||
- `src/hardware.*` — ADC/батарея
|
||
- `src/main.cpp` — ініціалізація та головний цикл
|
||
|
||
## Безпека
|
||
Токен Notion збережений у прошивці у відкритому вигляді. Для продакшна бажано використовувати проксі/сервер або секрети поза прошивкою.
|