" 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 ![]()
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
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