Questions sur le html

Salut, j'ai tout relu et il me manque :

barbudor:
Je te conseilles vivement aussi de te mettre à Wireshark pour espionner un peu ce qui se passe entre serveur et navigateur.

10.5 et 10.6 seulement =( .

barbudor:
Ca, ca semble correspondre à ce que tu cherche.
Adding elements to the DOM

Il a un

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.

Aussi, comment interroger une page et voir si elle contient une image spécifique ?

Voir précédent S.V.P..

Merci !

numero_744:

barbudor:
Je te conseilles vivement aussi de te mettre à Wireshark pour espionner un peu ce qui se passe entre serveur et navigateur.

10.5 et 10.6 seulement =( .

http://wiresharkdownloads.riverbed.com/wireshark/osx/all-versions/

  • un peu de googling

barbudor:
Ca, ca semble correspondre à ce que tu cherche.
Adding elements to the DOM

Il a un

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.

Un retour chariot en HTML c'est
ou

Aussi, comment interroger une page et voir si elle contient une image spécifique ?

Lire sous forme de chaine et parser ?

barbudor:
http://wiresharkdownloads.riverbed.com/wireshark/osx/all-versions/

  • un peu de googling

Merci ! XD
Il dit qu'il faut X11, normal ? Je l'ai téléchargé mais il faut un 10.5 ou plus ! =( (je suis en 10.4.11)

barbudor:
Un retour chariot en HTML c'est
ou

Il m'affiche


à la fin de ce que j'ai à ajouter sans faire de retour à la ligne (je ne suis pas (totalement) débile :smiley: ) !

barbudor:
Lire sous forme de chaine et parser ?

Parser ? :astonished:

numero_744:

barbudor:
http://wiresharkdownloads.riverbed.com/wireshark/osx/all-versions/

  • un peu de googling

Merci ! XD
Il dit qu'il faut X11, normal ? Je l'ai téléchargé mais il faut un 10.5 ou plus ! =( (je suis en 10.4.11)

https://www.google.fr/search?q=wireshark+osx+10.4
Le premier lien dit Wireshark 1.6.4 & 1.7.0
Je ne suis pas sur Mac, appelle JF à la rescousse
Maintenant Wiresharl n'est pas indispensable, juste pratique pour debugguer

numero_744:

barbudor:
Un retour chariot en HTML c'est
ou

Il m'affiche


à la fin de ce que j'ai à ajouter sans faire de retour à la ligne (je ne suis pas (totalement) débile :smiley: ) !

Aucune idée

numero_744:

barbudor:
Lire sous forme de chaine et parser ?

Parser ? :astonished:

Mettre la page dans un chaine de caractère et chercher les tag img

(1er lien si tu cherches "parser" dans google)

J'ai téléchargé celle de ton lien, mais il faut 10.5, dit mon Mac...
Je garde donc l'ancienne version qui me demande X11 (X11 est une application et non un OS).
Je vais chercher l'app X11.

Donc bug inconnu pour child...

J'avais compris avec le sens de la phrase, mais comment procéder avec du JavaScript ?

P. S. : Où télécharger Webduino fiablement ?

Merci !

numero_744:
P. S. : Où télécharger Webduino fiablement ?

Un minimum d'effort peut être ?
Google, tu connais ?

fiablement
Il existe plusieurs versions d'une même librairie, je suppose...
C'est pourquoi en cours de français on demande des livres du même éditeur.
Je ne demandais pas à ce que l'on cherche à ma place, mais où vous l'avez téléchargé.
Ce lien contient-il les mêmes fonctions que la généralité ? (À peu près...)

C'est bien là que tu trouveras Webduino.
En tout cas la seule version que je connaisse et celle que j'utilise.

Ça marche !
Maintenant, plus qu'à chercher des tutos, ça fait depuis longtemps que j'en cherche en Français, mais...
En connaîtriez-vous ? (Je ne demande pas de recherche, juste où vous avez appris à le faire, un lien personnel, quoi.)
Sinon, pourriez-vous m'expliquer comment utiliser les fonctions pour envoyer un Json ?

Pour wireshark, trop vieux, trop vieux ! Je ne peux pas le rajeunir (au pire, c'est pas grave) !

Pour les cookies, j'ai un gros problème :
Je n'arrive pas à les lire depuis d'autres pages de mon site avec des codes du site du zer0, w3school et autres.
J'ai vérifié que les cookies soient bien enregistrés par :

clic droit
->Informations sur la page
-->Sécurité
--->Voir les cookies
Ils le sont :

Nom : son nom
Contenu : son contenu
Hôte : IP.de.mon.ordinateur
Chemin : /~nom_de_ma_session/nom_de_la_page_d_ou_ils_sont_parametres/
Envoi pour : Tout type de connexion
Expire : Date et heure d'expiration

Je pense que le problème vient de "Chemin", ce qui n'autorise l'accès qu'à partir de "la_page_d_ou_ils_sont_parametres".
Sur les cookies des autres sites, il n'y a pas de chemin ("/" est affiché).
Pense-je bien ?
Comment y remédier ?

P.S. : Les fonctions permettant de lire et (re)définir le cookies sont dans un *.js séparé.

Merci !

bonjour,
pour les cookies, voici comment faire en php, le js et moi..... :slight_smile:
on imagine que le cookie est l'id de l'utilisateur toto

<?php if(isset($_COOKIE["ID_UTILISATEUR"])){ $ID_UTILISATEUR=$_COOKIE["ID_UTILISATEUR"]; echo "Bonjour $ID_UTILISATEUR"; } //changement du cookie en titi $time= time(); setcookie("ID_UTILISATEUR", "titi", $time + 3600, "/"); // destruction du cookie setcookie('ID_UTILISATEUR','',$_SERVER['REQUEST_TIME'] - 86400*60,'/'); ?>

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

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

fonctionne parfaitement !

numero_744:

barbudor:
Ca, ca semble correspondre à ce que tu cherche.
Adding elements to the DOM

Il a un

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.

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

C'est plus simple et je peux faire un retour à la ligne avec
à la fin de what.

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 !

Salut et bonne année

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.

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.

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 : GitHub - sirleech/Webduino: Arduino WebServer library

Mon exemple 2 (Barbudor) 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

{ 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.

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

barbudor:
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.

barbudor:
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).

barbudor:
Tu n'as pas du beaucoup chercher alors.
Le lien pour Webduino a déjà été donné précédemment dans cette discussion : GitHub - sirleech/Webduino: Arduino WebServer library

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

webserver.processConnection();

dans le loop(), ni ce que font

webserver.setDefaultCommand();

et

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".

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

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

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

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.

ni ce que font

webserver.setDefaultCommand();

et

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 :

  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.

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.

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.

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

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

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

Merci !

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

Merci !

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

Merci !

Exemple Web_Parms.ino

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);
        }
      }
    }
....

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... :grin:
Que dois-je ajouter/modifier pour les faire fonctionner ?
J'ai mis "http://ip.de.mon.arduino" puis "http://ip.de.mon.arduino/" dans

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

<h1>Request Failed</h1><html><head><title>Web_Parms_1 Version 0.1</title></head><body>
<h1>GET from unidentified URL requested.</h1>

URL tail = '/parsed.html'

</body></html>

(Web_Parms)