[Aide] serveur domotique : télé-info + 4 relais + T°C DS18B20

Bonjour à tous,

Je reprends donc mon projet ici qui est tjrs au même stade : http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1294743024/0

Pour résumer, j'ai d'un côté un sketch avec la télé info qui fonctionne un autre sketch avec les 4 contacts qui fonctionnent et enfin, en option, un autre avec la lecture du DS18B20. Le tout est accessible par internet.

Mon problème est de pouvoir tout regrouper sur un seul sketch pour faciliter l'utilisation.

j'ai fait encore des tests mais il y a énormément d'erreur et je suis paumé comme tout newbees(peut-être plus).

@gromain59 : MP avec du retard, excuse.

j'avais une baisse d'entreprendre mon projet et je pensais mettre deux Arduino pour chaque utilisation mais ne serait ce pas dommage ...

pourrais-tu poster ton sketch, et la liste des erreurs que tu as ?

Question d'un newbie : tu fais comment pour faire tourner plusieurs sketchs ? en même temps (y'a pas de thread sur arduino, si ?) ou "l'un ou l'autre" (tu charges / décharges ton sketch à chaque fois) ou "un après l'autre" (tu as copier/coller tous tes sketchs à la suite pour faire un "méta-sketch" dans le loop) ?

j'avais une baisse d'entreprendre mon projet et je pensais mettre deux Arduino pour chaque utilisation mais ne serait ce pas dommage ...

Faut pas baisser les bras !!

tu fais comment pour faire tourner plusieurs sketchs ?

Pour assembler plusieurs sketchs, il faut simplement coller les différents sketchs pde dans un même répertoire. Le répertoire aura le même nom que le sketch principal. Ensuite, dans chaque autre sketch, il faut renommer setup() et loop() (ex: setup_NTP et loop_NTP), puis appeler ces routine respectivement dans le setup() et le loop() du sketch principal. A la compilation, l'IDE créera un "mega" fichier CPP. Si tes différents sketchs fonctionnent correctement séparément, il n'y a aucune raison pour qu'ils ne fonctionnent pas ensemble. Bien sûr, il faut veiller à ne pas faire de déclaration redondante (exemple, plusieurs Serial.begin), et éviter les conflits de matériels (même pins utilisé pas le shield ethernet et pour commander un relais par exemple).

Gromain.

Je pense surtout que son blocage vient du fait qu'il a plusieurs tâches, et qu'il voudrait tout faire en même temps sur une seul arduino. Si c'est bien ça, effectivement il n'est pas possible de faire du multi-tâche dans la définition exacte du terme. Cependant, dans la plupart des cas on peut ajouter les tâches les unes à la suite des autres et les 16 mhz suffisent à tout faire quasiement en même temps. D'après ton cahier des charges, ça me semble tout à fait faisable sur une seule arduino ...

merci Gromain, pour cette info

La solution de gromain59 pourrait être faisable mais pour les # pages ...

Comme tu as pu le voir il y a 4 pages "web" pour la téléinfo et je pensais en rajouter une 5ème pour les cases des contacts (on/off). Je veux bien rajouter mon test de rajout des contacts mais comme il y a tellement d'erreur je ne pense pas que cela soit utile. Si c'est possible de rajouter 2 (ou 3) pde, la gestion des pages web risque de poser problème ?

Comme chacun à sa fonction pour chaque page, je ne pense pas qu'il soit utiliser en multitache. De plus, le blocage vient pour l'instant de "l'écriture" du sketch et non de son utilisation.

C'est quel sketch qui te pose des pb de compilation, PowerSwitchmodif4_SORTIES_OK.pde ?

Sous quel OS tournes-tu ? Je suis passé sous linux récemment, et j'ai remarqué que l'inclusion d'un fichier .h était sensible à la casse sous cet OS, contrairement à la version windows XP. Avec PowerSwitchmodif4_SORTIES_OK.pde par exemple, j'avais une erreur du type "arduino-0022/libraries/etherShield/etherShield.cpp:8:25: erreur: EtherShield.h : Aucun fichier ou dossier de ce type" En remplacant EtherShield.h par **e*therShield.h (la syntaxe exacte du nom de fichier) à la ligne 8 de etherShield.cpp... plus d'erreur de compilation !

Gromain

Je t'ai fait parvenir mon fichier serveur_web.h que j'ai transformé (essayé du moins) pour inclure une page web avec les 4 cases du switch. C'est là que la compilation me fait énormément d'erreur.

Après, pris un par un les sketch ne posent aucun problème et leur utilisation est vraiment sympas.

Si quelqu'un veut que je poste ce fichier pour trouver une autre idée.

Pour l'instant, je suis perdu dans ce nouveau monde.

Et ton idée de réunir les 2 .pde, cela donnerait quoi ? je n'arrive pas à comprendre le résultat final :blush:

PS : Pour l’instant ma priorité c’est plus la teleinfo + switch 4 port. Après, on verra pour la T°C.
Pour moi, l’assemblage des deux est assez difficile car trop débutant.

J'ai testé la sonde de T°C et cela fonctionne (tjrs en séparé ]:)=.

Bon, et bien je n'y arrive pas ... donc je pense que je vais en utiliser deux. Dommage ...

@Gromain59 : merci pour ton aide.

Sur la compile, reste deux erreurs à régler. Si un spécialiste passe ici pour nous (me) donner un coup de main :
serveur_web.h => base_url n’est pas déclaré
et
‘class EtherShield’ has no member named ‘ES_udp_client_send_packet’

Je vais essayer de reprendre pour essayer de comprendre les erreurs.

serveur_web.h (19.9 KB)

Salut,

Tu dis que les sketchs fonctionnent bien séparément, donc les erreurs de compilation n'ont pas lieu d'être si l'assemblage est fait à partir de ces sketchs.

base_url => c'est bien toi qui l'a rajouté par rapport au sketch seul ? ES_udp_client_send_packet: si tu n'as pas d'erreur à la compilation du sketch seul, c'est qu'il n'est pas fait appel à cette méthode, et donc que tu l'as rajouté par la suite. Non ?

Gromain

Oui, j'ai essayé de rassembler deux sketch qui fonctionnaient indépendamment pour n'en faire plus qu'un.

Je peux t'envoyer les deux si tu veux ?

le base-url s'est peut-être "mélangé" pour faire un conflit !!!

oui, envoie moi les 2 qui fonctionnent bien séparément, je tenterai l'assemblage.

C'est fait super ...merci

Au cas où, j'ai deux autres sketch avec la téléinfo (dont un qui inclus la T°C mais je n'ai pas testé avec ma sonde DS18B20). Ils sont plus simple car il n'y a qu'une page web.

A la rigueur, si tu les veux pour faire plus simple ?

Peut-être que cela serait plus facile d'utiliser juste deux page web au lieu de 5 (la cmd=1 me suffirait) ?

Ou même juste une regroupant la télé-info, les cases des switch et pourquoi pas la T°C sur une seule page ?

Voilà ce que donne juste la téléinfo non branché sur mon compteur (para. par default) :

PS : le but du projet, c'est de pouvoir déclencher mon chauffage en fil pilote et mon cumulus depuis internet et de vérifier grâce à la téléinfo le bon fonctionnement ou un problème (non arrêt par ex). La T°C en option me permettrait par ex de savoir que ce n'est pas la peine de déclencher le chauffage ou autre. Avec les contacts on/off, on peut aussi pourquoi pas déclencher une cam ip, ...

N'y arrivant pas, je vais mettre deux arduino. Dommage ...