[HC05 BLUETOOTH] Contrôler depuis le WEB

Bonjour,

Je travail actuellement sur un projet contenant une arduino nano, et j'ai réalisé un code de communication en Bluetooth (via le téléphone et depuis n'importe quel pc utilisant le bluetooth).

Cependant, j'ai une question, est-il possible d'utiliser une interface web pour envoyer des ordres en bluetooth ? Cela permettrais d'y accéder via un téléphone et via un pc. (car j'avais penser a une application C# facilement faisable, mais cela engendre le développement d'une application android et IOS, plus chiant).

Existe-il une interface comme cela pour arduino, téléchargeable ou non ? Si non, pensez vous qu'il est possibler de communiquer via bluetooth depuis le web ? (Une librairie PHP par exemple ou JS) car je pourrais développer cette interface du coup.

Merci de votre aide.

Cordialement, Flooow.

Bonjour,

Oui, mais la solution dépend un peu de l'architecture de ton système. J'imagine que ton navigateur Web se trouve "n'importe où dans le monde" et que tu souhaites ainsi pouvoir commander à distance ton Arduino + bluetooth via ton PC (situé au même endroit) ?

Oui, l'utilisateur se connecte sur une interface WEB et il se connecte au robot directement (a proximité de lui, pas a l'autre bout du monde)

Mon interface est hebergé sur un serveur, l'utilisateur s'y connecte, et s'il clique sur le bouton connexion ca lance une connexion entre le bluetooth de son pc (ou téléphone) et après en fonction de ou il clique ca envois des commandes en bluetooth.

Ton PC sait interagir avec son bluetooth via un langage quelconque ? Si oui, tu peux utiliser dans ce même langage une bibliothèque qui est capable de communiquer sur du Websocket. Imaginons que tu puisses interagir avec ton bluetooth en Python, par exemple, ça donnerait ça:

  • Sur ton PC, tu fais ton programme Python qui interagit avec le bluetooth. Dans ce même programme, tu intègre un serveur Tornado (capable de communiquer en Websocket)
  • De l'autre côté, tu fais une interface Web qui intègre une communication via Websocket avec ton PC (ce qui suppose bien sûr que ton serveur Web soit capable de communiquer avec ton PC, donc entre autres que les deux soient sur le même réseau)

Justement les deux pc ne seront pas sur le même réseau.

Imaginons la plateform est sur un serveur ovh (où sera héberger mon site), l'utilisateur accède à http://test.test.fr et depuis cela il peut envoyer des ordres bluetooth à un récepteur proche de son pc à lui.

Peux-tu préciser un peu ton architecture ? Il y a 2 PC en plus du serveur ? Si oui, les deux PC sont au même endroit ou pas ?

Pour faire simple:

  • Le serveur, chez OVH ou est hebergé l'interface et le site web
  • Le pc de de l'utilisateur (il peut y en avoir plusieurs au même endroit ou non) qui se connecte à l'interface
  • L'arduino avec le module bluetooth qu'il faut contrôler (forcément au même endroit que le PC de l'utilisateur)

Sous forme de schéma ca donne cela:

|500x308

C'est plus clair comme cela ?

Nettement ;)

Concrètement, tout va donc se passer sur la même machine, c'est plus simple. Si je reprends l'exemple du programme Python qui te permet d'interagir avec ton bluetooth:

  • Sur ton PC, tu fais ton programme Python qui interagit avec le bluetooth. Dans ce même programme, tu intègre un serveur Tornado (capable de communiquer en Websocket)
  • De l'autre côté, tu fais une interface Web qui intègre une communication via Websocket avec ce programme Python

Peu importe qui "sert" la page Web car tu auras simplement une communication via Websocket entre ton navigateur et ton programme qui gère le bluetooth.

La vraie question est de savoir si tu peux interagir avec le bluetooth de ton PC par programme.

Il n'y a que Python qui peut faire cela ? Car à vrai dire je ne suis pas fan de ce langage de programmation.

Après, il font des terminaux bluetooth qui permettent d'envoyer des commandes en bluetooth, il faudrait que je fasse le même système en fait.

As tu des exemples de programmes comme cela ou pas du tout ?

Non, Python était un exemple. La première chose à faire est de voir si tu peux interagir avec ton bluetooth par programme. J'ai déjà fait des choses équivalentes avec un dongle bluetooth (qui était vu par le PC comme un port série) mais pas avec un bluetooth natif à l'ordinateur. Si jamais tu ne peux pas interagir avec le bluetooth natif de ton ordi, utiliser un dongle comme ça est une solution de repli.

A première vue, c'est le même pour le Bluetooth natif, il utilise aussi les ports COM pour communiquer (je suis aller directement dans les paramètres bluetooth et jusqu’à présent, pour communiquer avec mon arduino, il utilise les ports COM 20 et 21)

Du coup, ça simplifie les choses, si le bluetooth est natif, pas besoin de module supplémentaire.

Tu peux donc utiliser à peu près n'importe quel langage sur ton PC pour gérer à la fois le bluetooth et les websockets, si tu choisis cette solution.

Donc en conclusion, je ne peut pas contrôler le Bluetooth directement via un langage Web ?

Je suis obligé de passer par un programme sur le pc de l'utilisateur, j'envoie festival données websocket à ce programme qui lui va gérer le Bluetooth et me renvoyer si cela a réussit ou non via websocket ?

Après j'avais aussi pensé à la commende exec mais je suis pas sur de la finalité, dans les deux cas ça ne fonctionnera que sur pc et non sur tous les appareils ayant le Bluetooth, je serais donc obligé de faire une application Android et Ios, alors autant que je fasse une application en C# c'est plus simple.

Merci de votre aide.

Tu peux le faire dans le langage que tu veux. Ce n’est pas une question de langage mais une question de qui fait le travail. Ca ne peut pas être ton serveur OVH qui fait le travail. Tu imagines les problèmes de sécurité si c’était le cas ? Ca voudrait dire que le serveur pourrait prendre le contrôle d’une machine distante.

Tout ce qui interagit avec ton ordinateur ne peut être exécuté que par un programme qui tourne en local sur ton ordi. Au passage, le navigateur Web est un programme qui tourne en local sur ton ordinateur, tu pourrais faire la manip en javascript. : désolé, ce que j’ai rayé est une énorme bêtise. Tu peux utiliser javascript pour faire cette manip uniquement via node.js ou en utilisant un plugin dans Chrome.
Tu pourrais aussi la faire en PHP à condition d’utiliser ton ordi en serveur Web local, sans passer par OVH.

Faut juste que je me documenté sur le websocket car je m'en suis jamais servi.

Après pense tu que si je passe par une base de donnée ça peut le faire ? L'utilisateur clique sur une action je stocke en base de donnée et un programme sur son pc analyse la base et commande le port serie. A voir.

A priori, la base de données sera hébergée par le serveur OVH, donc le PC de l'utilisateur ne pourra pas analyser la base.