Atoi Modulo et MyS

" Au lieu de séparer heures et minutes, Je pense que ce serait plus simple de faire ce genre de tests sur des heures au format HHMM où l'opération de comparaison fonctionne bien sans prise de tête."
Oui fdufnews :slight_smile:

je vient de parcourir certain post (il y a du monde) et le résultat

@bricoleau
Manipuler des horaires dans des chaînes de caractères
 beurk beurk beurk :slight_smile:
La voie standard est de convertir toutes les heures / minutes 
en un simple entier.
@kamill
 je n’ai pas converti l’heure en minutes,
 mais multiplié l’heure par 100 et ajouté les minutes. 
C’est plus pratique pour écrire les heures limites 
10:00 → 1000 et 21:52 → 2152

Allumage LED suivant heure

donc un code Fonctionnelle, des lignes en moins, plus léger.

timecurrent =  hour()*100 + minute();   // Conversion des heure en minutes
 
//----- reception set time On Off ------------ 
 int requestedLevel = atoi( message.data ); //Récupérer la valeur à partir du message 
      
//----- limite valeur entrant dans la plage valide 0 to 2400 ------
    requestedLevel = requestedLevel > 2400 ? 2400 : requestedLevel;
    requestedLevel = requestedLevel < 0   ? 0   : requestedLevel;
    
     if((requestedLevel % 100) > 59) { requestedLevel = 00; }
     
//----- trie des messages -------
  switch (message.sensor) {
    case 2:                          // message  1
      requestOn = requestedLevel;       
    break;
   
    case 4:                       // message  2
      requestOff = requestedLevel;
    break;       
   }   

//----- commande Relay dans une plage horaire  -----   
   if (timecurrent >= requestOn && timecurrent <= requestOff)  { 
      digitalWrite(ledPin, HIGH); }
  else {
      digitalWrite(ledPin, LOW);  }  


Merci pour le coup de pepsfdufnews