05-03-2021, 11:24:52
Bonjour à tous,
Comme dit dans l'autre sujet sur les libs RXB6, je travaille sur une seconde librairie partagée en "C" pour lire les sondes de température OTIO.
Celle que j'ai achetée (OTIO S606TX - 20.00€ chez Bricorama avec la station Météo S606RX) est enfin décodée.
J'ai pas mal galéré dans la mesure ou rien n'est dispo sur le net concernant le protocole utilisé, mais avec l'aide de mon Beau-fils (Benoît Morette) que je remercie au passage, le protocole est enfin décrypté.
En voici un résumé en attendant la finalisation de la librairie
Les signaux envoyés par la sonde sont assez puissants (normal elle est faite pour aller en extérieur).
Après analyse avec PISCOPE de pigpio, on voit clairement:
Deux Synchros suivies des données suivies d'une Synchro (les timings sont très propres et réguliers).
A priori c'est du data simple donc pas de codage Manchester, on prend ce que l'on lit.
Une fois transformés en data voici ce que l'on récupère:
111001110111110001001010101111111111100001
Une analyse est faite sur une trentaine de mesures de température consécutive (le tout sur les trois canaux dispos), voici ce qu'elle donne (probablement incomplète mais suffisante) :
111001110 111 11 0001 0010 1010 1111111111100001
identifiant ??? cx Température ?????????????
A gauche l'identifiant de la sonde, il change à chaque changement de piles
Ensuite trois bits (il y en a probablement 1 ou 2 qui indiquent l'état des piles ?)
Ensuite le numéro de canal (1,2,3)
Suivent trois groupes de 4bits qui indiquent la température (à décoder)
Après c'est le mystère, cette sonde ne donne que la température mais d'autres donnent aussi l'hygro donc on peut imaginer que c'est l'emplacement des données hygro qui se trouve la suivies probablement par un checksum.
Après triturage dans tous les sens voici ce que ça donne:
Le numéro de canal sur deux bits: on inverse les valeurs 0=1 et 1=0, on lit la valeur binaire et on ajoute 1 çà donne le numéro de canal.
Les 3 blocs de data tel que:
0001 0010 1010
on inverse la valeur des bits ce qu donne:
1110 1101 0101
on inverse le premier et le dernier bloc, ce qui donne:
0101 1101 1110
on colle les trois blocs ce qui donne:
010111011110
On traduit ça en décimal:
1502
On retire 900
602
On divise par 10
60.2
On obtient la Température en °Farenheit.
Si on veut convertir en °Celsius voici la formule:
°C = 5/9 x (°F - 32)
Ce qui nous donne pour la valeur relevée précédente:
°C= 5/9 x (60.2 - 32) = 15.66666 °C
Voila, on y est.
J'espère que ça pourra aider quelques un d'entre vous, à noter que si je mets la main sur une sonde avec hydro, j'irais plus loin.
La librairie est en cours de codage, ça devrait arriver ce WE ou Lundi.
Amitié à tous
Olivier
Comme dit dans l'autre sujet sur les libs RXB6, je travaille sur une seconde librairie partagée en "C" pour lire les sondes de température OTIO.
Celle que j'ai achetée (OTIO S606TX - 20.00€ chez Bricorama avec la station Météo S606RX) est enfin décodée.
J'ai pas mal galéré dans la mesure ou rien n'est dispo sur le net concernant le protocole utilisé, mais avec l'aide de mon Beau-fils (Benoît Morette) que je remercie au passage, le protocole est enfin décrypté.
En voici un résumé en attendant la finalisation de la librairie

Les signaux envoyés par la sonde sont assez puissants (normal elle est faite pour aller en extérieur).
Après analyse avec PISCOPE de pigpio, on voit clairement:
Deux Synchros suivies des données suivies d'une Synchro (les timings sont très propres et réguliers).
A priori c'est du data simple donc pas de codage Manchester, on prend ce que l'on lit.
Une fois transformés en data voici ce que l'on récupère:
111001110111110001001010101111111111100001
Une analyse est faite sur une trentaine de mesures de température consécutive (le tout sur les trois canaux dispos), voici ce qu'elle donne (probablement incomplète mais suffisante) :
111001110 111 11 0001 0010 1010 1111111111100001
identifiant ??? cx Température ?????????????
A gauche l'identifiant de la sonde, il change à chaque changement de piles
Ensuite trois bits (il y en a probablement 1 ou 2 qui indiquent l'état des piles ?)
Ensuite le numéro de canal (1,2,3)
Suivent trois groupes de 4bits qui indiquent la température (à décoder)
Après c'est le mystère, cette sonde ne donne que la température mais d'autres donnent aussi l'hygro donc on peut imaginer que c'est l'emplacement des données hygro qui se trouve la suivies probablement par un checksum.
Après triturage dans tous les sens voici ce que ça donne:
Le numéro de canal sur deux bits: on inverse les valeurs 0=1 et 1=0, on lit la valeur binaire et on ajoute 1 çà donne le numéro de canal.
Les 3 blocs de data tel que:
0001 0010 1010
on inverse la valeur des bits ce qu donne:
1110 1101 0101
on inverse le premier et le dernier bloc, ce qui donne:
0101 1101 1110
on colle les trois blocs ce qui donne:
010111011110
On traduit ça en décimal:
1502
On retire 900
602
On divise par 10
60.2
On obtient la Température en °Farenheit.
Si on veut convertir en °Celsius voici la formule:
°C = 5/9 x (°F - 32)
Ce qui nous donne pour la valeur relevée précédente:
°C= 5/9 x (60.2 - 32) = 15.66666 °C
Voila, on y est.
J'espère que ça pourra aider quelques un d'entre vous, à noter que si je mets la main sur une sonde avec hydro, j'irais plus loin.
La librairie est en cours de codage, ça devrait arriver ce WE ou Lundi.
Amitié à tous
Olivier
Développements en:
C/C++/Gambas Basic/PHP - auto-entrepreneur toujours en recherche de clients (même petits

LIBRXB6 est une suite de librairies partagées gratuites sur Raspberry développées dans le cadre de projets commerciaux
O.Coquet et Gambas Garden Factory