{"id":18949329,"url":"https://github.com/loan-mgt/js-ble-esp32","last_synced_at":"2026-05-04T12:40:30.519Z","repository":{"id":164158421,"uuid":"578366758","full_name":"loan-mgt/js-ble-esp32","owner":"loan-mgt","description":"communicate between esp32 and WebBrowser ( JS ) with Bluetooth BLE","archived":false,"fork":false,"pushed_at":"2023-04-17T20:13:53.000Z","size":352,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-01T01:45:08.693Z","etag":null,"topics":["arduino","arduinoble","bluetooth","bluetooth-low-energy","esp32","javascript","web"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/loan-mgt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-12-14T22:15:48.000Z","updated_at":"2023-10-12T13:15:30.000Z","dependencies_parsed_at":"2024-01-20T04:10:34.608Z","dependency_job_id":"31b27679-ed31-4038-9696-96bb38063c50","html_url":"https://github.com/loan-mgt/js-ble-esp32","commit_stats":null,"previous_names":["loan-mgt/js-ble-esp32"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loan-mgt%2Fjs-ble-esp32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loan-mgt%2Fjs-ble-esp32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loan-mgt%2Fjs-ble-esp32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loan-mgt%2Fjs-ble-esp32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/loan-mgt","download_url":"https://codeload.github.com/loan-mgt/js-ble-esp32/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239946916,"owners_count":19723018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduinoble","bluetooth","bluetooth-low-energy","esp32","javascript","web"],"created_at":"2024-11-08T13:16:33.760Z","updated_at":"2026-03-27T23:30:17.631Z","avatar_url":"https://github.com/loan-mgt.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg width=400 src=\"src/illustration.png\"\u003e\n\n# [Envoi de données de JS à ESP32 avec BLE](https://qypol342.github.io/js-ble-esp32/demo_async.html)\n\n[English README 🇬🇧](README_EN.md)\n\u003c/div\u003e\n\n\n\n\n## 🎯 Objectif\nL’objectif de ce projet est d’avoir le code minimum pour communiquer avec esp32 avec du Bluetooth BLE depuis son navigateur. Parce que le projet se repose sur le navigateur cela fonctionne aussi sur mobile.\n\n## ⚠️ Attention\nL’api Bluetooth n’est pas encore supporté par  beaucoup de navigateurs. Pour l’instant seuls les navigateurs avec le moteur Chromium sont compatibles. Mais cela n'est pas un probleme sur mobile (PWA)\n\n\u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API\"\u003e\n\u003cimg src=\"src/ble_support.PNG\"\u003e\n\u003c/a\u003e\n\n## 👉 Prérequis\nVous avez besoin d’un Esp32 évidemment, de l’IDE Arduino pour téléverser le code et finalement d’un serveur web (dans mon cas j’ai utiliser npm avec la commande `npx serve`)\n\n## 📋 Installation\nCloner le projet sur votre machine \u003c/br\u003e\nTéléverser le `.ino` sur votre Esp32 \u003c/br\u003e\nAssurez vous que le chemin du serveur web correspond bien à la racine de ce projet\nLancer votre serveur web ( exemple `npx serve` )\n\n## 📐 Bluetooth BLE structure\nLe protocole fonctionne avec des services et des caractéristiques. Cette structure est très similaire à celle d’une bibliothèque, les services sont des étagères, on y range donc les livres des mêmes auteurs et du même genre. Les caractéristiques sont comme des livres on les ranges dans les mêmes services si il propose le même type de donnée ou que les données ont le même objectif.\n\nVoici la structure créée dans ce projet:\n\n\u003cimg width=500 src=\"src/schema.png\"\u003e\n\nDans cette exemple `characteristicRandNb` est un seul octet, alors que `characteristicLed` est un table de 2 octet. L'objectif est de contrôler la led (l'allumer et l'éteindre).\n\n## 🚀 Utilisation\nUn fois la page web chargée et l'Esp 32 alimenté, cliquez sur `connect`, si votre navigateur est compatible un petit page va soucrir où vous allez pouvoir choisir l'appareil.\nUne fois l'appareil choisi et la connexion réussit les autres boutons sont activés. Avec le bouton `Read` vous pouvez lire `characteristicLed` qui est un tableau de 2 octets. Avec le bouton `Write` vous pouvez écrire sur `characteristicLed`. Le code envoyé lorsque vous cliquez sur `Write` change entre ces deux tableaux: Une fois [42, 35] un fois [42,2]. \u003c/br\u003e\nDans le code de l’arduino si le deuxième élément du tableau est un 2 alors la LED s’allume. Pour confirmer cet événement, il change la première valeur du tableau, il la met à 23. L'Esp 32 va a chaque révolution modifier la valeur de `characteristicRandNb` avec un nombre aléatoire compris entre 0 et 11. \u003c/br\u003e\nAvec le bouton `Notify` sur la page web vous pouvez vous abonner au changement de valeur. A chaque changement, la nouvelle valeur sera affichée dans la console.\u003c/br\u003e\nFinalement le bouton `Disconnect` qui parle de lui-même permet de déconnecter l'appareil. Dans cette configuration l'Esp 32 peut être connecté à un seul appareil à la fois.\n\n\u003cimg width=700 src=\"src/demo.PNG\"\u003e\n\n## 📚 Documentation\n\n[Librairie arduino BLE](https://www.arduino.cc/reference/en/libraries/arduinoble/)\n\n[Google BLE Guide](https://developer.chrome.com/articles/bluetooth/)\n\n\n\n\n\n\n\n\n\n## Data needed\n\n- datetime\n- door status 1 byte\n- winter time 1 byte\n- light sensor value (more than 4 (254))\n\n\n## Note video\n- dans cette demo on aura un seul service avec 2 char\n- un qui premt de génré la led de esp32 avec qui peut recevoi 2 octec\n- un qui sera en lecture seul mais pour le quel on mettre un lsitenser qui observe si la valeur change commé d'un seul octer\n- crée le fichier html\n- ajouter la structure de base d'un fichier html\n- ajouter 5 button\n- pour se co pour lire pour ecrit pour etre notifier et se deco\n- definir les bouton dans le js\n- definir les uuid des service\n- ajouter de vaiable\n- ajouter les liseneter quand onc lcike sur les boutotn\n- desactiver les bouton tant qu'uaun apparail est connecter\n- fonction se connecter\n- verfiifer si le navigateur est compatible\n- fonction pour la demande d'appapreil\n- fonction connecter se conncter\n- demande le service\n- aperis du service demander la charcherteroistique que l'on soughaite\n- activer les bouton\n- fonction read pour la char led\n- conertry en array\n- fonction écritre pour le char led\n- alterner en 2 e\n- fonction notify echoute chengemenat\n- deconneciton\n\n- code arduino\n- import la lib BLE\n- delare le service et les characteristic, avec leur taille et leur type\n- delare les pins LED et les variables \n- dans le setup\n- definir le pinde la led comme output\n- verfie que la lib BLE est bien prette\n- on defnie le nom de notre appreil (faire attention)\n- start advertising le service\n- ajoute les char au service\n- on ajoute le service au serveur BLE\n- met un valeur par default\n- et on demare le service `advertise();`\n- while loop\n- if central conected ? // si un apparile est connecter\n- print son adresse mac\n- tant qu'il est connecter\n- faire ce que l'on veut \n- si la char led est modifier\n- on print la valeur duc char\n- si la deuxieme valeur du array du char est a 2\n- on allume la led et modifier la premier valeur de l'array du char\n- sinon on eteint la led\n\n- on genere un nomre alétoir pour le char RandNb un nomreb entre 0 et 11\n- on ecrit la nouvelle valeur au char\n\n- si l'appreil se déconnect on afficher son adress mac\n\n\n\nto redo\n\n- read function\n- - on recupère la valeur avec readeValue sera un type array Buffer\n- puis on la converti an array\n\n- la fonction requestDevice qui retour l'appareil chsoir par l'ulisateur\n- on lui donne un filtre, on va donc affiché seulement les apprail nome comme la variable devcice name\n- et qui ocntione les services et charchartirse que nous allons utliser, ca c'est tres  important\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floan-mgt%2Fjs-ble-esp32","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Floan-mgt%2Fjs-ble-esp32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floan-mgt%2Fjs-ble-esp32/lists"}