Files
TableWatch/README.md

102 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ElinkInformer / TableWatch
Epaper інформер на ESP32S3 (WeActStudio 2.9" tricolor). Показує час великими цифрами, WiFi, батарею, погоду та дані з Notion. Є веб‑інтерфейс для керування інтервалами, а також оновлення прошивки через браузер.
## Функції
- великий годинник у стилі flipcard
- статус‑бар: WiFi, батарея, погода, час
- таблиця Notion (5 записів) з полями `Name` + `Data/Date`
- чергування екранів (час/Notion) з налаштовуваними інтервалами
- WiFi portal налаштування (SSID `ElinkInformer-Setup`)
- веб‑інтерфейс з Bootstrapтемою (mDNS `tablewatch.local`)
- оновлення прошивки через web upload
## Обладнання
- ESP32S3 (board: `esp32-s3-zero` у PlatformIO)
- WeActStudio 2.9" EPaper (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` (межі 0100%)
Калібруйте `kBatteryMvMin`/`kBatteryMvMax` під вашу батарею.
## Погода
- Джерело: OpenMeteo (`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
```
## Налаштування WiFi
Після старту пристрій піднімає 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.*` — WiFi, NTP, погода, Notion
- `src/web.*` — веб‑інтерфейс та OTAupload через web
- `src/hardware.*` — ADC/батарея
- `src/main.cpp` — ініціалізація та головний цикл
## Безпека
Токен Notion збережений у прошивці у відкритому вигляді. Для продакшна бажано використовувати проксі/сервер або секрети поза прошивкою.