[Conseil] Serveur web et pilotage relais, vitesse de reponse lente

Bonjour a tous,

Je me suis lancé dans un petit projet domotique :
J'ai un arduino mega, une carte Ethernet et un module RTC.
Le but et de piloter des relais depuis une page web (de mon reseau local) herbergée sur l’Arduino.

Je suis électricien et j'ai quelques notions en électronique. Pour ce qui est des langages de prog, j'ai appris php html et css tout seul (loin d’être un pro mais je me dépatouille tant bien que mal (et certainement plus mal que bien !). Pour ce qui est du langage Arduino, j’essaie de comprendre ce que je fais sans faire bêtement des copier coller de bout de code. (Bon OK certaine fois j'ai beau chercher, je comprend pas mais en testant ça fonctionne !).

J'ai donc créé une page web simple avec 4 boutons pour changer l’état de 4 relais. Le Css et le début de la page ainsi que les favicons (pour les raccourcis sur gsm) sont sur la carte SD et je fabrique le reste de la page via l'Arduino.

Après plusieurs essais (beaucoup mais alors vraiment beaucoup) je suis arrivé à le faire tourner!
Pour le moment je pilote 2 contacteurs de mon tableau électrique (j'ose pas faire passer la puissance dans les cartes relais, je préfère m'en servir pour piloter les bobines des contacteurs modulaires).

Hier j'ai rajouté un module DS3231 pour faire allumer et éteindre mon éclairage extérieur à heures fixe (à améliorer pour régler les heures depuis la page web mais pour le moment je veux d'abord que le basique fonctionne bien). IDEM, je suis parvenu à mes fins sauf que petit à petit, je trouve que le serveur est de plus en plus long à répondre.

Il y aurait il une âme charitable pour jeter un coup d’œil à mon sketch et me dire ce qui ne va pas et m'orienter (dans les grandes lignes)

A mon avis c'est général, je dois faire 3 x droite pour aller à gauche ! mais avant d'aller plus loin je préférerai que la base soit solide!

Note : Je peux pas mettre le sketch entre les balises codes, je dépasse les 9000 caractères!

Merci!

Mus4relaistimer.ino (14 KB)

SD.zip (1.82 KB)

Ton message est mal placé : pour une demande d'aide c'est le forum général. Ici c'est les projets terminés. Demande au modérateur de déplacer ton message

Demande envoyé!
Merci

Salut, je suis en train de faire le même projet que toi. En pause parce que je suis dans la rénovation de ma maison, et j'en suis pas encore à tirer les gaines électriques :slight_smile:
Je suis électricien aussi.

J'ai aussi fait le choix de piloter des contacteurs modulaires et pas faire passer de puissance dans les relais chinois...

En gros je vais faire la même chose que toi.
Alors tout dépend de ton budget et t'es futures projets, mais tu désires une base solide.

Alors je te suggère de regarder pour voir si tu remanierai pas quelque peut ton projet.

A voir en fonction de ton budget et si ça te sera utile dans le futur.

Ce que j'ai préparé et commencé à tester dans ma maison actuelle c'est :

  • un raspberry pi, sur linux
  • l'application domoticz
  • un carte arduino qui va faire le lien entre l'application domoticz et le monde extérieur.

Graçe à domoticz qui est une appli domotique tu vas pouvoir faire un tas de trucs et bien sur y accéder depuis le Web avec soit un site ou une appli smartphone.

La tu pars sur un truc costo qui est bien plus puissant qu'un arduino seul.

Du coup ça va être évolutif.
Par exemple :

  • serveur multimédia
  • serveur audio ( genre mettre Spotify sur le raspberry et envoyer le son là ou tu veux grace par exemple à des relais audio et ampli
  • gérer une alarme ( moins safe qu'une vraie installation par un matériel certifié biensur mais je n'ai pas de picasso chez moi)

Ou alors un truc génial, grâce au raspberry faire de la reconnaissance vocale, pour piloter à la voix ton éclairage ou t'es volé roulant ou n'importe quoi.

J'en ai même profité pour faire un cloud sur mon raspberry qui va synchroniser t'es fichier par exemple de programmation sur plusieurs pc, genre moi je code sur pc portable ou ma tour c'est toujours à jour :slight_smile:

Au final j'ai ma carte d'extension ( celle brancher au raspberry pour aller vers le monde extérieur) qui est une arduino mega avec en gros une cinquantaine d'entrée sortie, du coup tu peux mettre plusieurs mega sur l'usb t'as un nombre énormes d'I/O
Elle est en route h 24 depuis des mois j'ai aucun bug ou latence
Deplus grace à l'arduino j'ai programmé des fonctions genre activer la sortie en impulsionnel pour piloter un telerupteur par exemple..

Du coup tu as une base solide qui te permet d'avoir une grande evolurivité.
Bien sûr tu dois rajouter le RPi environ 35e
Une carte sd pour moins de 10 brouzouffes
Et une alimentation pour le RPi 10 brouzouffes aussi environ

Si ça t'intéresse on peut en parler ici, et te montrer mes exemples de codes, ils sont pas parfait mais sa marche. Et puis tu peux découvrir aussi un autre langage qui est le python par exemple qui est très pratique
Voilà désolé d'avoir écrit un romans !

En visualisant les traces émises - Serial.print("clientline: "); - sur le terminal, cela devrait aider à savoir où ce temps est perdu.

@Charly26 :

Ok je vais regarder un peu le raspberry et le python. Je suis parti sur un Arduino parce que j'avais ça qui trainait dans mes tiroirs et que j'aime bien bricoler et programmer... C'est sur que vu sous cet angle ça ma l'air beaucoup mieux et surtout évolutif(surtout que c'est pas les idées d'évolution qui manquent!!).

J'ai regardé vite fait et ça m'a l'air très intéressant... Je crois que je vais laisser de coté le système bancal comme ça pour l'instant et me tourné vers ta config...
Je commande ça, je me penche la dessus et te recontacte pour la suite!

Merci pour les infos

Domoticz est très intéressant.
Tu pourras lui faire reconnaître divers capteurs ou actionneurs :

je vais laisser de coté le système bancal

Pas forcément bancal, mais plutôt non évolutif.

@Charly26

Une carte sd pour moins de 10 brouzouffes

Mon Domoticz tourne aussi sur RASPBERRY PI, mais certainement pas sur une SD bas de gamme du supermarché du coin.
A déconseiller.
Une Sandisk Extreme me paraît être un minimum.

hbachetti:
@Charly26

Mon Domoticz tourne aussi sur RASPBERRY PI, mais certainement pas sur une SD bas de gamme du supermarché du coin.
A déconseiller.
Une Sandisk Extreme me paraît être un minimum.

On peut avoir des carte SD samsung ou sandisk ou kingstone à ce prix là... 16GO suffisent largement. Je vais tout de même éviter de mettre un liens vers un site marchand quand même... je te laisse faire une recherche sur ton moteur de recherche préféré.

Et puis, franchement, bonne carte ou non, les raspberry crame les carte SD relativement "vite" alors ce qu'il te reste à faire c'est une installation propre, y faire une image et si la carte SD crame, flasher la nouvelle avec l'image de l'ancienne.
Et puis j'ai une carte sd sur mon rpi depuis plus de 2 ans elle a pas bougé... Pourtant je lui en fait voir

Voilà qui règle le problème de carte SD bas de gamme du supermarché du coin.

Alors il vaut mieux dire : "une carte SD de très bonne qualité" plutôt que de parler de "carte sd pour moins de 10 brouzouffes", ce qui peut laisser penser que n'importe quelle bouse convient.

Et puis, franchement, bonne carte ou non, les raspberry crame les carte SD relativement "vite"

Faux, quand tu veux quelque chose de vraiment sérieux : carte SD industrielle

SanDisk_Industrial

Endurance : 128 TeraBytes écrits

Et puis, franchement, bonne carte ou non, les raspberry crame les carte SD relativement "vite"

J'aurais plutôt tendance à dire :

Une RAPBERRY PI ne crame pas les cartes SD relativement vite, mais les coupures secteurs imprévues, certainement.

une installation propre, y faire une image et si la carte SD crame, flasher la nouvelle avec l'image de l'ancienne.

Et que faites-vous des données enregistrées par votre serveur au jour le jour ?
Vous vous contentez de les perdre ?
Ou alors vous démontez votre SD tous les jours pour la cloner ?

Deux précautions valent mieux qu'une : une très bonne carte SD + sauvegarde régulière

Et si l'on peut : batterie externe de secours (avec fonction onduleur).

quand tu veux quelque chose de vraiment sérieux : carte SD industrielle

Sage précaution, surtout au prix où elles sont à l'heure actuelle : un peu plus de 10 brouzouffes :grin:

SanDisk-Industrial-MicroSD-applications-industrielles

Et puis j'ai une carte sd sur mon rpi depuis plus de 2 ans elle a pas bougé... Pourtant je lui en fait voir

Comment faites-vous pour "lui en faire voir" ?

Suffit de mettre un onduleur pour les coupures de courant. Et puis pour gérer un Arrosage, il me semnle pas qunil y ait des données importantes sur la carte sd...
Je crois que vous allez un peu loin sur la "sécurité" du système. Si pendant 1 journée ou 2 le gazon n'est pas arrosé
Je crois pas qu'il y ait mort d'homme

Et puis tout ça pour jouer sur les mots, 15 euros la carte sd...

Et malheureusement pour certains d'entre nous on fait avec le budget le plus restreint possible. Donc bon
Faire une image clean de l'installation et puis perdre les log de son Arrosage du mois dernier... Enfin vaut mieux carrément prendre un disque dur ssd externe et pourquoi pas y faire raid 0, juste au cas ou

Pour en revenir à nos moutons : la problématique de Tedjeu.

Du coup ça va être évolutif.
Par exemple :

  • serveur multimédia
  • serveur audio ( genre mettre Spotify sur le raspberry et envoyer le son là ou tu veux grace par exemple à des relais audio et ampli
  • gérer une alarme ( moins safe qu'une vraie installation par un matériel certifié biensur mais je n'ai pas de picasso chez moi)

Les mots "serveur multimedia et audio" me laissent imaginer que le serveur est dans le salon.
Exact ?

Au final j'ai ma carte d'extension ( celle brancher au raspberry pour aller vers le monde extérieur) qui est une arduino mega avec en gros une cinquantaine d'entrée sortie, du coup tu peux mettre plusieurs mega sur l'usb t'as un nombre énormes d'I/O

ARDUINO MEGA branchée ?
Comment ? USB, Ethernet ?

Pas spécialement dans le salon, tout dépend de comment son prévu les câbles.
Chez moi ce sera dans la buanderie ou il y a le tableau électrique
Et puis je tire des câbles audio vers le salon, etc.

Oui ma carte d'extension c'est une mega branché en usb sur le rpi.

Et celui ci commande des cartes 16 relais.

Pour en revenir au problème Tedjeu, je parle de tout ça car son projet sera très vite limité avec la solution qu'il a choisi
(enfin je pense)

Bonjour a tous,

En attendant de recevoir le Rapsberry, je continu de bricoler sur l'arduino...
Pour ce qui est du probleme de lenteur, c'est l'affichage de la page qui met du temps (la réponse de l'arduino lorsque je clique sur le lien visant à faire commuter un relais est quasi instantanée mais le réaffichage de la page avec les positions des relais à jour met parfois plus de 10 secondes).

Depuis hier j'ai un autre soucis, j'avais un afficheur lcd qui trainait (he oui j'ai plein de truc qui trainent!!) et je me suis lancé dans l’intégration dans mon circuit (en gros il affiche la dernière demande exécutée (nom du relais et date + heure de commut). Ca fonctionnait bien mais hier soir j'ai contrôlé que l'afficheur montrait bien l'enclenchement auto de l’éclairage à 21h mais pb : le serveur avait planté. En me connectant via le moniteur serie, Pb initialisation de la carte SD... Pourtant c'est une ScanDisk Ultra 16GB class 10.

Il faut que je recoupe l'alim pour que ca refonctionne je vais retester sur plusieurs jours pour voir...(peut être une chute de tension du a la conso du lcd et de la platine relais, a voir pour rajouter une alim...)

Pourtant c'est une ScanDisk Ultra 16GB class 10.

J'ai l'impression que le point sensible de la librairie SD sont les SD elles-même.

un-web-server-sur-ethernet

Certaines µSD donnent de mauvais résultats.
La Kingston SDHC 4Gb que j'utilisais au début produisait des défauts aléatoires : fichier non trouvé, présence de caractères étranges lors de lectures.
Avec une Sandisk Extreme SDHC le résultat est bien plus fiable.

Si une Ultra et une Extreme ne donnent pas le même résultat, où va t'on ?

Si tes pages WEB sont simples, autant les stocker dans la FLASH de la MEGA (PROGMEM) :

const char PROGMEM page[] = "code html";

Bonjour,

Sur votre question sur les lenteurs de réponse, avez vous regardé en détail ce que demande le client (votre impression de "clientline") et en particulier si le client (votre navigateur) ne fait pas des requêtes pour une "favicon" ?
Si c'est le cas, il attend alors "un certain temps" que vous lui en envoyiez une. Ensuite, il abandonne et transmet la requête correspondant à votre action.

Chez moi (avec Firefox sur W et Lx), c'était la source principale de retard. Je m'en suis débarrassé en répondant avec une favicon vide.

Bonne bidouille,

MicroQuettas

+1 avec Henri de Hbachetti sur l'utilisation de la mémoire programme. Vous pouvez aussi économiser beaucoup de RAM avec la macro "F" dans les println en remplaçant les println("toto") par println(F("toto")).

Surtout sur une MEGA (256Kb de FLASH). Autant en profiter pleinement.

Personnellement je pense que la solution sur SD ARDUINO n'est pas suffisamment fiable.
J'ai acheté dernièrement un lecteur SD (je dis bien SD, pas µSD), pensant pouvoir reprendre d'anciennes SD de 256Mb, bien suffisantes pour de petits projets sur ARDUINO.

Peine perdue, chou blanc.
Je précise : ces SD sont parfaitement exploitables sur un PC.

Ayant dans les années 90 implémenté un driver SD sur SPI pour un processeur ARM7, je sais bien que c'est la galère et qu'assurer la compatibilité avec les nouvelles SD qui sortent sur le marché est une histoire sans fin. On passe 10x plus de temps à tester qu'à coder.

Quant à utiliser une µSD de 32Gb dernier cri sur un ARDUINO en la remplissant à 0.001% au mieux, j'estime que cette µSD a plus sa place dans mon appareil photo, ma tablette, mon smartphone ou ma RASPBERRY PI.

Donc je pardonne aux développeurs des librairies SD et SDFat et je fais autrement :confused: