2510_RegulationChauffage
|
Fonctions | |
start_webui_server () | |
Lance le serveur web local dans un thread séparé. | |
save_last_state (channel=None, resistance_ohm=None, temperature_c=None, temperature_sim_c=None, error=None) | |
Sauvegarde l'état courant et historique par canal dans un fichier JSON. | |
signal_handler (sig, frame) | |
Gestionnaire POSIX pour les signaux (Ctrl+C). | |
input_monitor () | |
Thread d'écoute des commandes utilisateur depuis stdin. | |
show_error_and_continue (error_pattern, sleep_time=2) | |
Affiche un motif LED d'erreur pendant un temps donné puis remet l'indicateur en mode 'sequence_running'. | |
run_measurement_sequence (cfg, mac_address, adc, tmux) | |
Exécute une séquence complète de mesures pour tous les canaux activés selon la configuration fournie. | |
reload_timing_config () | |
Recharge les paramètres de temporisation depuis le fichier de configuration. | |
main () | |
Point d'entrée principal du programme. |
Variables | |
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) | |
SRC_DIR = os.path.dirname(CURRENT_DIR) | |
bool | sequencer_running = False |
stop_event = threading.Event() | |
force_sequence = threading.Event() | |
led_indicator = None |
app.main.input_monitor | ( | ) |
Thread d'écoute des commandes utilisateur depuis stdin.
Permet de forcer une séquence (touche Entrée ou 's') ou de demander l'arrêt ('q'). Les exceptions d'E/S sont gérées pour permettre la terminaison propre du thread.
app.main.main | ( | ) |
Point d'entrée principal du programme.
Parse les arguments de la ligne de commande, initialise le matériel (GPIO, ADC, MUX), le gestionnaire LED, et exécute le séquenceur en mode automatique ou manuel selon la configuration.
app.main.reload_timing_config | ( | ) |
Recharge les paramètres de temporisation depuis le fichier de configuration.
Lit uniquement les paramètres de temporisation pour mise à jour dynamique sans perturber le reste du système. Utilisé pour permettre la modification des intervalles de séquence et du mode automatique via l'interface web.
app.main.run_measurement_sequence | ( | cfg, | |
mac_address, | |||
adc, | |||
tmux ) |
Exécute une séquence complète de mesures pour tous les canaux activés selon la configuration fournie.
Pour chaque canal actif : sélection du rref, configuration ADC, lecture des valeurs, conversion en température, envoi API, calcul de la température simulée et application via le simulateur de résistance. Les motifs LED sont ajustés en fonction des erreurs.
cfg | Dictionnaire de configuration chargé depuis JSON. |
mac_address | Adresse MAC ou identifiant pour les appels API. |
adc | Instance de l'ADC (Ads124s08). |
tmux | Instance du multiplexeur (Tmux1204). |
app.main.save_last_state | ( | channel = None, | |
resistance_ohm = None, | |||
temperature_c = None, | |||
temperature_sim_c = None, | |||
error = None ) |
Sauvegarde l'état courant et historique par canal dans un fichier JSON.
Crée le dossier state si nécessaire, lit le fichier last_state.json existant, met à jour les informations du canal fourni et écrit le document au format JSON. Les erreurs internes sont capturées et affichées sur la sortie standard.
channel | Numéro du canal (ou None). |
resistance_ohm | Résistance mesurée (ou None). |
temperature_c | Température mesurée [°C] (ou None). |
temperature_sim_c | Température simulée [°C] (ou None). |
error | Message d'erreur s'il y en a un (ou None). |
app.main.show_error_and_continue | ( | error_pattern, | |
sleep_time = 2 ) |
Affiche un motif LED d'erreur pendant un temps donné puis remet l'indicateur en mode 'sequence_running'.
error_pattern | Nom du motif LED à afficher. |
sleep_time | Durée d'affichage en secondes (par défaut 2s). |
app.main.signal_handler | ( | sig, | |
frame ) |
Gestionnaire POSIX pour les signaux (Ctrl+C).
Met le drapeau sequencer_running à False et déclenche l'événement stop_event pour demander un arrêt propre.
sig | Signal reçu (int). |
frame | Contexte d'exécution (non utilisé). |
app.main.start_webui_server | ( | ) |
Lance le serveur web local dans un thread séparé.
Import dynamique du module webui.webui_server et démarrage de l'application Flask/WSGI. Les exceptions sont interceptées et converties en messages sur la sortie standard pour ne pas interrompre le thread principal.
app.main.CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) |
app.main.force_sequence = threading.Event() |
app.main.led_indicator = None |
bool app.main.sequencer_running = False |
app.main.SRC_DIR = os.path.dirname(CURRENT_DIR) |
app.main.stop_event = threading.Event() |