Initial OpenParcelBox project structure

This commit is contained in:
2026-06-23 11:57:11 +02:00
commit 6c31d1bef4
31 changed files with 1784 additions and 0 deletions
+48
View File
@@ -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/
+7
View File
@@ -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]
+7
View File
@@ -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
+149
View File
@@ -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
View File
@@ -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
```
+169
View File
@@ -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.
View File
+13
View File
@@ -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
+25
View File
@@ -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.
+328
View File
@@ -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.
+13
View File
@@ -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
+121
View File
@@ -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.
View File
View File
+18
View File
@@ -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.
View File
View File
View File
View File
+23
View File
@@ -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.
View File
View File
+104
View File
@@ -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.
+13
View File
@@ -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
+15
View File
@@ -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.
+27
View File
@@ -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.
+115
View File
@@ -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.
+10
View File
@@ -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
+21
View File
@@ -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.
View File
+47
View File
@@ -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.