Partage
  • Partager sur Facebook
  • Partager sur Twitter

Commande par page web, quel langage, comment communiquer?

    29 octobre 2012 à 11:09:53

    Bonjour à tous!

    J'aurai besoins d'un peu d'aide et surtout conseils pour mon petit projet!
    En très simple, je voudrai faire un système domotique. Ma question se porte sur la manière de communiquer avec mon Arduino. J'ai testé à l'aide du protocole http en envoyant un formulaire, ça fonctionne assez bien mais ce n'est pas suffisant :-)

    Ne connaissant que très peu les langages web, je me demandais comment il serait possible de communiquer de manière continue avec mon Arduino, par exemple si je déplace un curseur je voudrai que ma LED change "en direct". Sans avoir besoin d'envoyer un formulaire à chaque changement.


    Je vous remercie d'avance pour vos réponses!
    • Partager sur Facebook
    • Partager sur Twitter
      29 octobre 2012 à 13:39:35

      Salut,
      pour faire cela il faut que tu utilises du Javascript.

      Pour récupérer l'état des leds et les envoyer des pages web vers l'Arduino, il faut que tu écrive dans un fichier ".cgi" que tu vas lire avec le code qui tourne dans l'Arduino.
      Pour écrire dans ce fichier il te faudra utiliser du Javascript.

      Après si tu veux un retour de l'état de ces leds sur ta page web, à partir de ton Arduino tu génères (ou tu réécris) un fichier XML avec les valeurs que tu vas lire grâce au Javascript, comme c'est le XML qui change, pas besoin d'envoyer de formulaires.

      Si tu veux lire ce fichier XML, tu dois utiliser du Ajax(qui mélange JavaScript et XML) qui va envoyer une requête à un temps que t'auras spécifié.

      Un truc du style :
      setTimeout("newAJAXCommand('status.xml', updateStatus, true)", 500);
      //On appelle ici la fonction "updateStatus" qui va lire le fichier status.xml toutes les 500ms
      


      Je suis pas un grand spécialiste là-dedans, mais j'utilise un PIC32 et Microchip fournit une Stack TCP/IP avec comme exemple cette manière de faire et en lisant les fichiers d'aides et en faisant quelques recherches sur le net j'ai compris ça. Il y a peut-être certaines choses qui m'ont échappées... J'espère t'avoir un peu aidé quand même.

      • Partager sur Facebook
      • Partager sur Twitter
        29 octobre 2012 à 14:18:49

        Quelques petites remarques en passant.

        Pour faire du AJAX (ce qui semble correspondre tout à fait à ce que tu veux faire), tu n'es pas obligé de passé par du XML, après si il existe un librairie de parsing XML pour arduino, faut pas hésiter :p
        Mais s'il n'y en a pas, rien ne t'oblige à t'amuser à en parser alors que tu peux faire plus simple.

        Sinon, le CGI sera ok si tu n'as qu'un pc qui se connecte à la fois sans faire trop de requêtes simultanées.
        Parce que le défaut du CGI brut, c'est que ça démarre une instance du programme par requête, ce qui peut vite devenir très lourd pour un arduino.

        Après, je sais pas quelles sont les options côté serveur web sur un arduino, donc dur de t'aiguiller sur telle ou telle techno...
        • Partager sur Facebook
        • Partager sur Twitter
          29 octobre 2012 à 21:07:37

          Merci beaucoup à vous deux!

          Je vais donc lancer mon apprentissage du Javascript et AJAX! Par la suite effectivement si ça devient trop lourd pour mon Arduino de supporter un serveur je peut le déplacer dans un Raspberry Pi par exemple! Mais je ne vais pas m'enflammer et aller apprendre tranquillement ces quelques langages :-)

          Encore merci! Et je repasserai surement quand je serai perdu au milieu d'AJAX ;-)
          • Partager sur Facebook
          • Partager sur Twitter
            29 octobre 2012 à 21:35:49

            Faire du web avec l'Arduino, oublie. Elle n'est pas faite pour ca, pour la version de base.
            Pour la méga peut-être qu'il y a des bibliothèques un peu plus évoluées au niveau http et tcp/ip.

            La méthode comme l'a dit Zbeb, c'est le CGI. En soi le CGI n'est pas un langage mais un protocole de communication entre un programme *natif* et le serveur web. Ayant testé sur une petit carte à base d'un linux embarqué, le plus simple vu qu'on était sous linux c'était le bash, mais on utilisait pas les ports externes.
            Il faut donc que tu choississe le langage le plus adapté pour programmer ton microcontroleur (souvent le C) et en gros il faut que dans ton programme tu dois "coder" ta page html, si tu veux faire du javascript (qui est exécuté par le navigateur) tu doit aussi intégrer ton code javascript.

            Pour le CGI commence par afficher une page web toute bête, ensuite essaie d'afficher des paramètres de la carte, puis tente de faire une petite intéraction à base de GET http, et ensuite met toi au javascript pour avoir quelque chose de plus dynamique. Il vaut mieux passer un peu de temps à faire des trucs basiques pour bien comprendre le fonctionnement du CGI et ses limites plutôt que de se lancer dans le javascript + CGI, car si ca marche pas tu ne sauras pas si ca provient du javascript ou du CGI.

            Dernier point, passe directement sur la Raspberry Pi pour faire du CGI, prend un serveur Apache bien documenté avec pas mal d'utilisateurs dans le monde, ca te permettra de trouver pas mal d'informations sur le net notamment pour la configuration du bouzin.
            • Partager sur Facebook
            • Partager sur Twitter

            Commande par page web, quel langage, comment communiquer?

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown