Initial TableWatch implementation
This commit is contained in:
101
README.md
Normal file
101
README.md
Normal file
@@ -0,0 +1,101 @@
|
||||
# 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 збережений у прошивці у відкритому вигляді. Для продакшна бажано використовувати проксі/сервер або секрети поза прошивкою.
|
||||
Reference in New Issue
Block a user