Internet vers arduino

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 :wink:

PS: le code modifié

// 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("------------------------------------------------------");

    }

  }

}