Bonjour j ' utilisais sur le codede mon mini serveur web domotique la bibliotheque ethernet2 , mais a priori , elle ne serait plus maintenue
j ' ai donc voulu passer sur la " classique " , mais j' obtiens une erreur a la compilation :
In file included from /home/iznobe/Arduino/libraries/Ethernet/src/Dns.cpp:8:0:
/home/iznobe/Arduino/libraries/Ethernet/src/Dns.cpp: In member function 'uint16_t DNSClient::BuildRequest(const char*)':
/home/iznobe/Arduino/libraries/Ethernet/src/utility/w5100.h:457:25: warning: result of '(256 << 8)' requires 18 bits to represent, but 'int' only has 16 bits [-Wshift-overflow=] #define htons(x) ( (((x)<<8)&0xFF00) | (((x)>>8)&0xFF) )
/home/iznobe/Arduino/libraries/Ethernet/src/Dns.cpp:164:18: note: in expansion of macro 'htons'
twoByteBuffer = htons(QUERY_FLAG | OPCODE_STANDARD_QUERY | RECURSION_DESIRED_FLAG);
a mon niveau , c ' est du petit chinois ce que le compilo renvoi
je joins mes fichiers au cas ou y aurait besoin d ' y voir plus clair .
c'est juste un warning, non ? ça ne devrait pas empêcher de compiler et même si le compilateur a raison de se plaindre, ce n'est pas un souci dans ce cas, c'est OK de perdre les 2 bit lors du décalage - le résultat souhaité est le OU logique de 8 bits de poids forts avec les 8 bits de poids faible, il est attendu sur 8 bits uniquement
souvent , le mega reste bloqué , enfin plus exactement , je suppose qu ' il y a un probleme avec le serveur web ou un truc dans le genre car l ' affichage de la page web ne se fait plus apres un temps aleatoire et le relais des heures creuses restent enclenché alors qu ' il ne devrait pas .
lorsque je demande une page , je vois bien une LED orange sur le shield ethernet qui clignote , LED activité je suppose .
pourtant sur le navigateur la page ne s' affiche plus .
j ' ai modifié la fonction relaisHeuresCreuses de mon code de sorte qu ' elle soit la plus simple possible pour voir si le probleme venait de là , mais ca n ' a rien changé .
je ne trouve pas ce qui cloche , donc je me suis dis qu ' il y avait un probleme avec la bibliotheque ethernet master 2 , c ' est pour cela que j' ai voulu mettre la bilbiotheque "ethernet" a la place de la 2 .
J-M-L:
c'est juste un warning, non ? ça ne devrait pas empêcher de compiler et même si le compilateur a raison de se plaindre, ce n'est pas un souci dans ce cas, c'est OK de perdre les 2 bit lors du décalage - le résultat souhaité est le OU logique de 8 bits de poids forts avec les 8 bits de poids faible, il est attendu sur 8 bits uniquement
a priori ca n ' empeche pas de compiler , mais ca ne gene pas l ' execution du code ?
du fait que j' ai un soucis de stabilité sur la durée ( voir post precedent ) , je me demandais si ca ne pouvait pas avoir un rapport.
tout a l ' heure vers 14 heures 16 min , j ' ai entendu le relais se couper , puis se renclencher , je suis donc aller voir .
le relais 5 V de l ' arduino a fait une double commutation , je ne sais pas pourquoi , mais il n ' a pas enclenché le relais HC ( 220 V ).
honnetement là , je suis completement perdu pour plusieurs raisons .
1°) l ' heure ne correspond a rien par rapport au code .
2°) le relais ne peut pas changer d' etat plus d' une fois par 30 secondes d' apres le code .
3°) le relais 220 V devrait aussi s ' enclencher .
4°) desuite apres cela , impossible d' afficher la page du serveur ...
le relais a à nouveau commuté 2 fois a 14 h 42 , au moment ou j ' ecris ces lignes .
voici la fonction :
void relaisHeuresCreuses () { // heures creuses de minuit a 6 H et de 12 a 14 Heures
static unsigned long chrono = 0;
static bool RHC = true; // jamais lu
if (RHC || (millis() - chrono >= TIMER_V)) { // si jamais lue ou lue depuis plus de 30 secondes
if ((RTC.heure() < 6) || ((RTC.heure() >= 12) && (RTC.heure() < 14))) {
activeRelais_A(RHC_PIN_RELAY);
if (DEBUG) Serial.println (F("relaisHeureCreuse => etat actif"));
}
else {
reInitRelais_A(RHC_PIN_RELAY);
if (DEBUG) Serial.println (F("relaisHeureCreuse => etat passif"));
}
RHC = false;
chrono = millis();
}
}
Ce n'est pas le warning qui cause le souci. le warning est juste informatif que des bits sont perdus lors du shift, mais c'est volontaire de la part du programmeur.
difficile à dire d'où ça vient, ce code n'a pas l'air suspect..
Où en êtes vous au niveau mémoire ? peut-être cette bibliothèque est plus gourmande et reboot de l'Arduino ? vous avez des traces dans la console série ?
Bonjour au niveau memoire , je suis a 21 % utilisé et a 12% pour l ' ecriture de code , y a de la marge avec une mega !
parfois , j ' entends des relais qui s ' actionnent , sans avoir demandé de manip , j ' ai bien etendu arreter l' arrosage automatique , pour ne pas avoir de perturbation de ce coté là .
je ne vois pas trop ce qui peut declencher les relais sans demande sur le serveur web ( avecl ' arrosage desactivé ) le seul relais est celui des heures creuses et qui devrait logiquement s ' enclencher / se desenclencher a heures fixes .
Sur la console serie , je n' avais rien vu que jusqu ' a maintenant l ' arduino et le programme etait tranquille dans le coffret electrique .
le seul moyen est donc pour verifier le code , de laisser le PC et l ' arduino connecté pour verifier le moniteur serie ?
parfois , j ' entends des relais qui s ' actionnent , sans avoir demandé de manip , j ' ai bien etendu arreter l' arrosage automatique , pour ne pas avoir de perturbation de ce coté là .
je ne vois pas trop ce qui peut declencher les relais sans demande sur le serveur web ( avecl ' arrosage desactivé ) le seul relais est celui des heures creuses et qui devrait logiquement s ' enclencher / se desenclencher a heures fixes .