ESP8266 + FLProg - Paramètres système utilisateur et synchronisation avec le serveur de temps exact



Dans cette leçon, nous examinerons l'utilisation de variables système personnalisées pour relier l'interface de configuration Web et la conception de projet. Nous essayons également de configurer la synchronisation de l'horloge système du contrôleur avec les serveurs de temps exacts.

Cette leçon a été créée pour la version 3.1.4, qui est maintenant en test de pré-version. Vous pouvez le télécharger ici . Vous pouvez en savoir plus sur le projet FLProg sur le blog de l'entreprise sur le hub , le site Web du projet et le forum . De plus, sur la chaîne ArduinoProm , vous pouvez regarder une grande variété de leçons vidéo.

Nous utiliserons le projet créé dans la dernière leçon comme base.

Pour commencer, nous allons créer trois paramètres utilisateur système dans lesquels l'heure système actuelle du contrôleur, le fuseau horaire et l'adresse du serveur horaire exact avec lequel nous serons synchronisés seront stockés. Pour ce faire, nous retrouvons la branche « Ajouter un paramètre » dans l'arborescence du projet dans le nœud « Paramètres utilisateur ».



La boîte de dialogue permettant d'ajouter un nouveau paramètre système s'ouvre. Remplissez-le.



Dans le champ « Nom », saisissez le nom du paramètre. Choisissons le type de paramètre - " String ". La valeur de ce paramètre changera dynamiquement pendant le fonctionnement, par conséquent, nous désactiverons la sauvegarde de la valeur du paramètre dans l'EEPROM. Par conséquent, nous ne définissons pas de valeur par défaut. La longueur de ligne maximale est de 20 (la sortie sera sous la forme 01:01:01 01-01-2018 soit 19 caractères).

Ajoutez le deuxième paramètre de la même manière.



Laissez simplement la sauvegarde dans l'EEPROM, de sorte que le contrôleur se souvienne du serveur que nous avons entré et définissez le serveur par défaut.

Enfin, créez le troisième paramètre, la valeur de fuseau horaire, pour l'affichage correct de l'heure.



Type de paramètre entier , assurez-vous d'enregistrer en EEPROM, la valeur par défaut de votre choix (j'ai 4 heures).

En conséquence, nous avons obtenu trois paramètres utilisateur



Nous passons au schéma du firmware.

Dans la bibliothèque de blocs fonctionnels, nous trouvons le bloc « Obtenir le temps d'un serveur NTP » et le faisons glisser vers la zone de travail du circuit



Un double-clic sur ce bloc ouvre l'éditeur de paramètres de bloc.



Examinons les paramètres plus en détail.
Serveur NTP - l'adresse du serveur à partir de laquelle l'heure exacte sera prise. Il peut être défini comme une constante. Vous pouvez choisir parmi une liste de standards. J'ai tout vérifié - ils fonctionnent. Pour sélectionner, cliquez sur le bouton « Serveur standard ».



Mais comme nous voulons définir l'adresse du serveur «à partir d'un adulte » à partir de l'interface Web, cochez la case « Connexion »

La période de la demande avant de recevoir la première réponse est la fréquence à laquelle le contrôleur " frappera " sur le serveur jusqu'à ce qu'il reçoive du temps pour la première fois. Nous laissons une valeur constante toutes les 30 secondes. Il est également possible de régler l'entrée, il faudra alors lui appliquer une valeur en millisecondes.

La période de la demande après réception de la première réponse est la fréquence à laquelle le contrôleur vérifiera l'heure sur le serveur. Nous partons par défaut, une fois toutes les demi-heures. Vous pouvez également définir via l'entrée, en millisecondes.

Fuseau horaire - Étant donné que le serveur donne l'heure en GMT, ce paramètre définit le décalage de fuseau horaire en heures. Nous avons décidé de définir ce paramètre via l'interface Web, nous avons donc coché la case « Connexion »

Quittez "Année" , Quittez "Mois" , Quittez "Jour" , Quittez "Heure" , Quittez "Minute" , Quittez "Seconde" - nous n'en avons pas besoin dans cette leçon, donc nous ne cochons pas les cases.

Sortie "Unix Time" - nous n'avons pas besoin de cette sortie, nous ne mettons pas une coche (pour être honnête, je n'ai pas encore inventé de cas d'utilisation pour cela. Mais juste au cas où, je l'ai fait, c'est utile à quelqu'un).

Au total, nous avons un tel réglage de bloc



En conséquence, le bloc sur le schéma de micrologiciel a également changé.



Recherchez le bloc « Lecture des paramètres système » dans la bibliothèque et faites-le glisser sur le diagramme.



Double-cliquez sur ce bloc et commencez à configurer ses paramètres.

Tout d'abord, appuyez sur le bouton de sélection des paramètres système.



Une fenêtre de sélection d'un paramètre système s'ouvre. Sélectionnez le paramètre « Time server »



Ceci termine la configuration du bloc.

Nous plaçons commodément les blocs et connectons la sortie du bloc " Lire les paramètres système " à l'entrée " Serveur " du bloc " Temps de réception du serveur NTP "



Faites glisser un autre bloc « Lire le paramètre système » sur le diagramme et configurez-le pour lire le paramètre « Fuseau horaire ».



Nous connectons la sortie de ce bloc à l'entrée « TimeZone » du bloc « Receive time from NTP server »



Ajoutez une nouvelle carte au circuit. Pour ce faire, cliquez sur le bouton « Ajouter une carte »



Nous éteignons la première carte, nous n'en aurons plus besoin. Pour ce faire, cliquez sur la flèche dans l'en-tête du premier tableau.



Nous retirons le bloc " Réception des données de l'horloge exacte " sur le circuit de la deuxième carte



Double-cliquez dessus pour appeler la boîte de dialogue des paramètres de bloc. En appuyant sur le bouton « Nouveau », nous appelons la boîte de dialogue de sélection d'horloge et sélectionnons « Horloge système du contrôleur ».





Ensuite, nous mettons une coche " Sortie" Horloge " "



Et nous finissons de modifier le bloc.

Ensuite, nous copions ce bloc cinq fois de plus, en réorganisant dans les paramètres de chacun d'eux une coche de la sortie dans la séquence Minute - Second - Day - Month - Year .



Maintenant, nous retirons le bloc " String Conversion " sur le diagramme de la bibliothèque.



Et dans ses paramètres, sélectionnez le type de conversion " Heure "



Nous copions le bloc cinq fois de plus et récupérons le schéma



Transférer dans le schéma de la bibliothèque le bloc " Ajout de lignes "



Dans les paramètres de bloc, nous avons défini 11 entrées.



Et nous connectons les blocs selon le schéma



Sur les entrées libres du bloc on fixe les constantes

Entrée 2 - «:»
Entrée 4 - «:»
Entrée 6 - Espace
Entrée 8 - «-»
Entrée 10 - «-»

Pour définir une constante, faites un clic droit sur une entrée libre et sélectionnez « Insérer une constante » dans le menu déroulant.



La fenêtre de saisie de constante s'ouvre, où dans le champ " Valeur par défaut " la constante requise est entrée



Maintenant, nous retirons le bloc " Enregistrement d'un paramètre système " de la bibliothèque sur le circuit



Dans les paramètres de blocage, décochez la case « Entrée d'autorisation d'enregistrement » et sélectionnez le paramètre « Date - Heure »



Nous connectons la sortie du bloc « Line Addition » à l'entrée du bloc « System Parameter Record »



En conséquence, nous devrions obtenir un tel schéma (pour plus de clarté, déployez la première carte).



Une fois le schéma du micrologiciel terminé, nous revenons à l'arborescence du projet.

Nous allons ajouter trois paramètres à la page principale de l'interface Web (voir comment procéder dans la leçon précédente ).

Paramètre 1 - Paramètre système « Date - Heure », type de paramètre - « Texte », étiquette - « Heure »

Paramètre 2 - Paramètre système « Exact time server », type de paramètre - « Input field », label - « Server »

Paramètre 3 - Paramètre système « Fuseau horaire », type de paramètre - « Champ de saisie », étiquette - « Fuseau horaire »



Activez le bouton « Enregistrer » sur la page



Versez le programme dans le contrôleur et voyez ce qui s'est passé sur la page principale (comment faire, voir la leçon précédente )

Immédiatement après la connexion - le serveur de temps n'est pas encore synchronisé



Après une minute (actualisez la page) - la synchronisation est terminée



Modifiez le fuseau horaire et cliquez sur enregistrer



Le projet créé dans la leçon peut être téléchargé ici .

Source: https://habr.com/ru/post/fr422377/


All Articles