Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Librairie RXB6 pour récepteur 433.92Mhz (Sonde Température OTIO S606TX)
#1

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 Smile 

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 Smile )
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
Répondre
#2

Pourquoi il y a ces 90°F qui trainent ? J'imagine que c'est dit dans une doc mais j'ai pas trop cherché Smile

Bon boulot Olivier
Répondre
#3

C'est bête mais apparemment c'est le moyen qu'ils on trouvé de ne pas "signer" les valeurs négatives....
du moins c'est ce que j'en déduis Smile

Amitié
Olivier
(05-03-2021, 14:43:27)CrazyCat a écrit :  Pourquoi il y a ces 90°F qui trainent ? J'imagine que c'est dit dans une doc mais j'ai pas trop cherché Smile

Bon boulot Olivier

Développements en:
C/C++/Gambas Basic/PHP - auto-entrepreneur toujours en recherche de clients (même petits Smile )
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
Répondre
#4

Bonjour,

Pour la librairie elle est ok mais je butte sur un obstacle,

Si on a deux sondes ou plus, vu qu'elle ne sont pas calées exactement sur la même fréquence d'envoi des informations, il arrive cycliquement que deux sondes envoient leurs informations au même moment d'ou une certaine confusion dans les données reçues.
Pour palier ce problème, otio utilise un crc dans son protocole (contrôle de redondance cyclique) ce qui permet de valider que les informations reçues sont complètes et correctes. Si elles ne le sont pas, on les rejette et on attend les suivantes.

Mon problème c'est que je ne sais pas comment faire ce calcul, j'ai la check-sum à la fin sur 8 bits mais je n'arrive pas à trouver la formule qui fait concorder cette valeur avec les informations reçues.

Donc si quelqu'un a des compétences dans ce domaine (calcul de redondance...), il est le bienvenu, je peux fournir une liste de relevés dont je sais qu'ils sont fiables ce qui permet de faire les comparaison et éventuellement d'en déduire la formule.

Avis aux bonnes volontés.
amitié
Olivier

Développements en:
C/C++/Gambas Basic/PHP - auto-entrepreneur toujours en recherche de clients (même petits Smile )
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
Répondre
#5

Bonjour à tous,

Comme promis la librairie pour les sondes OTIO (s606) est presque terminée.
J'ai eu pas mal de fil a retordre avec le mélange des infos transmises lorsque deux sondes émettent en même temps mais ça y'est, on y est presque.

Pour vous faire patienter encore un peu, voici un petit aperçu d'un logiciel d'exemple en gambas que je mettrais avec la librairie dès qu'elle sera finalisée.

   

Pour info, deux sondes sont en marche, l'une à l'intérieur, l'autre à l'extérieur. La fenêtre de message montre les infos qui arrivent depuis la librairie, la première valeur est la température en °C au 100 ème, la seconde, entre parenthèses correspond au numéro de canal sur lequel la sonde qui a émis les information émet, la troisième "x=...." est la position horizontale ou a été tracé le point sur le graph (avec les deux sondes que j'ai il faut compter 73 points horizontaux par heure), enfin, la dernière est l'heure de la mesure (c'est l'heure enregistrée en live par le librairie et non celle ou le programme a lu ces informations).

Le filtre croisé permet de "lisser" les courbes (supprimer les informations erronées reçues en cas d'émission simultanées des deux sondes et faire en sorte que les deux courbes ne soient pas décalées de plus de deux unité horizontales).

Voila, c'est tout pour aujourd'hui, à bientôt avec la librairie et l'exemple en download ici.

Amitié
Olivier Coquet

Développements en:
C/C++/Gambas Basic/PHP - auto-entrepreneur toujours en recherche de clients (même petits Smile )
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
Répondre
#6

Bonjour à tous,

Voila, on y est, ça a pris un peu plus de temps que prévu mais la librairie est 100% opérationnelle, et l'exemple d'utilisation en Gambas basic est lui aussi 100% opérationnel.

Pour les tests, j'ai pu vérifier le bon fonctionnement sur deux sondes qui émettent en simultané, j'ai pu constater une seule erreur de mesure sur 7h00 de fonctionnement et après analyse il semblerait que cette erreur est due à une ampoule connectée qui émet un peu fort sur la même fréquence.
Pour ceux qui voudraient modifier l'exemple en Gambas ou utiliser la librairie dans un autre langage, il faudra prévoir une condition de validité de la mesure par rapport aux mesures précédentes/suivantes, par exemple une différence de plus de 20°C entre deux mesures devrait être éliminée car suspecte (20°c en 55 secondes, soit c'est une mesures parasitée, soit une bombe est tombée sur la sonde Smile ).

Comme précédemment, les fonctions de la librairie sont dans un fichier xxxx.h. A noter que cette fois ci, il n'y a pas de fonction de configuration de la librairie, il semblerait que les sondes OTIO soient assez précises dans les timings donc ça fonctionne nickel sans rien changer.
A préciser : le récepteur RXB6 doit avoir sa patte DATA connectée à la pin 3 GPIO (physiquement la 7ème en partant de la pin +5.5v).

Pour l'exemple Gambas, sur raspbian, idem l'autre lib, à savoir, installation de Gambas 3.12 si ce n'est déjà fait, décompression du source, chargement dans Gambas, menu projet, générer, fichier exécutable, choisir l'emplacement et cocher "créer un raccourci bureau). En suite faite propriété sur le raccourci créé sur le bureau puis : onglet "entrée de bureau", et dans commande ajouter "sudo " devant la commande qui s'y trouve déjà.
vous fermez, 2 clics sur le raccourcis, validez par exécuter et ça doit marcher.

Je mets une nouvelle capture d'écran ici pour que vous voyez ce que ça donne.
   
Pensez à activer le filtre (un click sur le bouton filtre) puis cliquez sur Receive pour démarrer l'écoute des températures.
Les deux switch sont là pour démontrer un déclenchement quelconque en fonction d'une température: case on =  température en dessous de laquelle le switch se met sur on et case off = température au dessus de laquelle le switch se met sur off.

Dernier truc, pour installer la librairie:
décompressez le fichier zip (librxb6_otio.zip)

et faites ceci:
ouvrez un shell et tapez ce qui suit:
cd /chemin vers ce que vous avez décompressé/
gcc -Wall -c "librxb6_otio.c"        'Vous devriez obtenir un fichier librxb6.o dans le répertoire
gcc -o "librxb6_otio.so" -shared "librxb6_otio.o" -lpigpio 'la vous devez obtenir un fichier librxb6.so dans ce même répertoire
sudo cp "librxb6_otio.so" /usr/lib/"librxb6_otio.so" 'la la librairie est installée dans /usr/lib
sudo cp "librxb6_otio.h" /usr/include/"librxb6_otio.h" 'Et enfin le fichier include installé dans /usr/include.

Amusez vous bien
Olivier Coquet


Pièces jointes
.zip librxb6_otio.h.zip Taille : 3.79 Ko  Téléchargements : 0
.gz rxb6_otio-0.0.140.tar.gz Taille : 15.06 Ko  Téléchargements : 0

Développements en:
C/C++/Gambas Basic/PHP - auto-entrepreneur toujours en recherche de clients (même petits Smile )
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
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)