# Inventaire

#### **Matériel Requis**

1. **Raspberry Pi** (Modèle 3B+ ou [supérieur](https://www.amazon.fr/Raspberry-Pi-Quad-Core-ARMA76-Bits/dp/B0CK3L9WD3/ref=sr_1_6?dib=eyJ2IjoiMSJ9.EIRWMNAsT_JPS2JI4yVop7Nv-pFmmZG9Z-Qc7KRVveaZ21R8J0DWYSF5RFJWH6-rPPrOiDd2_9wdL-9yRoYpaNDsO8n0Xw3ZZCesaLXLT8jWv54fs5mW3slIb42aBX33tgUI6ok96v3WoQHfgHGypQ26KKh0m627-6ok6hTDSLhC1ni99jzsRfrx4WLnwsjZhxC7qmdcil5T9fT8RzADLk-o7C5xFpksMeFKA1dgfJKwQz-YAtM043Jn9jgOGiZM0X5OTmEOrS-hEX6f4mgIFhk7kTR75l_dyIciivRVGoU.MFI4CN3mq53Z1lXToHOS2q_n8AWKohMVo1rbHOwmETU\&dib_tag=se\&keywords=raspberry%2Bpi%2B5\&qid=1730715309\&sr=8-6\&th=1), [carte micro SD](https://www.amazon.fr/SanDisk-microSDXC-Adaptateur-RescuePRO-Performance/dp/B09X7BYSFG/ref=sr_1_6) (64Go))
   * Pour gérer la base de données de l’inventaire et recevoir les informations des scans.
   * Connecté au réseau Wi-Fi pour communiquer avec le microcontrôleur.
2. **Douchette de Code-Barres Sans Fil (RF ou Bluetooth,** [**lien**](https://www.amazon.fr/Tera-Lecteur-Bluetooth-Automatique-Batterie/dp/B09DFQXX7G/ref=sr_1_1?dib=eyJ2IjoiMSJ9.f3Ybryo2bxgGi5xMQPDZDcVUq0duCc6ZS5fpmJnl1JqIcjy84LFgTCBUbyOk3td5Ni6ynZ2IDozUM80KcN7t-w.tizpxZhWCax5jDkwg2X59sP0VJ2V1VIfBgE8b0iCTqE\&dib_tag=se\&keywords=Tera+HW0002\&qid=1730711090\&sr=8-1)**)**
   * Pour scanner les produits lors de leur ajout ou retrait dans l’inventaire.
   * La douchette doit pouvoir envoyer les données scannées directement au Raspberry Pi via USB ou Bluetooth.
3. **ESP32 avec Écran OLED Intégré (**[**lien**](https://www.amazon.fr/APKLVSR-d%C3%A9veloppement-Consommation-Interface-compatible/dp/B0CKSBHF59)**)**
   * Un microcontrôleur équipé de Wi-Fi et d’un petit écran OLED (1,3 pouces ou plus).
   * Utilisé pour afficher les informations de confirmation après chaque scan, comme le nom du produit et la quantité mise à jour.
   * Fonctionne sans fil, permettant une portée de 30 mètres ou plus avec Wi-Fi.
4. **Clavier 4x4 keypad (lien)**
   * Un mini clavier connecté à l'esp32 pour entrer des informations comme un numéro de chiffre par exemple
5. **Batterie Rechargeable pour l’ESP32 (**[**lien**](https://www.amazon.fr/INIU-Batterie-10500mAh-Chargeur-T%C3%A9l%C3%A9phone/dp/B08JTQ66K7/ref=sr_1_2_sspa)**)**
   * Une batterie portable pour alimenter l’ESP32, assurant une mobilité sans contrainte de câbles.
6. **Logiciel MQTT (Mosquitto ou équivalent)**
   * Un serveur MQTT installé sur le Raspberry Pi pour une communication rapide et fiable avec l’ESP32.
   * MQTT est un protocole léger qui permet d'envoyer des mises à jour de stock en temps réel à l’écran OLED.
7. **Accès Wi-Fi**
   * Un réseau Wi-Fi pour la communication entre le Raspberry Pi et l’ESP32.

***

#### Plan de Fonctionnement

1. **Scannette (Douchette)** : Lorsqu’un code-barres ou QR code est scanné, la douchette envoie l’information au Raspberry Pi, qui agit comme le "cerveau" du système.
2. **Raspberry Pi** :
   * Reçoit le code scanné.
   * Identifie la table ou l’action associée (par exemple, est-ce une plaque de métal, un chiffre, un autre produit ?).
   * Détermine s’il s’agit d’une action simple (comme ajouter une plaque) ou d’une action nécessitant une information supplémentaire (comme les chiffres).
   * Envoie les informations pertinentes à l’ESP32 pour afficher des instructions à l'utilisateur, si nécessaire.
3. **ESP32 avec Écran et Clavier** :
   * Si l'action nécessite une information supplémentaire (comme le numéro de chiffre ou la quantité), le Raspberry Pi envoie une commande à l’ESP32 pour afficher une interface appropriée (par exemple, "Entrez le chiffre" et "Entrez la quantité").
   * L'utilisateur entre les informations demandées via le mini clavier.
   * Une fois l'information saisie, l’ESP32 envoie la réponse au Raspberry Pi, qui complète l’action et met à jour la base de données.

#### Exemple de Scénario

1. **Scan d’un QR Code** :
   * L'utilisateur scanne un QR code avec la douchette.
   * La douchette envoie le code scanné au Raspberry Pi.
2. **Traitement par le Raspberry Pi** :
   * Le Raspberry Pi identifie le produit ou la table associée au code QR.
   * Si le produit scanné est une plaque (ou un autre produit sans choix nécessaire), le Raspberry Pi :
     * Vérifie le stock et enregistre l’action dans la base de données.
     * Envoie une confirmation à l’ESP32 pour afficher la mise à jour de stock (par exemple : "Plaque ajoutée. Stock actuel : 100").
   * Si le produit scanné est un chiffre nécessitant une sélection (par exemple, de 1 à 40), le Raspberry Pi :
     * Envoie une instruction à l’ESP32 pour afficher "Entrez le chiffre" et ensuite "Entrez la quantité".
3. **Interaction avec l'ESP32** :
   * L’ESP32 affiche les instructions de saisie sur l’écran OLED.
   * L’utilisateur entre le numéro du chiffre et la quantité via le mini clavier.
   * Une fois les informations saisies, l’ESP32 envoie les données au Raspberry Pi.
4. **Enregistrement et Confirmation** :
   * Le Raspberry Pi reçoit le numéro de chiffre et la quantité.
   * Il met à jour la base de données avec les informations complètes.
   * Il envoie une confirmation finale à l’ESP32 pour afficher la mise à jour de stock.

#### Mise en Œuvre Technique

1. **Communication entre la Scannette et le Raspberry Pi** :
   * La douchette pourrait être connectée en USB au Raspberry Pi pour envoyer directement les codes scannés.
   * Le Raspberry Pi utilise un programme pour traiter les entrées de la douchette.
2. **Communication entre le Raspberry Pi et l’ESP32** :
   * Utilise **Wi-Fi** pour que le Raspberry Pi envoie des instructions à l'ESP32.
   * **Protocole HTTP** : Le Raspberry Pi pourrait envoyer des requêtes HTTP à l'ESP32 pour lui demander d'afficher certaines informations.
   * **Protocole MQTT** : Alternativement, MQTT peut être utilisé pour envoyer des messages instantanés et déclencher des actions sur l’ESP32.
3. **Logique côté Raspberry Pi** :
   * Le Raspberry Pi contient un programme (par exemple, en Python) qui :
     * Écoute les codes scannés via la douchette.
     * Identifie l'action à partir du code (simple ajout ou ajout nécessitant une saisie).
     * Envoie des requêtes à l’ESP32 pour obtenir les informations manquantes.
     * Met à jour la base de données une fois que toutes les informations sont complètes.
4. **Logique côté ESP32** :
   * L’ESP32 écoute les instructions du Raspberry Pi via HTTP ou MQTT.
   * En fonction de l'instruction reçue, il affiche des messages à l'utilisateur sur l'écran OLED et recueille les saisies via le mini clavier.
   * Une fois les informations saisies, il les renvoie au Raspberry Pi pour finaliser l'action.
