[help] sketch téléinfo + 2 relais passer de w5100 à enc28j60, possible ?

Salut,

J'ai un sketch (que j'ai fait pour le secours de mon précédent) avec juste téléinfo + 2 boutons On/Off.

Il fonctionne sous shield W5100 mais il me faudrait l'utiliser sous Enc28j60 avec mes UNO ( because j'ai ses shields en rab et les W5100 sont utilisé sur mon mega).
Est ce que quelqu'un pourrait m'aider à inclure, dans le sketch ci joint) pour qu'il fonctionne avec un Enc28j60 uniquement ?

merci d'avance pour tout aide.

teleinfo_serie_web_uno_01.ino (31.9 KB)

Je viens d'essayer cela mais tjrs problème d'accès.

Personne n'a d'idée pour me faire avancer ...

Nouvelle version même si cela ne semble pas intéressé bcp

bluemax2001:
Nouvelle version même si cela ne semble pas intéressé bcp

si si ton projet est suivi, mais si tu n'a pas eu de réponses, c'est peut être simplement que personne n'a de quoi
t'aider sur ce point precis.

Yop yop,
Si tu n'utilise la bonne lib. :~
http://www.nuelectronics.com/estore/index.php?main_page=project_eth
Je sais pas s'il y a une nouvelle ou autre, normalement il y en avais des simplifiée ou adapté en cours ?

Voir aussi http://arduino.cc/forum/index.php/topic,66139.0.html

Il y a une moment que je n'ai plus pratiqué (voir ci-dessus) l'enc28j60 que je n'ai pas et où peux de monde ose s'y frotter (sans doute la raison de l'absence de réponse).
Ce dont je me souviens, il me semble qu'avec le shiels officiel lorsque tu fais un print(ln) tu remplis le buffer de celui-ci, ici l'enc ne possède aucun buffer "interne" et n'implémente pas la couche tcp/ip c'est l'arduino qui doit géré ceux-ci.
Donc tu dois d'abord remplis ton buffer:

plen=es.ES_fill_tcp_data_p(buf,plen,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("<body bgcolor=\"#EFECCA\"> "));
plen=es.ES_fill_tcp_data(buf,plen,baseurl);

Cette fonction remplis le buffer "buf" à l'emplacement "plen" du buffer et retourne la dernière position du code (html ici) entré dans ce buffer pour la suite.
PSTR() est juste une macro PROGMEM .

Une fois remplis, tu envois son contenus:

  es.ES_make_tcp_ack_from_any(buf); // send ack for http get
  es.ES_make_tcp_ack_with_data(buf,plen); // send data

Regarde dans les exemple de la lib.

Bonjour
voici la librairie pour ENC28J60 reprenant l'API de la librairie pour W5100

Je n'ai pas eu l'occasion de la tester.
Mes dernières manips avant que je laisse de côté l'ENC28J60 utilisaient la librairie Ethercard
GitHub - njh/EtherCard: EtherCard is an IPv4 driver for the ENC28J60 chip, compatible with Arduino IDE que je trouvait un peu plus lisible que les librairies indiquées généralement par les vendeurs de shields

merci, je vais voir ainsi.

Tjrs pas d'accès. Mince ... où est mon erreur =(

bluemax2001:
Mince ... où est mon erreur =(

Sans code on pourras pas t'aider. :~

Il y est dans le post 1 version W5100 et l'une de mes pistes de recherche dans le post 3

Ah oki je savais pas. :sweat_smile:
Tu as utilisé quel lib ? Là je vois pas laquel c'est "ETHER_28J60" ?
Tu as testé des exemples simple sans le reste de ton code ?

et les exemples fonctionnent. Ainsi que le bout de code ci joint qui fonctionne aussi.

A mon avis il va falloir bien contrôlé (debugger) chaque condition genre :

if (params = eth_enc.serviceRequest()){

En fait tu n'as aucune réponse ? Rien dans le code source de ta page de ton navigateur ?

Rien ne s'affiche avec le code complet en post 3.

Vérifie bien (allume une diode ou autre) pour t'assurer que tu entre bien dans tes conditions, etc.
Voir à bien vérifié que "eth_enc.respond();" est bien exécuter, attention aussi avec la taille du buffer si défini dans la lib, etc.
Essaie le code avec juste la partie ethernet.
Difficile de t'aider comme je ne peux pas tester, je n'ai pas ce shield ni la parti téléinfo etc. :~

Edit:

Je viens de regarder rapidement cette lib qui ne fais qu’implémenté et adapté celle d'origine un truc me perturbe c'est que cette lib possède son propre buffer alors que celle d'origine en possède un également ? Donc possible problème de sram (uno ou mega)?

#define BUFFER_SIZE 500
#define STR_BUFFER_SIZE 32

En fait même si celle si parait plus simple , je pense pas que ce soit l'idéal ...
Je pense qu'il y a moyen de facilement adapté ce que j'avais fais pour chico.

Sur UNO.

Il me semble avoir rencontré le même problème avec chico, mémoire saturé (sram:2ko).

Tu peux tester ceci:
http://arduino.cc/playground/Code/AvailableMemory

Edit: j'ai revu rapidement la lib d'origine et je rectifie pour le buffer, il n'y en a pas fallait le construire dans le code l'implementant donc c'est bon pour cette lib ci "#define BUFFER_SIZE 500" peut être l'augmenté, il y a ceci aussi mais bon "MAX_FRAMELEN 1500" je pense pas que tu en sois là :sweat_smile:.

J'ai essayé d'augmenter le buffer sans succès =(

Essaie avec la macro PSTR() pour toute tes chaines de caractères constantes, histoire d'alléger la sram.

eth_enc.print(PSTR("<TABLE ALIGN='center' ><TR>"));

Je ne comprends pas qu'il fonctionne sous W5100 et pas sous enc28j60.

Au pire, je rachète des w5100 ...