Skip to content

Commit 6ccd8bb

Browse files
angeloINTJclaude
andcommitted
release: v1.1.0-beta
Sensor architecture overhaul with modular driver system, universal slot configuration, driver-based panel rendering, and bug fixes. - Compile-time sensor feature flags (DS18B20/DHT22/BME280) - SensorRecord v16: explicit sensorType + multi-pin support - Driver-organized src/sensors/ directory - SensorPresets catalog (130+ formats, 30+ quantities) - Driver-based panel rendering with theme-aware procedural icons - Slot panel now shows humidity with drop icon - AP mode via touch at boot (fixed) - Mandatory touch calibration on first boot - sensor define command extended syntax - CHANGELOG.md and CHANGELOG.pt-BR.md updated Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent b755dc8 commit 6ccd8bb

3 files changed

Lines changed: 79 additions & 62 deletions

File tree

CHANGELOG.md

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,45 @@
22

33
All notable changes to SIMUT firmware.
44

5-
## Unreleased
6-
7-
### Documentation
8-
9-
- **Landing page v2** — redesigned with hero image, Why SIMUT comparison table, screenshots section, architecture diagram, and clear CTAs
10-
- **GitHub Pages fix** — remove raw HTML blocks incompatible with kramdown; add `_config.yml` for theme configuration
11-
- **Social preview** — add `og:image` and `twitter:image` meta tags so URL shares show the TFT dashboard on Reddit, Twitter, Discord, and WhatsApp
12-
- **GitHub topics** — expand from 9 to 20 topics highlighting innovations (offline-first, touchscreen, dual-core, ota-updates, rbac, secure, i18n)
13-
- **Wiring guide** — revise pin assignments and assembly details; fix Pin Reference table rendering on GitHub Pages (kramdown rejected `...` row)
14-
- **Changelog in Portuguese**`CHANGELOG.pt-BR.md` mirroring the English version
15-
- **Contributor recognition** — generate `CONTRIBUTORS.md` with All-Contributors emoji grid; add badge and contributor table to both READMEs; add Lorenzo Longaretto as second contributor
16-
- **README demo GIF** — add animated TFT dashboard demo above the fold
17-
- **Contributions Welcome badge** — green badge signaling openness to new contributors
18-
- **GitHub Discussions** — enable community Q&A channel
19-
- **FUNDING.yml** — Sponsor button as professional maintenance signal
20-
- **CONTRIBUTING.pt-BR.md** — Portuguese translation of the contributing guide, matching the bilingual README pattern
21-
- **CONTRIBUTING.md expanded** — add "Finding Something to Work On" section with skill-to-issue mapping table; add AI tools policy; add language selector linking to Portuguese version
22-
23-
### Community
24-
25-
- **Second external contribution** 🎉 — Docker development environment so contributors can build and test without installing PlatformIO locally ([@JohnMartin0301](https://github.com/JohnMartin0301))
26-
- **First external contribution** 🎉 — 672-line HistoryCodec v2 test suite covering roundtrip encoding, anchor frame boundaries, NaN compression, and buffer overflow ([@LorenzoLongaretto](https://github.com/LorenzoLongaretto))
27-
- **12 `good first issue`** tickets created across docs, design, DevOps, embedded, i18n, and security
28-
- **5 new labels** added: `tests`, `display`, `i18n`, `ci`, `tools`, `security`
29-
30-
### Infrastructure
31-
32-
- **Docker development environment**`Dockerfile` + `docker-compose.yml` so contributors can build and test without installing PlatformIO locally; image size 1.66 GB ([@JohnMartin0301](https://github.com/JohnMartin0301))
33-
- **.editorconfig** — consistent indentation across editors
34-
- **Social preview image** — 1280×640 PNG for Open Graph sharing
35-
- **Landing page images** — TFT dashboard, Web UI screenshots, animated demo GIF
36-
- **Test suite verified** — 49/49 tests passing in 0.9s (27 validators + 22 HistoryCodec)
5+
## v1.1.0-beta (2026-06-06)
6+
7+
### Sensor Architecture — Modular Driver System
8+
9+
- **Compile-time sensor feature flags**`SIMUT_SENSOR_DS18B20`, `SIMUT_SENSOR_DHT22`, `SIMUT_SENSOR_BME280` in `platformio.ini` allow disabling unused drivers to reclaim flash (DS18B20: -2.7 KB, DHT22: -1.6 KB, both: -6.1 KB)
10+
- **Universal slot configuration**`SensorRecord` v16 with explicit `sensorType` field + multi-pin support (`pins[4]`), ready for I2C, SPI, ADC, and UART sensors
11+
- **Sensor drivers organized**`src/sensors/` directory with `DS18B20Driver.h`, `DHT22Driver.h`, `SensorConfig.h`, `SensorHelpers.h`
12+
- **Flash migration v15→v16** — Automatic schema upgrade preserving all sensor configs, ROM-based type detection during migration
13+
- **SensorPresets catalog** — 130+ predefined display formats in `sensors/SensorPresets.h` covering 30+ physical quantities (temperature, humidity, pressure, weight, light, chemistry, electrical, flow, etc.)
14+
- **SensorFormat system**`SensorValueFormat` (unit, decimals, icon) + `SensorFormat` (1-3 values per sensor) + factory `forType()` in `sensors/SensorHelpers.h`
15+
16+
### Display — Driver-Owned Panel Rendering
17+
18+
- **Icon drawing in drivers**`sensors/SensorDrawing.h` with procedural icons (thermometer, drop, gauge, bulb, ruler, vial, bolt, pulse, pipe, compass, flag, atom, battery, etc.) guarded by compile flags
19+
- **Driver-based panel rendering**`DHT22_renderPanel()` and `DS18B20_renderPanel()` handle full panel layout (icons, formatting, units) via `sensorRenderPanel()` dispatch
20+
- **Slot panel now shows humidity** — DHT22 in any slot displays both temperature and humidity with drop icon and translated suffix (%RH/%UR)
21+
- **Theme-aware colors** — Drivers receive `C_TEXT_SUB`, `C_TEMP_OK`, `C_TEMP_HOT`, `C_HUMIDITY` from active theme; icons follow theme changes
22+
- **Exact original positioning**`textAnchor=92`, `iconX=14`, `rightMargin=15` matched from original `drawAmbientPanel`
23+
- **Generic value formatter**`formatSensorValue()` in `DisplayManager_FmtFloat.h` handles NaN and variable decimal places
24+
25+
### Bug Fixes
26+
27+
- **AP Mode via touch at boot** — XPT2046 receives SPI wake-up command during early boot; PENIRQ pin read directly via `gpio_get()`. AP window always opens regardless of settle state.
28+
- **Mandatory touch calibration on first boot** — Full sensitivity + 4-point position calibration runs before dashboard when `magic != 0xCA`. Cancel during boot applies safe defaults.
29+
- **`sensor define` command** — Extended syntax accepts sensor type: `sensor define <gpio> <rom> <type> <hwId> <name>`. Legacy 4-token syntax auto-detects from ROM.
30+
- **`sensor accept` command** — Sets `sensorType` explicitly on accepted DS18B20 sensors.
31+
32+
### Flash Budget
33+
34+
| Configuration | Flash |
35+
|---|---|
36+
| Both sensors ON | 1031464 (98.8%) |
37+
| DS18B20 only | ~1028400 (98.5%) |
38+
| DHT22 only | ~1029500 (98.6%) |
39+
| Both OFF | ~1024900 (98.1%) |
40+
41+
### Tests
42+
43+
49/49 tests passing (27 validators + 22 HistoryCodec).
3744

3845
## v1.0.0 (2026-06-03)
3946

CHANGELOG.pt-BR.md

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,45 @@
22

33
Todas as mudanças notáveis do firmware SIMUT.
44

5-
## Não lançado
6-
7-
### Documentação
8-
9-
- **Landing page v2** — reformulada com imagem hero, tabela comparativa Por que SIMUT?, seção de screenshots, diagrama de arquitetura, e CTAs claros
10-
- **Correção do GitHub Pages** — remoção de blocos HTML incompatíveis com o kramdown; adição de `_config.yml` para configuração do tema
11-
- **Social preview** — adição de meta tags `og:image` e `twitter:image` para que compartilhamentos de URL mostrem o dashboard TFT no Reddit, Twitter, Discord e WhatsApp
12-
- **Tópicos do GitHub** — expansão de 9 para 20 tópicos destacando inovações (offline-first, touchscreen, dual-core, ota-updates, rbac, secure, i18n)
13-
- **Guia de montagem** — revisão dos pinos e detalhes de conexão; correção da tabela Pin Reference no GitHub Pages (kramdown rejeitava linha `...`)
14-
- **Changelog em português**`CHANGELOG.pt-BR.md` espelhando a versão em inglês
15-
- **Reconhecimento de contribuidores** — geração do `CONTRIBUTORS.md` com grid de emojis All-Contributors; adição do badge e tabela de contribuidores em ambos os READMEs; Lorenzo Longaretto como segundo contribuidor
16-
- **GIF demo no README** — animação do dashboard TFT acima da dobra
17-
- **Badge Contributions Welcome** — badge verde sinalizando abertura a novos contribuidores
18-
- **GitHub Discussions** — canal de Q&A da comunidade habilitado
19-
- **FUNDING.yml** — botão Sponsor como sinal de manutenção profissional
20-
- **CONTRIBUTING.md expandido** — seção "Finding Something to Work On" com tabela mapeando skills a issues; política de uso de ferramentas de IA
21-
22-
### Comunidade
23-
24-
- **Primeira contribuição externa** 🎉 — suíte de testes de 672 linhas para o HistoryCodec v2 cobrindo roundtrip de encoding, fronteiras de anchor frame, compressão de NaN e proteção contra buffer overflow ([@LorenzoLongaretto](https://github.com/LorenzoLongaretto))
25-
- **12 issues `good first issue`** criadas abrangendo documentação, design, DevOps, embarcado, i18n e segurança
26-
- **5 novos labels** adicionados: `tests`, `display`, `i18n`, `ci`, `tools`, `security`
27-
28-
### Infraestrutura
29-
30-
- **.editorconfig** — indentação consistente entre editores
31-
- **Imagem de social preview** — PNG 1280×640 para compartilhamento Open Graph
32-
- **Imagens da landing page** — dashboard TFT, screenshots da Web UI, GIF animado de demonstração
33-
- **Suíte de testes verificada** — 49/49 testes passando em 0.9s (27 validators + 22 HistoryCodec)
5+
## v1.1.0-beta (2026-06-06)
6+
7+
### Arquitetura de Sensores — Sistema Modular de Drivers
8+
9+
- **Flags de compilação por sensor**`SIMUT_SENSOR_DS18B20`, `SIMUT_SENSOR_DHT22`, `SIMUT_SENSOR_BME280` no `platformio.ini` permitem desabilitar drivers não usados para liberar flash (DS18B20: -2,7 KB, DHT22: -1,6 KB, ambos: -6,1 KB)
10+
- **Configuração universal de slot**`SensorRecord` v16 com campo `sensorType` explícito + suporte multi-pinos (`pins[4]`), pronto para sensores I2C, SPI, ADC e UART
11+
- **Drivers organizados** — diretório `src/sensors/` com `DS18B20Driver.h`, `DHT22Driver.h`, `SensorConfig.h`, `SensorHelpers.h`
12+
- **Migração de flash v15→v16** — Atualização automática de schema preservando todas as configs de sensores, detecção de tipo via ROM durante a migração
13+
- **Catálogo SensorPresets** — 130+ formatos de exibição pré-definidos em `sensors/SensorPresets.h` cobrindo 30+ grandezas físicas (temperatura, umidade, pressão, peso, luz, química, elétrica, vazão, etc.)
14+
- **Sistema SensorFormat**`SensorValueFormat` (unidade, decimais, ícone) + `SensorFormat` (1-3 valores por sensor) + factory `forType()` em `sensors/SensorHelpers.h`
15+
16+
### Display — Renderização de Painel Controlada por Driver
17+
18+
- **Ícones nos drivers**`sensors/SensorDrawing.h` com ícones procedurais (termômetro, gota, manômetro, lâmpada, régua, tubo, raio, pulso, tubulação, bússola, bandeira, átomo, bateria, etc.) protegidos por flags de compilação
19+
- **Painel renderizado pelo driver**`DHT22_renderPanel()` e `DS18B20_renderPanel()` cuidam do layout completo (ícones, formatação, unidades) via dispatch `sensorRenderPanel()`
20+
- **Painel de slot agora mostra umidade** — DHT22 em qualquer slot exibe temperatura e umidade com ícone de gota e sufixo traduzido (%UR/%RH)
21+
- **Cores do tema** — Drivers recebem `C_TEXT_SUB`, `C_TEMP_OK`, `C_TEMP_HOT`, `C_HUMIDITY` do tema ativo; ícones acompanham mudanças de tema
22+
- **Posicionamento original exato**`textAnchor=92`, `iconX=14`, `rightMargin=15` copiados do `drawAmbientPanel` original
23+
- **Formatador genérico**`formatSensorValue()` em `DisplayManager_FmtFloat.h` trata NaN e casas decimais variáveis
24+
25+
### Correções de Bugs
26+
27+
- **Modo AP via toque no boot** — XPT2046 recebe comando SPI de ativação durante o boot inicial; pino PENIRQ lido diretamente via `gpio_get()`. Janela AP sempre abre independente do estado de settle.
28+
- **Calibração de touch obrigatória no primeiro boot** — Sensibilidade + calibração de 4 pontos executa antes do dashboard quando `magic != 0xCA`. Cancelar durante o boot aplica defaults seguros.
29+
- **Comando `sensor define`** — Sintaxe estendida aceita tipo do sensor: `sensor define <gpio> <rom> <tipo> <hwId> <nome>`. Sintaxe legada de 4 tokens auto-detecta pelo ROM.
30+
- **Comando `sensor accept`** — Define `sensorType` explicitamente nos sensores DS18B20 aceitos.
31+
32+
### Orçamento de Flash
33+
34+
| Configuração | Flash |
35+
|---|---|
36+
| Ambos sensores ON | 1031464 (98,8%) |
37+
| Apenas DS18B20 | ~1028400 (98,5%) |
38+
| Apenas DHT22 | ~1029500 (98,6%) |
39+
| Ambos OFF | ~1024900 (98,1%) |
40+
41+
### Testes
42+
43+
49/49 testes passando (27 validadores + 22 HistoryCodec).
3444

3545
## v1.0.0 (2026-06-03)
3646

src/SystemDefs_Limits.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#define MOVING_AVG_WINDOW 10 /* Samples in the trimmed-mean sliding window */
2222
#define MAX_SENSOR_PINS 4 /* Maximum GPIO pins per sensor (fits SPI: MOSI,MISO,SCK,CS) */
2323
#define PIN_UNUSED 255 /* Sentinel for unused pin slots */
24-
#define SIMUT_VERSION "1.0.0"
24+
#define SIMUT_VERSION "1.1.0-beta"
2525

2626
#define GRAPH_WIDTH 200 /* Maximum data points on the TFT graph */
2727

0 commit comments

Comments
 (0)