Re: arduino suivi temp et action

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: guilde
Subject: Re: arduino suivi temp et action
Bonjour !

Frédéric Bressy a écrit :
> je voudrais [...] que l'arduino envoie les données [...] à une api sur
> un serveur et que ce dernier, en fonction si des seuils de température
> sont dépassés (réglage par utilisateur via une interface web), renvoie
> des données ou plutôt ordres pour activer ou non des ventilo et
> modifier leur vitesse.


Si je comprends bien, dans l'appli que tu cherches à développer, tu
aurais :

  – Un Arduino, qui interface les capteurs et les ventilos, et qui est à
    la fois serveur et client Web ;
  – Une machine intermédiaire (un serveur dans l'armoire informatique ?)
    qui est aussi serveur et client Web, basé sur PHP ;
  – Un utilisateur avec un navigateur Web, qui accède à la machine
    intermédiaire pour consulter les données et configurer des seuils.


En voici le schéma, où les flèches représentent les connexions HTTP, du
client vers le serveur.

    ┌────────┐            ┌───────────────┐               ┌─────────┐
    │        │            │               │    données    │         │
    │        │   config   │               │◀──────────────│         │
    │ navig. │───────────▶│ intermédiaire │               │ Arduino │
    │        │            │               │   commandes   │         │
    │        │            │               │──────────────▶│         │
    └────────┘            └───────────────┘               └─────────┘


Est-ce que j'ai bien compris ?

Si c'est bien ça, je trouve personnellement l'architecture un peu trop
compliquée : il y a deux serveurs et trois clients HTTP ! Ce que
j'aurais envie de faire dans un cas comme ça est, du plus simple au plus
compliqué :

 1. Si l'Arduino peut avoir un shield pour carte micro-SD, me passer de
    l'intermédiaire et implémenter toute l'appli dans l'Arduino. La
    logique à implémenter pour commander les ventilos est probablement
    très simple, et la partie serveur d'API ne devrait pas être trop
    lourde. Par contre, le code client (HTML/CSS/JS) peut être un peu
    volumineux, d'où l'intérêt de le servir depuis une carte micro-SD.


 2. Si l'intermédiaire et l'Arduino sont dans la même Armoire, les
    relier par un câble USB, et les faire communiquer par liaison
    série/USB (objet Serial de l'API Arduino). L'Arduino répondrait
    alors a des simples commandes textuelles, faciles à parser, et son
    code serait super léger. C.f. cet exemple d'interpréteur de
    commandes[1]. J'ai implémenté un architecture de ce type avec
    Node.js / Raspberry Pi pour la machine intermédiaire, et ça marche
    très bien. C'est peut-être moins facile en PHP qu'en Node.js.


 3. Si la communication entre l'intermédiaire et l'Arduino doit passer
    par du TCP/IP, alors implémenter dans l'Arduino un serveur HTTP
    uniquement (pas de client), et laisser l'intermédiaire le consulter
    pour récupérer périodiquement les données dont il a besoin. Ou
    mieux, se passer de la couche HTTP et envoyer de simples commandes
    textuelles dans un tuyau TCP, comme on ferait dans le cas numéro 2.


À+,

Edgar.

[1] https://gist.github.com/edgar-bonet/607b387260388be77e96