/********************************************************************************************************************************************************************************** Fichier GESTION_BDD.H Contient toutes les définitions liées à la gestion de la BDD **********************************************************************************************************************************************************************************/ // Maximums : #define MAX_LONGUEUR_REQUETE_MYSQL 3500 #define MAX_LONGUEUR_SOUS_REQUETE_MYSQL 1000 #define MAX_NOMBRE_CHAMPS_INTERNES 300 // Utilisé pour dimensionner les tableaux de pointeurs de décodage (exemple : champs 'Entrees' des Réservoirs, Batteries ou Capteurs) #define MAX_LONGUEUR_NOM_FICHIER_SAUVEGARDE_BDD 150 #define MAX_LONGUEUR_OPTION_COMMANDE_SAUVEGARDE_BDD 300 #define MAX_LONGUEUR_NOM_TABLE 50 #define MAX_NOMBRE_TABLES_FRAGMENTEES 20 #define MAX_LONGUEUR_NOM_CHAMP_BDD 80 // Valeurs fonctionnelles : #define MAX_TENTATIVES_CONNEXION_BDD 30 // Au démarrage, la connexion à la BDD sera tentée autant de fois, avec une attente de 1s entre chaque essais (permet à tous les services d'être prêts au démarrage) #define PERIODE_CHECK_SYNCHRO_WEB 10 // x 10ms #define PERIODE_MAJ_BDD 10 // x 100ms #define PERIODE_ENREGISTREMENT_MESURES 150 // x 100ms // Types d'init de la BDD : #define BDD_MODE_INIT_RESET 0 // Au démarrage après reset #define BDD_MODE_INIT_RELOAD 1 // Uniquement un rechargement des paramètres de config sur un système déjà démarré // Types d'enrehistrement de mesures : #define BDD_ENREGISTREMENT_MESURE_INIT 0 // Au démarrage après reset. Les valeurs enregistrées sont toutes à NULL avec date de dernier Heart-Beat connu #define BDD_ENREGISTREMENT_MESURE_NORMAL 1 // Enregistrement normal (date en cours et valeur courante) #define BDD_ENREGISTREMENT_MESURE_PONCTUEL 2 // Enregistrement d'une valeur poctuelle (notamment capteur configuré en mode MODE_ENREGISTREMENT_MESURES_CHANGEMENT_ETAT) // Types de demandes de mise à jour dans la BDD : #define BDD_TYPE_MAJ_AUCUNE 0 #define BDD_TYPE_MAJ_COURANTE 1 #define BDD_TYPE_MAJ_CONFIG 2 // Typde d'erreur K-Bus : #define DEFAUT_K_BUS_AUCUN 0 #define DEFAUT_K_BUS_MINEUR 1 #define DEFAUT_K_BUS_MAJEUR 2 // Types d'archivage : // Nb : les valeurs 0 et 1 étaient historiqueemnt utilisées et on n'a pas tout redécalé pour des raisons de simplicité... // D'autant que la valeur 0 est particulière pour les enregistrments de TB_Mesures_circuits... #define BDD_TYPE_ARCHIVAGE_1_HEURE 2 // L'archivage exécutera d'abord un Type 3 (5 minutes) puis un Type 2 (1h) dans la foulée #define BDD_TYPE_ARCHIVAGE_5_MINUTES 3 // Uniquement un Type 3 #define BDD_TYPE_ARCHIVAGE_PURGE_SEULE 10 #define BDD_TYPE_ARCHIVAGE_1_HEURE_ET_PURGE 12 // L'archivage exécutera d'abord un Type 3 (5 minutes) puis un Type 2 (1h) dans la foulée puis une purge [ce type d'appel est déconseillé car il cumule les 3 traitements !] #define BDD_TYPE_ARCHIVAGE_5_MINUTES_ET_PURGE 13 // L'archivage exécutera d'abord un Type 3 (5 minutes) puis une purge dans la foulée // Modes enregistrement des mesures #define MODE_ENREGISTREMENT_MESURES_AUCUN 0 // Aucun enregistrement de mesures #define MODE_ENREGISTREMENT_MESURES_PERIODIQUE 1 // Enregistrement des mesures périodique avec intégration sur la période et création de nouvelles mesures uniquement lorsque le seuil de marge est dépassé #define MODE_ENREGISTREMENT_MESURES_CHANGEMENT_ETAT 2 // Enregistrement d'une mesure sans cumul, chaque fois que le seuil de marge est dépassé // Modes enregistrement de l'historique #define MODE_ENREGISTREMENT_HISTORIQUE_AUCUN 0 // Les changements d'état ne sont pas enregistrés dans l'historique #define MODE_ENREGISTREMENT_HISTORIQUE_NORMAL 1 // Les changements d'état dont enregistrés dans l'historique // Type mesure : #define SOURCE_MESURE_CIRCUIT 1 #define SOURCE_MESURE_CAPTEUR 2 #define SOURCE_MESURE_RESERVOIR 3 #define SOURCE_MESURE_BATTERIE 4 // Etat fichier download: #define ETAT_FICHIER_DOWNLOAD_LISTE 0 #define ETAT_FICHIER_DOWNLOAD_TELECHARGE 1 #define ETAT_FICHIER_DOWNLOAD_VERIFIE 2 #define ETAT_FICHIER_DOWNLOAD_UPLOADE_COMPAGNON 3 #define ETAT_FICHIER_DOWNLOAD_UPLOADE_EXTENSION 4 #define ETAT_FICHIER_DOWNLOAD_INSTALLE_EXECUTE 5 #define ETAT_FICHIER_DOWNLOAD_ARCHIVE 6 #define ETAT_FICHIER_DOWNLOAD_EFFACE 7 // Codes prédéfinis de messages aux users : #define MESSAGE_USERS_CODE_AUCUN 0 #define MESSAGE_USERS_CODE_FIN_MINUTEUR 1 // Paramètres = 'compteur_initial' au format 'hh:mm:ss' #define MESSAGE_USERS_CODE_REVEIL 2 // Paramètres = 'condition_horaire' au format '[jour_semaine] @ [hh:mm]' #define MESSAGE_USERS_CODE_MAJ_EN_COURS 3 // Paramètres = 'id_module';'avancement_en_%' (id_module: -1=démarrage, 0-N=Id_module en cours, -2=fin) #define MESSAGE_USERS_CODE_REDEMARRAGE 4 // Paramètres = 'temps_restant' en ms ou rien #define MESSAGE_USERS_CODE_NOUVELLE_VERSION_DETECTEE 5 // Paramètres = 'ancienne version';'nouvelle version' #define MESSAGE_USERS_CODE_DEFAUT_CONFIG_K_BUS 6 // Paramètres = 'adresse_k_bus du premier module Nok';'Type_module_physique à cette adresse (yc -1 pour type inconnu)';'Type module configuré'. // Il peut donc y avoir : - Physique inconnu (pas de module physique à cette adresse) + config d'un type connu => vérifier K-bus entre module (@Adr-1) et module (@Adr) // - Physique connu + config d'un autre type ==> Il est probable qu'un/des modules aient été ajoutés/enlevés/déplacés ==> Aller dans config-K-Bus #define MESSAGE_USERS_CODE_DECLENCHEMENT_EVENT 7 // Paramètres = 'id_event' // Etat du message users : #define MESSAGE_USERS_ETAT_SUPPRESSION -1 #define MESSAGE_USERS_ETAT_INFO 0 #define MESSAGE_USERS_ETAT_ALERTE 1 #define MESSAGE_USERS_ETAT_URGENT 2 // Historique : // Valeur principale (Système, Circuits, Capteurs, ... ne sert qu'à router sur la bonne table : TB_Historique_systeme, TB_Historique_circuits, etc...) // Event en uint8_t (valeur par défaut = 0) // ID en int (cle primaire de l'élément concerné) // Valeur en int (valeur par défaut = 0) // Complément en texte //------------------------------------------------------------- #define TYPE_SOURCE_HISTORIQUE_SYSTEME 0 #define SYSTEME_REINIT 1 // Réinitialisation de l'application #define SYSTEME_ERREUR_MYSQL 2 #define SYSTEME_CONNEXION_USER 3 #define SYSTEME_REBOOT 4 // Reboot du système #define SYSTEME_ARRET 5 #define SYSTEME_TIME_OUT_CONNEXION 6 #define SYSTEME_DECONNEXION_USER 7 #define SYSTEME_CONFIGURATION_INVALIDE_DEMARRAGE_IMPOSSIBLE 8 #define SYSTEME_SIGNAL_RECU 9 // La valeur du signal reçu est stocké dans Valeur #define SYSTEME_DEMANDE_REINIT 10 #define SYSTEME_CHANGEMENT_VEILLE 11 // La nouvelle valeur de 'veille' est stockée dans Valeur #define SYSTEME_ERREUR_SAUVEGARDE_BDD 12 // Le message d'info sur l'erreur est stocké dans le complément. #define SYSTEME_MODEM_DEMANDE_ACTIVATION 20 // La Valeur indique dans quel sens (On ou Off) #define SYSTEME_MODEM_CHANGEMENT_ETAT 21 // La Valeur indique dans quel sens (On ou Off) #define SYSTEME_MODEM_ERREUR_CHANGEMENT_ETAT 22 // La Valeur indique dans quel sens (On ou Off) le changement était demandé et a échoué #define SYSTEME_MODEM_ERREUR_ETABLISSEMENT_LIAISON 23 #define SYSTEME_MODEM_CHANGEMENT_ETAT_NON_SOLLICITE 24 // La Valeur indique dans quel sens (On ou Off) le modem se trouve alors qu'il ne devrait pas #define SYSTEME_MODEM_CHANGEMENT_REVISION_FIRMWARE 25 // La valeur de révision est stockée dans Complément #define SYSTEME_MODEM_CHANGEMENT_IMEI 26 // Le n° est stocké dans Complément #define SYSTEME_MODEM_CHANGEMENT_IMSI 27 // Le n° est stocké dans Complément #define SYSTEME_MODEM_CHANGEMENT_ICCID 28 // Le n° est stocké dans Complément #define SYSTEME_MODEM_CHANGEMENT_NO_TELEPHONE 29 // Le n° est stocké dans Complément #define SYSTEME_MODEM_CHANGEMENT_APN 30 // Le n° est stocké dans Complément #define SYSTEME_MODEM_ERREUR_FTP 31 // Le code d'erreur reçu du modem est stocké dans Valeur et la réponse complète du modem dans Complement #define SYSTEME_MODEM_ERREUR_GNSS 32 // Le cycle d'acquisition n'a pas pu être réalisé complètement. Le nombre de cycles valides est indiqué dans Valeur. #define SYSTEME_MODEM_ERREUR_M_BUS_PLEIN 33 // Le nombre de refus de nouvelle commande dans le buffer de commandes est trop important. Le nb de refus consécutifs est dans Valeur #define SYSTEME_MODEM_PERTE_LIAISON_4G_LTE 34 #define SYSTEME_MODEM_ETABLISSEMENT_LIAISON_4G_LTE 35 #define SYSTEME_MODULES_NOUVEAU_MODULE 40 // L'adresse K-Bus où est apparu le module est dans 'id'. Le Type de module est dans Valeur. L'adresse MAC est dans Complément #define SYSTEME_MODULES_SUPPRESSION_MODULE 41 // L'adresse K-Bus où était le module est dans 'id'. Le Type de module est dans Valeur. L'adresse MAC est dans Complément #define SYSTEME_FTP_UPLOAD_FICHIER_DEBUT_OK 50 // Le nom du fichier source et du fichier destination sont stockés dans complément. La taille dans valeur #define SYSTEME_FTP_UPLOAD_FICHIER_DEBUT_NOK 51 // Le nom du fichier source et du fichier destination sont stockés dans complément. La taille dans valeur #define SYSTEME_FTP_UPLOAD_FICHIER_FIN_OK 52 // Le nom du fichier source et du fichier destination sont stockés dans complément. La taille dans valeur #define SYSTEME_FTP_UPLOAD_FICHIER_FIN_NOK 53 // Le nom du fichier source et du fichier destination sont stockés dans complément #define SYSTEME_FTP_DOWNLOAD_FICHIER_DEBUT_OK 60 // Le nom du fichier source et du fichier destination sont stockés dans complément. #define SYSTEME_FTP_DOWNLOAD_FICHIER_DEBUT_NOK 61 // Le nom du fichier source et du fichier destination sont stockés dans complément. La taille dans valeur #define SYSTEME_FTP_DOWNLOAD_FICHIER_FIN_OK 62 // Le nom du fichier source et du fichier destination sont stockés dans complément. #define SYSTEME_FTP_DOWNLOAD_FICHIER_FIN_NOK 63 // Le nom du fichier source et du fichier destination sont stockés dans complément. La taille dans valeur #define SYSTEME_FTP_DOWNLOAD_LIST_NOK 64 // Le nom du fichier de LIST est stocké dans complément. #define SYSTEME_FTP_DOWNLOAD_NOMBRE_FICHIERS_LOCAUX_TROP_ELEVE 65 // Le nombre maxi admissible est stocké dans Valeur #define SYSTEME_FTP_DOWNLOAD_NOMBRE_FICHIERS_SERVEUR_TROP_ELEVE 66 // Le nombre maxi admissible est stocké dans Valeur #define SYSTEME_EXECUTION_BASH_DEBUT_OK 70 // Le nom du fichier utilisé pour l'upload est dans le complément. #define SYSTEME_EXECUTION_BASH_DEBUT_NOK 71 // Le nom du fichier utilisé pour l'upload est dans le complément. #define SYSTEME_EXECUTION_BASH_FIN_OK 72 // Le nom du fichier utilisé pour l'upload est dans le complément. #define SYSTEME_EXECUTION_BASH_FIN_NOK 73 // Le nom du fichier utilisé pour l'upload est dans le complément. #define SYSTEME_COPIE_ARCHIVE_A_VALIDER_OK 74 // Le nom du fichier est dans le complément. #define SYSTEME_COPIE_ARCHIVE_A_VALIDER_NOK 75 // Le nom du fichier est dans le complément. #define SYSTEME_COPIE_ARCHIVE_A_CHARGER_OK 76 // Le nom du fichier est dans le complément. #define SYSTEME_COPIE_ARCHIVE_A_CHARGER_NOK 77 // Le nom du fichier est dans le complément. #define SYSTEME_CHARGEMENT_CODE_DEBUT_OK 80 // Le nom du fichier utilisé pour l'upload est dans le complément. Le n° de la carte dans ID #define SYSTEME_CHARGEMENT_CODE_DEBUT_NOK 81 // Le nom du fichier utilisé pour l'upload est dans le complément. Le n° de la carte dans ID #define SYSTEME_CHARGEMENT_CODE_ERASE_FLASH_NOK 82 // Le nom du fichier utilisé pour l'upload est dans le complément. Le n° de la carte dans ID #define SYSTEME_CHARGEMENT_CODE_ECRITURE_FLASH_NOK 83 // Le nom du fichier utilisé pour l'upload est dans le complément. Le n° de la carte dans ID #define SYSTEME_CHARGEMENT_CODE_CRC_FLASH_NOK 84 // Le nom du fichier utilisé pour l'upload est dans le complément. Le n° de la carte dans ID #define SYSTEME_CHARGEMENT_CODE_FIN_OK 85 // Le nom du fichier utilisé pour l'upload est dans le complément. Le n° de la carte dans ID #define SYSTEME_CHARGEMENT_CODE_FIN_NOK 86 // Le nom du fichier utilisé pour l'upload est dans le complément. Le n° de la carte dans ID #define SYSTEME_UART_BUFFER_RX_PLEIN 100 // Valeur précise quel UART #define SYSTEME_BUS_BUFFER_COMMANDES_PLEIN 101 // Valeur précise quel bus ('M' ou 'C') #define SYSTEME_BACKLIGHT_CHANGEMENT_CONSIGNE 110 // La valeur indique la nouvelle consigne #define SYSTEME_VOLUME_CHANGEMENT_CONSIGNE 111 // La valeur indique la nouvelle consigne #define SYSTEME_LEDS_CHANGEMENT_CONSIGNE 112 // La valeur indique la nouvelle consigne #define SYSTEME_WIFI_MISE_A_JOUR_CONFIG 130 // Les informations sur la nouvelle config sont stockées dans Complément //------------------------------------------------------------- #define TYPE_SOURCE_HISTORIQUE_CIRCUITS 1 #define CIRCUIT_CHANGEMENT_CONSIGNE 1 // La nouvelle valeur de consigne est stockée dans Valeur. De plus, Complément comprend 'origine_consigne/id_origine_consigne'. #define CIRCUIT_OK 10 // La valeur de limitation (en mA) est stockée dans Valeur #define CIRCUIT_LIMITATION 11 // La valeur de limitation (en mA) est stockée dans Valeur #define CIRCUIT_PROTECTION 12 // La valeur de limitation (en mA) est stockée dans Valeur #define CIRCUIT_DISJONCTE 13 // La valeur de limitation (en mA) est stockée dans Valeur #define CIRCUIT_CC_BATTERIE 14 // La valeur de limitation (en mA) est stockée dans Valeur #define CIRCUIT_DELESTAGE 15 // La valeur de limitation (en mA) est stockée dans Valeur #define CIRCUIT_CREATION 20 #define CIRCUIT_MODIFICATION 21 #define CIRCUIT_SUPPRESSION 22 #define CIRCUIT_CONFIGURATION_INVALIDE 30 // L'ID précise la clé primaire. Valeur contient l'ID_Carte actuellement configuré #define CIRCUIT_EXPIRATION_TIME_OUT 40 // La valeur initiale du time-out est stockée dans Valeur #define CIRCUIT_ACTION_EVENT 50 // L'ID précise la clé primaire. Valeur contient la clé_primaire de l'event qui a déclenché l'action sur le circuit //------------------------------------------------------------- #define TYPE_SOURCE_HISTORIQUE_CAPTEURS 2 #define CAPTEUR_PASSAGE_OK 1 // L'ID précise la clé primaire. VAleur contient la valeur du capteur au moment du changement #define CAPTEUR_PASSAGE_ALERTE 2 // L'ID précise la clé primaire. VAleur contient la valeur du capteur au moment du changement #define CAPTEUR_PASSAGE_ALARME 3 // L'ID précise la clé primaire. VAleur contient la valeur du capteur au moment du changement #define CAPTEUR_OW_DEVICE_OK 40 // L'ID précise la clé primaire. Complément contient le Rom_code du device One_wire #define CAPTEUR_OW_DEVICE_NOK 41 // L'ID précise la clé primaire. Complément contient le Rom_code du device One_wire #define CAPTEUR_OW_BUS_NOK 42 // L'ID précise la clé primaire. Complément contient le Rom_code du device One_wire //------------------------------------------------------------- #define TYPE_SOURCE_HISTORIQUE_RESERVOIRS 3 #define RESERVOIR_PASSAGE_NIVEAU_NORMAL 1 // L'ID précise le Réservoir. La valeur indique l'ancien état #define RESERVOIR_PASSAGE_NIVEAU_ALERTE 2 // L'ID précise le Réservoir. La valeur indique l'ancien état #define RESERVOIR_PASSAGE_NIVEAU_ALARME 3 // L'ID précise le Réservoir. La valeur indique l'ancien état //------------------------------------------------------------- #define TYPE_SOURCE_HISTORIQUE_BATTERIES 4 #define BATTERIE_ALARME_TEMPERATURE (BATTERIE_VARIABLE_TEMPERATURE + 1) // L'ID précise la batterie. La valeur indique l'état : 0=Ok, 1=Défaut seuil bas, 2=Défaut seuil haut, 3=Défaut seuil haut ET seuil bas, 99=Défaut calcul ou capteur (état inconnu) #define BATTERIE_ALARME_TENSION (BATTERIE_VARIABLE_TENSION + 1) // L'ID précise la batterie. La valeur indique l'état : 0=Ok, 1=Défaut seuil bas, 2=Défaut seuil haut, 3=Défaut seuil haut ET seuil bas, 99=Défaut calcul ou capteur (état inconnu) #define BATTERIE_ALARME_COURANT_DIFFERENTIEL (BATTERIE_VARIABLE_COURANT_DIFFERENTIEL + 1) // L'ID précise la batterie. La valeur indique l'état : 0=Ok, 1=Défaut seuil bas, 2=Défaut seuil haut, 3=Défaut seuil haut ET seuil bas, 99=Défaut calcul ou capteur (état inconnu) #define BATTERIE_ALARME_COURANT_CHARGE (BATTERIE_VARIABLE_COURANT_CHARGE + 1) // L'ID précise la batterie. La valeur indique l'état : 0=Ok, 1=Défaut seuil bas, 2=Défaut seuil haut, 3=Défaut seuil haut ET seuil bas, 99=Défaut calcul ou capteur (état inconnu) #define BATTERIE_ALARME_COURANT_DECHARGE (BATTERIE_VARIABLE_COURANT_DECHARGE + 1) // L'ID précise la batterie. La valeur indique l'état : 0=Ok, 1=Défaut seuil bas, 2=Défaut seuil haut, 3=Défaut seuil haut ET seuil bas, 99=Défaut calcul ou capteur (état inconnu) #define BATTERIE_ALARME_SOH (BATTERIE_VARIABLE_SOH + 1) // L'ID précise la batterie. La valeur indique l'état : 0=Ok, 1=Défaut seuil bas, 2=Défaut seuil haut, 3=Défaut seuil haut ET seuil bas, 99=Défaut calcul ou capteur (état inconnu) #define BATTERIE_ALARME_SOC (BATTERIE_VARIABLE_SOC + 1) // L'ID précise la batterie. La valeur indique l'état : 0=Ok, 1=Défaut seuil bas, 2=Défaut seuil haut, 3=Défaut seuil haut ET seuil bas, 99=Défaut calcul ou capteur (état inconnu) #define BATTERIE_ALARME_AUTONOMIE (BATTERIE_VARIABLE_AUTONOMIE + 1) // L'ID précise la batterie. La valeur indique l'état : 0=Ok, 1=Défaut seuil bas, 2=Défaut seuil haut, 3=Défaut seuil haut ET seuil bas, 99=Défaut calcul ou capteur (état inconnu) #define BATTERIE_ALARME_PUISSANCE (BATTERIE_VARIABLE_PUISSANCE + 1) // L'ID précise la batterie. La valeur indique l'état : 0=Ok, 1=Défaut seuil bas, 2=Défaut seuil haut, 3=Défaut seuil haut ET seuil bas, 99=Défaut calcul ou capteur (état inconnu) #define BATTERIE_RX_CDE_FORCAGE_PLEINE_CHARGE 11 // L'ID précise la batterie. #define BATTERIE_RX_CDE_RESET_SOH 12 // L'ID précise la batterie. #define BATTERIE_RX_CDE_RESET_COMPTEURS 13 // L'ID précise la batterie. //------------------------------------------------------------- #define TYPE_SOURCE_HISTORIQUE_USB 5 #define USB_CHANGEMENT_CONSIGNE 1 // La valeur indique le nouvel état. L'ID contient le n° du port (1 pour ports Avant ou 4 pour port Arrière) #define USB_PASSAGE_OK 10 // L'ID contient le n° du port (1 à 3 ou 4 pour arrière) #define USB_PASSAGE_DEFAUT 11 // L'ID contient le n° du port (1 à 3 ou 4 pour arrière) //------------------------------------------------------------- #define TYPE_SOURCE_HISTORIQUE_EVENTS 6 #define EVENT_DECLENCHEMENT 1 // L'ID contient la cle_primaire de l'event