Go Down

Topic: Interrupteurs domotique Blyss de castorama (Read 136886 times) previous topic - next topic

Artouste


Quote
Si ça se confirme on serait en présence d'un banal codage basé sur la position du front montant.
le premier octet pouvant être 0x01 ou 0xFE

artouste, à ce moment là je ne connaissais pas la 'polarité' du signal (logique positive ou négative) ,la suite de bits pouvait donc représenter :
soit 1111 1110 , soit 0000 0001 j'aurais même du ajouter les variantes tes selon la place du poids fort et du poids faible !  maintenant c'est du passé , le doute semble levé !!


8)
L'expérience s'acquiert, mais ne se décrète pas  :smiley-mr-green:

Bidle



Il semble que j'ai un léger problème avec le sketch RF_Blyss_Spoofer :

J'ai récupéré la trame émise lors de l'allumage d'un interrupteur mural :
FE 4C AA 2 8 0 67 AF
L'adresse est donc : FE 4C AA 2 et le canal : 8

Or, mon émetteur balance : FE 4C AA 2 0 1 98 D1

Il "transforme" le 8 0 (1000 0000) en 0 1 (0000 0001).

N'y aurait-il pas un bug ? Une "légère" inversion entre bit de poids fort et bits de poids faible ?


Cf ma réponse quelques post plus haut :

Regarde ligne 165 :
Code: [Select]
/* Change le canal d'émission par CH_ALL (broadcast) */
set_channel(RF_BUFFER, CH_ALL);

Ça fait parti des test que j'ai inclut dans mon code pour comprendre le fonctionnement des télécommandes à plusieurs canaux ;)

;)


J'ai oublié de préciser que lorsque je lui donne comme adresse celle de la prise : FE 4E 9B A 8 0 98 FA, ça fonctionne.

skywodd

#167
Jun 18, 2012, 03:02 pm Last Edit: Jun 18, 2012, 05:11 pm by skywodd Reason: 1

Si ça se confirme on serait en présence d'un banal codage basé sur la position du front montant.
le premier octet pouvant être 0x01 ou 0xFE
et qui a écrit cela là  :smiley-mr-green:
http://arduino.cc/forum/index.php/topic,109892.msg826138.html#msg826138

:P

Bon je joint la derniére version de RF_Blyss_Spoofer SANS la fameuse ligne qui semble troubler tout le monde :smiley-mr-green:

Je joint aussi mon 1er essai de programme de décodage "à la volé" de trames RF.
RF_Blyss_Sniffer NE FONCTIONNE PAS pour le moment, pas la peine de me dire que les trames reçu ne ressemble à rien ;)
En réalité il y a un décalage de bits dans les données reçu que je ne m'explique pas ... si quelqu'un pouvait y jeter un œil ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Bidle



Si ça se confirme on serait en présence d'un banal codage basé sur la position du front montant.
le premier octet pouvant être 0x01 ou 0xFE
et qui a écrit cela là  :smiley-mr-green:
http://arduino.cc/forum/index.php/topic,109892.msg826138.html#msg826138

:P

Bon je joint la derniére version de RF_Blyss_Spoofer SANS la fameuse ligne qui semble troubler tout le monde :smiley-mr-green:

Je joint aussi mon 1er essai de programme de décodage "à la volé" de trames RF.
RF_Blyss_Sniffer NE FONCTIONNE PAS pour le moment, pas la peine de me dire que les trames reçu ne ressemble à rien ;)
En réalité il y a un décalage de bits dans les données reçu que je ne m'explique pas ... si quelqu'un pouvait y jeter un œil ;)


Pour le changement en broadcast, OK, j'avais pas vu.
Mais mon problème est que pour la prise, que ce soit sur le sous-canal 0 ou 8, ça fonctionne alors que pour l'inter, rien ne marche.

skywodd


Pour le changement en broadcast, OK, j'avais pas vu.
Mais mon problème est que pour la prise, que ce soit sur le sous-canal 0 ou 8, ça fonctionne alors que pour l'inter, rien ne marche.

Tu peut (re)préciser les adresses de ta prise et de ton inter ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Bidle

Prise : FE 4E 9B A 8
Inter : FE 4C AA 2 8

Bidle

Ah, et avec la dernière version de ton code, avec le global channel, plus rien de marche  :(

skywodd

#172
Jun 18, 2012, 03:34 pm Last Edit: Jun 18, 2012, 03:37 pm by skywodd Reason: 1

Ah, et avec la dernière version de ton code, avec le global channel, plus rien de marche  :(

J'ai ajouté une fonction sans rien toucher d'autre :smiley-eek:

Ps: Si tu touches au canaux globaux ou au sous-canaux c'est sur que plus rien ne marchera ;)

Edit: Je m'entête mais mon code marche parfaitement avec mon récepteur ;)
Testé dans ça dernière version et aucun probléme.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

skywodd

#173
Jun 18, 2012, 04:36 pm Last Edit: Jun 18, 2012, 05:11 pm by skywodd Reason: 1
Bon nouvelle ! Mon systéme de décodage "à la volé" basé sur une interruption CHANGE marche désormais.
Une bête erreur de ++bits_counter mis au mauvaise endroit :smiley-mr-green:

Du coup j'ai débugger la partie décodage et la partie "filtrage" de mon code qui affiche désormais ce genre de chose :
Code: [Select]
Blyss sniffer
RF frame : FE 39 21 A8 0D AB F0
RF footprint : FE - OK
RF global channel : D
RF adress : 92 1A
RF channel : 1
Light status : ON
Rolling code : DA - OK
Timestamp : BF



-> voir piéce jointe ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

al1fch

#174
Jun 18, 2012, 04:37 pm Last Edit: Jun 18, 2012, 04:51 pm by al1fch Reason: 1
Vu la diversité grandissante des appareils testés ne serait-il pas utile que les retours d'informations trame fassent référence à la classification faire par barbudor sur son wiki. Il devient trop difficile de raisonner en terme de  "télécommande de x ou y" ou autre dispositif  !! Une grille de référence devient indispensable.
Personnellement je n'arrive plus à suivre les échanges depuis l'introduction nécessaire de la notion de canal/sous canal. Je n'arrive donc pas à participer à une synthèse des infos échangées.

Quote
Bon nouvelle ! Mon systéme de décodage "à la volé" basé sur une interruption CHANGE marche désormais.

Excellent !
Je ne sais pas si le matériel Blyss est en fonctionnement chez Conforama.
Un sniffer sur batterie + carteµSD , manips en série chez Conforama = vaste échantillonnage de trames !
(il ne viendrait bien sûr à personne l'idée du Blyss spoofer dans les mêmes lieux .... BlyssBeGone, FoolBlyss.... !)

skywodd


Vu la diversité grandissante des appareils testés ne serait-il pas utile que les retours d'informations trame fassent référence à la classification faire par barbudor sur son wiki. Il devient trop difficile de raisonner en terme de  "télécommande de x ou y" ou autre dispositif  !! Une grille de référence devient indispensable.

Je plussoie la mise en place d'une grille de réf.


Personnellement je n'arrive plus à suivre les échanges depuis l'introduction nécessaire de la notion de canal/sous canal
Je n'arrive donc pas à participer à une synthèse des infos échangées.

L'existence des sous canaux est sure à 99.9%.
Il semble exister un canal qui fait réagir tout les récepteur d'une même série (ALL On / ALL Off des télécommandes).

Pour les canaux "globaux" c'est plus une supposition basé sur les constatation au niveau des trames émise en fonction du sélecteur A/B/C/D au dos des télécommandes (quelque soit leur type apparemment).

Il faudrait faire un petit résumé de ce que nous avons pour le moment avant de continuer.
Préciser chacun nos produits / références / trame type, et mettre sur la table tout ce que nous avons conclu depuis le début au sujet du protocole.

Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Bidle

#176
Jun 18, 2012, 04:52 pm Last Edit: Jun 18, 2012, 04:53 pm by Bidle Reason: 1
Je confirme, avec la dernière version du code, plus rien : le arduino n'émet même plus ...
Je précise que je n'ai pas de télécommande mais une blyss box et que lorsque l'on supprime un matériel puis qu'on le rajoute de nouveau, son adresse change. C'est la box qui alloue les adresses.

skywodd

#177
Jun 18, 2012, 05:01 pm Last Edit: Jul 19, 2012, 03:27 pm by skywodd Reason: 1
Mon matériel ("<désignation>" Réf:<référence produit> Trame:<trame type>) :
"Micro module émetteur" Ref:599031 Trame: FE 79 5F 7 8 0 1E D8
"Télécommande programmable LCD" Ref:582883 Trame: FE 39 21 A 8 0 98 22
"Pack v&v sans fils" Ref:582869 Trame: FE 60 07 B 8 0 1E 96
"Détecteur de mouvement intérieur" Ref:582862 Trame: FE 0E CB E 8 0 DA BF
"Détecteur de mouvement extérieur" Ref:582861 Trame: FE 80 23 C 8 0 98 7D

Matériel RF :
Émetteur / Récepteur 433MHz, modulation de type ASK (-> module low-cost classique)

La trame RF :
L'encodage des bits  :
Code: [Select]
T = 400ms
"1" = T:LOW 2T:HIGH
"0" = 2T:LOW T:HIGH


Découpage d'une trame :
Code: [Select]
<entête 2.4ms HIGH>
<empreinte 0xFE (8 bits)>
<canal global (4 bits)>
<adresse (16 bits)>
<sous canal (4 bits) >
<état lumiére (ToR) (4 bits)>
<rolling code MSBFIRST (8 bits)>
<timestamp incrémentiel (0 ~ 255) MSBFIRST (8 bits)>
<footer 24ms LOW>


Les canaux globaux :
Code: [Select]

canal A = 0
canal B = 1
canal C = 2
canal D = 3


Les sous canaux :
Code: [Select]
canal 1 = 8
canal 2 = 4
canal 3 = 2
canal 4 = 1
canal 5 = 3
tout les canaux = 0


Le rolling code :
Code: [Select]
0x98 -> 0xDA -> 0x1E -> 0xE6 -> 0x67

Autre :
Code: [Select]
- 4 envois minimum de la trame.
- Incrémentation de +10 pour le timestamp
- Timing en réception trés approximatif (due au matériel utilisé)


Fichiers joints :
RF_Blyss_Sniffer : Capture et décode les trames RF "à la volé" (Signal du récepteur RF sur D12 ET D2)
RF_Blyss_Spoofer : Génère un signal RF compatible Blyss (Sortie du signal RF sur D4)

Mise à jour des fichiers joints :
Code: [Select]
18/06 - 17h40 : Une petite erreur s'était glissé dans set_key(), c'est réglé (cela devait être la cause des problémes de @bidle).
19/06 - 18h15 : Sniffer : Assouplissement des fourchettes de timings, meilleurs réactivité du code avec tout types d'émetteur.
19/06 - 18h15 : Spoofer : Petite erreur dans la fonction generate_rolling_code(), bug réglé
19/06 - 16h30 : Sniffer : Ajout d'un compteur de trames identique (echo)
23/06 - 13h00 : Sniffer : Timings désormais codé en dure dans le code
15/07 - 15h40 : Spoofer : Ajustement de la durée du footer et du delta entre deux rolling code -> compatibilité avec les deux versions de modules blyss
15/07 - 16h15 : Sniffer : Ajustement des timing pour une meilleur compatibilité avec les différents modules blyss
15/07 - 16h50 : Spoofer : Modif delayMicroseconds -> delay() pour plus de précision sur la plage des 24ms


Fichiers joints :
Sniffer : https://dl.dropbox.com/u/53604363/hack_blyss/RF_Blyss_Sniffer/RF_Blyss_Sniffer.ino
Spoofer : https://dl.dropbox.com/u/53604363/hack_blyss/RF_Blyss_Spoofer/RF_Blyss_Spoofer.ino

Ancien fichiers joints :
Décodeur automatique de capture OLS :
https://dl.dropbox.com/u/53604363/hack_blyss/Blyss_trame_dump/ols2data_cli.py
Analyse statistique du champ "timestamp" :
https://dl.dropbox.com/u/53604363/hack_blyss/Blyss_trame_dump/stats_valeur.ods

Dump EEPROM avec une télécommande associé suite à un full-erase :
https://dl.dropbox.com/u/53604363/hack_blyss/Blyss_trame_dump/dump_eeprom/dump_eeprom_telecommande_apres_full_erase.txt
Dump EEPROM avec un télécommande et un interrupteur associé :
https://dl.dropbox.com/u/53604363/hack_blyss/Blyss_trame_dump/dump_eeprom/dump_eeprom_telecommande_et_interrupteur.txt

Utilitaires d'analyse :
Données brute "bus pirate" -> données brute :
https://dl.dropbox.com/u/53604363/hack_blyss/Blyss_trame_dump/trame_dump/raw2line.py
Données brute -> dump EEPROM :
https://dl.dropbox.com/u/53604363/hack_blyss/Blyss_trame_dump/trame_dump/line2dump.py
Décodeur de capture OLS (non CLI) :
https://dl.dropbox.com/u/53604363/hack_blyss/Blyss_trame_dump/trame_dump/ols2data.py

Batch d'analyse par lot :
Décodage des dump EEPROM (trame_??.dump.txt) :
https://dl.dropbox.com/u/53604363/hack_blyss/Blyss_trame_dump/trame_dump/clean_dump.bat
Décodage des captures OLS (trame_??.ols) :
https://dl.dropbox.com/u/53604363/hack_blyss/Blyss_trame_dump/trame_dump/decode_all.bat
Affichage du résultats des différents décodages OLS (trame_??.ols.txt) :
https://dl.dropbox.com/u/53604363/hack_blyss/Blyss_trame_dump/trame_dump/echo_all.bat

(Je vais faire le ménage dans les anciens fichiers joints pour garder uniquement ce post à jour ;))
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

skywodd


Je confirme, avec la dernière version du code, plus rien : le arduino n'émet même plus ...
Je précise que je n'ai pas de télécommande mais une blyss box et que lorsque l'on supprime un matériel puis qu'on le rajoute de nouveau, son adresse change. C'est la box qui alloue les adresses.

Peut tu essayer d'associer un de tes récepteurs avec la télécommande virtuelle qu'émule mon code (sans modifier l'adresse) ?
J'ai découvert une petite erreur de frappe dans la fonction set_key() qui pourrait être la cause de tes ennuis.

Normalement ton récepteur devrait s'associer sans probléme et se mettre à clignoter à 1Hz.
Ça permettra de valider le bon fonctionnement de ton montage.

J'en ai profité pour améliorer l'agencement des arguments afin qu'ils soit dans le même sens que les autres fonctions.
J'ai aussi ajouté un arguments supplémentaire "overwrite" qui permet de fixer une adresse complète (canal global + adresse + sous canal) en une seul fois.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Artouste

BOnsoir
pour alimenter la "base"  :smiley-mr-green:
prise telecommandée 5 canaux + ALL
reference : 582873
S/N : 20118389

12 trames ON/OFF (5 + ALL)
une capture complete des 12 possibilités (5+ALL ON/OFF)

Code: [Select]
> FE 41 23 D 8 0 E6 31
> FE 41 23 D 8 1 67 9D
> FE 41 23 D 4 0 98 6B
> FE 41 23 D 4 1 DA 09
> FE 41 23 D 2 0 1E 40
> FE 41 23 D 2 1 E6 B9
> FE 41 23 D 1 0 67 AF
> FE 41 23 D 1 1 98 98
> FE 41 23 D 3 0 DA 65
> FE 41 23 D 3 1 1E F3
> FE 41 23 D 0 0 E6 19
> FE 41 23 D 0 1 67 62


Go Up