docs: update project files

This commit is contained in:
2026-07-02 23:43:32 +02:00
parent 7b31618199
commit f41ac76c6d
4 changed files with 890 additions and 552 deletions
+46 -2
View File
@@ -1,7 +1,51 @@
# Changelog
Toutes les modifications notables de ce projet seront documentées dans ce fichier.
All notable changes to this project will be documented in this file.
Le format s'inspire de Keep a Changelog.
The format is based on **Keep a Changelog** and this project follows **Semantic Versioning**.
---
## [Unreleased]
### Added
- Initial project structure.
- Zephyr RTOS development environment.
- Standardized project architecture.
- Firmware coding conventions.
- Documentation structure.
- RGB LED driver.
- GPIO Expander abstraction layer.
- Matrix keypad driver.
- Firmware component documentation.
- Firmware debugging documentation.
### Changed
- Refactored firmware into independent components.
- Standardized source file headers.
- Standardized project coding style.
- Centralized board-specific definitions into `board_pins.h`.
### Fixed
- Matrix keypad scanning.
- GPIO expander abstraction.
- Firmware build configuration.
---
## [0.1.0] - TBD
### Added
- First public development release.
- Zephyr RTOS firmware.
- RGB LED driver.
- GPIO Expander driver.
- Matrix keypad driver.
- Initial documentation.
- Project roadmap.
- TODO list.
+184 -97
View File
@@ -1,149 +1,236 @@
# OpenParcelBox
> 🚧 Statut : Reverse Engineering en cours
> 🚧 **Project Status:** Active development
OpenParcelBox est un projet open-source visant à remplacer l'électronique propriétaire de la boîte à colis connectée Boks One par une solution libre, documentée, maintenable et reproductible.
OpenParcelBox is an open-source project that replaces the proprietary electronics of the **Boks One** connected parcel box with a fully documented, local-first and sustainable solution.
L'objectif est de conserver autant que possible les éléments mécaniques, électromécaniques et esthétiques d'origine tout en supprimant toute dépendance à l'écosystème propriétaire.
Le projet fournit à la fois :
* un firmware libre ;
* une électronique de remplacement documentée ;
* une intégration native avec Home Assistant ;
* une documentation complète permettant à chacun de reproduire la solution.
The project aims to preserve as much of the original hardware as possible while removing every dependency on proprietary cloud services and mobile applications.
---
# Pourquoi OpenParcelBox ?
# Goals
De nombreuses boîtes à colis connectées reposent sur des services cloud et des applications propriétaires.
OpenParcelBox has been designed around a few simple principles.
Lorsque le fabricant arrête son service, modifie ses conditions d'utilisation ou cesse son activité, le matériel peut devenir inutilisable malgré un état mécanique parfaitement fonctionnel.
OpenParcelBox est né de la volonté de prolonger la durée de vie d'une Boks One en remplaçant son électronique propriétaire par une solution libre et documentée, sans aucune dépendance à un service cloud.
Le développement du projet est réalisé sur une Boks One, qui constitue actuellement la seule plateforme officiellement prise en charge.
Cependant, les méthodes employées, l'architecture matérielle et les principes logiciels documentés dans ce dépôt peuvent servir de base à l'adaptation d'autres boîtes à colis ou boîtes aux lettres connectées par la communauté.
L'objectif du projet n'est donc pas de prendre en charge tous les produits du marché, mais de fournir une solution ouverte, reproductible et réutilisable que chacun pourra adapter à ses propres besoins.
- No cloud dependency
- No subscription
- No vendor lock-in
- Fully local operation
- Battery powered
- Open hardware
- Open firmware
- Fully documented
- Easy to reproduce
- Beginner-friendly
---
# Fonctionnalités prévues
# Current Status
## Fonctionnelles
The project is under active development.
* Remplacement complet de l'électronique d'origine.
* Conservation du clavier 2 × 6.
* Conservation du mécanisme de verrouillage.
* Fonctionnement sur batterie.
* Intégration native Home Assistant.
* Communication Zigbee.
* Gestion de codes d'accès temporaires et permanents.
* Mises à jour OTA (Over-The-Air).
## Completed
## Techniques
- Development environment
- Zephyr RTOS integration
- Firmware architecture
- RGB LED driver
- GPIO Expander driver
- Matrix keypad driver
- Project documentation
* Fonctionnement entièrement local.
* Aucune dépendance à un service cloud.
* Faible consommation énergétique.
* Matériel reproductible.
* Logiciel libre.
* Documentation complète.
## In Progress
- Lock driver
- Reverse engineering
- Hardware validation
## Planned
- NFC
- Battery management
- Bluetooth configuration
- Flutter application
- Zigbee
- Home Assistant integration
- Custom PCB
---
# Architecture
# Features
## Matériel
## Firmware
* Seeed Studio XIAO BLE nRF52840
- Modular architecture
- Zephyr RTOS
- Battery powered
- Administrator PIN
- NFC support
- Bluetooth configuration
- Zigbee support
- OTA updates
## Logiciel
## Hardware
* Zephyr RTOS
* C++
* west
* CMake
- Reuse of the original lock
- Reuse of the original enclosure
- Reuse of the original keypad
- Custom PCB based on Seeed Studio XIAO BLE nRF52840
## Communication
## Home Assistant
OpenParcelBox communique via Zigbee.
L'exposition éventuelle vers MQTT est assurée par Home Assistant via :
* ZHA
* Zigbee2MQTT
* ou toute autre passerelle compatible.
Le firmware n'utilise donc pas MQTT directement.
- Native Zigbee integration
- ZHA compatibility
- Zigbee2MQTT compatibility
- Local control only
---
# État du support Zigbee
# Hardware Platform
Le support Zigbee fait partie des objectifs de la V1 mais n'est pas encore validé expérimentalement.
Current development platform:
La pile Zigbee retenue ainsi que son intégration dans Home Assistant seront définies au cours du développement.
- Seeed Studio XIAO BLE nRF52840
- Zephyr RTOS
- Freenove development kit
- PCF8574 GPIO Expander
The production hardware will use a custom PCB specifically designed for OpenParcelBox.
---
# Firmware Architecture
The firmware follows a modular architecture.
Current components:
- RGB LED
- GPIO Expander
- Matrix Keypad
Planned components:
- Lock
- Door Sensor
- Battery
- NFC
- Buzzer
- Zigbee
Each component is fully documented and independently testable.
---
# Repository Structure
```text
OpenParcelBox
├── app/
├── board/
├── docs/
│ ├── firmware/
│ ├── hardware/
│ ├── development/
│ └── protocols/
├── hardware/
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── ROADMAP.md
└── TODO.md
```
---
# Documentation
## Français
## General
* [Roadmap](ROADMAP.md)
* [Architecture](docs/fr/ARCHITECTURE.md)
- ROADMAP.md
- TODO.md
- CHANGELOG.md
---
## Firmware
# Structure du dépôt
Documentation is available in:
```text
OpenParcelBox
├── docs/
│ └── fr/
├── firmware/
├── hardware/
├── homeassistant/
├── images/
├── mobile-app/
├── CHANGELOG.md
├── README.md
├── ROADMAP.md
├── TODO.md
└── LICENSE
docs/firmware/
```
Each firmware component has its own documentation.
## Hardware
Reverse engineering and PCB documentation are available in:
```text
docs/hardware/
```
## Development
Development environment documentation is available in:
```text
docs/development/
```
---
# État du projet
# Development
🚧 Projet en cours de reverse engineering.
Firmware development uses:
Travaux actuellement en cours :
- Zephyr RTOS
- West
- CMake
- GCC
- VSCodium
* Analyse du matériel d'origine.
* Identification des composants.
* Mesures électriques.
* Validation de l'architecture matérielle.
* Définition des interfaces firmware.
Pour connaître les étapes prévues du développement :
➡️ **[Consulter la roadmap](ROADMAP.md)**
The coding style, project structure and documentation are standardized across the entire project.
---
# Licence
# Roadmap
Les différents composants du projet sont distribués sous des licences adaptées à leur nature.
The complete development roadmap is available in:
| Composant | Licence |
| ------------- | ------------------------------------ |
| Projet | [LICENSE](LICENSE) |
| Firmware | [firmware/LICENSE](firmware/LICENSE) |
| Hardware | [hardware/LICENSE](hardware/LICENSE) |
| Documentation | [docs/LICENSE](docs/LICENSE) |
- ROADMAP.md
The current task list is available in:
- TODO.md
---
# License
OpenParcelBox is an open-source project.
Different project components may use different licenses depending on their nature.
| Component | License |
| ------------- | ---------------- |
| Project | LICENSE |
| Firmware | firmware/LICENSE |
| Hardware | hardware/LICENSE |
| Documentation | docs/LICENSE |
---
# Contributing
Contributions are welcome.
Please read **CONTRIBUTING.md** before submitting issues or pull requests.
---
# Disclaimer
OpenParcelBox is an independent open-source project.
It is not affiliated with, endorsed by or supported by the manufacturer of the Boks One parcel box.
+336 -330
View File
@@ -1,511 +1,517 @@
# OpenParcelBox - Roadmap
## Présentation
## Presentation
OpenParcelBox est un projet open source visant à remplacer l'électronique propriétaire des boîtes à colis connectées par une solution autonome, locale et pérenne.
OpenParcelBox is an open-source project that replaces the proprietary electronics of connected parcel boxes with an autonomous, local and sustainable solution.
Le projet est développé et validé sur une Boks One.
The project is currently developed and validated on a **Boks One** but is designed to be portable to other parcel boxes by adapting only the hardware layer.
L'architecture est documentée afin de faciliter une éventuelle adaptation à d'autres matériels par la communauté.
## Objectifs
* Aucune dépendance au cloud
* Aucun abonnement
* Fonctionnement autonome
* Compatible NFC
* Compatible Zigbee
* Compatible Home Assistant
* Compatible Android et iOS
* Fonctionnement sur piles
* Accessible aux makers débutants
* Réutilisation maximale du matériel existant
The firmware is based on **Zephyr RTOS** and follows a modular architecture to simplify maintenance and future extensions.
---
# Phase 0 - Initialisation du projet
# Project Goals
## Objectifs
* Création du dépôt Git
* Définition de l'architecture
* Définition des conventions de développement
* Mise en place de la documentation
## Livrables
* README.md
* ROADMAP.md
* LICENSE
* TODO.md
## État
* [ ] Initialisation du projet
- No cloud dependency
- No subscription
- Local-first operation
- Battery powered
- NFC support
- Bluetooth support
- Zigbee support
- Home Assistant compatibility
- Android and iOS application
- Beginner-friendly hardware
- Maximum reuse of existing hardware
- Fully documented hardware and firmware
- Fully open-source
---
# Phase 1 - Analyse matérielle
# Current Progress
## Objectifs
Documenter le matériel réutilisable de la Boks One.
## Éléments à analyser
### Façade
* Dimensions
* Position des boutons
* Position des LEDs
* Position de la zone NFC
* Position des fixations
### Boîtier
* Dimensions internes
* Compartiment électronique
* Compartiment piles
### Mécanique
* Serrure
* Capteur de fermeture
* Passage des câbles
## Livrables
* Plans cotés
* Documentation photographique
* Relevés mécaniques
## État
* [ ] Analyse matérielle
| Phase | Status |
| -------------------------- | :----: |
| Project initialization | ✅ |
| Documentation structure | ✅ |
| Development environment | ✅ |
| Firmware architecture | ✅ |
| RGB LED driver | ✅ |
| GPIO Expander driver | ✅ |
| Matrix keypad driver | ✅ |
| Lock driver | ⏳ |
| Battery driver | ⏳ |
| NFC driver | ⏳ |
| Buzzer driver | ⏳ |
| Power management | ⏳ |
| Bluetooth configuration | ⏳ |
| Zigbee integration | ⏳ |
| Home Assistant integration | ⏳ |
| PCB V1 | ⏳ |
---
# Phase 2 - Analyse électrique
# Phase 0 - Project Foundation
## Objectifs
## Objectives
Identifier les caractéristiques électriques des composants conservés.
- Create Git repository
- Define project architecture
- Define coding conventions
- Define documentation structure
- Configure Zephyr development environment
## Mesures
## Deliverables
### Alimentation
- README.md
- ROADMAP.md
- TODO.md
- LICENSE
- CONTRIBUTING.md
- Documentation structure
* Tension du pack piles
* Consommation en veille
* Consommation moteur
## Status
### Serrure
* Tension moteur
* Courant nominal
* Courant de démarrage
### Capteur
* Type
* Fonctionnement
### Signalisation
* LEDs
* Buzzer
## Livrables
* Documentation électrique
* Tableau des caractéristiques
## État
* [ ] Analyse électrique
- [x] Completed
---
# Phase 3 - Prototype électronique
# Phase 1 - Reverse Engineering
## Objectifs
## Objectives
Valider la compatibilité du matériel avec un XIAO nRF52840.
Document every reusable component of the original Boks One hardware.
## Matériel
## Hardware
* Seeed Studio XIAO BLE nRF52840
* Driver moteur
* Alimentation de laboratoire
### Enclosure
## Fonctionnalités
- External dimensions
- Internal dimensions
- Battery compartment
- Electronic compartment
* Pilotage moteur
* Lecture capteur
* Pilotage LEDs
* Pilotage buzzer
### Front Panel
- Keypad layout
- LED locations
- NFC area
- Mechanical fixation
### Lock
- Mechanical operation
- Motor characteristics
- Position sensor
### Electronics
- Connectors
- Wiring
- PCB analysis
## Deliverables
- Mechanical drawings
- Reverse engineering documentation
- Electrical documentation
## Status
- [ ] In progress
---
# Phase 2 - Development Platform
## Objectives
Validate the development hardware.
## Hardware
- Seeed Studio XIAO BLE nRF52840
- Development keypad
- PCF8574 GPIO expander
## Firmware
- Zephyr RTOS
- West
- CMake
- VSCodium
## Drivers
- RGB LED
- GPIO Expander
- Matrix Keypad
## Status
- [x] Completed
---
# Phase 3 - Hardware Validation
## Objectives
Validate every reusable hardware component.
## Components
- Lock
- Door sensor
- Battery monitoring
- NFC reader
- Buzzer
## Validation
Ouverture et fermeture de la serrure sans électronique Boks.
Each component must be individually tested before integration.
## État
## Status
* [ ] Prototype électronique
- [ ] In progress
---
# Phase 4 - Firmware Core
## Objectifs
## Objectives
Créer le firmware minimal autonome.
Create the autonomous firmware.
## Fonctionnalités
## Components
* Gestion clavier
* Gestion serrure
* Gestion capteur
* Gestion batterie
* Anti-bruteforce
* Timeout de saisie
- System initialization
- GPIO Expander
- Keypad
- Lock
- Door sensor
- Battery
- Buzzer
- NFC
## Security
- Administrator PIN
- PIN timeout
- Anti brute-force
- Configuration storage
## Validation
Ouverture avec un code administrateur unique.
Standalone operation without any external system.
## État
## Status
- [ ] In progress
* [ ] Firmware Core
---
# Phase 5 - NFC
# Phase 5 - Power Management
## Objectifs
## Objectives
Ajouter l'ouverture par badge NFC.
Optimize battery life.
## Fonctionnalités
## Features
* Lecture des badges
* Badge administrateur unique
* Activation NFC sur appui touche
* Fenêtre de lecture limitée dans le temps
- Deep Sleep
- Wake-up on keypad
- Wake-up on NFC
- Battery monitoring
- Low battery warning
## Validation
Ouverture par badge NFC.
Daily usage with long battery life.
## État
## Status
* [ ] Fonctionnalités de base
- [ ] Planned
---
# Phase 6 - Optimisation énergétique
# Phase 6 - Bluetooth
## Objectifs
## Objectives
Maximiser l'autonomie sur piles.
Provide local configuration through Bluetooth.
## Fonctionnalités
## Features
* Deep Sleep
* Réveil sur touche
* Réveil NFC
* Mesure batterie
- Initial pairing
- Administrator PIN configuration
- NFC enrollment
- Device information
- Firmware information
## Validation
Autonomie compatible avec un usage quotidien.
Complete local configuration without Home Assistant.
## État
## Status
* [ ] Optimisation énergétique
- [ ] Planned
---
# MVP - OpenParcelBox autonome
# MVP - Standalone OpenParcelBox
## Fonctionnalités attendues
## Required Features
* [ ] XIAO nRF52840
* [ ] Fonctionnement sur piles
* [ ] Gestion serrure
* [ ] Gestion capteur
* [ ] Gestion batterie
* [ ] Code administrateur
* [ ] Badge NFC administrateur
* [ ] Fonctionnement 100 % local
* [ ] Aucun cloud
* [ ] Aucun abonnement
* [ ] Aucun compte externe
- [ ] Standalone firmware
- [ ] Battery powered
- [ ] Keypad
- [ ] Lock
- [ ] Door sensor
- [ ] Battery monitoring
- [ ] Administrator PIN
- [ ] Administrator NFC badge
- [ ] Bluetooth configuration
- [ ] No cloud
- [ ] No subscription
Une fois cette étape atteinte, une Boks One devient totalement indépendante de son infrastructure d'origine.
At this stage, the original proprietary electronics are no longer required.
---
# Phase 7 - Application Flutter
# Phase 7 - Flutter Application
## Objectifs
## Platforms
Créer l'interface utilisateur officielle.
- Android
- iOS
## Plateformes
## Features
* Android
* iOS
- Bluetooth connection
- Device configuration
- Administrator management
- Device status
- Firmware update
## Fonctionnalités
## Status
* Connexion Bluetooth
* Configuration initiale
* Changement du code administrateur
* Enregistrement du badge administrateur
* Consultation de l'état de la boîte
## Validation
Configuration complète sans Home Assistant.
## État
* [ ] App flutter - Bluetooth
- [ ] Planned
---
# Phase 8 - Gestion des utilisateurs
# Phase 8 - User Management
## Objectifs
## Objectives
Permettre la gestion de plusieurs utilisateurs.
Support multiple users.
## Fonctionnalités
## Features
* Création utilisateur
* Modification utilisateur
* Suppression utilisateur
* Codes permanents
* Badges NFC permanents
- User creation
- User deletion
- Permanent PINs
- Permanent NFC badges
- User permissions
## Validation
## Status
Gestion multi-utilisateurs depuis l'application.
## État
* [ ] App flutter - Utilisateurs
- [ ] Planned
---
# Phase 9 - Historique local
# Phase 9 - Local Event History
## Objectifs
## Objectives
Conserver les événements dans la mémoire interne.
Store important events locally.
## Événements
## Events
* Ouverture par code
* Ouverture NFC
* Tentative invalide
* Batterie faible
- PIN unlock
- NFC unlock
- Invalid PIN
- Invalid badge
- Low battery
- Door opened
- Door closed
## Validation
## Status
Consultation de l'historique depuis l'application.
## État
* [ ] App flutter - Historique
- [ ] Planned
---
# Produit autonome complet
# Standalone Product
## Fonctionnalités attendues
## Features
* [ ] Gestion multi-utilisateurs
* [ ] Gestion NFC
* [ ] Historique local
* [ ] Configuration Bluetooth
* [ ] Fonctionnement sans Home Assistant
- Multi-user support
- NFC
- Bluetooth
- Local history
- Complete local administration
---
# Phase 10 - Zigbee
## Objectifs
## Objectives
Ajouter la communication Zigbee.
Add Zigbee connectivity.
## Fonctionnalités
## Features
* État serrure
* État porte
* Niveau batterie
* Remontée d'événements
- Lock state
- Door state
- Battery level
- Event reporting
## Validation
## Compatibility
Appairage Zigbee fonctionnel.
- Zigbee Home Automation
- Zigbee2MQTT
## État
## Status
* [ ] Zigbee - Remontée d'états
- [ ] Planned
---
# Phase 11 - Home Assistant
## Objectifs
## Objectives
Ajouter l'intégration Home Assistant.
Native Home Assistant integration.
## Compatibilité
## Compatibility
* ZHA
* Zigbee2MQTT
- ZHA
- Zigbee2MQTT
## Fonctionnalités
## Features
* État serrure
* État porte
* Batterie
* Historique
* Gestion utilisateurs
- Lock control
- Door state
- Battery
- Event history
- User management
- Configuration
## Validation
## Status
Administration complète depuis Home Assistant.
## État
* [ ] Intégration Hassio - Remontée
- [ ] Planned
---
```md
# Phase 12 - Gestion des codes permanents
# Phase 12 - Temporary Access
## Objectifs
## Objectives
Permettre l'administration complète des utilisateurs depuis Home Assistant.
Support temporary access credentials.
## Compatibilité
## Features
* ZHA
* Zigbee2MQTT
- Expiration date
- Expiration time
- Usage counter
- One-time PINs
- Temporary NFC badges
## Fonctionnalités
## Status
* Création d'utilisateurs
* Modification d'utilisateurs
* Suppression d'utilisateurs
* Création de codes permanents
* Suppression de codes permanents
* Association de badges NFC
* Suppression de badges NFC
## Validation
Administration complète des accès permanents depuis Home Assistant.
## État
* [ ] Intégration Hassio - Codes permanents
- [ ] Planned
---
# Phase 13 - Codes temporaires
# Phase 13 - OpenParcelBox PCB
## Objectifs
## Objectives
Ajouter les accès temporaires.
Design a dedicated PCB.
## Fonctionnalités
## Requirements
* Expiration par date
* Expiration par heure
* Nombre maximal d'utilisations
* Codes à usage unique
- Based on XIAO nRF52840
- Easy to assemble
- Beginner friendly
- Low power consumption
## Validation
Gestion complète depuis Home Assistant et l'application.
Fully reproducible assembly.
## État
## Status
* [ ] Intégration Hassio - Codes temporaires
- [ ] Planned
---
# Phase 14 - PCB OpenParcelBox
# Phase 14 - Field Validation
## Objectifs
## Objectives
Créer un PCB dédié simple à assembler.
Validate the complete system.
## Contraintes
## Tests
* Basé sur XIAO nRF52840
* Composants traversants privilégiés
* Accessible aux makers débutants
- Long-term reliability
- Battery autonomy
- Environmental testing
- Hundreds of lock cycles
- Zigbee stability
- Bluetooth stability
- Recovery after power loss
## Validation
## Status
Montage reproductible sans équipement professionnel.
## État
* [ ] PCB OpenParcelBox
- [ ] Planned
---
# Phase 15 - Documentation finale
# Phase 15 - Documentation
## Documentation utilisateur
## User Documentation
* Installation
* Configuration
* Dépannage
- Installation
- Configuration
- Troubleshooting
## Documentation maker
## Maker Documentation
* Assemblage
* Flash firmware
* Mise à jour
- Assembly
- Flashing
- PCB
- Hardware
## Documentation développeur
## Developer Documentation
* Architecture
* API
* Contributions
- Firmware architecture
- Hardware architecture
- APIs
- Coding conventions
- Contribution guide
## Validation
## Status
Publication officielle de la version 1.0.
## État
* [ ] Documentation
- [ ] Planned
---
# Version 1.0
## Fonctionnalités finales
## Expected Features
* Fonctionnement autonome
* NFC
* Bluetooth
* Application Android/iOS
* Zigbee
* Home Assistant
* Historique
* Codes permanents
* Codes temporaires
* Aucun cloud
* Aucun abonnement
* Aucun compte externe
```
- Standalone firmware
- Battery powered
- Bluetooth
- NFC
- Zigbee
- Home Assistant
- Flutter application
- Local history
- Permanent users
- Temporary users
- No cloud
- No subscription
- Fully open-source
+324 -123
View File
@@ -1,169 +1,370 @@
# TODO OpenParcelBox
# TODO - OpenParcelBox
## Phase 0 — Reverse Engineering
This document tracks the remaining work required to reach the first stable release of OpenParcelBox.
### Documentation
* [ ] Photographier tous les composants internes.
* [ ] Documenter les mesures électriques.
* [ ] Identifier tous les connecteurs.
* [ ] Compléter hardware-reverse-engineering.md.
### Clavier
* [ ] Identifier le brochage complet.
* [ ] Identifier la matrice.
* [ ] Vérifier la présence éventuelle de diodes.
### Verrou
* [ ] Identifier le mécanisme utilisé.
* [ ] Mesurer la tension de fonctionnement.
* [ ] Mesurer le courant d'ouverture.
* [ ] Mesurer le courant de maintien.
### Capteur
* [ ] Identifier la technologie utilisée.
* [ ] Identifier le brochage.
* [ ] Vérifier le comportement électrique.
### Batterie
* [ ] Identifier la technologie.
* [ ] Identifier la capacité.
* [ ] Mesurer la tension nominale.
* [ ] Identifier le système de recharge.
Tasks are grouped by development phase and updated throughout the project.
---
## Phase 1 — Validation matérielle
# Phase 0 - Project Foundation
### Prototype
## Repository
* [ ] Vérifier la compatibilité du XIAO nRF52840.
* [ ] Tester le clavier.
* [ ] Tester le verrou.
* [ ] Tester le capteur.
* [ ] Tester la mesure batterie.
- [x] Create Git repository
- [x] Create project structure
- [x] Configure Git
- [x] Create README
- [x] Create ROADMAP
- [x] Create TODO
- [x] Add LICENSE
- [x] Add CONTRIBUTING
### Zigbee
## Documentation
* [ ] Valider la pile Zigbee sous Zephyr.
* [ ] Tester l'intégration Home Assistant.
* [ ] Tester ZHA.
* [ ] Tester Zigbee2MQTT.
- [x] Create documentation tree
- [x] Create firmware documentation
- [ ] Create hardware documentation
- [ ] Create development documentation
- [ ] Create protocol documentation
## Development Environment
- [x] Configure Zephyr
- [x] Configure West
- [x] Configure CMake
- [x] Configure VSCodium
- [x] Configure formatting conventions
- [x] Define firmware architecture
---
## Phase 2 — Firmware minimal
# Phase 1 - Reverse Engineering
### Infrastructure
## Mechanical
* [ ] Initialiser le projet Zephyr.
* [ ] Configurer west.
* [ ] Configurer CMake.
* [ ] Configurer la chaîne de compilation.
- [ ] Measure enclosure
- [ ] Measure internal space
- [ ] Measure mounting points
- [ ] Measure keypad
- [ ] Measure NFC area
### Core
## Lock
* [ ] Créer la structure des modules.
* [ ] Mettre en place la journalisation.
- [ ] Validate lock mechanism
- [ ] Validate motor characteristics
- [ ] Validate limit switch
### Keypad
## Electronics
* [ ] Lecture de la matrice.
* [ ] Anti-rebond.
* [ ] Validation des touches.
### Lock Controller
* [ ] Pilotage du verrou.
* [ ] Détection des erreurs.
* [ ] Détection du verrouillage.
### Sensor Manager
* [ ] Lecture du capteur.
* [ ] Gestion des événements.
### Power Management
* [ ] Surveillance batterie.
* [ ] Modes basse consommation.
- [ ] Identify every connector
- [ ] Document PCB
- [ ] Document wiring
- [ ] Document LEDs
- [ ] Document buzzer
---
## Phase 3 — Fonctionnalités utilisateur
# Phase 2 - Development Platform
### Contrôle d'accès
## Firmware Infrastructure
* [ ] Codes administrateur.
* [ ] Codes permanents.
* [ ] Codes temporaires.
* [ ] Protection anti-bruteforce.
- [x] RGB LED driver
- [x] GPIO Expander driver
- [x] Matrix Keypad driver
- [ ] Lock driver
- [ ] Door sensor driver
- [ ] Battery driver
- [ ] NFC driver
- [ ] Buzzer driver
### Zigbee
## Documentation
* [ ] Publication des états.
* [ ] Réception des commandes.
* [ ] Exposition des entités Home Assistant.
### OTA
* [ ] Mise à jour sécurisée.
* [ ] Vérification d'intégrité.
* [ ] Gestion des erreurs.
- [x] keypad.md
- [x] gpio_expander.md
- [ ] led.md
- [ ] lock.md
- [ ] battery.md
- [ ] nfc.md
- [ ] buzzer.md
- [ ] debug.md
---
## Phase 4 — PCB V1
# Phase 3 - Hardware Validation
### Conception
## Lock
* [ ] Schéma complet.
* [ ] Vérification ERC.
* [ ] Routage PCB.
* [ ] Vérification DRC.
- [ ] Drive motor
- [ ] Validate opening pulse
- [ ] Validate opening detection
- [ ] Validate timeout
- [ ] Validate error handling
### Validation
## Door Sensor
* [ ] Assemblage prototype.
* [ ] Validation électrique.
* [ ] Validation mécanique.
- [ ] Read sensor
- [ ] Validate state changes
- [ ] Validate debounce
## Battery
- [ ] Read voltage
- [ ] Low battery detection
- [ ] Battery calibration
## NFC
- [ ] Initialize reader
- [ ] Read UID
- [ ] Detect badge removal
## Buzzer
- [ ] Single beep
- [ ] Double beep
- [ ] Error beep
- [ ] Success beep
---
## Phase 4.5 — Validation terrain
# Phase 4 - Firmware Core
### Fiabilité
## Initialization
* [ ] Validation autonomie batterie.
* [ ] Validation portée Zigbee.
* [ ] Validation ouverture/fermeture répétée.
* [ ] Validation comportement après redémarrage.
* [ ] Validation après batterie faible.
- [ ] System startup
- [ ] Peripheral initialization
- [ ] Error handling
### Home Assistant
## Access Control
* [ ] Validation ZHA.
* [ ] Validation Zigbee2MQTT.
* [ ] Validation découverte automatique.
* [ ] Validation des mises à jour OTA.
- [ ] Administrator PIN
- [ ] PIN verification
- [ ] PIN timeout
- [ ] Anti brute-force
- [ ] Lock sequence
- [ ] Door state validation
## Configuration
- [ ] Persistent storage
- [ ] Factory reset
- [ ] Version information
---
## Phase 5 Publication
# Phase 5 - Power Management
### Documentation
## Battery
* [ ] Guide d'installation.
* [ ] Guide Home Assistant.
* [ ] Guide développeur.
- [ ] Battery monitoring
- [ ] Battery warnings
### Publication
## Low Power
* [ ] Publication du firmware.
* [ ] Publication des schémas.
* [ ] Publication des fichiers PCB.
* [ ] Création de la release V1.
- [ ] Sleep mode
- [ ] Wake on keypad
- [ ] Wake on NFC
## Validation
- [ ] Measure sleep current
- [ ] Measure battery life
---
# MVP - Standalone Firmware
## Firmware
- [ ] Complete firmware startup
- [ ] Lock opening
- [ ] Door detection
- [ ] Battery monitoring
- [ ] Administrator PIN
- [ ] Administrator NFC badge
- [ ] Audible feedback
## Hardware
- [ ] Standalone operation
- [ ] Battery powered
- [ ] No cloud
- [ ] No subscription
---
# Phase 6 - Bluetooth
## Communication
- [ ] BLE initialization
- [ ] Pairing
- [ ] Secure connection
## Configuration
- [ ] Administrator PIN
- [ ] Administrator badge
- [ ] Device information
---
# Phase 7 - Flutter Application
## Mobile
- [ ] Android
- [ ] iOS
## Features
- [ ] Device discovery
- [ ] Bluetooth pairing
- [ ] Device configuration
- [ ] Firmware information
---
# Phase 8 - User Management
## Users
- [ ] Create user
- [ ] Edit user
- [ ] Delete user
## Credentials
- [ ] Permanent PIN
- [ ] Permanent NFC badge
---
# Phase 9 - Local History
## Events
- [ ] PIN unlock
- [ ] NFC unlock
- [ ] Invalid PIN
- [ ] Invalid badge
- [ ] Door opened
- [ ] Door closed
- [ ] Low battery
---
# Phase 10 - Zigbee
## Connectivity
- [ ] Zigbee stack
- [ ] Network join
- [ ] Device discovery
## Entities
- [ ] Lock
- [ ] Door
- [ ] Battery
- [ ] Events
---
# Phase 11 - Home Assistant
## Compatibility
- [ ] ZHA
- [ ] Zigbee2MQTT
## Features
- [ ] Lock control
- [ ] Door state
- [ ] Battery level
- [ ] Event reporting
- [ ] User management
---
# Phase 12 - Temporary Access
## Access Management
- [ ] Temporary PIN
- [ ] Temporary NFC badge
- [ ] Expiration date
- [ ] Usage counter
- [ ] One-time credentials
---
# Phase 13 - PCB
## Design
- [ ] Schematic
- [ ] ERC validation
- [ ] PCB routing
- [ ] DRC validation
## Prototype
- [ ] Assembly
- [ ] Electrical validation
- [ ] Mechanical validation
---
# Phase 14 - Field Validation
## Reliability
- [ ] Long-term testing
- [ ] Battery endurance
- [ ] Lock endurance
- [ ] Recovery after reset
## Connectivity
- [ ] Bluetooth validation
- [ ] Zigbee validation
- [ ] Home Assistant validation
---
# Phase 15 - Documentation
## User
- [ ] Installation guide
- [ ] Configuration guide
- [ ] Troubleshooting guide
## Maker
- [ ] Hardware assembly
- [ ] Firmware flashing
- [ ] PCB assembly
## Developer
- [ ] Firmware architecture
- [ ] Hardware architecture
- [ ] API reference
- [ ] Coding conventions
---
# Version 1.0
## Release Checklist
- [ ] Firmware complete
- [ ] Flutter application complete
- [ ] Zigbee complete
- [ ] Home Assistant integration complete
- [ ] PCB validated
- [ ] Documentation complete
- [ ] First public release