Bien joué! du coup tu remplaces complètement le firmware par ce programme dans le RFLink?
De mon côté, pour avancer sur le checksum j'ai re-décodé complètement une trame radio d'origine (enregistré avec une clef SDR). J'ai trouvé de petits écarts par rapport à notre décodeur.
Par exemple pour le début de la trame, je trouve maintenant 0x7E 0xBE 0xE7 au lieu de 0x3F 0x9F 0xE7. Le premier octet correspond exactement à ce que trouve Kainhofer. Ca change tout concernant le checksum dont le calcul devient finalement assez simple. C'est la somme négative des octets 4 à 12. Le résultat de cette somme est sur 2 octets (par exemple un int sur arduino). L'octet de poids fort se retrouve en position 13 et l'octet de poids faible en position 14. L'octet 13 est souvent 0xFD mais parfois aussi 0xFE (confirmé par mon enregistrement). Cela montre qu'il n'est pas nécessaire de valider les 3 trames complètes, car ça marchait en envoyant toujours 0xFD.
Le code de calcul du checksum:
Code : Tout sélectionner
int checksum = 0;
for (int i = 4; i <= 12; i++) {
checksum -= message[i];
}
message[13] = highByte(checksum);
message[14] = lowByte(checksum);
J'ai testé en changeant un peu le code d'envoi des commandes que je ne trouvais pas très clair et ça marche avec la chaudière.
EDIT: la commande 15 est bien reçue, ça commence à sentir bon!