Petit coup de pouce, controle de sorties GPIO

Bonjour.

Je démarre un projet pour gérer à distance mon chauffage électrique.

L’idée est assez simple:

Une interface web permet de configurer une table horaire
Projet IHM
En cliquant sur chaque bouton, on bascule entre Marche, Eco et Arrêt.
En cliquant sur OK, la table est enregistrée dans un fichier (elle doit être sauvegardée pour ne pas tout perdre en cas de micro-coupure d’alimentation).

Un programme lancé de manière cyclique (toutes les 5 secondes par exemple) compare l’heure système avec le mode enregistré dans la table horaire et active la sortie GPIO correspondante.

Je n’ai pas de problème pour la partie électronique, électrique, câblage… mais j’ai beaucoup plus de mal pour la partie informatique.
J’ai déjà passé quelques heures à lire quelques ouvrages mais ça fait beaucoup d’informations à digérer et j’ai un peu l’impression de chercher une aiguille dans une botte de foin.
HTML, Javascript, PHP… ??

Si vous avez quelques conseils à me donner dans les grandes lignes sur la manière d’architecturer le projet, ça m’aiderai bien. :slightly_smiling_face:

Tu peux intégrer l’interface Web via Python, les fichiers serait l’interface avec des appels sur un « api », qui lui est une serie de commande qui permet de charger tes valeurs selon la configuration.

Pour l’effet entre les états, c’est du rendu d’interface, alors avec du HTML/CSS/JS tu peux faire comme tu veux. L’important sera les commandes passé.

Tu peux par exemple créer un api comme suit.

api.php?id=19&day=1&hour=13&v=2

Ce qui donnerais le chauffage 19, jour 1 à 13 heure, valeur a 2.

Bref, tu défini tes paramètres comme tu le désire.

Pour t’aider a voir plus clair dans comment le créer, faut établir les besoins de paramètres.

Si tu étable un calendrier de plusieurs chauffages, sur 7 jours avec change au heures (comme dans mon exemple), il faut établir une config un peu comme suit;

  • Un ID pour l’unité de chauffage
  • Une valeur pour le jour de la semaine (ex; dimanche = 0,[…] samedi = 6)
  • L’heure de la journée (00 @ 23)
  • Un état (0=off,1=eco,2=full)

Après le code interprète la demande, et tu peu inclure des contrôles immédiat etc…

J’utilise ce principe pour créer des impressions sur une étiqueteuse. J’ai l’interface qui me permet de créer mes demandes et de l’envoie en demandes API pour que le script le gère.

Bonjour,

Vu la quantité de langages de programmation existant, il y a des tas de solutions.
Je suis en accrod avec @levelKro, pour ma part et en complément de ce qui a déjà été dit, même si le projet semble très simple, je diviserait le projet en 2. (C’est une théorie, je n’ai jamais réalisé ce genre de projet)

  • Une partie backend qui s’occupe de communiquer avec le fichier de configuration. Il charge le fichier si il existe, il met à disposition les valeurs et enregistre le changement dans le fichier.
    Pour cela ce programme peut être appelé effectivement en api. Les langages les plus utilisés seraient PHP ou Python.
  • Une partie frontend pour l’affichage dans un navigateur. Pour cela c’est plutôt du HTML pour la partie statique, éventuellement du CSS pour faire joli, et du Javascript pour la partie communication.

Et oui rien que ça juste pour afficher une petite page web !

Il me semble qu’il serait souhaitable d’écrire le programme de chargement/modification/enregistrement du fichier en premier. De communiquer directement avec lui en ligne de commande par exemple, puis de développer la partie API ensuite.

Il y a probablement d’autres approches, plus simples, plus rapides, plus efficaces, avec moins de langages à apprendre ??? A tous ceux qui passent par là laissez vos idées. :pray:

Bon courage.

A+

@levelKro
La table horaire serait un fichier très simple,
Un « array » avec 7 colonnes (pour les 7 jours de la semaine) et 24 lignes (pour les 24 heures de chaque jour).
Chaque cellule contiendrai un entier; par exemple 0 pour « Confort », 1 pour « Eco » et 2 pour « Hors Gel ».
Pour l’instant, je ne considère qu’un seul circuit (s’il faut, plus tard, ce sera une table horaire dans fichier séparé pour chaque circuit).

@jelopo
En effet, je sens bien qu’il faudra au moins 2 parties:

  • une interface utilisateur affichée dans un navigateur
  • une tâche de fond de mise à jour cyclique des sorties GPIO

Je vais d’abord me concentrer sur la première partie.
L’interface opérateur aurait à:

  • lire la table horaire si elle existe
  • afficher la table horaire
  • saisir les modifications souhaitées
  • écrire la table horaire

Je pense plutôt à HTML, éventuellement CSS pour faire joli comme tu dit, Javascript, PHP (pas sur).

Merci pour ce premier coup de pouce.
Olf

PS: Une question de simplet: c’est quoi que vous appelez « API » ?
(pour moi c’est « automate programmable industriel » :sweat_smile:)

APi c’est « application programming interface ».
C’est un langage standardisé qui est utilisé par tous les clients potentiels du serveur (celui que j’ai appelé backend).

Très souvent, les sites web ont des api pour interroger directement leurs ressources. Avec l’utilisation d’une API, ont peut donc récupérer des valeurs avec ou sans passer par un site web. Il suffit « juste » de connaître la structure de l’API et de lancer une requête au bon format.

A+