Go Down

Topic: Faisablité d'un projet - commande d'une prise à distance (Read 347 times) previous topic - next topic

PLJerem

Bonjour,


Je viens vers vous pour connaître la faisabilité d'un projet (je suis complétement amateur dans ce genre de réalisation).

Les différents éléments à prendre en compte pour mon projet sont :
- lieu de mon installation : locale type algeco disposant uniquement d'une prise 230V AC,
- un consommateur de 3kW
- pas de connexion internet

Le besoin :
Le consommateur cité dessus est un générateur de vapeur. J'ai besoin de le faire fonctionner pendant une durée de 1h00 ou de 01h45 par jour pendant la saison hivernale.

N'habitant pas à côté du générateur j'ai la nécessité de programmer le fonctionnement du générateur à distance en donnant la date et heure de départ du cycle ainsi que sa durée (1h00 ou 01h45).
Il peut m'arriver de devoir annuler une programmation.

Une ou plusieurs personnes doivent pouvoir : consulter / ajouter / modifier / supprimer une programmation en utilisant leur smartphone (que des android).


Pour la connexion à distance mon abonnement téléphonique comporte une dual SIM, je pensais récupérer la SIM DATA pour la connectivité à distance.


Au début, j'étais parti sur le Arduino, malheureusement je ne trouve que des tutoriels pour de la commande par SMS. Une interface graphique me semble plus sympathique.


J'ai au moins la finalité de mon projet : commander un contacteur (ayant un pouvoir de coupure suffisant) alimentant une prise sur laquelle sera branché mon générateur de vapeur durant le cycle choisi.


Auriez-vous des conseils à me donner pour savoir comment débuter ce projet ?


Jérémy


Pour information je viens d'une filière électrotechnique (j'ai au moins quelques bases  :D ), j'utilise déjà une raspberry avec un petit serveur web que j'ai mis en place à mon taff.

J-M-L

Il vous faudra un module 4G + un arduino + un relai adéquat + une RTC (la gestion du temps sur arduino n'est pas super précise, mais vous pourriez aussi utiliser le module data pour aller lire l'heure de temps en temps) et un service web accessible en permanence

Depuis un navigateur web vous,accédez à un programme web que vous créez, et qui gère le calendrier des instructions
Depuis l'arduino vous vous connectez de temps en temps pour lire les instructions / voir si elles ont changé (polling).

La fréquence de connexion va définir la durée Max entre un ordre et sa prise en compte. C'est dû au fait que vous ne pourrez pas accéder en direct à votre arduino de manière pérenne à travers la 4G car la connexion devrait être live en permanence et votre module ne va pas accepter les connexions data entrantes

si vous voulez plus de réactivité, un SMS généré depuis le service web pourrait notifier à l'arduino qu'une nouvelle liste d'instructions est dispo.
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

PLJerem

Bonjour J-M-L,

Merci pour tes conseils.

Concernant le service WEB, je pense utiliser le petit serveur qui est connecté en permanence chez moi.

Ou sinon est ce que l'idée suivante est envisageable : utiliser une raspberry directement sur le lieu de l'installation. Celle-ci me servirait directement de serveur pour l'application Web et servirait de connexion à la data mobile via un module 4G. Ensuite établir une connexion éthernet entre l'arduino est la raspberry pour les horaires et cycles programmés.

Après je sais que j'ai la possibilité de commander des relais directement via la raspberry, donc il serait peut-être plus judicieux  de l'utiliser pour l'ensemble de mon projet ?

J'ignore complétement s'il est possible de rendre consultable mon application web via le module 4G de la raspberry.

Idéalement je préférerai me passer d'un hébergeur pour mon application web et que tout soit centralisé sur le lieu de l'installation.

destroyedlolo

#3
Jun 21, 2018, 08:34 pm Last Edit: Jun 21, 2018, 08:36 pm by destroyedlolo
Si tu utilises un Rasberry (ou un autre SBC), une commande par SMS sera peut-être aussi efficace, non ?

Autre solution : si tu es couvert, un ESP-32 avec LoRa ferait peut etre aussi l'affaire.

PLJerem

Si c'était juste pour mon utilisation personnelle je me conterai de SMS pour communiquer du genre :
- "annulation"
- "start 21/06/18 15h00 60mins"

Pour mon amie qui utilisera aussi le système l'interface graphique me paraît beaucoup important.

J'avais aussi d'ajouter des options au long terme, par exemple la machine a besoin d'un détartrage toutes les 2000 minutes d'utilisations ou 30 cycles. J'avais pour idée à un laps de temps ou de cycle défini je pourrai déclencher une alerte.

La raspberry a un côté rassurant pour moi car j'en utilise déjà un (certes je n'utilise pas du tout son GPIO).

Ma motivation se dirige vers le Arduino car sa communauté francophone est active, en cas de blocage ça aide  ;D Après je suis ouvert à tout.

Je me donne jusqu'à début juillet pour voir la méthode la plus adaptée à mettre en œuvre. Je prends tous les systèmes et technologies existants.

J-M-L

votre soucis c'est qu'une carte SIM 4G sans rien de particulier autour n'a pas d'adresse IP fixe donc rien ne vous permet simplement de garantir dans la durée que vous seriez capable de joindre votre système depuis le monde extérieur si d'aventure l'IP attribuée a changé. De plus les opérateurs ne laissent pas passer un traffic entrant généralement et bloquent pas mal de chose au niveau de leur infrastructure. (certains opérateurs ont pour les pros des offres IP fixe 4G mais j'ai jamais trop exploré et en tout cas ça ne fonctionnera pas avec votre seconde carte SIM de votre offre duo).

Donc il faut que le point isolé se connecte de temps en temps au reste du monde et demande "Salut, est-ce qu'il y a un message pour moi ?".

Le reste du monde ça peut être un ordinateur avec serveur web (en HTTP) qui est à un endroit "connu", c'est à dire accessible par une IP fixe ou par nom de domaine.  ça peut être:

Soit chez vous, mais les contrats internet grand public (l'internet que vous avez à la maison) n'ont pas d'IP fixe, et c'est contournable avec du DNS dynamique et en ouvrant une brèche dans l'internet chez vous pour que le traffic entrant soit routé vers votre serveur web.

Soit chez un hébergeur, ça coûte moins de 2€ par mois chez OVH avec votre nom de domaine - suffit de sauter un ou deux cafés par mois à la machine pour financer ses bidouilles sur internet :) (ou un café dans un troquet parisien) - et vous n'avez pas à payer l'électricité, ouvrir un trou de sécurité potentiel dans votre réseau perso, vous assurer que votre machine est toujours vivante et accessible etc...

Une fois que vous avez décidé où vous mettez ce serveur HTTP, il suffit d'avoir trois petits programmes PHP (par exemple) dessus. Un qui permet de gérer la liste des ordres et voir l'état du système (ce que vous appelez l'interface utilisateur pour madame), et deux autres sans interface utilisateur, qui vont être appelé par votre arduino distant en 4G pour demander s'il y a eu une modification de la liste des ordres (et l'obtenir, par exemple un JSON) pour  pouvoir la traiter en local ensuite, et un second petit bout de code que l'arduino appellera pour mettre à jour l'état du système distant (que vous verrez ainsi dans votre interface utilisateur).

L'ordinateur qui supportera l'interface web et les 2 scripts -- si c'est chez vous -- vous prenez ce que vous voulez, un vieux PC sous linux, un vieux mac avec MAMP (la version PRO vous donnera du Dynamic DNS) ou un RPI (lire cela pour le DNS dynamique) peuvent faire l'affaire, et si c'est chez un hébergeur, vous prenez ce qu'il vous donnent sans vous poser de questions.


Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

PLJerem

En effet la solution d'OVH avec l'IP fixe est la plus simple, au moins pas d'interruption de service.

Je pense faire une interrogation du serveur par le arduino toutes les 15minutes, ça devrait être largement suffisant.

Un retour JSON contenant :
- la date et heure pour la remise à l'heure du arduino (cette méthode si j'ai bien compris me permet de me passer du module RTC ?)
- la date et heure de la prochaine prog ainsi que le temps de la programmation.

Je pars sur cette méthode :)

Merci pour les informations de la DATA en 4G, j'avais un petit espoir de pouvoir l'utiliser. J'avais remarqué sur mon téléphone Android que celui-ci avait une adresse IP attribuée.

Je me lance dans la réalisation de la liste du matériel qu'il me faut.

J-M-L

En effet la solution d'OVH avec l'IP fixe est la plus simple, au moins pas d'interruption de service.
ce ne sera pas IP fixe, mais un nom de domaine (vous pourrez faire plaisir à votre amie avec un nom de domaine sympa ;-) bonne excuse pour un cadeau technique) et OVH se charge pour vous de maintenir l'association nom de domaine <--> IP dans leur infrastructure

Quote
Je pense faire une interrogation du serveur par le arduino toutes les 15minutes, ça devrait être largement suffisant.
OK - cela dit si vous n'avez pas de soucis sur l'alimentation électrique du système distant, ça ne coûte rien de le faire plus souvent (toutes les 15 secondes par exemple) et ce sera moins frustrant pour le debug :)

Quote
- la date et heure pour la remise à l'heure du arduino (cette méthode si j'ai bien compris me permet de me passer du module RTC ?)
oui - il y a plusieurs façon de faire. Votre serveur web peut faire les calculs et simplement donner à votre arduino un temps en secondes avant de déclencher ou arrêter quelque chose (comme ça gestion simplifiée du temps côté arduino) ou vous pouvez retourner l'heure dans la JSON ou  vous pouvez envoyer un AT+CCLK? (ou similaire) à votre module GSM pour obtenir l'heure réseau et si l'heure réseau ne fonctionne pas et que votre serveur ne répond pas, vous pouvez simplement balancer une requête HTTP vers un service qui ne fait rien - par exemple envoyer

HEAD /index.html HTTP/1.1\r\n
Host: www.undomaine.com\r\n;
\r\n


Où www.undomaine.com est un serveur visible du public avec une page index.html et vous obtiendrez une réponse du genre:


HTTP/1.x 200 OK 
Transfer-Encoding: (xxxx) 
Date: Fri, 22 Jun 2018 11:57:30 CEST
xxxxxx du blabla xxxxx


donc simple d'extraire l'heure aussi comme cela.

Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

PLJerem

Même en partant sur une interrogation sur 15s je peux encore plus simplifier le fonctionnement :

Le serveur renvoie une information booléenne au arduino :
- true : le arduino commande la prise jusqu'à la prochaine interrogation
- false : le arduino ne commande pas la prise jusqu'à la prochaine interrogation

Je mets une sécurité que si pas de réponse du serveur sur 4 interrogations de suite arrêt de commande de la prise.

Je n'ai pas besoin d'une précision supérieure à 5 minutes pour l'alimentation du générateur de vapeur.

J-M-L

Même en partant sur une interrogation sur 15s je peux encore plus simplifier le fonctionnement :

Le serveur renvoie une information booléenne au arduino :
- true : le arduino commande la prise jusqu'à la prochaine interrogation
- false : le arduino ne commande pas la prise jusqu'à la prochaine interrogation

Je mets une sécurité que si pas de réponse du serveur sur 4 interrogations de suite arrêt de commande de la prise.

Je n'ai pas besoin d'une précision supérieure à 5 minutes pour l'alimentation du générateur de vapeur.
oui et dans ce cas toute l'intelligence est dans le service web, mais en cas de soucis réseau pendant une journée, pas de programmation alors que l'arduino pourrait être "autonome"

à mon avis dans l'interrogation toutes les 15 secondes, ce serait pas mal de passer aussi l'état courant afin d'avoir un retour d'infos
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

PLJerem

Hum, à voir, je vais méditer aux solutions.

Je me lance dans le choix du matériel :
- Arduino Uno Rev3
- Arduino GSM Shield 2
- Grove - Relay
- 1 contacteur bipolaire 230VAC 2P 3kw (par encore choisi)
- alimentation non choisie

Si je ne me trompe pas la carte GSM Shield 2 est compatible avec les fréquences européenne.

J-M-L

Vous avez maintenant le ARDUINO MKR GSM 1400 qui embarque directement du GSM dans un Arduino MKR et il coûte à lui tout seul moins cher que le Arduino GSM Shield 2 (de mémoire je ne crois pas que vous avez la fonction téléphonie mais dans vos explications vous ne décrivez pas cela comme un besoin). L'antenne n'est pas fournie donc faudra en prévoir une si vous partez la dessus.




pour l'alimentation  prévoyez large en puissance, au moins 2A car la partie GSM consomme bcp en émission. Une prise USB d'un ordi ne suffira pas (généralement 500mA)

si vous partez sur un UNO, le relais devra être pilotable en 5V, si vous partez sur une solution type MKR alors il faut qu'il soit pilotable en 3.3V


prévoir un petit boitier étanche pour une installation isolée n'est pas forcément une mauvaise idée. On trouve des trucs comme cela sur eBay (IP66 Waterproof Outdoor Enclosure Case Electrical Junction Box 2Way Terminal ZJZ) pour environ 3€

vous faites renter l'alim de l'arduino d'un côté, le relais sort de l'autre côté. La boîte fait 127mm x 59mm x 36mm donc normalement assez de place pour rentrer un MKR (~7cm x 2,5cm) + relais


Si vous partez sur un uno avec le shield, faut plus grand - il existe plein de types de boites étanches genre (Clear Waterproof Plastic Electronic Project Box)



mais pas forcément avec des entrées "étanches" - mais il ne tient qu'à vous à les creuser et mettre des "Connecteur etanche presse-etoupe" aux bons endroits



Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

PLJerem

Nickel J-M-L déjà 25€ économisé de par tes conseils ;)

Je pars sur la carte que tu as mise en lien.

Je prends en compte tes conseils pour l'alimentation et l'avertissement pour la la commande du relais.

Pour la boite de la prendrai à la fin, pour m'entrainer et découvrir le arduino j'installerai tout ça sur une plaque en plexi. Une fois que j'aurais tout de fonctionnel je ferai l'intégration dans un coffret.

Merci pour tes conseils. Je partagerai mon projet dans la partie "Réalisations et Projets Finis" du forum.

Je ne mets pas la discussion sur résolue si toutes fois j'ai besoin de conseils sur le forum :)

J-M-L

Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

Go Up