Commit Graph

93 Commits

Author SHA1 Message Date
e045673a3a Fix OLED autosleep timing and battery sampling cadence
- Track last OLED activity to avoid double timeout; keep power gating on transitions
- Copy TZ before setenv() in timegm_fallback to avoid invalid pointer reuse
- Add BATTERY_SAMPLE_INTERVAL_MS and only refresh cache at batch start when due
- Keep battery sampling to a single ADC read (Arduino core lacks explicit ADC power gating)
2026-02-13 23:57:18 +01:00
532e51a76b Keep receiver LoRa in continuous RX
- Add lora_receive_continuous() helper and use it after init and TX (ACK/time sync)

- Ensure receiver returns to RX immediately after lora_send

- Document continuous RX behavior in README
2026-02-13 23:56:36 +01:00
4b5c4e245e Make IEC 62056-21 meter input non-blocking
- Add RX state machine with frame buffer, timeouts, and debug counters

- Expose meter_poll_frame/meter_parse_frame and reuse existing OBIS parsing

- Use cached last-valid frame at 1 Hz sampling to avoid blocking

- Document non-blocking meter handling in README
2026-02-13 23:56:36 +01:00
9c5b8fcdb4 Reduce sender power draw (RX windows + CPU/WiFi/ADC/pins)
- Add LoRa idle/sleep/receive-window helpers and use short RX windows for ACK/time sync

- Schedule sender time-sync windows (fast/slow) and track RX vs sleep time in debug

- Lower sender power (80 MHz CPU, WiFi/BT off, reduced ADC sampling, unused pins pulldown)

- Make SERIAL_DEBUG_MODE a build flag, add prod envs with debug off, and document changes
2026-02-13 23:56:36 +01:00
4ff5fd1d55 Harden history device ID validation and SD download filename 2026-02-13 23:56:36 +01:00
bfcb2463c3 Harden web UI auth, input handling, and SD path validation
- Add optional Basic Auth with NVS-backed credentials and STA/AP flags; protect status, wifi, history, and download routes

- Stop pre-filling WiFi/MQTT/Web UI password fields; keep stored secrets on blank and add clear-password checkboxes

- Add HTML escaping + URL encoding helpers and apply to user-controlled strings; add unit test

- Harden /sd/download path validation (prefix, length, dotdot, slashes) and log rejections

- Enforce protocol version in LoRa receive and release GPIO14 before SD init

- Update README security, SD, and GPIO sharing notes
2026-02-13 23:56:36 +01:00
da16c59690 Add SD history UI and pin remap
- Add SD history chart + download listing to web UI
- Use HSPI for SD and fix SD pin mapping
- Swap role/OLED control pins and update role detection
- Update README pin mapping and SD/history docs
2026-02-13 23:56:36 +01:00
6b1ed5b557 Move AP credentials to config and clarify STA UI access 2026-02-13 23:56:36 +01:00
ff6ade2760 Add SD logging and update docs
- Add optional microSD CSV logging per sender/day on receiver
- Wire logger into receiver packet handling
- Document new batch header fields, build envs, and SD logging
- Make sender links open in a new tab
2026-02-13 23:56:36 +01:00
bfbe480dad Improve receiver web UI fields and manual 2026-02-13 23:56:36 +01:00
f2f1949ad0 Include sender error counters in batch payload 2026-02-13 23:56:36 +01:00
8ce5f4bc31 Tidy sender page layout and use SF12 2026-02-13 23:56:36 +01:00
e229efd427 Add payload codec test envs and enable serial debug 2026-02-13 23:56:36 +01:00
ea68ec699b Update README for binary batch payload and SF11 2026-02-13 23:56:36 +01:00
aadb520f9d Use compact binary payload for LoRa batches 2026-02-13 23:56:36 +01:00
e06d431e78 adjust batch ack timing and rename e_wh field 2026-02-13 23:56:36 +01:00
e84cd999b2 expand web ui with batch table and manual 2026-02-13 23:56:36 +01:00
6e3ea1f50a document batching updates and restore bat_v in batches 2026-02-13 23:56:36 +01:00
cb7527ceeb increase lora throughput and improve receiver display 2026-02-13 23:56:36 +01:00
cb67febd93 force watchdog reinit for custom timeout 2026-02-13 23:56:36 +01:00
cd913d4e50 add lora send bypass for debugging 2026-02-13 23:56:36 +01:00
7b5cea1c5c instrument tx timings for watchdog analysis 2026-02-13 23:56:36 +01:00
8050992817 prevent watchdog from killing while printing json 2026-02-13 23:56:36 +01:00
934012cacd serial debugging console implemented, enable via config.h 2026-02-13 23:56:36 +01:00
41893cc6ae no sleep while ack pending 2026-02-13 23:56:36 +01:00
04edff746b attempted lora fix: timeout increase 2026-02-13 23:56:36 +01:00
d5487e8c5f Add sender queue display and batch timing 2026-02-13 23:56:36 +01:00
68542046de Update ESP32 platform and LoRa batching 2026-02-13 23:56:36 +01:00
ee27d9f7f1 Keep in-flight batch until ACK 2026-02-13 23:56:36 +01:00
3840c00f2a Update batch schema and add ACK handling 2026-02-13 23:56:36 +01:00
1279645812 Add LoRa telemetry, fault counters, and time sync status 2026-02-13 23:56:36 +01:00
ce0ee77f77 optional RTC 3231 integration 2026-01-29 22:15:50 +01:00
e480677b49 Add IEC62056 parsing, OLED timing, and batch LoRa send 2026-01-28 01:23:45 +01:00
449fff1f06 Keep sender OLED on longer; faster page cycle 2026-01-27 22:56:37 +01:00
460b6f86bb Improve power saving and payload safety 2026-01-23 17:32:40 +01:00
ae6e7b3192 Power down OLED before deep sleep 2026-01-23 17:14:16 +01:00
144cd1b1a9 Add schematic documentation 2026-01-23 17:10:04 +01:00
770a021eca Sleep LoRa before sender deep sleep 2026-01-23 17:00:51 +01:00
96193a9564 Document 433/868 MHz variants 2026-01-21 21:20:05 +01:00
5f42575b10 Add 868MHz envs, fix MAC id, offset timesync 2026-01-21 21:14:48 +01:00
8c9520f7e5 feat(battery): round bat_v and derive bat_pct locally 2026-01-20 22:58:56 +01:00
cfbab84f97 fix(oled): stop refreshing and blank on power off 2026-01-20 21:43:23 +01:00
6f308ad590 Initial commit 2026-01-20 01:39:06 +01:00