Calcul CRC capteur WS1170

Bonjour,

j’ai besoin d’un petit peu d’aide pour vérifier le CRC sur des données reçues de capteurs velleman WS1170.

A l’heure actuelle, je récupère les données (hygrométrie + température) avec un arduino uno avec module RF. Il arrive qu’il y ait des erreurs de transmission et que ça me ressorte des valeurs un peu erronée. Dans la trame reçue, je pense que le dernier octet correspond à un CRC mais je ne sais pas comment le vérifier (j’ai pas encore tout compris sur le calcul du CRC).

Voici des exemples de trames reçues :

FF49F0D53FC5
FF4B70DB3D18
FF49F0D53FC5

Les 2ers quartet sont toujours FF
Les quartets 3,4,5 correspondent à l’adresse du capteur
Les quartets 6,7,8 donnent la température (à convertir si t°< 0)
les quartets 9,10 donnent l’hygrométrie
les quartets 11,12 correspondent à un CRC (je pense)

Merci.

Pierre

Bonjour, alors pour ce qui est du crc le problème c’est que tu a plusieurs façon de le calculer donc il va faloir faire des test en général c’est sois une adition de tout les autre octet sois un ou exclusif ou je ne sais plus trop. tien j’ai trouver ceci:

int CalcSomme(string Message)
{
    int iuResult = 0;   // Resultat sur 8 bits
    //--- Calcul de la somme, le premier caractère est en position 1
    for (int i = 1; i <= Message.Length(); i++)
        iuResult += Message[i];
    //--- Modulo Valeur Maxi sur 8 Bits
    return (iuResult %= 0xFF);
}

je suis pas sur du tout qsu’il fonctionne a mon avis il faut modifier iuResult += Message_; pour faire iuResult = iuResult + Message*.Toint();*_
à voir quoi désolé je n’en sais pas plus :s
Skizo !

Bonjour

Souhaitons pour toi qu'il ne s'agisse pas d'un véritable CRC, car sans connaissance du polynome qui sert de 'clef' la recherche peut durer longtemps. Méthode exposée içi : http://dvsoft.developpez.com/Articles/CRC/

Voici par contre un exemple interessant puisqu'il détaille bien un des protocoles Lacrosse (sans CRC) avec son double contrôle utilisé : Ou-exclusif sur un quartet ET 'checksum' sur un autre ! Souvent seule la checksum est utilisée en stations metéos économiques http://www.f6fbb.org/domo/sensors/ws7000_20.php

oui il faut prier ^^ c’est pas un système très complexe je pense pas que ce sois un crc de fada… on verra bien ^^

Skizo !

Salut,

Ce qui est sur c'est que ce n'est pas une CRC8 standard : http://smbus.org/faq/crc8Applet.htm

FF49F0D53F -> 0x2E 49F0D53F -> 0x1D

Ce n'est semble t'il pas non plus un simple XOR des différentes valeurs : FF^49^F0^D5^3F -> 0xAC 49^F0^D5^3F -> 0x53

Tu devrais aller jeter un coup d'oeil là : http://fredboboss.free.fr/tx29/index.php

Bonjour,

merci pour vos réponses.

J'ai essayer les choses suivantes : - calcul checksum - calcul XOR par octet - calcul XOR par quartet

mais rien de très concluant pour le moment. Je continue les recherches.

Bonjour,

après plusieurs recherches infructueuses, je viens de trouver le polynôme du CRC correspondant au capteur WS1170. Le polynôme est 0x131. Je remercie Fred (http://fredboboss.free.fr) et son script Python brutef.py qui m'ont permis de trouver le bon polynôme.

Il ne me reste plus qu'à intégrer le calcul dans l'arduino et le tour est joué.

Merci.