eeBud

Bibliothèque eeBud Server Manager

Table des matières

Je découvre l'ESP32, plutôt pas mal pour de la domotique!

Je crée une bibliothèque pour gérer et faciliter la connexion de l’ESP au wifi.

Elle permet la création d’un index et aussi le stockage de données dans la mémoire flash.

Le but final étant de contrôler tout appareil (ampoule, moteur…) à distance, et d’ajouter ce module à mon serveur domotique principal. (Pour moi, Jeedom)

Versions: Quoi de neuf?

  • 06/11/2023 
      • Mise à jour logicielle distante possible
      • Cryptage des données sensibles stockées en mémoire flash. (Un re paramétrage des réseau est donc nécessaire)
      • Je rends obsolète: IndexResetEvent. Le reset se fait maintenant automatiquement.
      • Révision et diminution de la taille des variables.
      • Ajout de:
        •  ResetButton(int PIN_Button, int PIN_Led)
        • IndexSetEvent(int ID)
        • IndexSetListByOption
  • 26/06/2023 
      • Il est possible de modifier les couleurs de l’index et des menus.
      • Possibilité de créer des tuiles sur l’index.
      • Possibilité de créer des conteneurs sur l’index.
      • Possibilité de créer des tableaux sur l’index.
      • La création de listes sur l’index est maintenant possible.
  • 14/10/2022

    – Création de la bibliothèque

Explications

eeBud Server Manager nécessite les bibliothèques suivantes:

Vous devez donc les télécharger et les décompresser dans le dossier “libraries” Arduino ainsi donc que eeBud server manager.

eeBud Server Manager vous permettra de créer simplement un portail web pour gérer vos actions sur l’ESP. Il vous permettra de sauvegarder des données dans la mémoire flash SPIFFS.

La bibliothèque gèrera la de connexion wifi de l’esp32 (Point d’accès, connexion au réseau local, perte de connexion…).

Lors du premier démarrage, il créera son point d’accès wifi et lorsque connecté, il vous proposera de paramétrer l’ESP pour une connexion à votre réseau local.

Il sera également possible de piloter les sorties de l’ESP via le point d’accès.

 

Fonctions principales

				
					void SetUser(Nom")
				
			

Par défaut le nom d’utilisateur est “admin”, mais celui-ci peut être changé via cette fonction.

				
					void eeBudServerManager.Init()
				
			

Doit être placé dans le setup.

Permet l’initialisation de tout le processus:

  • La création de la base des fichiers dans la mémoire flash (SPIFFS) lors de la première mise en route
  • Le création du point d’accès réseau pour le paramétrage wifi
  • De la connexion wifi à vos réseaux
				
					int eeBudServerManager.IndexAddButton("Nom")
				
			

Doit être placé dans le setup.

Permet l’ajout d’un bouton sur l’index du serveur (la page d’accueil).

L’ID du bouton (int) sera la valeur qui sera retournée. Cet ID servira par exemple à l’allumage d’une lampe.

 

				
					int* eeBudServerManager.IndexAddToogle("Nom", "Valeur 0", "Valeur 1", "Valeur par défaut")
				
			

Doit être placé dans le setup.

Permet l’ajout d’un bouton basculant sur l’index.

Deux ID pourront alors être retournées: int[0] et int[1].

 

				
					int eeBudServerManager.IndexAddInfo("Nom", "Unité", "Taille de la police") //en pixels ne pas mettre px
				
			

Doit être placé dans le setup.

Permet l’ajout d’un texte sur l’index du serveur.

L’ID (int) devra être utilisé pour le renvoi de l’information au serveur (Par exemple pour le renvoi d’une température).

 

				
					void eeBudServerManager.IndexAddTitle("Nom", "Taille de la police") //en pixels ne pas mettre px
				
			

Doit être placé dans le setup.

Permet l’ajout d’un Titre sur l’index du serveur.

 

				
					int eeBudServerManager.IndexAddColor("Nom", Defaut_R, Defaut_G, Defaut_B) 
				
			

Doit être placé dans le setup.

Permet l’ajout d’une couleur paramétrable sur l’index.

L’ID (int) devra être utilisé pour récupérer les valeurs de R, G et B.

 

				
					void IndexSetColor(int ID, int R, int G, int B)
				
			

Attribue une couleur à la couleur paramétrée ci-dessus.

				
					int eeBudServerManager.IndexAddRange("Nom", Min, Max, Defaut) 
				
			

Doit être placé dans le setup.

Permet l’ajout d’un curseur de nombres entiers.

L’ID (int) devra être utilisé pour récupérer la valeur du curseur.

				
					int eeBudServerManager.IndexAddList("Nom de la liste", "Nom de l'item") 
				
			

Doit être placé dans le setup.

Permet l’ajout d’une liste sur l’index.

Ex:

				
					//SETUP
int Premier_Element = Serveur.IndexAddList("Liste de démonstration", "Premier élément");
int Deuxieme_Element = Serveur.IndexAddList("Liste de démonstration", "Deuxième élément");
int Troisieme_Element = Serveur.IndexAddList("Liste de démonstration", "Troisieme élément");

//LOOP
if (Event == Premier_Element) //Action lors de la sélection du premier élément
else if (Event == Deuxieme_Element) //Action lors de la sélection du second élément
else if (Event == Troisieme_Element) //Action lors de la sélection du troisième élément
				
			
				
					void IndexSetList(int ID)
				
			

Attribue une valeur à la liste paramétrée ci-dessus.

				
					void eeBudServerManager.IndexAddHTML("Texte HTML") 
				
			

Doit être placé dans le setup.

Permet l’ajout d’un code html sur l’index.

				
					void IndexDarkColor(String HTML_Color);
  void IndexLightColor(String HTML_Color);
  void IndexActiveColor(String HTML_Color);
  void IndexTextColor(String HTML_Color);
				
			

Doit être placé dans le setup.

Permet la modification des couleurs de l’index.

				
					void eeBudServerManager.IndexBackgroundStart() 
				
			

Doit être placé dans le setup.

Annonce le début de l’ajout d’un fond sur l’index.

				
					void eeBudServerManager.IndexBackgroundFinish() 
				
			

Doit être placé dans le setup.

Annonce la fin de l’ajout d’un fond sur l’index.

				
					int eeBudServerManager.IndexTileStart(Largeur, "Couleur html") 
    //Contenu de la tuile (Boutons, boutons basculants ou autres informations)
void IndexTileFinish();
				
			

Doit être placé dans le setup.

Permet l’ajout d’une tuile de couleur pleine sur l’index.

				
					int eeBudServerManager.IndexTileWhiteStart(Largeur, "Couleur de la bordure html") 
    //Contenu de la tuile (Boutons, boutons basculants ou autres informations)
void IndexTileFinish();
				
			

Doit être placé dans le setup.

Permet l’ajout d’une tuile blanche avec bordure sur l’index.

				
					void eeBudServerManager.IndexAddSeg()
				
			

Ajoute une séparation visuelle sur l’index.

				
					void eeBudServerManager.IndexAddSegWhite()
				
			

Ajoute une séparation visuelle blanche sur l’index.

				
					void IndexContainerStart(int Width);
  void IndexContainerFinish();

				
			

Doit être placé dans le setup.

Permet la création d’un conteneur sur l’index.

				
					void IndexTableStart();
  void IndexTableFinish();
  void IndexRowStart(int Height);
  void IndexRowFinish();
  void IndexCellStart(int Rowspan, int Cellspan, String Align);
  void IndexCellFinish();

				
			

Doit être placé dans le setup.

Permet la création de tableaux html sur l’index. (Pour, par exemple placer les tuiles les unes à côté des autres)

				
					void eeBudServerManager.IndexSetToogle(ID)
				
			

Permet de renvoyer l’information au bouton basculant (L’action a bien été réalisée).

ex: J’allume la LED Verte avec le bouton basculant (bouton[0]/bouton[1] >> dans la fonction qui allume la LED, on placera eeBudServerManager.IndexSetToogle(bouton[1] , “ON”) et le bouton basculera du coté “ON”.

				
					String IndexGetToogle(int ID)
				
			

Permet de récupérer la valeur du bouton basculant paramétré.

				
					void eeBudServerManager.IndexSetInfo(ID, "Valeur")
				
			

Permet d’envoyer l’information ( “Valeur”) qui sera attribuée à l’info nommée précédemment par l’ID.

ex: Une température, l’état de la lampe…

				
					String IndexGetInfo(int ID)
				
			

Permet de récupérer la valeur de l’information paramétrée.

				
					void eeBudServerManager.IndexSetRange(ID, Valeur)
				
			

Permet d’envoyer la valeur qui sera attribuée au curseur nommée précédemment par l’ID.

ex: Une température, l’état de la lampe…

				
					String eeBudServerManager.IndexGetEvent()
				
			

Doit être placé dans le loop.

Dans la boucle loop, cette fonction jouera,  principalement le rôle d’écouteur. Il retournera par exemple l’ID un bouton lorsque celui ci sera appuyé.

ex: J’appelle un bouton ON, son ID (1) sera retourné lorsque je clique. Donc quand 1 >> fais tourner le moteur d’1/4 de tour vers la droite…

				
					// Obsolète
void eeBudServerManager.IndexResetEvent()
				
			

La valeur retournée précédemment, restera la même jusqu’à ce que l’on appuie sur un autre bouton. Sauf si on utilise cette commande. La valeur passera donc à -1

Attention aux boucles qui se répètent!

				
					int eeBudServerManager.IndexGetRange(ID)
				
			

Retourne la valeur d’un curseur sur l’index. 

				
					int eeBudServerManager.IndexGetColor_R(ID)
				
			

Retourne la valeur rouge d’une couleur sur l’index. 

				
					int eeBudServerManager.IndexGetColor_G(ID)
				
			

Retourne la valeur verte d’une couleur sur l’index. 

				
					int eeBudServerManager.IndexGetColor_B(ID)
				
			

Retourne la valeur bleue d’une couleur sur l’index. 

				
					int AddHTTPAction(String Name)
				
			

Crée un évènement uniquement accessible par des requêtes HTTP.

				
					void SetupModule(String ID_Module, String Type)
				
			

Doit être placé dans le setup.

Permet de paramétrer un nom et un type de module qui sera accessible via les plugins tiers.

				
					//Obsolète, non nécessaire
void eeBudServerManager.Jeedom(bool Value = true)
				
			

Doit être placé dans le setup.

Permet l’activation du plugin du même nom pour Jeedom, et active l’envoi automatique du retour d’état.

				
					void eeBudServerManager.JeedomAutoRefresh(bool Value = false)
				
			

Doit être placé dans le setup.

Désactive l’envoi automatique du retour d’état au plugin Jeedom.

				
					void eeBudServerManager.JeedomRefresh()
				
			

Force l’envoi de tous les états au plugin Jeedom.

				
					int IndexAddInputBox(String Name, String Type)
				
			

Doit être placé dans le setup.

Permet la création d’un champs de saisie de texte sur l’index. Le type est le type standard html (text, password, number…).

				
					void IndexSetInputBox(int ID, String Value)
				
			

Assigne une valeur au champs de texte paramétré.

				
					String IndexGetInputBox(int ID)
				
			

Récupère le contenu du champs de texte paramétré.

				
					void IndexAddText(String Name, String Size = "25")
				
			

Doit être placé dans le setup.

Permet la création d’un champs de texte sur l’index.

				
					int IndexAddTooltip(String Name, String Content, bool Return_Line = true)
				
			

Doit être placé dans le setup.

Permet la création d’une bulle d’information cliquable avec retour d’évènement sur l’index.

				
					void eeBudServerManager.AddParamText("Nom","ValeurParDéfaut")
				
			

Doit être placé dans le setup.

Permet la création et la sauvegarde des paramètres personnalisés, qui seront modifiables depuis l’interface ou en ligne de code. Une fois le paramètre créé, cette ligne sera ignorée.

  • Nom: Le nom…
  • ValeurParDéfaut:  Valeur qui sera attribuée au paramètre lors de la création. 

Attention! Ces données sont stockées sur la mémoire flash dans la partie SPIFFS.  Le nombre de cycles d’écriture étant donné pour environ100 000 fois, nous devons éviter de stocker des données comme des historiques 40x /s… Mais pour de simples paramètres comme : LED Active ou une URL, ça fera très bien l’affaire.

				
					void eeBudServerManager.AddParamBool("Nom", true/false)
				
			

Doit être placé dans le setup.

Permet la création d’un paramètre sous forme de bouton basculant (“true”, “false”)

Attention! Ces données sont stockées sur la mémoire flash dans la partie SPIFFS.  Le nombre de cycles d’écriture étant donné pour environ100 000 fois, nous devons éviter de stocker des données comme des historiques 40x /s… Mais pour de simples paramètres comme : LED Active ou une URL, ça fera très bien l’affaire.

				
					String eeBudServerManager.GetParamText("Nom")
				
			

Récupère la valeur précédemment paramétrée.

  • Nom: Le nom…
				
					bool eeBudServerManager.GetParamBool("Nom")
				
			

Récupère la valeur précédemment paramétrée.

  • Nom: Le nom…

Les valeurs retournées seront “true” et “false”.

				
					void eeBudServerManager.UpdateParamText("Nom", "Valeur")
				
			

Modifie le paramètre enregistré.

  • Nom: Le nom…
  • Valeur: La valeur à lui attribuer.

Attention! Ces données sont stockées sur la mémoire flash dans la partie SPIFFS.  Le nombre de cycles d’écriture étant donné pour environ100 000 fois, nous devons éviter de stocker des données comme des historiques 40x /s… 

				
					void eeBudServerManager.UpdateParamBool("Nom", true/false)
				
			

Modifie le paramètre enregistré.

  • Nom: Le nom…
  • Valeur: La valeur à lui attribuer.

Attention! Ces données sont stockées sur la mémoire flash dans la partie SPIFFS.  Le nombre de cycles d’écriture étant donné pour environ100 000 fois, nous devons éviter de stocker des données comme des historiques 40x /s… 

				
					void AddListParam(String Name, String Default, bool Hidden = false, bool Boolean = false)
  void CreateListParam()
  void UpdateListParam(String Name, String Value)
  void SaveListParam()
				
			

Doit être placé dans le setup.

AddList permet la création d’une liste de paramètre pour ainsi n’écrire qu’une fois dans la mémoire flash avec Create.

Update et Save ne seront pas obligatoirement dans le setup.

Exemple:

				
					//Setup
Serveur.AddListParam("Premier paramètre", "Valeur du premier paramètre");
Serveur.AddListParam("Deuxième paramètre", "Valeur du deuxième paramètre");
Serveur.AddListParam("Troisième paramètre", "Valeur du troisième paramètre");
Serveur.CreateListParam();

//Ailleurs
Serveur.UpdateListParam("Premier paramètre", "Nouvelle valeur du premier paramètre");
Serveur.UpdateListParam("Deuxième paramètre", "Nouvelle valeur du deuxième paramètre");
Serveur.UpdateListParam("Troisième paramètre", "Nouvelle valeur du troisième paramètre");
Serveur.SaveListParam();


				
			
				
					void eeBudServerManager.RemoveParam("Nom")
				
			

Supprime le paramètre enregistré, si celui-ci existe.

  • Nom: Le nom…

Attention! Ces données sont stock… Bon, je pense que vous avez compris…

				
					bool eeBudServerManager.ResetParams()
				
			

Supprime tous les paramètres.

Peut être utile lorsque qu’on appuie sur 2 boutons pendant x secondes…

				
					bool eeBudServerManager.ResetNetwork()
				
			

Supprime tous les réseaux paramétrés.

				
					void eeBudServerManager.ResetAll()
				
			

Supprime tout.

				
					void eeBudServerManager.HTTPPost("url")
				
			

Pour poster une requête HTTP.

				
					String eeBudServerManager.HTTPGet("url")
				
			

Pour récupérer la valeur d’une requête HTTP.

				
					String GetKey()
				
			

Permet la de récupérer la clé configurée lors du premier démarage de l’ESP32.

				
					String GetIP()
				
			

Permet de récupérer l’adresse IP de l’ESP32.

				
					int eeBudServerManager.GetWiFiStatus()
				
			

Pour récupérer l’état de la connexion wifi.

1 – Connecté à un réseau wifi.

2 – Point d’accès activé.

3 – Connexion wifi perdue. Tentative de reconnexion toutes les 10 min. Point d’accès activé.

				
					void eeBudServerManager.Scan_Network(true/false)
				
			

Active ou désactive le scan des réseaux wifi au démarrage de l’ESP

Requêtes HTTP

Les requêtes HTTP se basent sur les ID des commandes.

2 méthodes pour les récupérer. Soit sur le portail (Configuration>ID de commandes), soit par une requête HTTP:  /get?id

Mise en situation:

1- Vous avez créé votre clé qui est: motdepasse

2- Vous avez paramétré votre réseau wifi sur eeBud Serveur Manager avec l’adresse IP fixe: 192.168.1.15 

3- Vous avez créé une info sur l’index : Serveur.AddInfo(“Etat”).  ID attribué: 0.

4- Vous avez créé un bouton basculant sur l’index : Serveur.AddToogle(“MonBouton”,  “OFF”, “ON”, “ON” ).  ID attribués: 1 et 2.

5- Vous avez créé un bouton sur l’index : Serveur.AddButton(“ON”). ID attribué: 3.

Requêtes possibles:

UPDATE:

				
					http://192.168.1.15/update?key=motdepasse&button=3
http://192.168.1.15/update?key=motdepasse&toogle=2
http://192.168.1.15/update?key=motdepasse&toogle=1
http://192.168.1.15/update?key=motdepasse&info=0&value=Valeur Bidon
				
			

GET:

				
					http://192.168.1.15/get?key=motdepasse&toogle=1 ou 2 (Le retour sera le même pour les 2 ID)
http://192.168.1.15/get?key=motdepasse&info=0
				
			

Autres fonctions HTTP

				
					//Récupère le nom et le type de module paramétré avec void SetupModule()
getmodule => http://ADRESSE_IP/getmodule?key=KEY

//Récupère toutes les commandes de l'index
getindex => http://ADRESSE_IP/getindex?key=KEY

//Récupère tous les paramètres en mémoire flash
getallparams => http://ADRESSE_IP/getallparams?key=KEY

//Récupère un paramètre spécifique
getparam => http://ADRESSE_IP/getparam?key=KEY&param=Nombre_de_leds

//Ajouter un paramètre spécifique
addparam => http://ADRESSE_IP/addparam?key=KEY&param=Test&value=valeurdetest&type=text

//Modifier un paramètre spécifique
updateparam => http://ADRESSE_IP/updateparam?key=KEY&param=SIMPLE&value=2

//Mettre en mémoire une liste de paramètres
addlistparam => http://ADRESSE_IP/addlistparam?key=KEY&param=Test&value=valeurdetest&type=text

//Créer les paramètres précédemment mis en mémoire
createlistparam => http://ADRESSE_IP/createlistparam?key=KEY

//Modifier une liste de paramètres en mémoire
updatelistparam => http://ADRESSE_IP/updatelistparam?key=KEY&param=Test&value=valeurdetest

//Enregistrer la liste précédemment modifiée
savelistparam => http://ADRESSE_IP/savelistparam?key=KEY

//Redémarrer le module ESP32
reboot => http://ADRESSE_IP/reboot?key=KEY

				
			

Récapitulatif (uniquement pour moi, comme ça j'ai toutes les fonctions sur une même page...)

				
					eeBudServerManager(char* NomProgramme);

//Setup
  void SetUser(char* ID_USER);
  void Init();

  void AddParamText(String Name, String Default, bool Hidden = false);
  void AddParamBool(String Name, bool Default);
  void AddListParam(String Name, String Default, bool Hidden = false, bool Boolean = false);
  void CreateListParam();
  void UpdateListParam(String Name, String Value);
  void SaveListParam();

  int IndexAddButton(String Name, bool Return_Line = true);
  int IndexAddLittleButton(String Name, bool Return_Line = true);
  void IndexAddTitle(String Name, String Size = "80");
  int IndexAddInfo(String Name, String Unit, String Size = "60");
  int* IndexAddToogle(String Name, String Value_0 = "Off", String Value_1 = "On", String Default = "Off");
  int IndexAddColor(String Name, int Default_R, int Default_G, int Default_B);
  int IndexAddRange(String Name, int Min, int Max, int Default);
  int IndexAddList(String NameList, String Name);
  int IndexAddInputBox(String Name, String Type);
  int IndexAddTooltip(String Name, String Content, bool Return_Line = true);
  int AddHTTPAction(String Name);

  void IndexDarkColor(String HTML_Color);
  void IndexLightColor(String HTML_Color);
  void IndexActiveColor(String HTML_Color);
  void IndexTextColor(String HTML_Color);

  void IndexAddHTML(String Value);
  void IndexBackgroundStart();
  void IndexBackgroundFinish();
  void IndexTileStart(String Width = "700px", String Height = "", String HTML_Color = "");
  void IndexTileWhiteStart(String Width, String Height, String HTML_Border_Color);
  void IndexTileFinish();
  void IndexContainerStart(int Width);
  void IndexContainerFinish();
  void IndexAddSeg();
  void IndexAddSegWhite();
  void IndexAddText(String Name, String Size = "25");

  void IndexTableStart();
  void IndexTableFinish();
  void IndexRowStart();
  void IndexRowFinish();
  void IndexCellStart(int Colspan, int Rowspan, String Align, String Width, String Height, bool border);
  void IndexCellFinish();

  void SetupModule(String ID_Module, String Type);
  void Jeedom(bool Value = true);
  void JeedomAutoRefresh(bool Value = false);
  
  //Loop
  int IndexGetEvent();

  //Autre
  String GetParamText(String Name);
  bool GetParamBool(String Name);
  void RemoveParam(String Name);
  void UpdateParamText(String Name, String Value);
  void UpdateParamBool(String Name, bool Value);

  bool ResetParams();
  bool ResetNetwork();
  void ResetAll();

  String IndexGetInfo(int ID);
  String IndexGetToogle(int ID);
  int IndexGetRange(int ID);
  int IndexGetColor_R(int ID);
  int IndexGetColor_G(int ID);
  int IndexGetColor_B(int ID);
  String IndexGetInputBox(int ID);
  
  void IndexSetInfo(int ID, String Value);
  void IndexSetRange(int ID, int Value);
  void IndexSetToogle(int ID);
  void IndexSetInputBox(int ID, String Value);
  void IndexSetColor(int ID, int R, int G, int B);
  void IndexSetList(int ID);

  void IndexResetEvent();

  String GetKey();
  String GetIP();

  void JeedomRefresh();

  String HTTPGet(String URL);
  void HTTPPost(String URL);

  int GetWiFiStatus();

  void Debug(bool Value = true);
  void Scan_Network(bool Value = false);
				
			

Un peu de pratique pour que ce soit plus clair:

Le but final de cet exemple est de réaliser deux leds connectées, avec capteur de température. Je vais paramétrer eeBud Server Manager avec le plugin du même nom pour Jeedom. Je vais également ajouter la possibilité d’envoyer les information via des requêtes HTTP pour l’utilisation d’un autre système domotique.

Je vais donc utiliser:

Ce module a été conçu pour accepter une tension de 5V 10A max.

Pour la sonde de température, je dois installer les bibliothèques:

Et voici donc le code:

				
					//On inclut les bibliothèques
#include <eeBudServerManager.h>
#include <OneWire.h>
#include <DallasTemperature.h>

//Définition des broches
#define PIN_DS18B20 33  //La broche 33 sera pour la sonde de température DS18B20
#define PIN_LED_BLEUE 14
#define PIN_LED_JAUNE 2
#define PIN_BOUTON 35

//Création du serveur
eeBudServerManager Serveur("KTWF-0005");

//Ces integers seront les identifiants des commandes qui seront disponibles sur l'index (la page d'accueil)
int Serveur_INFO_TEMPERATURE;
int Serveur_LED_BLEUE_OFF;
int Serveur_LED_JAUNE_OFF;
int Serveur_LED_BLEUE_ON;
int Serveur_LED_JAUNE_ON;

//Cet integer sera la variable qui écoutera les évènements retours du serveur. (J'appuie sur un bouton de l'index => évènement)
int Serveur_Event;

//Température
OneWire oneWire(PIN_DS18B20);
DallasTemperature DS18B20(&oneWire);
unsigned long Moment_Present = 0;
unsigned long Moment_Memorise = 0;

//Etat des leds
bool Etat_LED_BLEUE = false;
bool Etat_LED_JAUNE = false;

//Ne sera exécuté qu'une fois au démarrage du module
void setup() {
  //Initialisation du serveur (Création/connexion réseau Wi-Fi)
  Serveur.Init();

  //Mise en page de l'index
  //Sur cet index apparaîtra une information qui donnera la température mesurée
  Serveur_INFO_TEMPERATURE = Serveur.IndexAddInfo("Température", "°C");

  //Apparaîtront également 2 boutons pour allumer ou éteindre les leds intégrées au module
  int *Bouton = Serveur.IndexAddToogle("Led bleue");
  Serveur_LED_BLEUE_OFF = Bouton[0];
  Serveur_LED_BLEUE_ON = Bouton[1];

  Bouton = Serveur.IndexAddToogle("Led Jaune");
  Serveur_LED_JAUNE_OFF = Bouton[0];
  Serveur_LED_JAUNE_ON = Bouton[1];
  //Fin de la mise en page de l'index

  //Réglage des broches
  pinMode(PIN_LED_BLEUE, OUTPUT);  //La broche PIN_LED_BLEUE (pin 14, déclarée plus haut) est une sortie (Envoie du jus vers la led.)
  pinMode(PIN_LED_JAUNE, OUTPUT);
  pinMode(PIN_BOUTON, INPUT);

  //J'éteins les leds au démarrage du module
  Fonction_Led_Bleue_Off();
  Fonction_Led_Jaune_Off();
}

//S'éxécutera en boucle tout le temps que le module sera sous tension
void loop() {
  //Ecoute des évènements sur le serveur (intéraction avec l'index ou les requêtes HTTP)
  Serveur_Event = Serveur.IndexGetEvent();

  if (Serveur_Event == Serveur_LED_BLEUE_OFF) {  //Si l'évènement a capté un appui sur le bouton Off de la led bleue
    Fonction_Led_Bleue_Off();                    //J'éteins la led bleue
    Serveur.IndexResetEvent();                   //Je réinitialise l'évènement
  } else if (Serveur_Event == Serveur_LED_BLEUE_ON) {
    Fonction_Led_Bleue_On();
    Serveur.IndexResetEvent();
  } else if (Serveur_Event == Serveur_LED_JAUNE_OFF) {
    Fonction_Led_Jaune_Off();
    Serveur.IndexResetEvent();
  } else if (Serveur_Event == Serveur_LED_JAUNE_ON) {
    Fonction_Led_Jaune_On();
    Serveur.IndexResetEvent();
  }

  //Gestion de la température
  //La température sera mesurée toutes les 30000 ms
  Moment_Present = millis();
  if ((Moment_Present - Moment_Memorise) > 30000) {
    Moment_Memorise = Moment_Present;

    //Prise de la température
    DS18B20.requestTemperatures();
    
    //J'écris la température mesurée sur l'index
    Serveur.IndexSetInfo(Serveur_INFO_TEMPERATURE, String(DS18B20.getTempCByIndex(0)));
  }

  //Gestion du bouton
  if (digitalRead(PIN_BOUTON) == LOW) {            // Si le bouton intégré à la carte est appuyé
    if (Etat_LED_BLEUE) Fonction_Led_Bleue_Off();  //Si la led bleue est allumée, je l'éteins
    else Fonction_Led_Bleue_On();                  //Sinon je l'allume

    if (Etat_LED_JAUNE) Fonction_Led_Jaune_Off();
    else Fonction_Led_Jaune_On();

    //Je bloque le module pendant une demi seconde pour ne pas que l'action ne se répète plusieurs fois lorsque j'appuie sur le bouton
    delay(500);
  }
}

//Fonction qui éteins la led bleue
void Fonction_Led_Bleue_Off() {
  Serveur.IndexSetToogle(Serveur_LED_BLEUE_OFF);  //Je bascule le bouton de l'index sur OFF
  digitalWrite(PIN_LED_BLEUE, LOW);               //J'éteins la led
  Etat_LED_BLEUE = false;                         //Je passe l'état de la led à OFFF
}

void Fonction_Led_Bleue_On() {
  Serveur.IndexSetToogle(Serveur_LED_BLEUE_ON);
  digitalWrite(PIN_LED_BLEUE, HIGH);
  Etat_LED_BLEUE = true;
}

void Fonction_Led_Jaune_Off() {
  Serveur.IndexSetToogle(Serveur_LED_JAUNE_OFF);
  digitalWrite(PIN_LED_JAUNE, LOW);
  Etat_LED_JAUNE = false;
}

void Fonction_Led_Jaune_On() {
  Serveur.IndexSetToogle(Serveur_LED_JAUNE_ON);
  digitalWrite(PIN_LED_JAUNE, HIGH);
  Etat_LED_JAUNE = true;
}

				
			

Premier démarrage et paramétrage

1- Je me connecte au réseau Wi-Fi ouvert créé par l’ESP. Le nom du réseau est généré avec celle ligne de code:

				
					eeBudServerManager Serveur("KTWF-0005");
				
			

2- Une fois connecté, pour continuer le paramétrage, je clique sur la notification qui apparaît, ou je me rends à l’adresse IP: 192.168.4.1

3- La première page de configuration permet de choisir une clé. Cette clé servira à la connexion sur l’index, de clé pour les requêtes HTTP, et de mot de passe de connexion Wi-Fi, en cas de sélection du mode “Point d’accès”.

Le mode “Point d’accès” est un réseau créé par le module qui ne permet uniquement de se connecter et de piloter le module en direct. Je ne choisirai pas ce mode dans la suite de la configuration, car je perds tout principe de communication avec mon réseau Wi-Fi local.

4- La page suivante permet de paramétrer un réseau Wi-Fi local, et donc la possibilité de communiquer avec tous les appareils de ce même réseau.

Après validation, le module redémarre et tentera de se connecter à l’adresse IP paramétrée.

Si on ignore cette étape, le module redémarrera en mode “Point d’accès”. Et l’index sera accessible à l’adresse IP 192.168.1.1, de son propre réseau.

5- Voila. Après redémarrage et connexion au réseau local, il suffit de lancer son navigateur préféré et de se rendre à l’adresse IP paramétrée. Dans mon cas: 192.168.0.201

Le nom d’utilisateur est “admin”, mais peut être changé dans le void setup() du programme, avant initialisation du serveur,  avec la commande suivante.

				
					  void SetUser("unautrenomdutilisateur");
				
			

Et le mot de passe est celui paramétré en 3-

6- Me voici maintenant sur l’index, la page d’accueil, sur laquelle je peux directement contrôler mon module.

Intégration à Jeedom

Grace au plugin eeBud Server Manager (eebsm) pour Jeedom, je peux intégrer ce module en quelques clics à mon système domotique.

Après avoir installé et activé le plugin, je me rends sur la page de mes équipements eebsm (Plugins → Protocole domotique→ eeBud Server Manager).

J’ajoute un nouvel équipement.

Je rensègne les informations demandées, (Objet, actif, visible, adresse IP du module et le même mot de passe paramétré en 3-)

Je sauvegarde, et après quelques secondes:

Les commandes du programme se retrouvent bien dans Jeedom.

Et donc dans l’objet paramétré.

Un bouton basculant a également fait son apparition à l’adresse IP du module, dans les paramètres initialisés, permettant de désactiver l’envoi des informations du module, vers Jeedom.

Intégration à un autre logiciel domotique

La bibliothèque dispose des fonctions:

				
					String HTTPGet(String URL);
void HTTPPost(String URL);
				
			

Elles permettent d’interagir avec tout autre système domotique via des requêtes HTTP.

Nous pourrons ainsi créer des paramètres en mémoire flash comprenant des URL et poster celles-ci lors d’un évènement. (Par exemple, une led allumée, poster au système domotique que la led est bien allumée.)

Et inversement, dans le menu du module, requêtes HTTP, nous pouvons retrouver les requêtes permettant d’interagir avec le module depuis tout autre appareil, via des requêtes.

Voila! Tout est enfin opérationnel!
Amusez-vous bien!
0 0 votes
Évaluation
S’abonner
Notification pour
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires
Retour en haut