Le module radio fréquence Actaris pour compteur d’eau : un outil fiable, compact et intelligent pour la relève à distance, du réseau de distribution à l’habitat collectif. Module de communication radio compact compatible RADIAN™ totalement étanche, Cyble RF s’installe très facilement, sur site ou en usine, aussi bien sur un compteur d’eau froide que d’eau chaude. Sa pose sur site ne nécessite ni câblage ou fixation murale, ni dépose ou déplombage du compteur. Spécialement conçu pour résister aux environnements difficiles, Cyble RF est adapté à toutes les conditions rencontrées, du regard inondé à la gaine technique. Ses nombreuses fonctions intelligentes permettent, en complément du relevé d’index, d’obtenir :
The Radian Protocol
A two-way 433 Mhz Radio Protocol
Radian Protocol is designed for all applications in water, electricity, gas and heat meter reading and data transmitting. Its two way caracteristics allows developed service solutions, including information exchange with final user.
reliability
physical layer : FSK modulation, narrow band Logical Link Layer : packet numbering
two ways, half duplex, data transmission relaying capability
receive an repeat datagrams up to 7 nodes forward
sophisticated wake up mechanism
standby mode wake-up signal => awaken mode
my address ?
yes => let’s communicate !
no => back to stand by
time to get data from a node : 2-3 s
both master - slave control and CSMA asynchronous communications
f5943_cyblerfvacatris.pdf n'apporte rien de plus
En 2011 j'ai lâché cette page web au vent du web.
En 2014 julien a accroché on a groupé quelques docs que l'on avait sur le sujet.
Il a décidé d’écouter H24 les compteurs de sa résidence avec un SDR et un gros disque dur.
En février 2016 il a réussi capturer plusieurs relève de compteur, on a commencé a gratter.
Mais il nous manquait comment calculer le CRC et comment faire le lien entre ce qu'il y a marqué sur notre compteur et la trame de relève.
SigmaPic a rejoint le projet et il a mit pas mal de chose a plat (enfin surtout les bit ).
Restais encore cette problématique d’étiquette .
En décembre 2016 nous étions tous en train de sniffer nos compteur et julien a réussi a capturer la relève de son propre compteur.
1 mois plus tard signacPic arrivait a relever son propre compteur .
Any communication frame consists in:
Preamble is a series of 0101….0101 at 2400 bits/sec. There are two preamble durations:
In order to save energy, meter wakes-up every 2 seconds and check if someone is speaking. If nobody is speaking, meter goes back to sleep. This is the reason why long preamble is used when the master send a request.
Sync pattern starts with low level during 14.3ms followed by a high level during 14.3ms.
Data are sent by UART:
L(1) | C(1) | S(1) | Receiver Address(5) | S(1) | Sender Address(5) | S(1) | Data + Checksum (4-240) |
---|
Length | Control | Spacer | Receiver Address | Spacer | Sender Address | Spacer | Data + Checksum | |
---|---|---|---|---|---|---|---|---|
Master request | 13 | 10 | 00 | 45 10 01 E2 40 | 00 | 45 67 89 AB CD | 00 | 0A 40 DA DC |
Meter Acq | 12 | 06 | 00 | 45 67 89 AB CD | 00 | 45 10 01 E2 40 | 00 | 0A 90 9E |
Meter response | 7C | 11 | 00 | 45 67 89 AB CD | 00 | 45 10 01 E2 40 | 00 | 01 08 00 D2 73 07 00 40 ….. cks (488402 litres) |
Master Acq | 12 | 06 | 00 | 45 10 01 E2 40 | 00 | 45 67 89 AB CD | 00 | 0A 23 93 |
le CC1101 est un transceiver RF on peux régler un tas de paramètre , mais la fréquence réel n'est pas exactement celle que l'on règle.
//par exemple j'ai 2 carte CC101 pour un même réglage de fréquence un montage obtient une réponse l'autre non halRfWriteReg(FREQ0,0xC1); //Frequency Control Word, Low Byte CC1101_N1 814 824 (KO) ; CC1101_N2 810 820 (OK) halRfWriteReg(FREQ0,0xB7); //CC1101_N1 810 819.5 OK mon compteur aussi fait F1 : 433808500 F2 : 433819500
d’où la nécessité de calibrer le registre FREQ0 en utilisant une clef TNT qui fait SDR
5V,GND ---> RPi HE26 ---.-----2*GND; 2*3.3V , SCLK ,MISO , MOSI , CSn, GDO2, GDO0 --------> CC1101 HE10 | debug_connector(HE14)
WiringPi Pin = WPP
Fonction | WPP | Name | Header | Name | WPP | Fonction | |
---|---|---|---|---|---|---|---|
3.3v | 1 | 2 | 5v | ||||
8 | SDA | 3 | 4 | 5v | |||
9 | SCL | 5 | 6 | 0v | |||
7 | GPIO7 | 7 | 8 | TxD | 15 | ||
0v | 9 | 10 | RxD | 16 | |||
GDO0 | 0 | GPIO0 | 11 | 12 | GPIO1 | 1 | |
GDO2 | 2 | GPIO2 | 13 | 14 | 0v | ||
LED | 3 | GPIO3 | 15 | 16 | GPIO4 | 4 | |
3.3v | 17 | 18 | GPIO5 | 5 | |||
MOSI | 12 | MOSI | 19 | 20 | 0v | ||
MISO | 13 | MISO | 21 | 22 | GPIO6 | 6 | |
SCLK | 14 | SCLK | 23 | 24 | CE0 | 10 | Csn |
GND | 0v | 25 | 26 | CE1 | 11 |
#define GDO2 2 //header 13 #define GDO1_MISO 13 #define GDO0 0 //header 11 #define MOSI 12 #define cc1101_CSn 10 ////header 24 #define LED 3 //header 15
Top view
Fonction | Header | Fonction | |
---|---|---|---|
3.3v | 1 | 2 | 3.3V |
MOSI | 3 | 4 | SCLK |
MISO | 5 | 6 | GDO2 |
CSn | 7 | 8 | GDO0 |
GND | 9 | 10 | GND |
Flipped view from bottom
Fonction | Header | Fonction | |
---|---|---|---|
3.3v | 2 | 1 | 3.3V |
MOSI | 4 | 3 | SCLK |
MISO | 6 | 5 | GDO2 |
CSn | 8 | 7 | GDO0 |
GND | 10 | 9 | GND |
SALEAE led(1)
Fonction | Header | Fonction | |
---|---|---|---|
D1 | 1 | 2 | D2 |
D3 | 3 | 4 | D4 |
D5 | 5 | 6 | D6 |
D7 | 7 | 8 | D8 |
GND | 9 | 10 | GND |
DB9 TDA (face (GND) 5 4 3 2 1 (data) 9 8 7 6(5v)
HE14
Fonction | Header | Fonction | |
---|---|---|---|
(D1 saleae)DATA TDA | 1 | 2 | (D2 saleae)LED |
(D3 saleae)SCLK | 3 | 4 | (D4 saleae)SI |
(D5 saleae)GDO2 | 5 | 6 | (D6 saleae)SO |
(D7 saleae)GDO0 | 7 | 8 | (D8 saleae)CSn |
GND | 9 | 10 | GND |
3.3 | 11 | 12 | GND |
DATA TDA | 13 | 14 | 5V |
le zip a un mo t d3 pa5se il s'agit du nom du fichier zip radian_trx.zip
le code livré ne compilera pas (gcc radian_trx.c -o radian_trx -lwiringPi -lpthread -Wall) parce qu’il y a 2 paramètres a ajuster + 2 tipo
sudo crontab -e 55 9 * * * sudo /home/pi/radian_trx/web_tx_releve >/dev/null 2>&1 55 9 * * * sudo /home/pi/radian_trx/web_tx_releve >> /var/log/crontab.log
minepi + CC1101(2) + lambda/4 derrière cloison | volet ouvert | rssi=185 lqi=128 F_est=255 |
minepi + CC1101(2) + lambda/4 dans cloison | volet ouvert | rssi=185 lqi=128 F_est=255 |
minepi + CC1101(2) + ant spirale derrière cloison | volet ouvert | rssi=183-4 lqi=128 F_est=255 |
=⇒SDR console OK
Avec une fréquence de sampling de 31.25 ksps c'est 2.5Go de données sur 12h. Ça parait lourd mais sur un HDD de 1To ça te permet quand même d'enregistrer 1024/2.5=410 jours ouvrées.
du moin bon gain au meilleur