[Arduino] RTClib et stockage plage horaire

RTClib et stockage plage horaire [Arduino] - Nano-ordinateur, microcontrôleurs, FPGA - Electronique, domotique, DIY

Marsh Posté le 26-11-2015 à 12:26:22    

Hello :hello:
 
Je suis en train de travailler sur un petit thermostat programmable et j'ai une interrogation:
 
quelle est la meilleure manière de stocker des plages horaires ?
 
Le principe est basique, je vais avoir des plages horaires avec un seuil de déclenchement pour le thermostat.
Lundi 6h-9h par exemple
 
Je me demande comment stocker le plus efficacement ce type de plage horaire à utiliser avec RTClib ?


---------------
--== M4vr|ck ==--
Reply

Marsh Posté le 26-11-2015 à 12:26:22   

Reply

Marsh Posté le 26-11-2015 à 15:04:50    

Sachant que la lib introduit apparemment un type DateTime (qui sert à fixer une date précise à la seconde) et un type TimeSpan (qui sert à définir un intervalle de temps) tu ne peux pas t'en sortir ?


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 26-11-2015 à 16:18:50    

Bah je ne vois pas trop comment faire en fait :??:  
 
J'ai une variable qui doit changer suivant les plages horaires (ou deux variables qui doivent etre utilisé alternativement, ca n'a pas d'importance).  
Mais je ne vois pas trop comment faire.
Tester une date pour faire sonner une alarme pas de soucis, c'est easy. Mais cette histoire de plage horaire me perturbe :sweat:


---------------
--== M4vr|ck ==--
Reply

Marsh Posté le 26-11-2015 à 16:58:19    

N'hésite pas à poster ton code jusque là et expliquer ton algo, je ne comprend pas ce qui te pose souci.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 26-11-2015 à 17:13:40    

Je n'ai pas de code pour le moment, parce que justement je ne sais pas comment le structurer.
Et poster du code pour le reste des fonctions n'a pas beaucoup d'interet sur ce problème en particulier :whistle:  
 
Je vais me replonger sur la doc de la lib, il doit y avoir quelque chose à faire avec ce que tu m'indiques.
 
Pour expliquer quand même mon soucis, je dois stocker en EEPROM des fenetres du type:
Lundi 6h-9H
Lundi 17h-23h
etc ...
 
Et ensuite trouver une méthode pour tester si je suis dans une de ces fenetres ou non.
 
Je n'arrive pas à voir comment stocker ces fenetres (array? de quel type? ...)
Et ensuite je n'arrive pas à voir comment tester si je suis dans une fenetre, je ne peux pas avoir des if/else en boucle, ca ne me parait pas "propre".
Je pense que si j'arrive à structurer mon stockage correctement je pourrais ensuite tester facilement.
 
Mais encore une fois ca doit etre réalisable avec ce que fourni la lib, je ne demande rien d'extraordinaire. Je vais creuser ca.


---------------
--== M4vr|ck ==--
Reply

Marsh Posté le 26-11-2015 à 17:42:31    

Si le comportement est différent pour chaque jour de la semaine tu peux faire une espèce de structure
{ DayOfWeek, BeginHour, EndHour }
que tu stockes dans une liste, et tu testes si ton heure actuelle est dans l'une des fênetres définies dans cette liste.

 

Genre
{ 1, 6, 9 } pour le lundi de 6 à 9h et cie
Et toutes les minutes tu fais tourner ton truc qui boucle sur la liste si il détecte que l'heure actuelle est dans l'un de ces cas, tu allumes ton truc et tu sors de la boucle et sinon tu éteins.

 

PS : truc bête, au format US il me semble que le premier jour de la semaine c'est le dimanche.

 

Ca aide ?

Message cité 1 fois
Message édité par TotalRecall le 26-11-2015 à 17:43:05

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 26-11-2015 à 17:58:09    

TotalRecall a écrit :

Si le comportement est différent pour chaque jour de la semaine tu peux faire une espèce de structure
{ DayOfWeek, BeginHour, EndHour }  
que tu stockes dans une liste, et tu testes si ton heure actuelle est dans l'une des fênetres définies dans cette liste.
 
Genre  
{ 1, 6, 9 } pour le lundi de 6 à 9h et cie
Et toutes les minutes tu fais tourner ton truc qui boucle sur la liste si il détecte que l'heure actuelle est dans l'un de ces cas, tu allumes ton truc et tu sors de la boucle et sinon tu éteins.
 
PS : truc bête, au format US il me semble que le premier jour de la semaine c'est le dimanche.
 
Ca aide ?


 
Mais oui carrement  :love:  
 
Ca vient de faire tilt, plutot qu'une liste je peux même utiliser un tableau, c'est plus facile à parcourir pour plusieurs jours/plages horaires.
C'est tout con en fait, je savais que je passais à coté d'un truc simple
 
Merci :jap:


---------------
--== M4vr|ck ==--
Reply

Marsh Posté le 26-11-2015 à 18:47:28    

Oui j'utilise le terme liste par habitude des langages évolués pour dire une collection mais en C Arduino c'est un bête tableau. En tout cas l'idée a l'air de te convenir :d


Message édité par TotalRecall le 26-11-2015 à 18:47:49

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 26-11-2015 à 23:00:02    

Bonne idée oui  :jap: Surtout que dans l'EEPROM l'espace est vraiment compté !

Reply

Marsh Posté le 27-11-2015 à 13:31:08    

Tant que j'y suis et puisqu'il y a du monde qui a vu mon topic, vous avez des préférences parmi la multitudes de librairies de gestion de menu pour Arduino ?
 
Je vais faire quelque chose de très simple avec juste un afficheur LCD classique à deux lignes type HD44780 et 4 boutons.
Et dans l'idéal j'aimerais une librairie qui ne soit pas 'fermée' sur la conception de l'arbre de navigation, pour pouvoir par exemple rajouter ou retirer des plages horaires et pouvoir les parcourir avec le menu.


---------------
--== M4vr|ck ==--
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed