Pages: [1] 2   Go Down
Author Topic: Internet vers arduino  (Read 9632 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salut,
j'ai réactivé un projet commencé ya un petit moment sur la récupération  d'information d'un site web qui déclencherais l'arduino.
par exemple les modifications d'un site météorologique viendrais déclencher une led.
Est ce que vous avez des pistes dans ce sens
merci pour votre précieuse aide
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allez, une premiere piste par là :http://www.adafruit.com/index.php?main_page=product_info&cPath=17_21&products_id=83

et un livre : http://oreilly.com/catalog/9780596510510
Logged

New Zealand
Offline Offline
Jr. Member
**
Karma: 0
Posts: 60
With arduino everything is possible
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour 55 US tu peux acheter une WiShield, si tu a WiFi. C'est tres rapide et efficace. Je l'utilise pour envoyes de l'information a un seveur qui la publis ensuite sur un site web. Les biblioteque sont tres bien faite.

http://www.asynclabs.com
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour vos  réponses
mais je vais passer par le flux rss ca va être plus simple.Alors la je récupère le flux rss avec processing reste maintenant à sélectionnez ce qui m'interresse dans le flux pour déclenchez un sevomoteur via arduino.
MERCI encore
 reste ouvert à toutes suggestions
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 20
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tout dépend si l'arduino doit être autonome ou pas.

je suis sous Windows et j'utilise serproxy et php pour publier et interroger mon arduino à distance sur internet.

serproxy sert à router un flux serie (port COM) en créant un socket TCP/IP sur ton pc (interrogeable en php etc ..)

Tu pourrais faire tourner un serveur web sur ton pc avec un script qui se déclenche tout les X temps et qui vérifie ton flux rss et ses publications.
Tu n'aura ensuite qu'a envoyer une commande à l'arduino via ton script php par le biais de serproxy et de son socket<=>com .




Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salut gaiden
ta piste me semble très prometeuse smiley-grin j'explore ca  de suite et te tiens au courant
« Last Edit: May 25, 2010, 05:32:41 am by bichtrack » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 20
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pas de problème , si il te faut du code ou des exemples je suis la
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

RE GAIDEN
Mes premières recherches mon amené ici
http://protolab.pbworks.com/TutorialFlashSetup2009
Et tout de suite je me demande après une lecture sommaire  si ce n'est pas possible  de faire un peu plus simple. Ne puis je pas "commander" directement un actionneur monté sur arduino avec le rss que j'obtiens deja via processing ?
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 20
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si tout à fait.
J'ai utiliser php et un serveur web car je désire contrôler mon arduino via internet.

Dans ton cas tu récupère des infos déjà publiées pour agir en conséquence.
Ta méthode est la meilleur pour ton application.

Et j'avoue tres humblement que je ne maitrise pas assez processing comparé à php.  :-[

Sur quel point bloques tu ? tu arrives a éclater ton rss et à trouver ce que tu veux dedans ? c'est la partie communication avec l'arduino qui bloque?





Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut
du coté  flux rss  ya pas de problème après coté arduino
 il faut que
- jétablisse la communication de processing vers arduino et que
-je parvienne à coder quelque chose comme :
si le title ou l'item  du rss change ou à chaque fois qu'il ya une actulisation du rss > déclencher un actionneur en l'occurrence ici un mini compresseur relié à l'arduino.
Autant la communication de arduino vers processing je connais autant l'inverse je bloque deja
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salut
bon voila  le code processing pour récupèrer le  rss désiré mais après je ne sais pas trop par ou commencer pour récupèrer avec arduino l'item ou le title
Code:
// déclarer l'objet qui contiendra les données RSS
Channel channel;
boolean DEBUG = true;
void setup() {
size(500,500);
   // lors de la création de la chaine, on passe l'adresse du flux RSS
  //channel = new Channel(this, "http://www.assemblee-nationale.fr/rss/rss_cri.xml");
 }
void draw() {
   background(255);
  if (DEBUG) channel.draw();
  }
class Channel {

  PFont affichage;

  String title, description;
  Cri[] cris = new Cri[0]; // créer une liste de Cri vide (chacun avec titre,date,descriptif)

  Channel(PApplet app, String s) {

    XMLElement document;

    affichage = createFont("dialog",9);

    try {
      document = new XMLElement(app, s);
    }
    catch (Exception e) {
      println(" erreur ):" + e);  
      return;
    }

    if (!document.getStringAttribute("version").equals("2.0")) return;
    if (0 == document.getChildCount() && !document.getChild(0).getName().equals("channel")) return;

    XMLElement channel = document.getChild(0);

    int nombre_items = channel.getChildCount();

    for (int i = 0; i < nombre_items; i++) {

      XMLElement enfant = channel.getChild(i);

      if (enfant.getName().equals("title")) {
        // chercher le titre (son contenu)
        title = enfant.getContent();
              }

      if (enfant.getName().equals("description")) {
        // chercher le descriptif
        title = enfant.getContent();
              }

      // on a trouvé un <item> (ce qui nous intéresse)
      if (enfant.getName().equals("item")) {

        String titre;
        String date;
        String descriptif;

        // créer des variables temporaires pour les données qui nous intéressent
        try {
          titre = enfant.getChild("title").getContent();
        }
        catch (Exception e) {
          titre = "";
          println(e);
        }

        try {
          date = enfant.getChild("pubDate").getContent();
        }
        catch (Exception e) {
          date = "";
          println(e);
        }

        try {
          descriptif = enfant.getChild("description").getContent();
        }
        catch (Exception e) {
          descriptif = "";
          println(e);
        }

        cris = (Cri[])append( cris, new Cri(titre, date, descriptif) );
      }

    }

  }

  void draw() {

    // le debugger
    textFont(affichage);
    textAlign(CENTER,CENTER);

    // s'il n'y a pas eu de données
    if (0 == cris.length) {
      fill(0);
      text("Je n'ai pas pu me connecter au flux rss", random(18,20), random(18,20));
      return;
    }  

    // sinon demander à chaque donner de s'afficher
    for(int i=0; i < cris.length; i++) {
      cris[i].draw();
    }

  }


  class Cri {

    float x,y;
    String titre, date, descriptif;

    // le constructeur de chaque CRI
    Cri(String _titre, String _date, String _descriptif) {
      titre = _titre;
      date = _date;
      if (null == _descriptif) descriptif = "";
      else descriptif = _descriptif;
      x = random(width);
      y = random(height);
    }

    // dessiner cette dépêche
    void draw() {

      x += random(-1,1);
      y += random(-1,1);

      fill(255,0,0);
      text(titre, x, y);
      fill(0,255,0);
      text(date, x, y+10);
      fill(0,0,255);
      text(descriptif, x, y+20);
    }

  }

}



L'idée c'est que chaque changement rss déclenche un actionneur monté sur arduino
merci pour l'aide
« Last Edit: May 30, 2010, 05:08:41 pm by bichtrack » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 20
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour qu'il y est detection de changement d'état , il faut stocker l'etat predecent quelque part ... je ne vois pas comment tu va t'y prendre.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 20
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut

je viens de travailler su ton projet.

J'ai modifier le code source pour avoir un affichage clair.

Deux problèmes majeures arrivent :
  
     1) Le code ne rafraichit pas le flux , donc si il y a de nouvelle info , on ne le sait pas

     2) Quand on aura réglé le problème de rafraichissement, il faudra stocker la dernière news (la plus récente) et la comparer avec la plus récente après rafraichissement.


Par contre le passage de la commande de ton actionneur vers l'arduino ne sera pas un problème.

Je continu de chercher , ça m'a prit un quart d'heure ce soir , on avance bien smiley-wink

PS: le code modifié

Code:
// déclarer l'objet qui contiendra les données RSS
Channel channel;

void setup() {

  // lors de la création de la chaine, on passe l'adresse du flux RSS
  channel = new Channel(this, "http://www.assemblee-nationale.fr/rss/rss_presse.xml");
  channel.on_screen();
}


class Channel {

  String title, description;
  Cri[] cris = new Cri[0]; // créer une liste de Cri vide (chacun avec titre,date,descriptif)

  Channel(PApplet app, String s) {

    XMLElement document;


    try {
      document = new XMLElement(app, s);
    }
    catch (Exception e) {
      println(" erreur ):" + e);  
      return;
    }

    if (!document.getStringAttribute("version").equals("2.0")) return;
    if (0 == document.getChildCount() && !document.getChild(0).getName().equals("channel")) return;

    XMLElement channel = document.getChild(0);

    int nombre_items = channel.getChildCount();

    for (int i = 0; i < nombre_items; i++) {

      XMLElement enfant = channel.getChild(i);

      if (enfant.getName().equals("title")) {
        // chercher le titre (son contenu)
        title = enfant.getContent();
      }

      if (enfant.getName().equals("description")) {
        // chercher le descriptif
        title = enfant.getContent();
      }

      // on a trouvé un <item> (ce qui nous intéresse)
      if (enfant.getName().equals("item")) {

        String titre;
        String date;
        String descriptif;

        // créer des variables temporaires pour les données qui nous intéressent
        try {
          titre = enfant.getChild("title").getContent();
        }
        catch (Exception e) {
          titre = "";
          println(e);
        }

        try {
          date = enfant.getChild("pubDate").getContent();
        }
        catch (Exception e) {
          date = "";
          println(e);
        }

        try {
          descriptif = enfant.getChild("description").getContent();
        }
        catch (Exception e) {
          descriptif = "";
          println(e);
        }

        cris = (Cri[])append( cris, new Cri(titre, date, descriptif) );
      }

    }

  }

  void on_screen() {

    // le debugger


    // s'il n'y a pas eu de données
    if (0 == cris.length) {

      println("Je n'ai pas pu me connecter au flux rss");
      return;
    }  

    // sinon demander à chaque donner de s'afficher
    for(int i=0; i < cris.length; i++) {
      cris[i].read();
    }

  }

  class Cri {

    String titre, date, descriptif;

    // le constructeur de chaque CRI
    Cri(String _titre, String _date, String _descriptif) {
      titre = _titre;
      date = _date;
      if (null == _descriptif) descriptif = "";
      else descriptif = _descriptif;

    }

    // dessiner cette dépêche
    void read() {

      println(titre);

      println(date);

      println(descriptif);
      println("------------------------------------------------------");

    }

  }

}
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 20
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hop la j'ai fini

Tout fonctionne smiley-wink

Quand le flux RSS se met a jour , j'allume une led sur mon arduino pendant 3 secondes (on peut imaginer toute sorte d'action : LCD , relais, son ...)

J'attends ton retour pour te donner les deux bouts de code et des explication sur tout ça !  smiley-grin



Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 25
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,
désolé pour la réponse un peut tardive, mais l'idée devait murrir avant d'aller plus avant. Finalement je laisse le rss au chaud . Toujours avec la même idée de commander arduino via le net, il s'agit cette fois ci de faire en sorte qu'a chaque fois que quelqu'un se connecte au site internet sela déclenche l'arduino.
La création d'une page PHP dans cette optique te semble t-elle pertinente ?
Merci pour ta réponse et encore désolé pour le retard
http://marcserazin.blogspot.com/
Logged

Pages: [1] 2   Go Up
Jump to: