Go Down

Topic: Questions sur le html (Read 9 times) previous topic - next topic

numero_744

#105
Dec 22, 2012, 02:19 pm Last Edit: Dec 22, 2012, 02:23 pm by numero_744 Reason: 1
Merci pour ta réponse, infobarquee.

S.T.P. remplace quote par code. J'ai essayé et la coloration syntaxique s'est activée

J'avais fait une erreur de copier-coller, mais maintenant
Code: [Select]

document.cookie = c_name + "=" + c_value + "; path=/";

fonctionne parfaitement !



Ca, ca semble correspondre à ce que tu cherche.
http://www.javascriptkit.com/javatutors/dom2.shtml

Il a un <DIV> qui est vide au début
Puis il ajoute des childs qui viennent s'ajoute à la suite, comme une console.

Ça marche mais j'aimerais mettre des retours à la ligne et je n'y arrive pas.

Code: [Select]

document.getElementById('mydiv').innerHTML = document.getElementById('mydiv').innerHTML + what;

C'est plus simple et je peux faire un retour à la ligne avec <br> à la fin de what.
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

numero_744

Salut, j'ai reçu mon ethernet shield et avant de l'utiliser j'aimerais savoir à quoi correspond l'étiquette au dos.
Elle comporte 8 nombres hexadécimaux entre 00 et FF.
Je me suis dit que c'était l'adresse mac adoptée si l'on n'entrait pas d'adresse mac dans Ethernet.begin(), une adresse mac par défaut, en quelques sortes.
Sinon, je ne trouve pas le moyen de transférer des données Json avec arduino.
En fait, je crois n'avoir rien compris à la librairie ethernet... Je vais tout relire calmement.
Sinon, je n'ai rien trouvé pour webduino et, vu que je commence, peut-être vaudrait-il mieux commencer sans ?

Qu'en pensez-vous ?
Merci pour vos réponses prochaines !
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

barbudor

Salut et bonne année


Salut, j'ai reçu mon ethernet shield et avant de l'utiliser j'aimerais savoir à quoi correspond l'étiquette au dos.
Elle comporte 8 nombres hexadécimaux entre 00 et FF.
Je me suis dit que c'était l'adresse mac adoptée si l'on n'entrait pas d'adresse mac dans Ethernet.begin(), une adresse mac par défaut, en quelques sortes.

Une adresse MAC c'est 6 nombres hexa à 2 chiffres, pas 6.
Soit tu t'es trompé et tu as voulu dire 6
Soit c'est autre chose
De toute façon, la lib Ethernet ne sait pas obtenir l'adresse mac autrement que via Ethernet.begin(). Le shield Ethernet n'est pas supposé avoir une mémoire dans laquelle on peut inscrire cette information.
Donc c'est toujours ton script qui devra initialiser l'adresse MAC.

Si tu n'utilise qu'un shield ethernet chez toi, tu peux laisser une valeur en dur (j'utilise systématiquement 0xDE 0xAD 0x BE 0xEF 0xCA 0xFE) (DEAD BEEF CAFE ;))
Mais si tu prévoir d'en avoir plusieurs il faut un mécanisme pour différencier chaque module. Personnaliser le sketch pour chaque carte n'est pas pratique. Tu peux alors prévoir d'enregistrer l'adresse MAC dans l'EEPROM du ATmega.

Quote

Sinon, je ne trouve pas le moyen de transférer des données Json avec arduino.
En fait, je crois n'avoir rien compris à la librairie ethernet... Je vais tout relire calmement.
Sinon, je n'ai rien trouvé pour webduino et, vu que je commence, peut-être vaudrait-il mieux commencer sans ?


Tu n'as pas du beaucoup chercher alors.
Le lien pour Webduino a déjà été donné précédemment dans cette discussion : https://github.com/sirleech/Webduino

Mon exemple 2 (http://www.barbudor.net/test/demo-js_2.html) montre comment une page Web effectue une requête AJAX vers un serveur web (http://barbudor.free.fr/test/demo-js2-getTemp.php dans l'exemple mais ca pourrait être vers une carte Arduino http://xxx.xxx.xxx.xxx/test/demo-js2-getTemp). Le serveur Web (Webduino) doit répondre avec une donnée sous la forme
Code: [Select]
{ variable = valeur; variable = valeur, ...}

Le code javascript peut ainsi récupérer les variables avec les bonnes valeurs.

Webduino reste la méthode la plus simple pour faire un Serveur web et de l'Ajax sur Arduino.
D'autres solutions sont aussi possibles, notamment en faisant communiquer la page Web (s'exécutant dans le navigateur de l'utilisateur) avec le serveur Web (vers un script PHP par exemple) qui lui va ensuite discuter en socket TCP avec l'Arduino.

Tout dépend de ce que tu veux faire.
Dans le premier cas, tu n'as besoin de faire du développement que dans la page web (javascript) et sur l'Arduino. Dans l'autre cas, en plus du développement sur le serveur, ce qui fait 3 softs dans 3 langages à maintenir au lieu de 2.
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

numero_744

#108
Jan 04, 2013, 10:54 pm Last Edit: Jan 04, 2013, 10:56 pm by numero_744 Reason: 1
Salut, merci pour ta réponse et bonne année (on est en 2013, déjà ?).


Une adresse MAC c'est 6 nombres hexa à 2 chiffres, pas 6.
Soit tu t'es trompé et tu as voulu dire 6
Soit c'est autre chose

Oui, je voulais dire 6, pas 8.


Tu peux alors prévoir d'enregistrer l'adresse MAC dans l'EEPROM du ATmega.

Très bonne idée !
Je n'ai qu'un seul shield ethernet (et qu'une seule carte).


Tu n'as pas du beaucoup chercher alors.
Le lien pour Webduino a déjà été donné précédemment dans cette discussion : https://github.com/sirleech/Webduino

J'ai la librairie, mais mon problème, c'est les tutos en français...
J'ai regardé les exemples et je ne comprend pas pourquoi il n'y a que
Code: [Select]

webserver.processConnection();

dans le loop(), ni ce que font
Code: [Select]

webserver.setDefaultCommand();

et
Code: [Select]

webserver.addCommand();

dans le setup().

Ensuite, AJAX est la requête et JSON est ce qui est renvoyé ?

Un exemple :
Un PC fait une requête GET /Bonjour, l'Arduino enregistre "Bonjour".
Puis, un PC fait une requête GET / (vide), l'Arduino renvoie en JSON la variable "message" qui a comme valeur "Bonjour".
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

barbudor

#109
Jan 06, 2013, 04:50 pm Last Edit: Jan 06, 2013, 04:52 pm by barbudor Reason: 1
Salut
J'étais en balade ce week-end avec juste une tablette (Papa Noël est passé par là) et c'est quand même pas top pour faire des réponses longues... Je crois que le bon vieux clavier/souris n'est pas encore mort ;)


Salut, merci pour ta réponse et bonne année (on est en 2013, déjà ?).


Bonne Année, Bonne Santé, plein de petites arduino par-ci, par-là XD

Quote

J'ai la librairie, mais mon problème, c'est les tutos en français...
J'ai regardé les exemples et je ne comprend pas pourquoi il n'y a que
Code: [Select]

webserver.processConnection();

dans le loop(),


Il faut comprendre que Webduino fonctionne (un peu) comme un (vrai) serveur Web. C'est à dire qu'il va travailler en "tâche de fond" comme un daemon sous Linux ou un service sous Windows. C'est à dire comme un programme qui tourne caché et qui gère ces choses pour toi.

Comme l'Arduino n'est pas multi-tâche (au sens d'un système d'exploitation qui se débrouille pour donner la main par tranche de temps un peu à tous les programmes), il faut que tu lui donne un peu de temps pour travailler en appellant la fonction de gestion ci-dessus dans la loop().
Dans cette fonction, Webduino va regarder s'il y a des connexions Web entrante, gérer les requêtes et faire le boulot. Sinon il te rend la main.
Corolaire : si tu n'appelle pas cette fonction, Webduino est en sommeil et ne faire rien....

Il faut donc impérativement que la boucle loop() tourne et appelle la fonction ci-dessus régulièrement.

Quote

ni ce que font
Code: [Select]

webserver.setDefaultCommand();

et
Code: [Select]

webserver.addCommand();

dans le setup().


Le principe est que Webduino va gérer toute la partie protocole du HTTP.
Quand une connexion va arriver, il va écouter ce qu'on lui demande et faire une bonne partie du boulot (toute l'analyse des messages)
Mais quelque part, il ne peut pas deviner que qu'il doit faire réellement pour traiter chaque demande.
C'est pour cela que tu va lui fournir une fonction de traitement (ce qu'on appelle aussi un call-back) appellée "command" dans Webduino.
La fonction setDefaultCommand() permet d'indiquer à Webduino qu'elle est TA fonction qui va réagir à la requète sur "http://ip.arduino/"
La fonction addCommand() permet d'indiquer TES fonctions pour les autres requêtes. Ainsi tu peux aussi définir des fonctions pour traiter "http://ip.arduino/getTemp" qui va par exemple être la fonction qui va retourner (en JSON) la température. D'ailleurs la requête peut comporter des paramètres "http://ip.arduino/getTemp?piece=salon".
Tu déclares à Webduino de la façon suivante :
Code: [Select]
  webserver.addCommand("getTemp", &getTemp);
où getTemp() est ta fonction qui va traiter la requête "http://ip.arduino/getTemp"
Webduino appelle cette fonction chaque fois que quelqu'un fait une requête sur "http://ip.arduino/getTemp"
Dans cette fonction tu va pouvor demander à Webduino si la requête contient des paramètres, leur valeur.
Aussi le type de requête (GET avec les paramètres dans la requête ?xx=12&yy=33 ou bien POST avec les paramètres dans le corps de la requête).

L'exemple Web_demo.ino montre ceci.

Code: [Select]

Ensuite, AJAX est la requête et JSON est ce qui est renvoyé ?

Exact : AJAX est la technique pour faire des requêtes HTTP depuis le code Javascript. JQuery est par exemple une lib Javascript qui simplifie l'écriture de requête AJAX. Tu pourra t'y plonger après.
JSON est la syntaxe pour renvoyer des résultats qui peuvent être directement interprétés comme du code Javascript.

Quote

Un exemple :
Un PC fait une requête GET /Bonjour, l'Arduino enregistre "Bonjour".
Puis, un PC fait une requête GET / (vide), l'Arduino renvoie en JSON la variable "message" qui a comme valeur "Bonjour".


Pour que l'Arduino traite la requête GET /bonjour, il faut que tu ais fait un addCommand( "bonjour", maFonctionBonjour )
Et dans maFonctionBonjour() tu réponds "{ result='Bonjour' }" par exemple pour que ta variable result (dans le Javascript) prenne la valeur 'Bonjour'.
Pas besoin de double requête.
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

numero_744

Merci pour ta réponse, ça fait la 3ème fois que j'essaie de poster ce message mais les deux premières fois ça a planté.

Pour résumer (si ça plante encore, ça fera moins à réécrire), ce n'est pas une fonction "Bonjour", mais une fonction qui va enregistrer le message, donc plutôt
Code: [Select]

GET /enregistrer?utilisateur=moi&message=Bonjour //La carte enregistre que "Bonjour" a été émis par "moi"
GET /recevoir //La carte envoie que "moi" a émis "Bonjour"
GET / (vide) //server.httpSeeOther(mon_site);


Je ne comprend pas
Code: [Select]

httpSuccess();
httpFail();
WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete //Dans une fonction


Merci !
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

numero_744

Aussi, comment récupérer les paramètres en GET ?
Je vois en POST, mais pas en GET...

Merci !
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

barbudor


Aussi, comment récupérer les paramètres en GET ?
Je vois en POST, mais pas en GET...

Merci !


Exemple Web_Parms.ino

Code: [Select]

void parsedCmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
......

  if (strlen(url_tail))                                     // url_tail est la fin de l'URL, c'est à dire ce qui suit le '?'. Si la longueur est > 0 alors il y a des paramètres dans l'URL (cas d'un GET)
    {
    server.printP(Parsed_tail_begin);
    while (strlen(url_tail))
      {
      rc = server.nextURLparam(&url_tail, name, NAMELEN, value, VALUELEN);    // cette fonction récupère les paramètres 1 à 1 dans l'URL
      if (rc == URLPARAM_EOS)
        server.printP(Params_end);
       else
        {
        server.print(name);
        server.printP(Parsed_item_separator);
        server.print(value);
        server.printP(Tail_end);
        }
      }
    }
....
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

numero_744

Merci pour ta réponse, peux-tu s'il te plait me dire à quoi correspond chaque variable entrée dans nextURLparams() (valeur renvoyée comprise) ?

Je n'arrive pas à faire fonctionner les exemples... :smiley-mr-green:
Que dois-je ajouter/modifier pour les faire fonctionner ?
J'ai mis "http://ip.de.mon.arduino" puis "http://ip.de.mon.arduino/" dans
Code: [Select]
#include PREFIX "~"
J'ai effacé l'adresse ip et ai modifié l'adresse mac ainsi que "Ethernet.begin(mac, ip);".

Aussi, d'où vient le favicon ? (symbole normalisé d'une diode noir sur fond bleu)

Je reçois ce code source lorsque je tape "http://ip.de.mon.arduino/" dans l'URL :
Code: [Select]

<h1>Request Failed</h1><html><head><title>Web_Parms_1 Version 0.1</title></head><body>
<h1>GET from unidentified URL requested.</h1><br>
URL tail = '/parsed.html'<br>
</body></html>

(Web_Parms)
- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

Go Up