Initial OpenParcelBox project structure
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
|||||||
|
# ----------------------------
|
||||||
|
# VSCodium / VSCode
|
||||||
|
# ----------------------------
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# Zephyr
|
||||||
|
# ----------------------------
|
||||||
|
firmware/build/
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# Python
|
||||||
|
# ----------------------------
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# Logs
|
||||||
|
# ----------------------------
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# OS
|
||||||
|
# ----------------------------
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# KiCad backup
|
||||||
|
# ----------------------------
|
||||||
|
*.bak
|
||||||
|
*-bak
|
||||||
|
*.kicad_pcb-bak
|
||||||
|
*.kicad_sch-bak
|
||||||
|
*.kicad_prl
|
||||||
|
*.autosave
|
||||||
|
_autosave-*
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# Temporary files
|
||||||
|
# ----------------------------
|
||||||
|
*.tmp
|
||||||
|
*.temp
|
||||||
|
|
||||||
|
# ----------------------------
|
||||||
|
# Archives
|
||||||
|
# ----------------------------
|
||||||
|
archives/
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
Toutes les modifications notables de ce projet seront documentées dans ce fichier.
|
||||||
|
|
||||||
|
Le format s'inspire de Keep a Changelog.
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
OpenParcelBox
|
||||||
|
|
||||||
|
Copyright (C) 2026 Tony
|
||||||
|
|
||||||
|
Firmware -> GPL-3.0-or-later
|
||||||
|
Hardware -> CERN-OHL-S-2.0
|
||||||
|
Documentation -> CC-BY-SA-4.0
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
# OpenParcelBox
|
||||||
|
|
||||||
|
> 🚧 Statut : Reverse Engineering en cours
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Pourquoi OpenParcelBox ?
|
||||||
|
|
||||||
|
De nombreuses boîtes à colis connectées reposent sur des services cloud et des applications propriétaires.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Fonctionnalités prévues
|
||||||
|
|
||||||
|
## Fonctionnelles
|
||||||
|
|
||||||
|
* 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).
|
||||||
|
|
||||||
|
## Techniques
|
||||||
|
|
||||||
|
* Fonctionnement entièrement local.
|
||||||
|
* Aucune dépendance à un service cloud.
|
||||||
|
* Faible consommation énergétique.
|
||||||
|
* Matériel reproductible.
|
||||||
|
* Logiciel libre.
|
||||||
|
* Documentation complète.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Architecture
|
||||||
|
|
||||||
|
## Matériel
|
||||||
|
|
||||||
|
* Seeed Studio XIAO BLE nRF52840
|
||||||
|
|
||||||
|
## Logiciel
|
||||||
|
|
||||||
|
* Zephyr RTOS
|
||||||
|
* C++
|
||||||
|
* west
|
||||||
|
* CMake
|
||||||
|
|
||||||
|
## Communication
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# État du support Zigbee
|
||||||
|
|
||||||
|
Le support Zigbee fait partie des objectifs de la V1 mais n'est pas encore validé expérimentalement.
|
||||||
|
|
||||||
|
La pile Zigbee retenue ainsi que son intégration dans Home Assistant seront définies au cours du développement.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Documentation
|
||||||
|
|
||||||
|
## Français
|
||||||
|
|
||||||
|
* [Roadmap](ROADMAP.md)
|
||||||
|
* [Architecture](docs/fr/ARCHITECTURE.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Structure du dépôt
|
||||||
|
|
||||||
|
```text
|
||||||
|
OpenParcelBox
|
||||||
|
├── docs/
|
||||||
|
│ └── fr/
|
||||||
|
├── firmware/
|
||||||
|
├── hardware/
|
||||||
|
├── homeassistant/
|
||||||
|
├── images/
|
||||||
|
├── mobile-app/
|
||||||
|
├── CHANGELOG.md
|
||||||
|
├── README.md
|
||||||
|
├── ROADMAP.md
|
||||||
|
├── TODO.md
|
||||||
|
└── LICENSE
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# État du projet
|
||||||
|
|
||||||
|
🚧 Projet en cours de reverse engineering.
|
||||||
|
|
||||||
|
Travaux actuellement en cours :
|
||||||
|
|
||||||
|
* 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)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Licence
|
||||||
|
|
||||||
|
Les différents composants du projet sont distribués sous des licences adaptées à leur nature.
|
||||||
|
|
||||||
|
| Composant | Licence |
|
||||||
|
| ------------- | ------------------------------------ |
|
||||||
|
| Projet | [LICENSE](LICENSE) |
|
||||||
|
| Firmware | [firmware/LICENSE](firmware/LICENSE) |
|
||||||
|
| Hardware | [hardware/LICENSE](hardware/LICENSE) |
|
||||||
|
| Documentation | [docs/LICENSE](docs/LICENSE) |
|
||||||
+511
@@ -0,0 +1,511 @@
|
|||||||
|
# OpenParcelBox - Roadmap
|
||||||
|
|
||||||
|
## Présentation
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Le projet est développé et validé sur une Boks One.
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 0 - Initialisation du projet
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 1 - Analyse matérielle
|
||||||
|
|
||||||
|
## 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 2 - Analyse électrique
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Identifier les caractéristiques électriques des composants conservés.
|
||||||
|
|
||||||
|
## Mesures
|
||||||
|
|
||||||
|
### Alimentation
|
||||||
|
|
||||||
|
* Tension du pack piles
|
||||||
|
* Consommation en veille
|
||||||
|
* Consommation moteur
|
||||||
|
|
||||||
|
### 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
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 3 - Prototype électronique
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Valider la compatibilité du matériel avec un XIAO nRF52840.
|
||||||
|
|
||||||
|
## Matériel
|
||||||
|
|
||||||
|
* Seeed Studio XIAO BLE nRF52840
|
||||||
|
* Driver moteur
|
||||||
|
* Alimentation de laboratoire
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
* Pilotage moteur
|
||||||
|
* Lecture capteur
|
||||||
|
* Pilotage LEDs
|
||||||
|
* Pilotage buzzer
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Ouverture et fermeture de la serrure sans électronique Boks.
|
||||||
|
|
||||||
|
## État
|
||||||
|
|
||||||
|
* [ ] Prototype électronique
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 4 - Firmware Core
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Créer le firmware minimal autonome.
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
* Gestion clavier
|
||||||
|
* Gestion serrure
|
||||||
|
* Gestion capteur
|
||||||
|
* Gestion batterie
|
||||||
|
* Anti-bruteforce
|
||||||
|
* Timeout de saisie
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Ouverture avec un code administrateur unique.
|
||||||
|
|
||||||
|
## État
|
||||||
|
|
||||||
|
* [ ] Firmware Core
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 5 - NFC
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Ajouter l'ouverture par badge NFC.
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
* Lecture des badges
|
||||||
|
* Badge administrateur unique
|
||||||
|
* Activation NFC sur appui touche
|
||||||
|
* Fenêtre de lecture limitée dans le temps
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Ouverture par badge NFC.
|
||||||
|
|
||||||
|
## État
|
||||||
|
|
||||||
|
* [ ] Fonctionnalités de base
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 6 - Optimisation énergétique
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Maximiser l'autonomie sur piles.
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
* Deep Sleep
|
||||||
|
* Réveil sur touche
|
||||||
|
* Réveil NFC
|
||||||
|
* Mesure batterie
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Autonomie compatible avec un usage quotidien.
|
||||||
|
|
||||||
|
## État
|
||||||
|
|
||||||
|
* [ ] Optimisation énergétique
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# MVP - OpenParcelBox autonome
|
||||||
|
|
||||||
|
## Fonctionnalités attendues
|
||||||
|
|
||||||
|
* [ ] 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
|
||||||
|
|
||||||
|
Une fois cette étape atteinte, une Boks One devient totalement indépendante de son infrastructure d'origine.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 7 - Application Flutter
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Créer l'interface utilisateur officielle.
|
||||||
|
|
||||||
|
## Plateformes
|
||||||
|
|
||||||
|
* Android
|
||||||
|
* iOS
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
* 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
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 8 - Gestion des utilisateurs
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Permettre la gestion de plusieurs utilisateurs.
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
* Création utilisateur
|
||||||
|
* Modification utilisateur
|
||||||
|
* Suppression utilisateur
|
||||||
|
* Codes permanents
|
||||||
|
* Badges NFC permanents
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Gestion multi-utilisateurs depuis l'application.
|
||||||
|
|
||||||
|
## État
|
||||||
|
|
||||||
|
* [ ] App flutter - Utilisateurs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 9 - Historique local
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Conserver les événements dans la mémoire interne.
|
||||||
|
|
||||||
|
## Événements
|
||||||
|
|
||||||
|
* Ouverture par code
|
||||||
|
* Ouverture NFC
|
||||||
|
* Tentative invalide
|
||||||
|
* Batterie faible
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Consultation de l'historique depuis l'application.
|
||||||
|
|
||||||
|
## État
|
||||||
|
|
||||||
|
* [ ] App flutter - Historique
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Produit autonome complet
|
||||||
|
|
||||||
|
## Fonctionnalités attendues
|
||||||
|
|
||||||
|
* [ ] Gestion multi-utilisateurs
|
||||||
|
* [ ] Gestion NFC
|
||||||
|
* [ ] Historique local
|
||||||
|
* [ ] Configuration Bluetooth
|
||||||
|
* [ ] Fonctionnement sans Home Assistant
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 10 - Zigbee
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Ajouter la communication Zigbee.
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
* État serrure
|
||||||
|
* État porte
|
||||||
|
* Niveau batterie
|
||||||
|
* Remontée d'événements
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Appairage Zigbee fonctionnel.
|
||||||
|
|
||||||
|
## État
|
||||||
|
|
||||||
|
* [ ] Zigbee - Remontée d'états
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 11 - Home Assistant
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Ajouter l'intégration Home Assistant.
|
||||||
|
|
||||||
|
## Compatibilité
|
||||||
|
|
||||||
|
* ZHA
|
||||||
|
* Zigbee2MQTT
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
* État serrure
|
||||||
|
* État porte
|
||||||
|
* Batterie
|
||||||
|
* Historique
|
||||||
|
* Gestion utilisateurs
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Administration complète depuis Home Assistant.
|
||||||
|
|
||||||
|
## État
|
||||||
|
|
||||||
|
* [ ] Intégration Hassio - Remontée
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
```md
|
||||||
|
# Phase 12 - Gestion des codes permanents
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Permettre l'administration complète des utilisateurs depuis Home Assistant.
|
||||||
|
|
||||||
|
## Compatibilité
|
||||||
|
|
||||||
|
* ZHA
|
||||||
|
* Zigbee2MQTT
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
* 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
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 13 - Codes temporaires
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Ajouter les accès temporaires.
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
* Expiration par date
|
||||||
|
* Expiration par heure
|
||||||
|
* Nombre maximal d'utilisations
|
||||||
|
* Codes à usage unique
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Gestion complète depuis Home Assistant et l'application.
|
||||||
|
|
||||||
|
## État
|
||||||
|
|
||||||
|
* [ ] Intégration Hassio - Codes temporaires
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 14 - PCB OpenParcelBox
|
||||||
|
|
||||||
|
## Objectifs
|
||||||
|
|
||||||
|
Créer un PCB dédié simple à assembler.
|
||||||
|
|
||||||
|
## Contraintes
|
||||||
|
|
||||||
|
* Basé sur XIAO nRF52840
|
||||||
|
* Composants traversants privilégiés
|
||||||
|
* Accessible aux makers débutants
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Montage reproductible sans équipement professionnel.
|
||||||
|
|
||||||
|
## État
|
||||||
|
|
||||||
|
* [ ] PCB OpenParcelBox
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 15 - Documentation finale
|
||||||
|
|
||||||
|
## Documentation utilisateur
|
||||||
|
|
||||||
|
* Installation
|
||||||
|
* Configuration
|
||||||
|
* Dépannage
|
||||||
|
|
||||||
|
## Documentation maker
|
||||||
|
|
||||||
|
* Assemblage
|
||||||
|
* Flash firmware
|
||||||
|
* Mise à jour
|
||||||
|
|
||||||
|
## Documentation développeur
|
||||||
|
|
||||||
|
* Architecture
|
||||||
|
* API
|
||||||
|
* Contributions
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Publication officielle de la version 1.0.
|
||||||
|
|
||||||
|
## État
|
||||||
|
|
||||||
|
* [ ] Documentation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Version 1.0
|
||||||
|
|
||||||
|
## Fonctionnalités finales
|
||||||
|
|
||||||
|
* Fonctionnement autonome
|
||||||
|
* NFC
|
||||||
|
* Bluetooth
|
||||||
|
* Application Android/iOS
|
||||||
|
* Zigbee
|
||||||
|
* Home Assistant
|
||||||
|
* Historique
|
||||||
|
* Codes permanents
|
||||||
|
* Codes temporaires
|
||||||
|
* Aucun cloud
|
||||||
|
* Aucun abonnement
|
||||||
|
* Aucun compte externe
|
||||||
|
```
|
||||||
@@ -0,0 +1,169 @@
|
|||||||
|
# TODO OpenParcelBox
|
||||||
|
|
||||||
|
## Phase 0 — Reverse Engineering
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 1 — Validation matérielle
|
||||||
|
|
||||||
|
### Prototype
|
||||||
|
|
||||||
|
* [ ] Vérifier la compatibilité du XIAO nRF52840.
|
||||||
|
* [ ] Tester le clavier.
|
||||||
|
* [ ] Tester le verrou.
|
||||||
|
* [ ] Tester le capteur.
|
||||||
|
* [ ] Tester la mesure batterie.
|
||||||
|
|
||||||
|
### Zigbee
|
||||||
|
|
||||||
|
* [ ] Valider la pile Zigbee sous Zephyr.
|
||||||
|
* [ ] Tester l'intégration Home Assistant.
|
||||||
|
* [ ] Tester ZHA.
|
||||||
|
* [ ] Tester Zigbee2MQTT.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 2 — Firmware minimal
|
||||||
|
|
||||||
|
### Infrastructure
|
||||||
|
|
||||||
|
* [ ] Initialiser le projet Zephyr.
|
||||||
|
* [ ] Configurer west.
|
||||||
|
* [ ] Configurer CMake.
|
||||||
|
* [ ] Configurer la chaîne de compilation.
|
||||||
|
|
||||||
|
### Core
|
||||||
|
|
||||||
|
* [ ] Créer la structure des modules.
|
||||||
|
* [ ] Mettre en place la journalisation.
|
||||||
|
|
||||||
|
### Keypad
|
||||||
|
|
||||||
|
* [ ] 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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 3 — Fonctionnalités utilisateur
|
||||||
|
|
||||||
|
### Contrôle d'accès
|
||||||
|
|
||||||
|
* [ ] Codes administrateur.
|
||||||
|
* [ ] Codes permanents.
|
||||||
|
* [ ] Codes temporaires.
|
||||||
|
* [ ] Protection anti-bruteforce.
|
||||||
|
|
||||||
|
### Zigbee
|
||||||
|
|
||||||
|
* [ ] 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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 4 — PCB V1
|
||||||
|
|
||||||
|
### Conception
|
||||||
|
|
||||||
|
* [ ] Schéma complet.
|
||||||
|
* [ ] Vérification ERC.
|
||||||
|
* [ ] Routage PCB.
|
||||||
|
* [ ] Vérification DRC.
|
||||||
|
|
||||||
|
### Validation
|
||||||
|
|
||||||
|
* [ ] Assemblage prototype.
|
||||||
|
* [ ] Validation électrique.
|
||||||
|
* [ ] Validation mécanique.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 4.5 — Validation terrain
|
||||||
|
|
||||||
|
### Fiabilité
|
||||||
|
|
||||||
|
* [ ] 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.
|
||||||
|
|
||||||
|
### Home Assistant
|
||||||
|
|
||||||
|
* [ ] Validation ZHA.
|
||||||
|
* [ ] Validation Zigbee2MQTT.
|
||||||
|
* [ ] Validation découverte automatique.
|
||||||
|
* [ ] Validation des mises à jour OTA.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 5 — Publication
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
* [ ] Guide d'installation.
|
||||||
|
* [ ] Guide Home Assistant.
|
||||||
|
* [ ] Guide développeur.
|
||||||
|
|
||||||
|
### Publication
|
||||||
|
|
||||||
|
* [ ] Publication du firmware.
|
||||||
|
* [ ] Publication des schémas.
|
||||||
|
* [ ] Publication des fichiers PCB.
|
||||||
|
* [ ] Création de la release V1.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
OpenParcelBox Documentation
|
||||||
|
|
||||||
|
Copyright (C) 2026 Tony
|
||||||
|
|
||||||
|
Except where otherwise noted, the documentation contained
|
||||||
|
in this repository is licensed under the Creative Commons
|
||||||
|
Attribution-ShareAlike 4.0 International License.
|
||||||
|
|
||||||
|
You may obtain a copy of the license at:
|
||||||
|
|
||||||
|
https://creativecommons.org/licenses/by-sa/4.0/
|
||||||
|
|
||||||
|
SPDX-License-Identifier: CC-BY-SA-4.0
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# Contraintes documentation
|
||||||
|
|
||||||
|
## Langue
|
||||||
|
|
||||||
|
- Documentation principale en français.
|
||||||
|
- Traductions possibles dans le futur.
|
||||||
|
|
||||||
|
## Pérennité
|
||||||
|
|
||||||
|
- Documentation versionnée dans Git.
|
||||||
|
- Formats ouverts uniquement.
|
||||||
|
|
||||||
|
## Reproductibilité
|
||||||
|
|
||||||
|
- Chaque étape de fabrication doit être documentée.
|
||||||
|
- Chaque étape d'installation doit être documentée.
|
||||||
|
|
||||||
|
## Illustrations
|
||||||
|
|
||||||
|
- Privilégier les schémas vectoriels.
|
||||||
|
- Les photos doivent être archivées dans le dépôt.
|
||||||
|
|
||||||
|
## Open Source
|
||||||
|
|
||||||
|
- Aucun document propriétaire requis pour reproduire le projet.
|
||||||
@@ -0,0 +1,328 @@
|
|||||||
|
# Architecture OpenParcelBox
|
||||||
|
|
||||||
|
## Objectif du projet
|
||||||
|
|
||||||
|
OpenParcelBox est un projet open-source visant à remplacer l'électronique propriétaire de la Boks One tout en conservant autant que possible les éléments mécaniques, électromécaniques et esthétiques d'origine.
|
||||||
|
|
||||||
|
Les objectifs principaux sont :
|
||||||
|
|
||||||
|
* Fonctionnement local.
|
||||||
|
* Intégration Home Assistant.
|
||||||
|
* Communication Zigbee.
|
||||||
|
* Mises à jour OTA.
|
||||||
|
* Documentation complète.
|
||||||
|
* Reproductibilité du matériel et du logiciel.
|
||||||
|
* Faible consommation énergétique.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Vue d'ensemble
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌─────────────────────────┐
|
||||||
|
│ Home Assistant │
|
||||||
|
└────────────┬────────────┘
|
||||||
|
│
|
||||||
|
│ Zigbee
|
||||||
|
▼
|
||||||
|
┌─────────────────────────┐
|
||||||
|
│ OpenParcelBox │
|
||||||
|
│ │
|
||||||
|
│ XIAO nRF52840 │
|
||||||
|
│ │
|
||||||
|
│ ├─ Gestion clavier │
|
||||||
|
│ ├─ Gestion accès │
|
||||||
|
│ ├─ Gestion verrou │
|
||||||
|
│ ├─ Gestion batterie │
|
||||||
|
│ ├─ Gestion capteurs │
|
||||||
|
│ ├─ Zigbee │
|
||||||
|
│ └─ OTA │
|
||||||
|
└─────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Principes de conception
|
||||||
|
|
||||||
|
## Conservation de la façade
|
||||||
|
|
||||||
|
Le projet ne doit nécessiter aucune modification visible de la façade.
|
||||||
|
|
||||||
|
Le clavier d'origine est conservé :
|
||||||
|
|
||||||
|
* Disposition verticale 2 × 6.
|
||||||
|
* Aucun perçage supplémentaire.
|
||||||
|
* Aucun changement esthétique.
|
||||||
|
|
||||||
|
## Réutilisation du matériel existant
|
||||||
|
|
||||||
|
Lorsque cela est possible :
|
||||||
|
|
||||||
|
* Conservation du clavier.
|
||||||
|
* Conservation du mécanisme de verrouillage.
|
||||||
|
* Conservation des capteurs.
|
||||||
|
* Conservation du compartiment batterie.
|
||||||
|
|
||||||
|
## Faible consommation
|
||||||
|
|
||||||
|
Le système doit être optimisé pour un fonctionnement sur batterie :
|
||||||
|
|
||||||
|
* Utilisation des modes basse consommation.
|
||||||
|
* Réveil uniquement lorsque nécessaire.
|
||||||
|
* Minimisation du temps d'activité radio.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Architecture matérielle
|
||||||
|
|
||||||
|
## Contrôleur principal
|
||||||
|
|
||||||
|
### Seeed Studio XIAO BLE nRF52840
|
||||||
|
|
||||||
|
Responsabilités :
|
||||||
|
|
||||||
|
* Lecture du clavier.
|
||||||
|
* Gestion des accès.
|
||||||
|
* Pilotage du verrou.
|
||||||
|
* Surveillance batterie.
|
||||||
|
* Gestion des capteurs.
|
||||||
|
* Communication Zigbee.
|
||||||
|
* Mise à jour OTA.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Clavier
|
||||||
|
|
||||||
|
Le clavier d'origine est conservé.
|
||||||
|
|
||||||
|
Caractéristiques connues :
|
||||||
|
|
||||||
|
* Format vertical 2 × 6.
|
||||||
|
* Réutilisation du câblage existant si possible.
|
||||||
|
|
||||||
|
Fonctionnalités prévues :
|
||||||
|
|
||||||
|
* Codes administrateur.
|
||||||
|
* Codes permanents.
|
||||||
|
* Codes temporaires.
|
||||||
|
* Protection contre les tentatives répétées.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verrouillage
|
||||||
|
|
||||||
|
Le mécanisme de verrouillage d'origine est conservé.
|
||||||
|
|
||||||
|
Le firmware devra pouvoir :
|
||||||
|
|
||||||
|
* Commander l'ouverture.
|
||||||
|
* Commander le verrouillage.
|
||||||
|
* Vérifier le retour en position verrouillée.
|
||||||
|
|
||||||
|
Une couche d'abstraction permettra de remplacer facilement le matériel si nécessaire.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Batterie
|
||||||
|
|
||||||
|
Le système devra surveiller :
|
||||||
|
|
||||||
|
* La tension batterie.
|
||||||
|
* Les seuils d'alerte.
|
||||||
|
* L'état de charge si disponible.
|
||||||
|
|
||||||
|
Les alertes devront être remontées à Home Assistant.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Capteurs
|
||||||
|
|
||||||
|
À ce stade du reverse engineering, un seul capteur est identifié.
|
||||||
|
|
||||||
|
Fonction supposée :
|
||||||
|
|
||||||
|
* Détection du retour du crochet dans le mécanisme de verrouillage.
|
||||||
|
|
||||||
|
Le fonctionnement exact devra être confirmé lors du démontage et de l'analyse électronique.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Architecture logicielle
|
||||||
|
|
||||||
|
## Core
|
||||||
|
|
||||||
|
Responsabilités :
|
||||||
|
|
||||||
|
* Initialisation système.
|
||||||
|
* Gestion des modules.
|
||||||
|
* Configuration.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Keypad
|
||||||
|
|
||||||
|
Responsabilités :
|
||||||
|
|
||||||
|
* Lecture du clavier.
|
||||||
|
* Anti-rebond.
|
||||||
|
* Gestion de la saisie.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Access Control
|
||||||
|
|
||||||
|
Responsabilités :
|
||||||
|
|
||||||
|
* Validation des codes.
|
||||||
|
* Gestion des droits.
|
||||||
|
* Gestion des utilisateurs.
|
||||||
|
* Protection contre les tentatives répétées.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Lock Controller
|
||||||
|
|
||||||
|
Responsabilités :
|
||||||
|
|
||||||
|
* Pilotage du verrou.
|
||||||
|
* Vérification des états.
|
||||||
|
* Gestion des erreurs.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Sensor Manager
|
||||||
|
|
||||||
|
Responsabilités :
|
||||||
|
|
||||||
|
* Lecture des capteurs.
|
||||||
|
* Filtrage logiciel.
|
||||||
|
* Détection des changements d'état.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## NFC
|
||||||
|
|
||||||
|
Responsabilités :
|
||||||
|
|
||||||
|
* Lecture des badges.
|
||||||
|
* Gestion des identifiants autorisés.
|
||||||
|
* Activation à faible consommation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Power Management
|
||||||
|
|
||||||
|
Responsabilités :
|
||||||
|
|
||||||
|
* Surveillance batterie.
|
||||||
|
* Gestion de l'énergie.
|
||||||
|
* Modes basse consommation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Zigbee
|
||||||
|
|
||||||
|
Responsabilités :
|
||||||
|
|
||||||
|
* Communication avec Home Assistant.
|
||||||
|
* Publication des états.
|
||||||
|
* Réception des commandes.
|
||||||
|
* Gestion du réseau Zigbee.
|
||||||
|
|
||||||
|
### Architecture cible
|
||||||
|
|
||||||
|
OpenParcelBox communique en Zigbee.
|
||||||
|
|
||||||
|
La conversion éventuelle vers MQTT est réalisée côté infrastructure Home Assistant (ZHA, Zigbee2MQTT ou solution équivalente).
|
||||||
|
|
||||||
|
Le firmware ne dépend donc pas directement d'un broker MQTT.
|
||||||
|
|
||||||
|
### Évolutions futures
|
||||||
|
|
||||||
|
D'autres protocoles pourront être supportés ultérieurement via des variantes de firmware.
|
||||||
|
|
||||||
|
Exemples :
|
||||||
|
|
||||||
|
* Zigbee
|
||||||
|
* Bluetooth Low Energy
|
||||||
|
|
||||||
|
Le choix du protocole sera effectué lors de la compilation du firmware.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## OTA
|
||||||
|
|
||||||
|
Responsabilités :
|
||||||
|
|
||||||
|
* Téléchargement des mises à jour.
|
||||||
|
* Vérification d'intégrité.
|
||||||
|
* Mise à jour sécurisée.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Intégration Home Assistant
|
||||||
|
|
||||||
|
Entités prévues :
|
||||||
|
|
||||||
|
* État du verrou.
|
||||||
|
* Niveau de batterie.
|
||||||
|
* Dernière ouverture.
|
||||||
|
* État de connexion.
|
||||||
|
* Informations de diagnostic.
|
||||||
|
|
||||||
|
Services prévus :
|
||||||
|
|
||||||
|
* Ouverture.
|
||||||
|
* Verrouillage.
|
||||||
|
* Déverrouillage.
|
||||||
|
* Gestion des codes.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Sécurité
|
||||||
|
|
||||||
|
## Principes
|
||||||
|
|
||||||
|
* Fonctionnement local.
|
||||||
|
* Aucun service cloud obligatoire.
|
||||||
|
* Validation stricte des commandes.
|
||||||
|
* Journalisation des événements importants.
|
||||||
|
|
||||||
|
## Protection contre les abus
|
||||||
|
|
||||||
|
* Limitation des tentatives.
|
||||||
|
* Temporisation après échecs répétés.
|
||||||
|
* Séparation des privilèges administrateur/utilisateur.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Développement
|
||||||
|
|
||||||
|
## Firmware
|
||||||
|
|
||||||
|
Framework :
|
||||||
|
|
||||||
|
* Zephyr RTOS
|
||||||
|
|
||||||
|
Langage :
|
||||||
|
|
||||||
|
* C++
|
||||||
|
|
||||||
|
Outils :
|
||||||
|
|
||||||
|
* Zephyr SDK
|
||||||
|
* west
|
||||||
|
* CMake
|
||||||
|
* VSCodium
|
||||||
|
* Git
|
||||||
|
* Gitea
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Évolutions futures
|
||||||
|
|
||||||
|
* Gestion avancée des utilisateurs.
|
||||||
|
* Historique des événements.
|
||||||
|
* Diagnostics avancés.
|
||||||
|
* Support d'autres protocoles radio.
|
||||||
|
* Gestion de plusieurs boîtes.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# Firmware License
|
||||||
|
|
||||||
|
The firmware contained in this directory is licensed under:
|
||||||
|
|
||||||
|
**GNU General Public License v3.0 or later (GPL-3.0-or-later)**
|
||||||
|
|
||||||
|
You may obtain a copy of the license at:
|
||||||
|
|
||||||
|
https://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
Copyright (c) OpenParcelBox Contributors
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
# Firmware OpenParcelBox
|
||||||
|
|
||||||
|
Ce répertoire contient le firmware de l'OpenParcelBox.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Objectifs
|
||||||
|
|
||||||
|
Le firmware doit permettre :
|
||||||
|
|
||||||
|
* La gestion du clavier.
|
||||||
|
* La gestion des codes d'accès.
|
||||||
|
* Le contrôle du mécanisme de verrouillage.
|
||||||
|
* La surveillance de la batterie.
|
||||||
|
* La communication Zigbee.
|
||||||
|
* Les mises à jour OTA.
|
||||||
|
* L'intégration Home Assistant.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Plateforme matérielle
|
||||||
|
|
||||||
|
## Carte principale
|
||||||
|
|
||||||
|
* Seeed Studio XIAO BLE nRF52840
|
||||||
|
|
||||||
|
## Microcontrôleur
|
||||||
|
|
||||||
|
* Nordic nRF52840
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Technologies utilisées
|
||||||
|
|
||||||
|
## Framework
|
||||||
|
|
||||||
|
Zephyr RTOS
|
||||||
|
|
||||||
|
## Langage
|
||||||
|
|
||||||
|
C++
|
||||||
|
|
||||||
|
## Outils
|
||||||
|
|
||||||
|
* Zephyr SDK
|
||||||
|
* west
|
||||||
|
* CMake
|
||||||
|
* Ninja
|
||||||
|
* VSCodium
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Architecture logicielle prévue
|
||||||
|
|
||||||
|
```text
|
||||||
|
firmware
|
||||||
|
├── app
|
||||||
|
├── boards
|
||||||
|
├── modules
|
||||||
|
└── tests
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Modules
|
||||||
|
|
||||||
|
## Core
|
||||||
|
|
||||||
|
Initialisation et gestion du système.
|
||||||
|
|
||||||
|
## Keypad
|
||||||
|
|
||||||
|
Gestion du clavier 2 × 6.
|
||||||
|
|
||||||
|
## Access Control
|
||||||
|
|
||||||
|
Validation des codes et gestion des droits.
|
||||||
|
|
||||||
|
## Lock Controller
|
||||||
|
|
||||||
|
Pilotage du verrou.
|
||||||
|
|
||||||
|
## Sensor Manager
|
||||||
|
|
||||||
|
Lecture des capteurs.
|
||||||
|
|
||||||
|
## Power Management
|
||||||
|
|
||||||
|
Gestion de l'énergie et des modes basse consommation.
|
||||||
|
|
||||||
|
## Zigbee
|
||||||
|
|
||||||
|
Communication avec Home Assistant.
|
||||||
|
|
||||||
|
## OTA
|
||||||
|
|
||||||
|
Mises à jour à distance.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Philosophie de développement
|
||||||
|
|
||||||
|
Le firmware doit privilégier :
|
||||||
|
|
||||||
|
* La simplicité.
|
||||||
|
* La robustesse.
|
||||||
|
* La faible consommation.
|
||||||
|
* La maintenabilité.
|
||||||
|
* L'indépendance vis-à-vis des services cloud.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# État actuel
|
||||||
|
|
||||||
|
Aucun code de production n'est encore implémenté.
|
||||||
|
|
||||||
|
Les travaux actuels concernent :
|
||||||
|
|
||||||
|
* Le reverse engineering du matériel d'origine.
|
||||||
|
* La validation de l'architecture logicielle.
|
||||||
|
* La préparation de l'environnement Zephyr.
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Contraintes application
|
||||||
|
|
||||||
|
## Technologies
|
||||||
|
|
||||||
|
- Développement avec Flutter.
|
||||||
|
- Compatibilité Android prioritaire.
|
||||||
|
- Compatibilité iOS souhaitée mais non bloquante pour la V1.
|
||||||
|
|
||||||
|
## Fonctionnement
|
||||||
|
|
||||||
|
- Utilisation locale prioritaire.
|
||||||
|
- Interface simple pour les utilisateurs non techniques.
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
- Gestion des accès.
|
||||||
|
- Gestion des codes.
|
||||||
|
- Consultation de l'état de la boîte.
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Contraintes firmware
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
- Développement sous Zephyr.
|
||||||
|
- Code modulaire.
|
||||||
|
- Séparation claire entre logique métier, matériel et communications.
|
||||||
|
|
||||||
|
## Consommation
|
||||||
|
|
||||||
|
- Exploitation maximale des modes basse consommation.
|
||||||
|
- Réveil uniquement lors d'événements nécessaires.
|
||||||
|
|
||||||
|
## Maintenance
|
||||||
|
|
||||||
|
- Journalisation des erreurs.
|
||||||
|
- Configuration documentée.
|
||||||
|
- Procédure de mise à jour documentée.
|
||||||
|
|
||||||
|
## Sécurité
|
||||||
|
|
||||||
|
- Authentification des commandes.
|
||||||
|
- Stockage sécurisé des données sensibles.
|
||||||
+104
@@ -0,0 +1,104 @@
|
|||||||
|
# Bill Of Materials (BOM)
|
||||||
|
|
||||||
|
Cette nomenclature sera complétée progressivement au cours du reverse engineering et du développement matériel.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Contrôleur principal
|
||||||
|
|
||||||
|
| Référence | Désignation | Quantité | Statut |
|
||||||
|
| ------------- | ------------------------------ | -------- | ------ |
|
||||||
|
| XIAO-NRF52840 | Seeed Studio XIAO BLE nRF52840 | 1 | Validé |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Éléments conservés de la Boks One
|
||||||
|
|
||||||
|
| Désignation | Quantité | Statut |
|
||||||
|
| ------------------------- | -------- | -------------- |
|
||||||
|
| Clavier d'origine 2 × 6 | 1 | Conservé |
|
||||||
|
| Mécanisme de verrouillage | 1 | Conservé |
|
||||||
|
| Batterie d'origine | 1 | À étudier |
|
||||||
|
| Capteur d'origine | 1 | À caractériser |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Alimentation
|
||||||
|
|
||||||
|
| Référence | Désignation | Quantité | Statut |
|
||||||
|
| --------- | -------------------------- | -------- | --------- |
|
||||||
|
| TBD | Circuit de mesure batterie | 1 | À définir |
|
||||||
|
| TBD | Protection alimentation | 1 | À définir |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Interface de programmation
|
||||||
|
|
||||||
|
| Référence | Désignation | Quantité | Statut |
|
||||||
|
| --------- | -------------- | -------- | --------- |
|
||||||
|
| TBD | Connecteur SWD | 1 | À définir |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Connectique
|
||||||
|
|
||||||
|
| Référence | Désignation | Quantité | Statut |
|
||||||
|
| --------- | ------------------- | ------------ | --------- |
|
||||||
|
| TBD | Connecteur clavier | À identifier | À définir |
|
||||||
|
| TBD | Connecteur verrou | À identifier | À définir |
|
||||||
|
| TBD | Connecteur batterie | À identifier | À définir |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# PCB
|
||||||
|
|
||||||
|
| Référence | Désignation | Quantité | Statut |
|
||||||
|
| ---------- | ------------------------------ | -------- | ------------- |
|
||||||
|
| OPB-PCB-V1 | Carte principale OpenParcelBox | 1 | En conception |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Matériel de développement disponible
|
||||||
|
|
||||||
|
| Désignation | Statut |
|
||||||
|
| ------------------------------ | ---------- |
|
||||||
|
| Seeed Studio XIAO BLE nRF52840 | Disponible |
|
||||||
|
| Pied à coulisse | Disponible |
|
||||||
|
| Plaques PCB de prototypage | Disponible |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Informations à collecter lors du reverse engineering
|
||||||
|
|
||||||
|
## Priorité haute
|
||||||
|
|
||||||
|
* Tension batterie.
|
||||||
|
* Type de batterie.
|
||||||
|
* Brochage du clavier.
|
||||||
|
* Brochage du capteur.
|
||||||
|
* Brochage du verrou.
|
||||||
|
* Courant consommé lors de l'ouverture.
|
||||||
|
|
||||||
|
## Priorité moyenne
|
||||||
|
|
||||||
|
* Consommation en veille.
|
||||||
|
* Courant maximal.
|
||||||
|
* Type exact du capteur.
|
||||||
|
|
||||||
|
## Priorité basse
|
||||||
|
|
||||||
|
* Références détaillées des composants passifs.
|
||||||
|
* Compatibilité avec d'autres batteries.
|
||||||
|
* Optimisations mécaniques éventuelles.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Historique des validations
|
||||||
|
|
||||||
|
## V0
|
||||||
|
|
||||||
|
* XIAO BLE nRF52840 retenu.
|
||||||
|
* Clavier d'origine conservé.
|
||||||
|
* Mécanisme de verrouillage conservé.
|
||||||
|
* Façade conservée sans modification.
|
||||||
|
* Communication Zigbee retenue pour la V1.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
OpenParcelBox Hardware
|
||||||
|
|
||||||
|
Copyright (C) 2026 Tony
|
||||||
|
|
||||||
|
The hardware design files contained in this project
|
||||||
|
(schematics, PCB layouts and related design files)
|
||||||
|
are licensed under the CERN Open Hardware Licence Version 2 - Strongly Reciprocal (CERN-OHL-S-2.0).
|
||||||
|
|
||||||
|
A copy of the license is available at:
|
||||||
|
|
||||||
|
https://ohwr.org/cern_ohl_s_v2.txt
|
||||||
|
|
||||||
|
SPDX-License-Identifier: CERN-OHL-S-2.0
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Hardware
|
||||||
|
|
||||||
|
Ce dossier contient toute la partie matérielle du projet.
|
||||||
|
|
||||||
|
## Contenu prévu
|
||||||
|
|
||||||
|
* Schémas KiCad
|
||||||
|
* PCB
|
||||||
|
* Fichiers Gerber
|
||||||
|
* BOM (Bill Of Materials)
|
||||||
|
* Modèles 3D
|
||||||
|
* Plans mécaniques
|
||||||
|
* Documentation de câblage
|
||||||
|
|
||||||
|
L'objectif est de permettre la reproduction complète de la carte électronique.
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Contraintes matérielles
|
||||||
|
|
||||||
|
## Compatibilité Boks One V1
|
||||||
|
|
||||||
|
- Réutilisation du boîtier électronique d'origine.
|
||||||
|
- Réutilisation de la façade extérieure d'origine.
|
||||||
|
- Réutilisation du clavier d'origine au format 2 × 6.
|
||||||
|
- Réutilisation du logement des piles d'origine.
|
||||||
|
- Réutilisation du système de verrouillage d'origine lorsque cela est techniquement possible.
|
||||||
|
- Aucune modification irréversible de la boîte.
|
||||||
|
|
||||||
|
## Intégration mécanique
|
||||||
|
|
||||||
|
- Le nouveau PCB doit tenir dans le volume disponible du boîtier d'origine.
|
||||||
|
- Les points de fixation existants doivent être réutilisés lorsque cela est possible.
|
||||||
|
- Les composants doivent rester accessibles pour la maintenance.
|
||||||
|
|
||||||
|
## Fabrication
|
||||||
|
|
||||||
|
- Aucune pièce imprimée en 3D ne doit être obligatoire.
|
||||||
|
- Les pièces imprimées en 3D sont considérées comme optionnelles.
|
||||||
|
- Les matériaux sensibles à la chaleur (PLA) ne doivent pas être requis pour une installation extérieure.
|
||||||
|
|
||||||
|
## Alimentation
|
||||||
|
|
||||||
|
- Fonctionnement sur piles.
|
||||||
|
- Consommation optimisée pour maximiser l'autonomie.
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
# Reverse Engineering Boks One
|
||||||
|
|
||||||
|
## Objectif
|
||||||
|
|
||||||
|
Ce document centralise toutes les informations collectées lors de l'analyse du matériel d'origine.
|
||||||
|
|
||||||
|
Aucune hypothèse ne doit être considérée comme validée tant qu'elle n'a pas été vérifiée expérimentalement.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Informations générales
|
||||||
|
|
||||||
|
| Élément | Valeur | Statut |
|
||||||
|
| -------- | ------------ | ---------- |
|
||||||
|
| Modèle | Boks One | Confirmé |
|
||||||
|
| Révision | À déterminer | En attente |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Batterie
|
||||||
|
|
||||||
|
| Information | Valeur | Statut |
|
||||||
|
| ---------------- | -------- | ------------ |
|
||||||
|
| Technologie | Inconnue | À vérifier |
|
||||||
|
| Tension nominale | Inconnue | À mesurer |
|
||||||
|
| Capacité | Inconnue | À identifier |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Clavier
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
* Format vertical 2 × 6.
|
||||||
|
|
||||||
|
## Brochage
|
||||||
|
|
||||||
|
| Broche | Fonction | Statut |
|
||||||
|
| ------ | -------- | ------------ |
|
||||||
|
| TBD | TBD | À identifier |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Capteur
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Capteur utilisé pour détecter le retour du crochet dans le mécanisme de verrouillage.
|
||||||
|
|
||||||
|
## Technologie
|
||||||
|
|
||||||
|
À déterminer :
|
||||||
|
|
||||||
|
* ILS
|
||||||
|
* Hall
|
||||||
|
* Microswitch
|
||||||
|
* Autre
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Mécanisme de verrouillage
|
||||||
|
|
||||||
|
## Type
|
||||||
|
|
||||||
|
À déterminer.
|
||||||
|
|
||||||
|
## Tension de fonctionnement
|
||||||
|
|
||||||
|
À mesurer.
|
||||||
|
|
||||||
|
## Courant consommé
|
||||||
|
|
||||||
|
À mesurer.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Connecteurs
|
||||||
|
|
||||||
|
| Connecteur | Nombre de broches | Fonction | Statut |
|
||||||
|
| ---------- | ----------------- | -------- | ------------ |
|
||||||
|
| TBD | TBD | TBD | À identifier |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Mesures électriques
|
||||||
|
|
||||||
|
| Mesure | Valeur | Date | Commentaire |
|
||||||
|
| ------ | ------ | ---- | ----------- |
|
||||||
|
| TBD | TBD | TBD | TBD |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Photos
|
||||||
|
|
||||||
|
## Carte électronique
|
||||||
|
|
||||||
|
À compléter.
|
||||||
|
|
||||||
|
## Clavier
|
||||||
|
|
||||||
|
À compléter.
|
||||||
|
|
||||||
|
## Mécanisme de verrouillage
|
||||||
|
|
||||||
|
À compléter.
|
||||||
|
|
||||||
|
## Capteur
|
||||||
|
|
||||||
|
À compléter.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Notes diverses
|
||||||
|
|
||||||
|
Utiliser cette section pour documenter toute découverte ne trouvant pas sa place dans les sections précédentes.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Home Assistant
|
||||||
|
|
||||||
|
Ce dossier contient les éléments permettant l'intégration avec Home Assistant :
|
||||||
|
|
||||||
|
- Configuration ZHA
|
||||||
|
- Configuration Zigbee2MQTT
|
||||||
|
- Automatisations
|
||||||
|
- Scripts
|
||||||
|
- Tableaux de bord
|
||||||
|
- Exemples d'intégration
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# Contraintes Home Assistant
|
||||||
|
|
||||||
|
## Intégration
|
||||||
|
|
||||||
|
- Intégration native Home Assistant.
|
||||||
|
- Installation simple.
|
||||||
|
- Configuration via l'interface Home Assistant lorsque possible.
|
||||||
|
|
||||||
|
## Fonctionnalités
|
||||||
|
|
||||||
|
- Création de codes temporaires.
|
||||||
|
- Création de codes permanents.
|
||||||
|
- Suppression de codes.
|
||||||
|
- Consultation de l'état de la boîte.
|
||||||
|
- Historique des événements.
|
||||||
|
|
||||||
|
## Entités
|
||||||
|
|
||||||
|
- Entités clairement nommées.
|
||||||
|
- Compatibilité avec les tableaux de bord Home Assistant.
|
||||||
|
- Compatibilité avec les automatisations Home Assistant.
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
# Contraintes application
|
||||||
|
|
||||||
|
## Technologies
|
||||||
|
|
||||||
|
- Développement avec Flutter.
|
||||||
|
- Code compatible Android.
|
||||||
|
- Compatibilité iOS souhaitée mais non prioritaire pour la V1.
|
||||||
|
- Aucune dépendance obligatoire à un service cloud.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
- Séparation claire entre interface utilisateur, logique métier et communications.
|
||||||
|
- Code modulaire et maintenable.
|
||||||
|
- Gestion centralisée de la configuration.
|
||||||
|
|
||||||
|
## Fonctionnement
|
||||||
|
|
||||||
|
- Fonctionnement local prioritaire.
|
||||||
|
- Communication directe avec OpenParcelBox lorsque possible.
|
||||||
|
- Dégradation propre en cas de perte de connexion.
|
||||||
|
|
||||||
|
## Fonctionnalités V1
|
||||||
|
|
||||||
|
- Visualisation de l'état de la boîte.
|
||||||
|
- Gestion des codes d'accès.
|
||||||
|
- Création de codes temporaires.
|
||||||
|
- Création de codes permanents.
|
||||||
|
- Suppression des codes.
|
||||||
|
- Consultation des événements récents.
|
||||||
|
|
||||||
|
## Expérience utilisateur
|
||||||
|
|
||||||
|
- Interface simple pour les utilisateurs non techniques.
|
||||||
|
- Temps d'accès rapide aux fonctions courantes.
|
||||||
|
- Compatibilité smartphone et tablette.
|
||||||
|
|
||||||
|
## Sécurité
|
||||||
|
|
||||||
|
- Authentification obligatoire.
|
||||||
|
- Stockage sécurisé des données sensibles.
|
||||||
|
- Aucune donnée utilisateur transmise à un service tiers.
|
||||||
|
|
||||||
|
## Maintenance
|
||||||
|
|
||||||
|
- Journalisation des erreurs.
|
||||||
|
- Configuration documentée.
|
||||||
|
- Procédure de compilation documentée.
|
||||||
Reference in New Issue
Block a user