lecture et écriture arduino depuis internet (et non localhost)

Salut !

Je suis tout nouveau dans le monde arduino !
Mon projet c'est de fabriquer un système de régulation de mon installation hydroponique dans laquelle je fais pousser des piments ! Donc réguler l'irrigation, la ventilation et la lumière. En enregistrant la température (extérieur et de l'eau), le pH de l'eau, etc...
Bref, c'est un projet à plus ou moins long terme ! Pour l'instant j'essaye de rassembler tout ce qu'il me faut (aussi bien au niveau matériel qu'au niveau du code).

Et donc : ma question d'aujourd'hui est la suivante : j'aimerais pouvoir consulter l'état de tous mes capteurs, et activer l'irrigation, la ventilation et la lumière en passant par mon site qui est sur stocké sur OVH.com
Je n'ai que trouvé des tutos qui me permettent de faire ça mais sur le serveur local, ou en passant par des plateformes web dédiées, mais aucun pour le faire sur mon propre site !

Merci d'avance pour vos réponses !

:slight_smile: Zenius

PS : une photo de mes piments dans le système hydro DIY !

semences-partage.net.png

Des piments, des piments,... c'est bien des piments que tu veux faire pousser ? :wink:

Je ne mets pas ta photo en doute cependant.

Bonjour Zenius

Tout dépend comment fonctionne ton système.

Si c'est ton arduino qui ouvre une connexion vers le serveur, il n'y a aucune raison que cela ne marche pas immédiatement. Il faut remplacer l'adresse numérique de ton serveur local par celle de ton serveur OVH sous la forme textulle (www.mondomaine.com).

Si c'est le serveur qui doit ouvrir la connexion alors c'est avant tout un problème de configuration de ta Box Internet. Il faut "ouvrir un port" ce qui consiste à dire à ta box que les connexion entrante sur ton adresse IP publique doivent être redirigées vers l'adresse locale de ton Arduino (192.xxxx)
Par exemple, tu peux ouvrir le port 1080 sur ta box et le rediriger vers l'arduino en 192.xxx.xxx.xxx port 80. Comme cela si le serveur cherche a se connecter à ton adresse publique sur le port 1080, la connexion va aller jusqu'à l'Arduino.
La configuration de la box dépend de ta box. Ca ne se fait pas de la même façon sur une Freebox, ...

ATTENTION : Pour que cela marche de manière fiable, il faut que ton fournisseur d'accès Internet te donne une adresse IP FIXE.Si cette adresse change tous les jours, ça devient plus compliqué mais on peut trouver une solution.

Pour connaitre ton adresse IP publique : http://www.myipaddress.com/

Et ne fait pas attention a 3Sigma, tout le monde à le droit de faire pousser des piments, des cornichons, des tomates et des laitues ]:smiley: :smiley:
=> []

3Sigma : Oui c'est bien des piments (des piments végétariens dont j'ai récupéré les graines en Martinique) ! Mais c'est vrai qu'une grande partie des utilisateurs de l'hydroponie font pousser des plantes "médicinales"... Mais moi c'est le système qui m'intéresse beaucoup !

barbudor : Merci beaucoup pour ta réponse ! Mais j'ai quelques questions, parce que j'y connais pas grand chose encore.
Donc dans le sens où mon arduino ouvre la connexion vers le serveur, ce sera pour transmettre les données des inputs ? Comment je fais ça ?
Dans l'autre sens ce sera plutôt pour actionner des outputs ? C'est bien ça ? Comment je dis à mon arduino de faire ça ?
Je fais tout ça avec mon Ethernet Shield ?

Désolé pour toutes ces questions... Où est-ce que je peux trouver de la doc sur ce sujet (même en anglais !) ?

Merci :slight_smile: :slight_smile:

Je pensais que tu partais d'un existant qui tournait sur un serveur local et que tu cherchais juste à déporter...

Le sujet est vaste et il existe plusieurs solutions.
Tu peux commencer par recharger la lib Webduino qui montre quelques exemple ainsi que lire un peu se qui se dit autour des WebSockets. Notamment on en a pas mal parler sur le forum.

Mais surtout : tu doit mettre au propre de manière claire ce que tu veux faire en terme d'interactions.
Il y a 3 acteurs dans le système :

  • Le navigateur de l'utilisateur
  • Un serveur Web (OVH ou autre)
  • L'Arduino

Qu'est-ce qui doit être fait en temps-réel ?
Qu'est-ce qui doit être fait via action de l'utilisateur ?

Par exemple, tu parles de surveiller la température.
Est-ce que tu souhaites la présenter à l'utilisateur dans son navigateur uniquement quand il regarde ?
Ou bien veux tu qu'elle soit enregistrée en continue pour disposer d'un historique ?

Dans le premier cas, c'est plutôt simple : le navigateur peut juste se connecter à l'Arduino qui affiche une page Web avec les données courantes.
Dans le 2nd cas, le serveur Web ne va pas pouvoir venir chercher les données de lui-même. C'est donc l'Arduino qui va régulièrement pousser les données vers le serveur.
=> A chaque mesure ? Par paquet ?
=> Si l'utilisateur consulte la température, peut-il se contenter de la dernière valeur que l'Arduino à poussé au serveur ou bien est-ce qu'il faut aller chercher la donnée sur l'Arduino ?

Entre le code qui va s'exécuter sur l'Arduino, celui sur le serveur et éventuellement le JavaScript dans le navigateur, cela fait 3 logiciels qui vont devoir communiquer entre eux.
Il faut donc avoir les idées claires sur ce que tu veux faire, quels sont les flux d'actions et de données.