Domo'Duino, la domotique par Arduino (NEWS: Modules 2.4ghz )

La librairie ethernet standard fonctionne avec les shields "officiels" mais pas avec ma versions made in china, la puce est différente.

ENC28J60 les fausses VS W5100 pour les officiels

chicotore très fort avec matériel chinois ! Bravo ! :D

A+ chabot380

La photo :grin:

Sinon je cherche a intégrer une image dans la page "HTML" hébergé dans l'arduino. J'ai essayer ça :

plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("

"));

Mais ça me détecte une erreur a cause des "" ( en rouge ci dessus ), j'ai donc essayer en les retirant mais bien sur cela ne fonctionne pas ...

Quelqu'un a une idée comment ça fonctionne ? ce n'est pas du HTML standard dans l'ethernetshield ?

Essaye ça :

plen=es.ES_fill_tcp_data_p(buf,plen,PSTR('
'));

nop :roll_eyes:

Et ça :

plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("
"));

Bonjour

La dernière proposition de Jean François passe chez moi et fonctionne après avoir augmenté un peu la taille du buffer pour tenir compte de l’allongement du code HTML
Testé avec la version suivante (juin 2011) de la librairie Ethershield : (Nuelectronics améliorée, completée…)

(http://blog.thiseldo.co.uk/)

Bonjour, comme expliqué plus haut pour la pin 13 qui ne fonctionne pas, j'ai eu le même problème pour une autre application. Le paliatif, j'ai dessoudé la led et la résistance sur ma Duemilanove et seulement la led sur ma Nano (à défaut de pouvoir dessouder la résistance de limitation car elle fait partie d'un réseaux 4R), si ça peut aider...

Et ça :

Code: plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("

"));

JF tu est une bête XD ça fonctionne nikel !!!

Content d'avoir pu t'aider XD

Tient en passant j'ai encore un petit problème (décidement ]:) )

plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"));
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR(" "));
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("

Domo'Duino, la domotique par Arduino

"));        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("
"));                plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("
"));        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("

REMOTE LED is  

"));                if(on_off)         [color=red]plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("ON"));[/color]        else         [color=red]plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("OFF"));[/color]                plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("   ") );

Dans cette partie du code arduino j'ai une partie qui m'affiche ON ou OFF a l'écran, je voudrais remplacer cela par une image ... jusque la ok

En toute logique je met donc en place ce code la a la place

plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"));
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR(" "));
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("

Domo'Duino, la domotique par Arduino

"));        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("
"));                plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("
"));        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("

REMOTE LED is  

"));                if(on_off)         [color=red]plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("
"));[/color]        else         [color=red]plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("
"));[/color]                plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("   ") );

Mais bon forcement ça ne fonctionne pas. Le compilateur arduino ne me détecte aucune erreur mais lorsque je veut accéder a mon ethernet shield j'ai une erreur comme quoi impossible d'accéder au serveur ... le code ne fonctionne donc pas mais pourquoi ? on dirais que quelque chose bloc la fonction "image" dans cette partie du code ...

Et en même temps je cherche comment mettre en place plusieurs boutons, j'ai beau cherché je ne trouve pas comment avoir deux boutons, a chacune de mes tentatives le compilateur arduino me trouve une erreur ... pourquoi c'est jamais simple =(

Si je mets cette adresse directement dans mon navigateur :

J’ai rien… :grin:

Oui parce que je vient de les supprimer sur servimg, mais même si tu fait un copier coller de la première image cela ne fonctionne pas

plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("
"));

Voila si tu colle ça a la place de ON et de OFF je n'est pas accès a mon ethernet-shield ... et dès que je remet ça

plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("ON"));

ça refonctionne .... c'est a rien y comprendre :stuck_out_tongue_closed_eyes:

As-tu essayé, chicotore, d'augmenter un peu la taille du buffer ?

Sauf erreur de ma part avec cette librairie on commence par rassembler toute la page web dans un buffer puis on envoie le contenu du buffer.

L'explication du défaut constaté serait alors la suivante : Le navigateur bloque parce qu'il attend la fin de la page.... qui ne lui a pas été envoyée !! C'est le cas quand le buffer n'est pas assez grand pour accepter le ou les les derniers plen=es.ES_fill_tcp_data_p(buf... Chaque 'fill ....buf' rajoute des octets jusqu'au moment ou le buffer est plein. Les octets 'excédentaires" sont perdus et jamais envoyés au client. S'il ne manque que le dernier ">" de la page le navigateur attendra longtemps.... (Quand ça passe profites en pour voir le code source dans le navigateur, mesurer la taille en octets.et voir si 5OO suffit)

J'avais déja pensé au buffer justement, je l'avais donc passé a 800 comme ceci

#define BUFFER_SIZE 800
static uint8_t buf[BUFFER_SIZE+1];
#define STR_BUFFER_SIZE 22
static char strbuf[STR_BUFFER_SIZE+1];

Mais toujours pareil, cela ne fonctionne pas :stuck_out_tongue_closed_eyes:

est-ce que qqun pourrais m'éclairer sur un point ? Quel est l’intérêt que la page internet soit générer directement par l'arduino ? Je trouve que nous sommes extrèmement limité niveau programmation avec cette méthode :S

Tu veut faire comment sinon pour rester dans un concept "arduino autonome", c'est a dire sans PC qui tourne derrière ?

Héberger tous sur un FTP et utiliser l'ethernet-shield pour interroger un fichier txt contenants des variables par exemple ?

par exemple :) En ce qui concerne le stockage d'information provenant d'arduino j'utilise une base de donnée MySQL et du php. Mais je peux comprendre que cela implique l'apprentissage dans d'autre langage. Mais si tu veux quelque chose de simpa et plus "flexible" une solution.. un peu d'html et un endroit ou héberger ta page :)

Mouais enfin pour le moment j'aimerais déjà faire fonctionner 2 ou 3 boutons :grin: et c'est pas gagné vu que j'arrive même pas a afficher mes images :stuck_out_tongue_closed_eyes:

chesnel: par exemple :) En ce qui concerne le stockage d'information provenant d'arduino j'utilise une base de donnée MySQL et du php. Mais je peux comprendre que cela implique l'apprentissage dans d'autre langage. Mais si tu veux quelque chose de simpa et plus "flexible" une solution.. un peu d'html et un endroit ou héberger ta page :)

Je suis assez d'accord avec cette solution pour un page conséquente, malgré la latence que peut connaitre le réseau suivant les hébergeurs.

Par contre pour une petite page avec trois ligne de texte et un bouton, le mini serveur que peut faire l'Arduino est un bonne solution.