Ce système permet de contrôler jusqu'à 8 relais du module waveshare via un Raspberry Pi Pico W.
Il offre une interface REST API et intègre des fonctionnalités de surveillance système, de journalisation des événements et de persistance des états.
Le système est composé de deux parties principales :
- Un serveur Flask (
app.py) qui sert l'interface web et fait le pont avec le Pico - Un client Pico (
main.py) qui gère les relais et expose une API REST
Référence du module: https://www.waveshare.com/pico-relay-b.htm
- Contrôle de 8 relais indépendants
- Interface REST API
- Indicateur LED RGB
- Surveillance système (température, mémoire, tension)
- Journalisation des événements
- Sauvegarde persistante des états
- Support SSL optionnel
RELAY_PINS = {
"1": 21, "2": 20, "3": 19, "4": 18,
"5": 17, "6": 16, "7": 15, "8": 14
}
LED_PIN = 13
BUZZER_PIN = 6secrets.py: Contient les informations de connexion WiFi et SSLrelay_states.json: Stockage persistant des états des relaismm_wlan.py: Module de gestion WiFi
- Raspberry Pi Pico W
- 8 relais
- LED RGB (NeoPixel)
- Buzzer
- LED embarquée
GET /relaysRetourne l'état de tous les relais
{
"1": false,
"2": true,
...
"8": false
}POST /relay/<id>/<state>id: Identifiant du relai (1-8)state: État souhaité (0/1)
POST /allrelays/<state>state: État souhaité (0/1)
GET /systemRetourne les informations système :
{
"ip_address": "192.168.1.100",
"ssid": "MyNetwork",
"free_memory": "100",
"temperature": "25.5",
"voltage": "3.3",
"time": "12:34:56",
"date": "31.12.2024"
}GET /eventsRetourne les derniers événements système
POST /rebootRedémarre le système
Gère la configuration centralisée :
- Mapping des pins
- Définitions des couleurs
- Configuration système
Gère l'ensemble du système :
- Initialisation des relais
- Gestion des états
- Journalisation
- Surveillance système
- Contrôle individuel des relais
- Contrôle groupé
- Sauvegarde automatique des états
- Restauration des états au démarrage
- Température du processeur
- Tension d'alimentation
- Utilisation mémoire
- État de la connexion WiFi
- Horodatage
- Conservation des 200 derniers événements
- Horodatage des événements
- Types d'événements : INFO, WARNING, ERROR
Les états des relais sont sauvegardés dans relay_states.json :
{
"1": false,
"2": true,
...
"8": false
}Au démarrage, le système :
- Charge les états sauvegardés
- Configure les relais selon ces états
- Initialise le système de journalisation
- Température CPU
- Tension d'alimentation
- Mémoire libre/utilisée
- État de la connexion réseau
{
"message": "INFO: Relay 1 set to True",
"time": "12:34:56",
"date": "31/12/2024"
}- Support SSL optionnel
- Authentification WiFi
- Stockage sécurisé des credentials dans
secrets.py
-
Perte de connexion WiFi
- Vérifier les credentials dans
secrets.py - Vérifier la portée du signal
- Vérifier les credentials dans
-
États des relais incorrects
- Vérifier
relay_states.json - Redémarrer le système
- Vérifier
-
Erreurs mémoire
- Surveillance de l'utilisation mémoire via
/system - Nettoyage automatique du journal des événements
- Surveillance de l'utilisation mémoire via
- Vue d'ensemble
- Configuration
- Routes et Endpoints
- Progressive Web App
- Gestion des erreurs
- Installation
- Développement
Cette application Flask sert d'interface web pour un système de contrôle de relais Pico W. Elle fournit une interface utilisateur web complète et gère la communication avec le Pico W via une API REST.
Le serveur Flask est configuré pour :
- Écouter sur toutes les interfaces (
0.0.0.0) - Port 80 par défaut
- CORS activé pour
http://localhost - Communication avec le Pico sur
http://192.168.1.109
| Route | Méthode | Description |
|---|---|---|
/ |
GET, POST | Page d'accueil avec état des relais |
/relais |
GET, POST | Interface de contrôle des relais |
/system |
GET, POST | Informations système |
/parameters |
GET, POST | Page de paramètres |
/events |
GET, POST | Journal des événements |
| Route | Méthode | Description |
|---|---|---|
/__service-worker.js |
GET | Service Worker pour PWA |
/__manifest.json |
GET | Manifeste PWA |
| Route | Méthode | Description |
|---|---|---|
/get_relay_state |
GET, POST | Obtenir l'état des relais |
/reboot |
GET, POST | Redémarrer le Pico |
Le serveur implémente une gestion robuste des erreurs avec :
- Timeout de 3 secondes pour les requêtes
- États par défaut en cas de déconnexion
- Gestion des exceptions de connexion
- Vérification de connexion :
http://<adresse_ip_pico>/system - État des relais :
http://<adresse_ip_pico>/relays - Journal système :
http://<adresse_ip_pico>/events
Axes d'amélioration potentiels :
- Authentification utilisateur
- Planification des tâches
- Intégration MQTT
- Interface API étendue
- Support de configurations avancées




