{"id":8033,"date":"2023-01-18T15:01:46","date_gmt":"2023-01-18T14:01:46","guid":{"rendered":"https:\/\/telefab.fr\/?p=8033"},"modified":"2026-04-30T17:33:30","modified_gmt":"2026-04-30T15:33:30","slug":"coocking-article-sur-la-solution-technique","status":"publish","type":"post","link":"https:\/\/hub.imt-atlantique.fr\/fablab\/coocking-article-sur-la-solution-technique\/","title":{"rendered":"CoOCKing : Article sur la solution technique"},"content":{"rendered":"<p><span style=\"text-decoration: underline;\"><span style=\"font-weight: 400;\">Auteurs<\/span><\/span><span style=\"font-weight: 400;\"><span style=\"text-decoration: underline;\"> :<\/span>\u00a0 Adrien CHABOD, Lucas DEHENNE, Louise THEOPHILE et Gatien TIREL<\/span><\/p>\n<p>&nbsp;<\/p>\n<h1><span style=\"font-weight: 400;\">Introduction<\/span><\/h1>\n<p><span style=\"font-weight: 400;\">Notre groupe travaille \u00e0 l\u2019\u00e9laboration d\u2019un prototype de syst\u00e8me de gestion des stocks pour les restaurateurs.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous voulions tout d\u2019abord traiter un sujet sur le th\u00e8me de la restauration et ainsi r\u00e9pondre aux besoins des restaurateurs. Afin de comprendre les probl\u00e8mes pr\u00e9sents dans ce secteur, nous avons proc\u00e9d\u00e9 \u00e0 une recherche de l\u2019\u00e9tat de l\u2019art et surtout \u00e0 des entretiens sur le terrain aupr\u00e8s de divers restaurateurs et de divers m\u00e9tiers au sein de la restauration. De plus, nous avons r\u00e9alis\u00e9 nos entretiens aupr\u00e8s de diff\u00e9rents types de restaurants afin d\u2019essayer de couvrir toutes les probl\u00e9matiques possibles dans le secteur de la restauration : une brasserie, un fast-food, un restaurant gastronomique et un restaurant familial.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Apr\u00e8s avoir analys\u00e9 leurs r\u00e9ponses et mis en \u00e9vidence les probl\u00e8mes qu\u2019ils rencontrent au quotidien (no show, manque de personnel, co\u00fbt de la mati\u00e8re,\u2026), nous avons choisi de nous focaliser sur la gestion des stocks et sp\u00e9cialement la gestion des stocks de fond. Ainsi, nous cherchons \u00e0\u00a0 trouver un moyen de faciliter la lisibilit\u00e9 et la gestion des stocks au sein d\u2019un restaurant afin de lib\u00e9rer du temps pour r\u00e9aliser d\u2019autres t\u00e2ches. Notre prototype devait \u00eatre facilement utilisable par n\u2019importe quel employ\u00e9 du restaurant et ne pas leur faire perdre du temps.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Notre prototype peut se d\u00e9couper en trois parties : l\u2019\u00e9tiquetage, le scan de l\u2019\u00e9tiquette d\u2019un produit et la manipulation de la base de donn\u00e9es \u00e0 partir d\u2019une interface utilisateur.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h1><span style=\"font-weight: 400; font-size: 24pt;\">\u00c9tiquetage<\/span><\/h1>\n<p><span style=\"text-decoration: underline;\"><span style=\"font-weight: 400;\">Ressources :<\/span><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Imprimante 3D et PLA<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Solidworks<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Les stocks d\u2019un restaurant sont principalement s\u00e9par\u00e9s en caisses, en cartons ou en palettes. Notre but \u00e9tait de r\u00e9ussir \u00e0 cr\u00e9er un syst\u00e8me d\u2019\u00e9tiquetage des stocks qui soit pratique, adaptable \u00e0 tout type de contenant et le moins polluant possible.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pour cela nous avons choisi d\u2019utiliser la technologie RFID 13,56 MHz. Ainsi, pour \u00e9tiqueter un produit dans le stock d\u2019un restaurant, il suffit de lui attribuer une carte RFID, qui poss\u00e8de un identifiant unique et permet donc son identification directe. De cette fa\u00e7on, chaque identifiant peut \u00eatre attribu\u00e9 \u00e0 un produit et son stock dans la base de donn\u00e9es.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La premi\u00e8re id\u00e9e a \u00e9t\u00e9 d\u2019utiliser des tags RFID autocollants<\/span><\/p>\n<p><span style=\"font-weight: 400;\">qu\u2019on accrocherait directement \u00e0 la caisse. Cette solution est simple et utilis\u00e9e dans de nombreux endroits o\u00f9 la gestion des stocks est optimis\u00e9e (magasins comme D\u00e9cathlon par exemple). Mais cela poserait un probl\u00e8me de gaspillage car ce type d\u2019\u00e9tiquette est difficilement r\u00e9utilisable. Une des raisons pour un restaurateur d\u2019avoir un syst\u00e8me de gestion des stocks est aussi de lui permettre de limiter le gaspillage, notamment le gaspillage alimentaire. Ici nous aurions eu un probl\u00e8me de gaspillage de mat\u00e9riel \u00e9lectronique, car \u00e0 chaque fois que le restaurateur finit une caisse ou une palette il la jette et jette donc l\u2019\u00e9tiquette RFID avec.\u00a0 Nous avons alors opt\u00e9 pour de simples cartes RFID que l\u2019on pourrait r\u00e9utiliser \u00e0 la demande.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pour fixer la carte \u00e0 la caisse (ou au carton), nous avons mod\u00e9lis\u00e9 (sur Solidworks) et imprim\u00e9 (imprimante 3D) un porte carte. Il peut \u00eatre fix\u00e9 sur un carton gr\u00e2ce aux pics pr\u00e9sents sur une de ces faces comme on peut l\u2019apercevoir sur les illustrations ci-dessous. Le trou sur le dessus du support de carte permet d\u2019y faire passer une ficelle ou un serflex pour qu\u2019on puisse l\u2019accrocher \u00e0 une caisse par exemple. L\u2019impression de ce support a \u00e9t\u00e9 r\u00e9alis\u00e9e en PLA qui est un mat\u00e9riau naturel, biod\u00e9gradable et r\u00e9utilisable et qui est utilis\u00e9 lors de l\u2019impression de nos pi\u00e8ces avec une imprimante 3D.<\/span><\/p>\n<figure id=\"attachment_8036\" aria-describedby=\"caption-attachment-8036\" style=\"width: 220px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8036\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema-1-300x217.png\" alt=\"\" width=\"220\" height=\"159\" \/><\/a><figcaption id=\"caption-attachment-8036\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 1 :<\/span> Mod\u00e8le Solidworks du porte-carte<\/figcaption><\/figure>\n<figure id=\"attachment_8038\" aria-describedby=\"caption-attachment-8038\" style=\"width: 253px\" class=\"wp-caption alignright\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema2.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8038\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema2-300x223.png\" alt=\"\" width=\"253\" height=\"188\" \/><\/a><figcaption id=\"caption-attachment-8038\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 1 bis :<\/span> Porte carte et carte RFID fix\u00e9s sur un carton<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><span style=\"font-weight: 400;\">Scan d\u2019un produit<\/span><\/h1>\n<p><span style=\"text-decoration: underline;\"><span style=\"font-weight: 400;\">Ressources et mat\u00e9riels :\u00a0<\/span><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Solidworks<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Visual Studio Code<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Imprimante 3D et PLA<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Fils m\u00e2le-m\u00e2le<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Raspberry Pi 3B+<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Lecteur RFID HF 13,56 MHz<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Cartes RFID 13,56 MHz<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">4 piles rechargeables de 1,2 V<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Un boitier pour les piles<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Le scan d\u2019un produit se fait donc en utilisant la technologie RFID 13,56 MHz comme nous l\u2019avons vu dans la partie pr\u00e9c\u00e9dente. Nous avons choisi cette technologie haute fr\u00e9quence car elle offre un bon compromis port\u00e9e et puissance. La port\u00e9e est de 5 cm environ et la puissance du lecteur RFID correspond au choix d\u2019alimentation et aux capacit\u00e9s de la carte Raspberry Pi 3 B+. Le choix du lecteur s\u2019est alors port\u00e9 sur le type RC522, lecteur compatible avec les fr\u00e9quences de 13,56 MHz et disponible au Fablab.<\/span><\/p>\n<figure id=\"attachment_8037\" aria-describedby=\"caption-attachment-8037\" style=\"width: 170px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8037\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema-2-300x276.png\" alt=\"\" width=\"170\" height=\"156\" \/><\/a><figcaption id=\"caption-attachment-8037\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 2 :<\/span> Cartes RFID utilis\u00e9es<\/figcaption><\/figure>\n<figure id=\"attachment_8039\" aria-describedby=\"caption-attachment-8039\" style=\"width: 129px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema3.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8039\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema3-203x300.png\" alt=\"\" width=\"129\" height=\"191\" \/><\/a><figcaption id=\"caption-attachment-8039\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 3 :<\/span> Lecteur RFID RC522<\/figcaption><\/figure>\n<figure id=\"attachment_8040\" aria-describedby=\"caption-attachment-8040\" style=\"width: 555px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema4.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8040\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema4-300x145.png\" alt=\"\" width=\"555\" height=\"268\" \/><\/a><figcaption id=\"caption-attachment-8040\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 4 :<\/span> Architecture de notre premier prototype<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">\u00c0 noter qu\u2019il y a eu une \u00e9volution entre la vision que nous avions de notre premier prototype et notre prototype final. Au d\u00e9part, nous \u00e9tions partis sur la carte de commande Arduino car nous \u00e9tions plus \u00e0 l\u2019aise avec cette technologie mais nous nous sommes par la suite tourn\u00e9s vers la carte de commande du type Raspberry qui poss\u00e8de plus d\u2019options et qui nous semblait plus adapt\u00e9e pour notre solution finale. En effet, on peut notamment h\u00e9berger un serveur sur les cartes de commande Raspberry ce qui nous a \u00e9t\u00e9 utile pour la solution r\u00e9alisant\u00a0 l\u2019interface utilisateur pour la gestion et la visualisation des stocks.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Montage \u00e9lectronique :<\/span><\/p>\n<figure id=\"attachment_8041\" aria-describedby=\"caption-attachment-8041\" style=\"width: 348px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema5.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8041\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema5-300x240.png\" alt=\"\" width=\"348\" height=\"278\" \/><\/a><figcaption id=\"caption-attachment-8041\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 5 :<\/span> montage \u00e9lectrique de notre prototype<\/figcaption><\/figure>\n<p><span style=\"font-weight: 400;\">Le montage est constitu\u00e9 de trois composants simples : un lecteur RFID HF (en rouge) qui est bas\u00e9 sur le circuit RC522, une carte \u00e9lectronique de type Raspberry Pi 3 B+ (en vert) et son alimentation portable. L\u2019alimentation est faite de 4 piles rechargeables de 1,2V chacune. Ainsi ces 4 piles mises en s\u00e9rie atteignent environ les 5 volts n\u00e9cessaires \u00e0 alimenter la Raspberry. Le lecteur RFID est compos\u00e9 de 8 pins (3.3V, masse, reset et les protocoles) tous reli\u00e9s \u00e0 la Raspberry suivant le montage ci contre.<\/span><i><\/i><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Nous avons int\u00e9gr\u00e9 ce montage dans le mod\u00e8le de scannette que nous avons r\u00e9alis\u00e9 sur Solidworks et imprim\u00e9 en 3D en mat\u00e9riau PLA. Ce premier prototype permet de comporter tous les \u00e9l\u00e9ments en son sein et ainsi faciliter la libert\u00e9 d\u2019utilisation pour le restaurateur qui peut donc l\u2019emporter librement dans ses stocks.<\/span><\/p>\n<figure id=\"attachment_8042\" aria-describedby=\"caption-attachment-8042\" style=\"width: 498px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema6.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8042\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema6-300x271.png\" alt=\"\" width=\"498\" height=\"449\" \/><\/a><figcaption id=\"caption-attachment-8042\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 6 :<\/span> Mod\u00e8le Solidworks de la scannette<\/figcaption><\/figure>\n<figure id=\"attachment_8043\" aria-describedby=\"caption-attachment-8043\" style=\"width: 576px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema7.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8043\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema7-300x229.png\" alt=\"\" width=\"576\" height=\"440\" \/><\/a><figcaption id=\"caption-attachment-8043\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 7 :<\/span> Objet scannant l&rsquo;\u00e9tiquette<\/figcaption><\/figure>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<h1><\/h1>\n<p>&nbsp;<\/p>\n<h1><span style=\"font-weight: 400;\">Manipulation de la base de donn\u00e9es<\/span><\/h1>\n<p><span style=\"text-decoration: underline;\"><span style=\"font-weight: 400;\">Ressources et mat\u00e9riels :\u00a0<\/span><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Visual Studio Code<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Fils m\u00e2le-m\u00e2le<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Raspberry Pi 3B+<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Alimentation<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Carte Micro SD<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Connexion Internet<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h4><span style=\"text-decoration: underline;\">A. La partie logiciel<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">La carte Raspberry Pi 3B+ utilise le syst\u00e8me d\u2019exploitation Raspberry Pi OS qui est un d\u00e9riv\u00e9 de la distribution Linux appel\u00e9e Debian (l\u2019une des distributions les plus utilis\u00e9es au monde). \u00c0 ce titre, Raspberry PI OS embarque tous les outils disponibles sur Debian. On peut y acc\u00e9der via une interface classique (souris\/clavier), mais aussi \u00e0 distance via le protocole SSH.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Le site web est h\u00e9berg\u00e9 directement sur la Raspberry pour des questions de s\u00e9curit\u00e9 et de co\u00fbts. La cr\u00e9ation d\u2019un serveur sous Raspberry s\u2019est faite \u00e0 l\u2019aide de l\u2019installation des logiciels Nginx, Python et Python-Pip sur la carte de commande. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Python est un langage de programmation interpr\u00e9t\u00e9 relativement simple \u00e0 apprendre permettant la cr\u00e9ation de programmes informatiques, mais aussi de site Web via son module Django. Python-pip est le gestionnaire de paquets de python permettant d\u2019utiliser des modules compl\u00e9mentaires sans avoir \u00e0 le cr\u00e9er en partant de z\u00e9ro.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dans un premier temps, nous avons utilis\u00e9 Nginx comme serveur web pour distribuer notre application, Nginx est un serveur fortement utilis\u00e9 et connu de notre \u00e9quipe ce qui en \u00e0 simplifi\u00e9 le d\u00e9ploiement. Il peut \u00eatre utilis\u00e9 comme serveur Web ou\/et comme reverse-proxy.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Comme d\u00e9velopp\u00e9 de mani\u00e8re d\u00e9taill\u00e9e ci-dessous, nous avons utilis\u00e9 Django pour la version 2 du projet. Le module Django est un module Python qui permet la cr\u00e9ation et la distribution (si utilisation de la configuration par d\u00e9faut) d\u2019un site web dans ce langage directement accessible via le port 8000\/TCP en \u00e9coute sur l\u2019adresse localhost (uniquement accessible depuis la machine sur laquelle il tourne).\u00a0<\/span><span style=\"font-weight: 400;\">M\u00eame si utilis\u00e9e pour le d\u00e9veloppement de l\u2019application, la configuration par d\u00e9faut n\u2019est pas souple. Il est \u00e9videmment possible de changer celle-ci, mais il faut ajouter manuellement les adresses d\u2019\u00e9coute. De plus, il est plus compliqu\u00e9 d&rsquo;utiliser les param\u00e8tres de chiffrement (Certificat SSL) directement depuis Django.<\/span><span style=\"font-weight: 400;\">La solution permettant de r\u00e9pondre \u00e0 cela est la mise en place d\u2019un reverse proxy. Il s\u2019agit d\u2019un logiciel permettant de transmettre les requ\u00eates \u00e0 un serveur interne (par exemple un serveur ne disposant pas d\u2019adresse publique ou derri\u00e8re un pare-feu.). De plus, nous pouvons simplement y int\u00e9grer un certificat SSL permettant l\u2019acc\u00e8s s\u00e9curis\u00e9 au site (utile pour transmettre des mots de passe par exemple).\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous avons fait le choix de mettre en place le logiciel Nginx pour jouer le r\u00f4le de reverse-proxy, car c\u2019est un des logiciels les plus utilis\u00e9s et nous l&rsquo;avions d\u00e9j\u00e0 utilis\u00e9 dans d\u2019autres projets.<\/span><\/p>\n<h4><span style=\"text-decoration: underline;\">B. La base de donn\u00e9es<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Les informations r\u00e9cup\u00e9r\u00e9es gr\u00e2ce \u00e0 la scannette doivent ensuite interagir avec la base de donn\u00e9es. <\/span><span style=\"font-weight: 400;\">Nous avons cr\u00e9\u00e9 la base de donn\u00e9es en utilisant du SQL sur SQLite-3, le langage utilis\u00e9 par d\u00e9faut par le module Django de Python3. Cette base de donn\u00e9es poss\u00e8de 3 tables : la table <\/span><span style=\"font-weight: 400;\">produit, \u00e9tiquette et unit (pour les unit\u00e9s des produits). L\u2019id du produit est une clef primaire au sein de cette table.<\/span><\/p>\n<figure id=\"attachment_8044\" aria-describedby=\"caption-attachment-8044\" style=\"width: 469px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema8.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8044\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema8-300x133.png\" alt=\"\" width=\"469\" height=\"208\" \/><\/a><figcaption id=\"caption-attachment-8044\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 8 :<\/span> Visuel du site cod\u00e9 sur Django repr\u00e9sentant les 3 tables de la base de donn\u00e9es<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<h4><span style=\"text-decoration: underline;\"><span style=\"font-weight: 400;\">C. Le site web<\/span><\/span><\/h4>\n<p><span style=\"font-weight: 400;\">La derni\u00e8re grande \u00e9tape consistait \u00e0 coder l\u2019interface utilisateur : le site web.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous avons d\u2019abord fait une premi\u00e8re version du site internet de fa\u00e7on classique (langages HTML, CSS, JavaScript et Ajax). Dans cette premi\u00e8re version, nous avions utilis\u00e9 la librairie Bootstrap afin de simplifier le codage et l\u2019ergonomie du site. La librairie Bootstrap est une collection d&rsquo;outils utiles \u00e0 la cr\u00e9ation du design de sites et d&rsquo;applications web. Elle simplifie donc la cr\u00e9ation et le design des objets comme les boutons, les menus, les fen\u00eatres ou encore les tableaux. Cependant, l\u2019adaptabilit\u00e9 du codage avec la base de donn\u00e9es \u00e9tait assez contraignante et pouvait ainsi \u00eatre un frein pour s\u2019adapter aux demandes de chaque restaurateur. En effet, dans cette premi\u00e8re version, la base de donn\u00e9es \u00e9tait stock\u00e9e dans un fichier Ajax sous forme de dictionnaire. Ainsi, cette solution n\u2019\u00e9tait pas optimale d\u2019un point de vue de la s\u00e9curit\u00e9 ou encore de la redondance. De plus, les unit\u00e9s de comptage des quantit\u00e9s (caisses, cartons, kg, palettes\u2026) ne pouvaient pas \u00eatre modifi\u00e9es par l\u2019utilisateur, ajoutant une contrainte en plus concernant la simplicit\u00e9 d\u2019utilisation. Enfin, cette premi\u00e8re version ne disposait pas de version consultation des produits et ainsi tous les utilisateurs pouvaient modifier les stocks du restaurant. <\/span><\/p>\n<figure id=\"attachment_8045\" aria-describedby=\"caption-attachment-8045\" style=\"width: 556px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema9.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8045\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema9-300x232.png\" alt=\"\" width=\"556\" height=\"430\" \/><\/a><figcaption id=\"caption-attachment-8045\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 9 :<\/span> Premi\u00e8re version du site internet permettant la gestion des stocks.<\/figcaption><\/figure>\n<figure id=\"attachment_8059\" aria-describedby=\"caption-attachment-8059\" style=\"width: 542px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema9bis.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8059\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema9bis-300x165.png\" alt=\"\" width=\"542\" height=\"298\" \/><\/a><figcaption id=\"caption-attachment-8059\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 9 bis :<\/span> Premi\u00e8re version du site internet, fen\u00eatre permettant l\u2019ajout\/ la modification d\u2019un produit.<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Pour la deuxi\u00e8me version nous avons d\u00e9cid\u00e9 de coder en Django.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Django est un module du langage de programmation Python. Coder en Python nous permet de coder l\u2019enti\u00e8ret\u00e9 du backend du projet en Python, ce qui, \u00e0 terme, facilite la maintenance du site, ainsi que l\u2019impl\u00e9mentation de nouvelles fonctionnalit\u00e9s. De plus, ce module automatise de nombreux aspects de gestion d\u2019un site, notamment la version administrateur du site, d\u2019o\u00f9 son l\u2019utilisation.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Sur la deuxi\u00e8me version, il y a deux modes d\u2019utilisation possibles : la consultation et la modification des stocks.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En mode consultation, l\u2019utilisateur peut seulement consulter l\u2019\u00e9tat actuel des stocks : le nombre de produits dans les stocks et le stock total pour chaque produit. Ce mode est fait par exemple pour \u00eatre affich\u00e9 en permanence dans le local \u00e0 stock afin de savoir \u00e0 l\u2019aide d\u2019un simple clic l\u2019\u00e9tat des stocks actuels.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En mode modification l&rsquo;utilisateur doit \u00eatre en mesure de faire plusieurs actions vis \u00e0\u00a0 vis des stocks du restaurant :<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Voir les stocks d\u00e9j\u00e0 enregistr\u00e9s (produits et \u00e9tiquettes li\u00e9s aux produits).<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_8060\" aria-describedby=\"caption-attachment-8060\" style=\"width: 424px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema10.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8060\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema10-300x167.png\" alt=\"\" width=\"424\" height=\"236\" \/><\/a><figcaption id=\"caption-attachment-8060\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 10 :<\/span> Pages internet permettant la consultation des produits et des \u00e9tiquettes dans les stocks.<\/figcaption><\/figure>\n<ul>\n<li><span style=\"font-weight: 400;\">Ajouter un produit. Dans l\u2019onglet <\/span><i><span style=\"font-weight: 400;\">Produits<\/span><\/i><span style=\"font-weight: 400;\">, on ajoute un nouveau produit en cliquant sur le +. On initie ensuite le nom d\u2019un produit, son id dans la table des produits et son unit\u00e9 (cartons, caisses, kg,&#8230;), puis il faut cliquer sur <\/span><i><span style=\"font-weight: 400;\">Save<\/span><\/i><span style=\"font-weight: 400;\"> pour confirmer l\u2019ajout de ce produit dans les stocks.<\/span><\/li>\n<\/ul>\n<figure id=\"attachment_8061\" aria-describedby=\"caption-attachment-8061\" style=\"width: 506px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema11.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8061\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema11-300x140.png\" alt=\"\" width=\"506\" height=\"236\" \/><\/a><figcaption id=\"caption-attachment-8061\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 11 :<\/span> Page internet permettant l\u2019ajout d\u2019un produit dans les stocks.<\/figcaption><\/figure>\n<ul>\n<li><span style=\"font-weight: 400;\">Ajouter une \u00e9tiquette. Dans l\u2019onglet <\/span><i><span style=\"font-weight: 400;\">\u00c9tiquette, <\/span><\/i><span style=\"font-weight: 400;\">on ajoute une nouvelle \u00e9tiquette en cliquant sur le +. Cette \u00e9tiquette poss\u00e8de un id de base pr\u00e9-rempli qui sera par la suite automatiquement modifi\u00e9 lors de la lecture du tag RFID par la scannette. On choisit le produit\u00a0 correspondant \u00e0 cette \u00e9tiquette et on lui affecte une quantit\u00e9 au vu de son unit\u00e9. Il faut ensuite cliquer sur le bouton Enregistrer un TAG RFID\u00a0 puis passer la scannette devant l\u2019\u00e9tiquette RFID afin de lire l\u2019identifiant RFID associ\u00e9 \u00e0 cette \u00e9tiquette. Le programme lit et assigne alors automatiquement l\u2019id de cette \u00e9tiquette RFID \u00e0 la nouvelle \u00e9tiquette que nous sommes en train de renseigner dans les stocks du restaurant.<\/span><\/li>\n<\/ul>\n<figure id=\"attachment_8062\" aria-describedby=\"caption-attachment-8062\" style=\"width: 463px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema12.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8062\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema12-300x177.png\" alt=\"\" width=\"463\" height=\"273\" \/><\/a><figcaption id=\"caption-attachment-8062\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 12 :<\/span> Page internet permettant l\u2019ajout d\u2019une \u00e9tiquette dans les stocks.<\/figcaption><\/figure>\n<ul>\n<li><span style=\"font-weight: 400;\">Supprimer un produit, Dans l\u2019onglet <\/span><i><span style=\"font-weight: 400;\">Produit, <\/span><\/i><span style=\"font-weight: 400;\">on s\u00e9lectionne le ou les produits que l\u2019on souhaite supprimer. Puis il faut aller dans le menu d\u00e9roulant<\/span><i><span style=\"font-weight: 400;\"> Action<\/span><\/i><span style=\"font-weight: 400;\"> et s\u00e9lectionner <\/span><i><span style=\"font-weight: 400;\">Delete selected products<\/span><\/i><span style=\"font-weight: 400;\"> puis cliquer sur <\/span><i><span style=\"font-weight: 400;\">Go. <\/span><\/i><span style=\"font-weight: 400;\">Une nouvelle page appara\u00eet, nous demandant si nous sommes s\u00fbr de vouloir supprimer le ou les produits s\u00e9lectionn\u00e9s. Il faut donc ensuite cliquer sur <\/span><i><span style=\"font-weight: 400;\">Yes, I\u2019m Sure<\/span><\/i><span style=\"font-weight: 400;\"> pour confirmer la suppression ou sur <\/span><i><span style=\"font-weight: 400;\">No, take me back<\/span><\/i><span style=\"font-weight: 400;\"> pour annuler la suppression.<\/span><\/li>\n<\/ul>\n<figure id=\"attachment_8063\" aria-describedby=\"caption-attachment-8063\" style=\"width: 495px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema13.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8063\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema13-300x106.png\" alt=\"\" width=\"495\" height=\"175\" \/><\/a><figcaption id=\"caption-attachment-8063\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 13 :<\/span> Page internet permettant la suppression d\u2019un produit de nos stocks.<\/figcaption><\/figure>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Supprimer une \u00e9tiquette, Dans l\u2019onglet <\/span><i><span style=\"font-weight: 400;\">\u00c9tiquette, <\/span><\/i><span style=\"font-weight: 400;\">on s\u00e9lectionne le ou les \u00e9tiquettes que l\u2019on souhaite supprimer. Puis il faut aller dans le menu d\u00e9roulant<\/span><i><span style=\"font-weight: 400;\"> Action<\/span><\/i><span style=\"font-weight: 400;\"> et s\u00e9lectionner <\/span><i><span style=\"font-weight: 400;\">Delete selected tags<\/span><\/i><span style=\"font-weight: 400;\"> puis cliquer sur <\/span><i><span style=\"font-weight: 400;\">Go. <\/span><\/i><span style=\"font-weight: 400;\">Une nouvelle page appara\u00eet nous demandant si nous sommes sur de vouloir supprimer le ou les \u00e9tiquettes s\u00e9lectionn\u00e9es. Il faut donc ensuite cliquer sur <\/span><i><span style=\"font-weight: 400;\">Yes, I\u2019m Sure<\/span><\/i><span style=\"font-weight: 400;\"> pour confirmer la suppression ou sur <\/span><i><span style=\"font-weight: 400;\">No, take me back<\/span><\/i><span style=\"font-weight: 400;\"> pour annuler la suppression.<\/span><\/li>\n<\/ul>\n<figure id=\"attachment_8064\" aria-describedby=\"caption-attachment-8064\" style=\"width: 474px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema14.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-8064\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2022\/12\/schema14-300x114.png\" alt=\"\" width=\"474\" height=\"180\" \/><\/a><figcaption id=\"caption-attachment-8064\" class=\"wp-caption-text\"><span style=\"text-decoration: underline;\">Sch\u00e9ma 14 :<\/span> Site internet permettant la suppression d\u2019une \u00e9tiquette de nos stocks.<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<h1><span style=\"font-weight: 400;\">R\u00e9sultats et perspectives\u00a0<\/span><\/h1>\n<p><span style=\"font-weight: 400;\">Le projet CoOCKing s\u2019est conclu par la r\u00e9alisation d\u2019un prototype permettant de consulter l\u2019\u00e9tat des stocks actuels du restaurant et de les modifier. L&rsquo;identification des produits est r\u00e9alis\u00e9e par un \u00e9tiquetage suivant la technologie RFID. La visualisation des stocks en temps r\u00e9el est possible gr\u00e2ce \u00e0 un site internet poss\u00e9dant deux versions : une version consultation permettant de consulter les stocks et une partie modification permettant de modifier l\u2019\u00e9tat des stocks.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En effet, on arrive \u00e0 automatiquement ajouter un produit et ajouter une \u00e9tiquette associ\u00e9e \u00e0 ce produit gr\u00e2ce \u00e0 la lecture de l\u2019identification RFID de l\u2019\u00e9tiquette avec la scannette. La suppression du produit ou de l\u2019\u00e9tiquette est elle aussi disponible sous la version administrateur du site.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Cependant, il manque la partie suppression d\u2019une \u00e9tiquette \u00e0 partir de la scannette, fonctionnalit\u00e9 qui semble essentielle concernant la facilit\u00e9 pour un restaurateur de g\u00e9rer ses stocks. Cette partie donnerait vraiment sens \u00e0 notre objet communicant et faciliterait r\u00e9ellement la gestion des stocks de fond pour un restaurant.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">De plus, nous avons conscience que notre projet n\u2019est qu\u2019une embauche d\u2019un syst\u00e8me qui pourrait \u00eatre plus sophistiqu\u00e9. En effet, le march\u00e9 des solutions de syst\u00e8mes de gestion des stocks existe d\u00e9j\u00e0 et est plus complexe.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ainsi, la facilit\u00e9 d\u2019utilisation pourrait \u00eatre am\u00e9lior\u00e9e. Le fait que l\u2019utilisateur ait la possibilit\u00e9 de scanner seulement une \u00e9tiquette par une \u00e9tiquette le contraint \u00e0 r\u00e9aliser des aller retour entre son ordinateur et ses produits. Ainsi, une liste des \u00e9tiquettes non enregistr\u00e9es pourrait \u00eatre impl\u00e9ment\u00e9e et \u00eatre tri\u00e9e par ordre de scannage. En outre, un buzzer ou une alerte lumineuse pourrait \u00eatre ajout\u00e9 afin de savoir si l\u2019identifiant de l\u2019\u00e9tiquette a bien \u00e9t\u00e9 lu et de savoir l\u2019\u00e9tat de fonctionnement et de batterie du syst\u00e8me.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">D\u2019un point de vue esth\u00e9tique, nous pourrions rendre la prise en main de la scannette plus facile, en affinant le manche par exemple ou en lui arrondissant les contours. De plus, le choix de la carte de commande peut \u00eatre lui aussi modifi\u00e9 afin de choisir des composants plus petits et ainsi am\u00e9liorer l\u2019ergonomie de la scannette.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous pourrions aussi optimiser l\u2019autonomie et la consommation de notre syst\u00e8me. En effet, par soucis de temps nous n\u2019avons pas install\u00e9 d\u2019interrupteur sur la scannette. Par cons\u00e9quent, elle est allum\u00e9e en continu. Relier l\u2019alimentation \u00e0 un interrupteur serait une bonne \u00e9tape d\u2019am\u00e9lioration.<\/span><\/p>\n<h1><\/h1>\n<h1><span style=\"font-weight: 400;\">Annexes<\/span><\/h1>\n<p><span style=\"text-decoration: underline;\">A. Vid\u00e9o de d\u00e9monstration<\/span><\/p>\n<p>\u00a0<\/p>\n\n<p>(Lien vers la vid\u00e9o de d\u00e9monstration du prototype : <a href=\"https:\/\/drive.google.com\/file\/d\/1OtxhmIcvaCxDwfNo9N53S0vYKPGifAj1\/view?usp=share_link\" target=\"_blank\" rel=\"noopener\"><i>https:\/\/drive.google.com\/file\/d\/1OtxhmIcvaCxDwfNo9N53S0vYKPGifAj1\/view?usp=share_link<\/i><\/a><i>\u00a0<\/i>)<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\">B. Github<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Voici le lien vers notre Github : <\/span><a href=\"https:\/\/gitlab.imt-atlantique.fr\/cooc22-coocking\"><span style=\"font-weight: 400;\">https:\/\/gitlab.imt-atlantique.fr\/cooc22-coocking<\/span><\/a><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Il contient les diff\u00e9rents codes utilis\u00e9s (des diff\u00e9rentes versions du site et ceux implant\u00e9s dans la Raspberry afin de lire et de transmettre les identifiants RFID) et les mod\u00e8les d\u2019impression 3D (en format STL).<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Auteurs :\u00a0 Adrien CHABOD, Lucas DEHENNE, Louise THEOPHILE et Gatien TIREL &nbsp; Introduction Notre groupe travaille \u00e0 l\u2019\u00e9laboration d\u2019un prototype de syst\u00e8me de gestion des stocks pour les restaurateurs. Nous voulions tout d\u2019abord traiter un sujet sur le th\u00e8me de la restauration et ainsi r\u00e9pondre aux besoins des restaurateurs. Afin de comprendre les probl\u00e8mes pr\u00e9sents [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":8043,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[113],"tags":[167,74,75,168],"class_list":["post-8033","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couad","tag-django","tag-raspberry-pi","tag-rfid","tag-solidworks"],"acf":{"article_projet":[10688]},"_links":{"self":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/8033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/comments?post=8033"}],"version-history":[{"count":2,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/8033\/revisions"}],"predecessor-version":[{"id":10691,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/posts\/8033\/revisions\/10691"}],"acf:post":[{"embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/projet\/10688"}],"wp:attachment":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/media?parent=8033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/categories?post=8033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/tags?post=8033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}