MonTempsDeFct est envoyé sous la forme de 4 octets avec:
octet1 : nb de jour
octet2 : nb d'heure
octet3 : nb de minute
octet4 : nb de seconde
Il s'obtient avec:
byte tempsDeFct[4];
milli2JHMS(millis(),tempsDeFct);
.............
void milli2JHMS(unsigned long depart,byte *JHMS)
{
/*
Pour millis() maxi = 4 294 967 295 ((2^32)-1)
depart = 4294967295
soit 0x31 0x11 0x02 0x2F ou
49J 17H 2M 47S
*/
depart=depart/1000;
JHMS[0]=depart/86400;
JHMS[1]=(depart%86400)/3600;
JHMS[2]=(depart%3600)/60;
JHMS[3]=depart%60;
}
Cela m'a permis de savoir que millis() revenait à zéro au bout d'un peu plus de 49 jours.
Je ne sais pas si cela me servira, mais dans la foulée j'ai fait la fonction inverse.
unsigned long JHMS2milli(byte JHMS[4])
{
unsigned long depart=0;
depart=1000*(JHMS[0]*86400+JHMS[1]*3600+JHMS[2]*60+JHMS[3]);
return depart;
}