Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Web PWA APP de contrôle du module 8 relais WaveShare/Pico-W via via API's

Vue d'ensemble de la solution

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.

Architecture du Système

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

Caractéristiques principales

  • 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

Configuration

Configuration matérielle

RELAY_PINS= {
"1": 21, "2": 20, "3": 19, "4": 18,
"5": 17, "6": 16, "7": 15, "8": 14
}
LED_PIN=13BUZZER_PIN=6

Fichiers requis

  • secrets.py : Contient les informations de connexion WiFi et SSL
  • relay_states.json : Stockage persistant des états des relais
  • mm_wlan.py : Module de gestion WiFi

Composants matériels

  • Raspberry Pi Pico W
  • 8 relais
  • LED RGB (NeoPixel)
  • Buzzer
  • LED embarquée

API REST

Endpoints disponibles

État des relais

GET /relays

Retourne l'état de tous les relais

{
"1": false,
"2": true,
..."8": false
}

Contrôle d'un relai

POST /relay/<id>/<state>
  • id : Identifiant du relai (1-8)
  • state : État souhaité (0/1)

Contrôle de tous les relais

POST /allrelays/<state>
  • state : État souhaité (0/1)

Informations système

GET /system

Retourne 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"
}

Journal des événements

GET /events

Retourne les derniers événements système

Redémarrage

POST /reboot

Redémarre le système

Classes principales

Class Config

Gère la configuration centralisée :

  • Mapping des pins
  • Définitions des couleurs
  • Configuration système

Class PicoBoardRelay

Gère l'ensemble du système :

  • Initialisation des relais
  • Gestion des états
  • Journalisation
  • Surveillance système

Fonctionnalités

Gestion des relais

  • Contrôle individuel des relais
  • Contrôle groupé
  • Sauvegarde automatique des états
  • Restauration des états au démarrage

Surveillance système

  • Température du processeur
  • Tension d'alimentation
  • Utilisation mémoire
  • État de la connexion WiFi
  • Horodatage

Journalisation

  • Conservation des 200 derniers événements
  • Horodatage des événements
  • Types d'événements : INFO, WARNING, ERROR

Gestion des états

Persistance

Les états des relais sont sauvegardés dans relay_states.json :

{
"1": false,
"2": true,
..."8": false
}

Restauration

Au démarrage, le système :

  1. Charge les états sauvegardés
  2. Configure les relais selon ces états
  3. Initialise le système de journalisation

Surveillance système

Mesures disponibles

  • Température CPU
  • Tension d'alimentation
  • Mémoire libre/utilisée
  • État de la connexion réseau

Format des événements

{
"message": "INFO: Relay 1 set to True",
"time": "12:34:56",
"date": "31/12/2024"
}

Sécurité

  • Support SSL optionnel
  • Authentification WiFi
  • Stockage sécurisé des credentials dans secrets.py

Dépannage

Problèmes courants

  1. Perte de connexion WiFi

    • Vérifier les credentials dans secrets.py
    • Vérifier la portée du signal
  2. États des relais incorrects

    • Vérifier relay_states.json
    • Redémarrer le système
  3. Erreurs mémoire

    • Surveillance de l'utilisation mémoire via /system
    • Nettoyage automatique du journal des événements

Documentation de l'interface Web (PWA) Flask

Table des matières

Vue d'ensemble

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.

Configuration

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

Points d'Accès (Routes)

Routes Principales

RouteMéthodeDescription
/GET, POSTPage d'accueil avec état des relais
/relaisGET, POSTInterface de contrôle des relais
/systemGET, POSTInformations système
/parametersGET, POSTPage de paramètres
/eventsGET, POSTJournal des événements

Routes PWA

RouteMéthodeDescription
/__service-worker.jsGETService Worker pour PWA
/__manifest.jsonGETManifeste PWA

Routes API

RouteMéthodeDescription
/get_relay_stateGET, POSTObtenir l'état des relais
/rebootGET, POSTRedémarrer le Pico

Gestion des Erreurs

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

Diagnostic

  1. Vérification de connexion : http://<adresse_ip_pico>/system
  2. État des relais : http://<adresse_ip_pico>/relays
  3. Journal système : http://<adresse_ip_pico>/events

Développement Futur

Axes d'amélioration potentiels :

  1. Authentification utilisateur
  2. Planification des tâches
  3. Intégration MQTT
  4. Interface API étendue
  5. Support de configurations avancées

About

Web App to manage a Pico Relay Board from Waveshare with API's and a PWA app

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Web PWA APP de contrôle du module 8 relais WaveShare/Pico-W via via API's

Vue d'ensemble de la solution

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.

Architecture du Système

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

Caractéristiques principales

  • 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

Configuration

Configuration matérielle

RELAY_PINS= {
"1": 21, "2": 20, "3": 19, "4": 18,
"5": 17, "6": 16, "7": 15, "8": 14
}
LED_PIN=13BUZZER_PIN=6

Fichiers requis

  • secrets.py : Contient les informations de connexion WiFi et SSL
  • relay_states.json : Stockage persistant des états des relais
  • mm_wlan.py : Module de gestion WiFi

Composants matériels

  • Raspberry Pi Pico W
  • 8 relais
  • LED RGB (NeoPixel)
  • Buzzer
  • LED embarquée

API REST

Endpoints disponibles

État des relais

GET /relays

Retourne l'état de tous les relais

{
"1": false,
"2": true,
..."8": false
}

Contrôle d'un relai

POST /relay/<id>/<state>
  • id : Identifiant du relai (1-8)
  • state : État souhaité (0/1)

Contrôle de tous les relais

POST /allrelays/<state>
  • state : État souhaité (0/1)

Informations système

GET /system

Retourne 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"
}

Journal des événements

GET /events

Retourne les derniers événements système

Redémarrage

POST /reboot

Redémarre le système

Classes principales

Class Config

Gère la configuration centralisée :

  • Mapping des pins
  • Définitions des couleurs
  • Configuration système

Class PicoBoardRelay

Gère l'ensemble du système :

  • Initialisation des relais
  • Gestion des états
  • Journalisation
  • Surveillance système

Fonctionnalités

Gestion des relais

  • Contrôle individuel des relais
  • Contrôle groupé
  • Sauvegarde automatique des états
  • Restauration des états au démarrage

Surveillance système

  • Température du processeur
  • Tension d'alimentation
  • Utilisation mémoire
  • État de la connexion WiFi
  • Horodatage

Journalisation

  • Conservation des 200 derniers événements
  • Horodatage des événements
  • Types d'événements : INFO, WARNING, ERROR

Gestion des états

Persistance

Les états des relais sont sauvegardés dans relay_states.json :

{
"1": false,
"2": true,
..."8": false
}

Restauration

Au démarrage, le système :

  1. Charge les états sauvegardés
  2. Configure les relais selon ces états
  3. Initialise le système de journalisation

Surveillance système

Mesures disponibles

  • Température CPU
  • Tension d'alimentation
  • Mémoire libre/utilisée
  • État de la connexion réseau

Format des événements

{
"message": "INFO: Relay 1 set to True",
"time": "12:34:56",
"date": "31/12/2024"
}

Sécurité

  • Support SSL optionnel
  • Authentification WiFi
  • Stockage sécurisé des credentials dans secrets.py

Dépannage

Problèmes courants

  1. Perte de connexion WiFi

    • Vérifier les credentials dans secrets.py
    • Vérifier la portée du signal
  2. États des relais incorrects

    • Vérifier relay_states.json
    • Redémarrer le système
  3. Erreurs mémoire

    • Surveillance de l'utilisation mémoire via /system
    • Nettoyage automatique du journal des événements

Documentation de l'interface Web (PWA) Flask

Table des matières

Vue d'ensemble

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.

Configuration

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

Points d'Accès (Routes)

Routes Principales

RouteMéthodeDescription
/GET, POSTPage d'accueil avec état des relais
/relaisGET, POSTInterface de contrôle des relais
/systemGET, POSTInformations système
/parametersGET, POSTPage de paramètres
/eventsGET, POSTJournal des événements

Routes PWA

RouteMéthodeDescription
/__service-worker.jsGETService Worker pour PWA
/__manifest.jsonGETManifeste PWA

Routes API

RouteMéthodeDescription
/get_relay_stateGET, POSTObtenir l'état des relais
/rebootGET, POSTRedémarrer le Pico

Gestion des Erreurs

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

Diagnostic

  1. Vérification de connexion : http://<adresse_ip_pico>/system
  2. État des relais : http://<adresse_ip_pico>/relays
  3. Journal système : http://<adresse_ip_pico>/events

Développement Futur

Axes d'amélioration potentiels :

  1. Authentification utilisateur
  2. Planification des tâches
  3. Intégration MQTT
  4. Interface API étendue
  5. Support de configurations avancées

About

Web App to manage a Pico Relay Board from Waveshare with API's and a PWA app

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Web PWA APP de contrôle du module 8 relais WaveShare/Pico-W via via API's

Vue d'ensemble de la solution

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.

Architecture du Système

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

Caractéristiques principales

  • 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

Configuration

Configuration matérielle

RELAY_PINS= {
"1": 21, "2": 20, "3": 19, "4": 18,
"5": 17, "6": 16, "7": 15, "8": 14
}
LED_PIN=13BUZZER_PIN=6

Fichiers requis

  • secrets.py : Contient les informations de connexion WiFi et SSL
  • relay_states.json : Stockage persistant des états des relais
  • mm_wlan.py : Module de gestion WiFi

Composants matériels

  • Raspberry Pi Pico W
  • 8 relais
  • LED RGB (NeoPixel)
  • Buzzer
  • LED embarquée

API REST

Endpoints disponibles

État des relais

GET /relays

Retourne l'état de tous les relais

{
"1": false,
"2": true,
..."8": false
}

Contrôle d'un relai

POST /relay/<id>/<state>
  • id : Identifiant du relai (1-8)
  • state : État souhaité (0/1)

Contrôle de tous les relais

POST /allrelays/<state>
  • state : État souhaité (0/1)

Informations système

GET /system

Retourne 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"
}

Journal des événements

GET /events

Retourne les derniers événements système

Redémarrage

POST /reboot

Redémarre le système

Classes principales

Class Config

Gère la configuration centralisée :

  • Mapping des pins
  • Définitions des couleurs
  • Configuration système

Class PicoBoardRelay

Gère l'ensemble du système :

  • Initialisation des relais
  • Gestion des états
  • Journalisation
  • Surveillance système

Fonctionnalités

Gestion des relais

  • Contrôle individuel des relais
  • Contrôle groupé
  • Sauvegarde automatique des états
  • Restauration des états au démarrage

Surveillance système

  • Température du processeur
  • Tension d'alimentation
  • Utilisation mémoire
  • État de la connexion WiFi
  • Horodatage

Journalisation

  • Conservation des 200 derniers événements
  • Horodatage des événements
  • Types d'événements : INFO, WARNING, ERROR

Gestion des états

Persistance

Les états des relais sont sauvegardés dans relay_states.json :

{
"1": false,
"2": true,
..."8": false
}

Restauration

Au démarrage, le système :

  1. Charge les états sauvegardés
  2. Configure les relais selon ces états
  3. Initialise le système de journalisation

Surveillance système

Mesures disponibles

  • Température CPU
  • Tension d'alimentation
  • Mémoire libre/utilisée
  • État de la connexion réseau

Format des événements

{
"message": "INFO: Relay 1 set to True",
"time": "12:34:56",
"date": "31/12/2024"
}

Sécurité

  • Support SSL optionnel
  • Authentification WiFi
  • Stockage sécurisé des credentials dans secrets.py

Dépannage

Problèmes courants

  1. Perte de connexion WiFi

    • Vérifier les credentials dans secrets.py
    • Vérifier la portée du signal
  2. États des relais incorrects

    • Vérifier relay_states.json
    • Redémarrer le système
  3. Erreurs mémoire

    • Surveillance de l'utilisation mémoire via /system
    • Nettoyage automatique du journal des événements

Documentation de l'interface Web (PWA) Flask

Table des matières

Vue d'ensemble

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.

Configuration

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

Points d'Accès (Routes)

Routes Principales

RouteMéthodeDescription
/GET, POSTPage d'accueil avec état des relais
/relaisGET, POSTInterface de contrôle des relais
/systemGET, POSTInformations système
/parametersGET, POSTPage de paramètres
/eventsGET, POSTJournal des événements

Routes PWA

RouteMéthodeDescription
/__service-worker.jsGETService Worker pour PWA
/__manifest.jsonGETManifeste PWA

Routes API

RouteMéthodeDescription
/get_relay_stateGET, POSTObtenir l'état des relais
/rebootGET, POSTRedémarrer le Pico

Gestion des Erreurs

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

Diagnostic

  1. Vérification de connexion : http://<adresse_ip_pico>/system
  2. État des relais : http://<adresse_ip_pico>/relays
  3. Journal système : http://<adresse_ip_pico>/events

Développement Futur

Axes d'amélioration potentiels :

  1. Authentification utilisateur
  2. Planification des tâches
  3. Intégration MQTT
  4. Interface API étendue
  5. Support de configurations avancées

About

Web App to manage a Pico Relay Board from Waveshare with API's and a PWA app

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Web PWA APP de contrôle du module 8 relais WaveShare/Pico-W via via API's

Vue d'ensemble de la solution

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.

Architecture du Système

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

Caractéristiques principales

  • 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

Configuration

Configuration matérielle

RELAY_PINS= {
"1": 21, "2": 20, "3": 19, "4": 18,
"5": 17, "6": 16, "7": 15, "8": 14
}
LED_PIN=13BUZZER_PIN=6

Fichiers requis

  • secrets.py : Contient les informations de connexion WiFi et SSL
  • relay_states.json : Stockage persistant des états des relais
  • mm_wlan.py : Module de gestion WiFi

Composants matériels

  • Raspberry Pi Pico W
  • 8 relais
  • LED RGB (NeoPixel)
  • Buzzer
  • LED embarquée

API REST

Endpoints disponibles

État des relais

GET /relays

Retourne l'état de tous les relais

{
"1": false,
"2": true,
..."8": false
}

Contrôle d'un relai

POST /relay/<id>/<state>
  • id : Identifiant du relai (1-8)
  • state : État souhaité (0/1)

Contrôle de tous les relais

POST /allrelays/<state>
  • state : État souhaité (0/1)

Informations système

GET /system

Retourne 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"
}

Journal des événements

GET /events

Retourne les derniers événements système

Redémarrage

POST /reboot

Redémarre le système

Classes principales

Class Config

Gère la configuration centralisée :

  • Mapping des pins
  • Définitions des couleurs
  • Configuration système

Class PicoBoardRelay

Gère l'ensemble du système :

  • Initialisation des relais
  • Gestion des états
  • Journalisation
  • Surveillance système

Fonctionnalités

Gestion des relais

  • Contrôle individuel des relais
  • Contrôle groupé
  • Sauvegarde automatique des états
  • Restauration des états au démarrage

Surveillance système

  • Température du processeur
  • Tension d'alimentation
  • Utilisation mémoire
  • État de la connexion WiFi
  • Horodatage

Journalisation

  • Conservation des 200 derniers événements
  • Horodatage des événements
  • Types d'événements : INFO, WARNING, ERROR

Gestion des états

Persistance

Les états des relais sont sauvegardés dans relay_states.json :

{
"1": false,
"2": true,
..."8": false
}

Restauration

Au démarrage, le système :

  1. Charge les états sauvegardés
  2. Configure les relais selon ces états
  3. Initialise le système de journalisation

Surveillance système

Mesures disponibles

  • Température CPU
  • Tension d'alimentation
  • Mémoire libre/utilisée
  • État de la connexion réseau

Format des événements

{
"message": "INFO: Relay 1 set to True",
"time": "12:34:56",
"date": "31/12/2024"
}

Sécurité

  • Support SSL optionnel
  • Authentification WiFi
  • Stockage sécurisé des credentials dans secrets.py

Dépannage

Problèmes courants

  1. Perte de connexion WiFi

    • Vérifier les credentials dans secrets.py
    • Vérifier la portée du signal
  2. États des relais incorrects

    • Vérifier relay_states.json
    • Redémarrer le système
  3. Erreurs mémoire

    • Surveillance de l'utilisation mémoire via /system
    • Nettoyage automatique du journal des événements

Documentation de l'interface Web (PWA) Flask

Table des matières

Vue d'ensemble

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.

Configuration

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

Points d'Accès (Routes)

Routes Principales

RouteMéthodeDescription
/GET, POSTPage d'accueil avec état des relais
/relaisGET, POSTInterface de contrôle des relais
/systemGET, POSTInformations système
/parametersGET, POSTPage de paramètres
/eventsGET, POSTJournal des événements

Routes PWA

RouteMéthodeDescription
/__service-worker.jsGETService Worker pour PWA
/__manifest.jsonGETManifeste PWA

Routes API

RouteMéthodeDescription
/get_relay_stateGET, POSTObtenir l'état des relais
/rebootGET, POSTRedémarrer le Pico

Gestion des Erreurs

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

Diagnostic

  1. Vérification de connexion : http://<adresse_ip_pico>/system
  2. État des relais : http://<adresse_ip_pico>/relays
  3. Journal système : http://<adresse_ip_pico>/events

Développement Futur

Axes d'amélioration potentiels :

  1. Authentification utilisateur
  2. Planification des tâches
  3. Intégration MQTT
  4. Interface API étendue
  5. Support de configurations avancées

About

Web App to manage a Pico Relay Board from Waveshare with API's and a PWA app

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Web PWA APP de contrôle du module 8 relais WaveShare/Pico-W via via API's

Vue d'ensemble de la solution

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.

Architecture du Système

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

Caractéristiques principales

  • 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

Configuration

Configuration matérielle

RELAY_PINS= {
"1": 21, "2": 20, "3": 19, "4": 18,
"5": 17, "6": 16, "7": 15, "8": 14
}
LED_PIN=13BUZZER_PIN=6

Fichiers requis

  • secrets.py : Contient les informations de connexion WiFi et SSL
  • relay_states.json : Stockage persistant des états des relais
  • mm_wlan.py : Module de gestion WiFi

Composants matériels

  • Raspberry Pi Pico W
  • 8 relais
  • LED RGB (NeoPixel)
  • Buzzer
  • LED embarquée

API REST

Endpoints disponibles

État des relais

GET /relays

Retourne l'état de tous les relais

{
"1": false,
"2": true,
..."8": false
}

Contrôle d'un relai

POST /relay/<id>/<state>
  • id : Identifiant du relai (1-8)
  • state : État souhaité (0/1)

Contrôle de tous les relais

POST /allrelays/<state>
  • state : État souhaité (0/1)

Informations système

GET /system

Retourne 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"
}

Journal des événements

GET /events

Retourne les derniers événements système

Redémarrage

POST /reboot

Redémarre le système

Classes principales

Class Config

Gère la configuration centralisée :

  • Mapping des pins
  • Définitions des couleurs
  • Configuration système

Class PicoBoardRelay

Gère l'ensemble du système :

  • Initialisation des relais
  • Gestion des états
  • Journalisation
  • Surveillance système

Fonctionnalités

Gestion des relais

  • Contrôle individuel des relais
  • Contrôle groupé
  • Sauvegarde automatique des états
  • Restauration des états au démarrage

Surveillance système

  • Température du processeur
  • Tension d'alimentation
  • Utilisation mémoire
  • État de la connexion WiFi
  • Horodatage

Journalisation

  • Conservation des 200 derniers événements
  • Horodatage des événements
  • Types d'événements : INFO, WARNING, ERROR

Gestion des états

Persistance

Les états des relais sont sauvegardés dans relay_states.json :

{
"1": false,
"2": true,
..."8": false
}

Restauration

Au démarrage, le système :

  1. Charge les états sauvegardés
  2. Configure les relais selon ces états
  3. Initialise le système de journalisation

Surveillance système

Mesures disponibles

  • Température CPU
  • Tension d'alimentation
  • Mémoire libre/utilisée
  • État de la connexion réseau

Format des événements

{
"message": "INFO: Relay 1 set to True",
"time": "12:34:56",
"date": "31/12/2024"
}

Sécurité

  • Support SSL optionnel
  • Authentification WiFi
  • Stockage sécurisé des credentials dans secrets.py

Dépannage

Problèmes courants

  1. Perte de connexion WiFi

    • Vérifier les credentials dans secrets.py
    • Vérifier la portée du signal
  2. États des relais incorrects

    • Vérifier relay_states.json
    • Redémarrer le système
  3. Erreurs mémoire

    • Surveillance de l'utilisation mémoire via /system
    • Nettoyage automatique du journal des événements

Documentation de l'interface Web (PWA) Flask

Table des matières

Vue d'ensemble

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.

Configuration

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

Points d'Accès (Routes)

Routes Principales

RouteMéthodeDescription
/GET, POSTPage d'accueil avec état des relais
/relaisGET, POSTInterface de contrôle des relais
/systemGET, POSTInformations système
/parametersGET, POSTPage de paramètres
/eventsGET, POSTJournal des événements

Routes PWA

RouteMéthodeDescription
/__service-worker.jsGETService Worker pour PWA
/__manifest.jsonGETManifeste PWA

Routes API

RouteMéthodeDescription
/get_relay_stateGET, POSTObtenir l'état des relais
/rebootGET, POSTRedémarrer le Pico

Gestion des Erreurs

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

Diagnostic

  1. Vérification de connexion : http://<adresse_ip_pico>/system
  2. État des relais : http://<adresse_ip_pico>/relays
  3. Journal système : http://<adresse_ip_pico>/events

Développement Futur

Axes d'amélioration potentiels :

  1. Authentification utilisateur
  2. Planification des tâches
  3. Intégration MQTT
  4. Interface API étendue
  5. Support de configurations avancées

About

Web App to manage a Pico Relay Board from Waveshare with API's and a PWA app

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Web PWA APP de contrôle du module 8 relais WaveShare/Pico-W via via API's

Vue d'ensemble de la solution

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.

Architecture du Système

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

Caractéristiques principales

  • 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

Configuration

Configuration matérielle

RELAY_PINS= {
"1": 21, "2": 20, "3": 19, "4": 18,
"5": 17, "6": 16, "7": 15, "8": 14
}
LED_PIN=13BUZZER_PIN=6

Fichiers requis

  • secrets.py : Contient les informations de connexion WiFi et SSL
  • relay_states.json : Stockage persistant des états des relais
  • mm_wlan.py : Module de gestion WiFi

Composants matériels

  • Raspberry Pi Pico W
  • 8 relais
  • LED RGB (NeoPixel)
  • Buzzer
  • LED embarquée

API REST

Endpoints disponibles

État des relais

GET /relays

Retourne l'état de tous les relais

{
"1": false,
"2": true,
..."8": false
}

Contrôle d'un relai

POST /relay/<id>/<state>
  • id : Identifiant du relai (1-8)
  • state : État souhaité (0/1)

Contrôle de tous les relais

POST /allrelays/<state>
  • state : État souhaité (0/1)

Informations système

GET /system

Retourne 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"
}

Journal des événements

GET /events

Retourne les derniers événements système

Redémarrage

POST /reboot

Redémarre le système

Classes principales

Class Config

Gère la configuration centralisée :

  • Mapping des pins
  • Définitions des couleurs
  • Configuration système

Class PicoBoardRelay

Gère l'ensemble du système :

  • Initialisation des relais
  • Gestion des états
  • Journalisation
  • Surveillance système

Fonctionnalités

Gestion des relais

  • Contrôle individuel des relais
  • Contrôle groupé
  • Sauvegarde automatique des états
  • Restauration des états au démarrage

Surveillance système

  • Température du processeur
  • Tension d'alimentation
  • Utilisation mémoire
  • État de la connexion WiFi
  • Horodatage

Journalisation

  • Conservation des 200 derniers événements
  • Horodatage des événements
  • Types d'événements : INFO, WARNING, ERROR

Gestion des états

Persistance

Les états des relais sont sauvegardés dans relay_states.json :

{
"1": false,
"2": true,
..."8": false
}

Restauration

Au démarrage, le système :

  1. Charge les états sauvegardés
  2. Configure les relais selon ces états
  3. Initialise le système de journalisation

Surveillance système

Mesures disponibles

  • Température CPU
  • Tension d'alimentation
  • Mémoire libre/utilisée
  • État de la connexion réseau

Format des événements

{
"message": "INFO: Relay 1 set to True",
"time": "12:34:56",
"date": "31/12/2024"
}

Sécurité

  • Support SSL optionnel
  • Authentification WiFi
  • Stockage sécurisé des credentials dans secrets.py

Dépannage

Problèmes courants

  1. Perte de connexion WiFi

    • Vérifier les credentials dans secrets.py
    • Vérifier la portée du signal
  2. États des relais incorrects

    • Vérifier relay_states.json
    • Redémarrer le système
  3. Erreurs mémoire

    • Surveillance de l'utilisation mémoire via /system
    • Nettoyage automatique du journal des événements

Documentation de l'interface Web (PWA) Flask

Table des matières

Vue d'ensemble

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.

Configuration

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

Points d'Accès (Routes)

Routes Principales

RouteMéthodeDescription
/GET, POSTPage d'accueil avec état des relais
/relaisGET, POSTInterface de contrôle des relais
/systemGET, POSTInformations système
/parametersGET, POSTPage de paramètres
/eventsGET, POSTJournal des événements

Routes PWA

RouteMéthodeDescription
/__service-worker.jsGETService Worker pour PWA
/__manifest.jsonGETManifeste PWA

Routes API

RouteMéthodeDescription
/get_relay_stateGET, POSTObtenir l'état des relais
/rebootGET, POSTRedémarrer le Pico

Gestion des Erreurs

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

Diagnostic

  1. Vérification de connexion : http://<adresse_ip_pico>/system
  2. État des relais : http://<adresse_ip_pico>/relays
  3. Journal système : http://<adresse_ip_pico>/events

Développement Futur

Axes d'amélioration potentiels :

  1. Authentification utilisateur
  2. Planification des tâches
  3. Intégration MQTT
  4. Interface API étendue
  5. Support de configurations avancées

About

Web App to manage a Pico Relay Board from Waveshare with API's and a PWA app

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Web PWA APP de contrôle du module 8 relais WaveShare/Pico-W via via API's

Vue d'ensemble de la solution

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.

Architecture du Système

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

Caractéristiques principales

  • 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

Configuration

Configuration matérielle

RELAY_PINS= {
"1": 21, "2": 20, "3": 19, "4": 18,
"5": 17, "6": 16, "7": 15, "8": 14
}
LED_PIN=13BUZZER_PIN=6

Fichiers requis

  • secrets.py : Contient les informations de connexion WiFi et SSL
  • relay_states.json : Stockage persistant des états des relais
  • mm_wlan.py : Module de gestion WiFi

Composants matériels

  • Raspberry Pi Pico W
  • 8 relais
  • LED RGB (NeoPixel)
  • Buzzer
  • LED embarquée

API REST

Endpoints disponibles

État des relais

GET /relays

Retourne l'état de tous les relais

{
"1": false,
"2": true,
..."8": false
}

Contrôle d'un relai

POST /relay/<id>/<state>
  • id : Identifiant du relai (1-8)
  • state : État souhaité (0/1)

Contrôle de tous les relais

POST /allrelays/<state>
  • state : État souhaité (0/1)

Informations système

GET /system

Retourne 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"
}

Journal des événements

GET /events

Retourne les derniers événements système

Redémarrage

POST /reboot

Redémarre le système

Classes principales

Class Config

Gère la configuration centralisée :

  • Mapping des pins
  • Définitions des couleurs
  • Configuration système

Class PicoBoardRelay

Gère l'ensemble du système :

  • Initialisation des relais
  • Gestion des états
  • Journalisation
  • Surveillance système

Fonctionnalités

Gestion des relais

  • Contrôle individuel des relais
  • Contrôle groupé
  • Sauvegarde automatique des états
  • Restauration des états au démarrage

Surveillance système

  • Température du processeur
  • Tension d'alimentation
  • Utilisation mémoire
  • État de la connexion WiFi
  • Horodatage

Journalisation

  • Conservation des 200 derniers événements
  • Horodatage des événements
  • Types d'événements : INFO, WARNING, ERROR

Gestion des états

Persistance

Les états des relais sont sauvegardés dans relay_states.json :

{
"1": false,
"2": true,
..."8": false
}

Restauration

Au démarrage, le système :

  1. Charge les états sauvegardés
  2. Configure les relais selon ces états
  3. Initialise le système de journalisation

Surveillance système

Mesures disponibles

  • Température CPU
  • Tension d'alimentation
  • Mémoire libre/utilisée
  • État de la connexion réseau

Format des événements

{
"message": "INFO: Relay 1 set to True",
"time": "12:34:56",
"date": "31/12/2024"
}

Sécurité

  • Support SSL optionnel
  • Authentification WiFi
  • Stockage sécurisé des credentials dans secrets.py

Dépannage

Problèmes courants

  1. Perte de connexion WiFi

    • Vérifier les credentials dans secrets.py
    • Vérifier la portée du signal
  2. États des relais incorrects

    • Vérifier relay_states.json
    • Redémarrer le système
  3. Erreurs mémoire

    • Surveillance de l'utilisation mémoire via /system
    • Nettoyage automatique du journal des événements

Documentation de l'interface Web (PWA) Flask

Table des matières

Vue d'ensemble

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.

Configuration

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

Points d'Accès (Routes)

Routes Principales

RouteMéthodeDescription
/GET, POSTPage d'accueil avec état des relais
/relaisGET, POSTInterface de contrôle des relais
/systemGET, POSTInformations système
/parametersGET, POSTPage de paramètres
/eventsGET, POSTJournal des événements

Routes PWA

RouteMéthodeDescription
/__service-worker.jsGETService Worker pour PWA
/__manifest.jsonGETManifeste PWA

Routes API

RouteMéthodeDescription
/get_relay_stateGET, POSTObtenir l'état des relais
/rebootGET, POSTRedémarrer le Pico

Gestion des Erreurs

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

Diagnostic

  1. Vérification de connexion : http://<adresse_ip_pico>/system
  2. État des relais : http://<adresse_ip_pico>/relays
  3. Journal système : http://<adresse_ip_pico>/events

Développement Futur

Axes d'amélioration potentiels :

  1. Authentification utilisateur
  2. Planification des tâches
  3. Intégration MQTT
  4. Interface API étendue
  5. Support de configurations avancées

About

Web App to manage a Pico Relay Board from Waveshare with API's and a PWA app

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Web PWA APP de contrôle du module 8 relais WaveShare/Pico-W via via API's

Vue d'ensemble de la solution

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.

Architecture du Système

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

Caractéristiques principales

  • 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

Configuration

Configuration matérielle

RELAY_PINS= {
"1": 21, "2": 20, "3": 19, "4": 18,
"5": 17, "6": 16, "7": 15, "8": 14
}
LED_PIN=13BUZZER_PIN=6

Fichiers requis

  • secrets.py : Contient les informations de connexion WiFi et SSL
  • relay_states.json : Stockage persistant des états des relais
  • mm_wlan.py : Module de gestion WiFi

Composants matériels

  • Raspberry Pi Pico W
  • 8 relais
  • LED RGB (NeoPixel)
  • Buzzer
  • LED embarquée

API REST

Endpoints disponibles

État des relais

GET /relays

Retourne l'état de tous les relais

{
"1": false,
"2": true,
..."8": false
}

Contrôle d'un relai

POST /relay/<id>/<state>
  • id : Identifiant du relai (1-8)
  • state : État souhaité (0/1)

Contrôle de tous les relais

POST /allrelays/<state>
  • state : État souhaité (0/1)

Informations système

GET /system

Retourne 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"
}

Journal des événements

GET /events

Retourne les derniers événements système

Redémarrage

POST /reboot

Redémarre le système

Classes principales

Class Config

Gère la configuration centralisée :

  • Mapping des pins
  • Définitions des couleurs
  • Configuration système

Class PicoBoardRelay

Gère l'ensemble du système :

  • Initialisation des relais
  • Gestion des états
  • Journalisation
  • Surveillance système

Fonctionnalités

Gestion des relais

  • Contrôle individuel des relais
  • Contrôle groupé
  • Sauvegarde automatique des états
  • Restauration des états au démarrage

Surveillance système

  • Température du processeur
  • Tension d'alimentation
  • Utilisation mémoire
  • État de la connexion WiFi
  • Horodatage

Journalisation

  • Conservation des 200 derniers événements
  • Horodatage des événements
  • Types d'événements : INFO, WARNING, ERROR

Gestion des états

Persistance

Les états des relais sont sauvegardés dans relay_states.json :

{
"1": false,
"2": true,
..."8": false
}

Restauration

Au démarrage, le système :

  1. Charge les états sauvegardés
  2. Configure les relais selon ces états
  3. Initialise le système de journalisation

Surveillance système

Mesures disponibles

  • Température CPU
  • Tension d'alimentation
  • Mémoire libre/utilisée
  • État de la connexion réseau

Format des événements

{
"message": "INFO: Relay 1 set to True",
"time": "12:34:56",
"date": "31/12/2024"
}

Sécurité

  • Support SSL optionnel
  • Authentification WiFi
  • Stockage sécurisé des credentials dans secrets.py

Dépannage

Problèmes courants

  1. Perte de connexion WiFi

    • Vérifier les credentials dans secrets.py
    • Vérifier la portée du signal
  2. États des relais incorrects

    • Vérifier relay_states.json
    • Redémarrer le système
  3. Erreurs mémoire

    • Surveillance de l'utilisation mémoire via /system
    • Nettoyage automatique du journal des événements

Documentation de l'interface Web (PWA) Flask

Table des matières

Vue d'ensemble

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.

Configuration

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

Points d'Accès (Routes)

Routes Principales

RouteMéthodeDescription
/GET, POSTPage d'accueil avec état des relais
/relaisGET, POSTInterface de contrôle des relais
/systemGET, POSTInformations système
/parametersGET, POSTPage de paramètres
/eventsGET, POSTJournal des événements

Routes PWA

RouteMéthodeDescription
/__service-worker.jsGETService Worker pour PWA
/__manifest.jsonGETManifeste PWA

Routes API

RouteMéthodeDescription
/get_relay_stateGET, POSTObtenir l'état des relais
/rebootGET, POSTRedémarrer le Pico

Gestion des Erreurs

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

Diagnostic

  1. Vérification de connexion : http://<adresse_ip_pico>/system
  2. État des relais : http://<adresse_ip_pico>/relays
  3. Journal système : http://<adresse_ip_pico>/events

Développement Futur

Axes d'amélioration potentiels :

  1. Authentification utilisateur
  2. Planification des tâches
  3. Intégration MQTT
  4. Interface API étendue
  5. Support de configurations avancées

About

Web App to manage a Pico Relay Board from Waveshare with API's and a PWA app

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages