Monthly Archives: January 2015

Réception 433.92MHz du compteur de consommation électrique OWL Micro+ ou CM180 avec un dongle Realtek RTL2832 DVB.

 

20150127

rtl-sdr dongle + Owl Micro+ CM180

Le programme rtl_433 permet de convertir un dongle RTL2832 initialement prévu pour la réception TV TNT hd en  récepteur 433,92MHz.  Ce dongle est disponible à l’achat sur internet pour une vingtaine d’euros. (Une recherche google sur  “sdr rtl” vous fournira une multitude de renseignements ainsi que des liens sur des boutiques de vente en  ligne proposant ce dongle).

L’acronyme SDR signifie Software Defined Radio, et RTL c’est la puce (RTL2832) qui équipe le dongle .

J’ai acheté le mien chez Passion Radio Shop

Tout nouveau possesseur d’un de ces dongles miraculeux, j’ai ajouté rapidement le support du OWL micro+ au programme rtl_433.  Le projet initial rtl_433 peut être téléchargé ici: https://github.com/merbanan/rtl_433 (depuis février 2015 mes modifications y ont été intégrées. Désormais le programme rtl_433 reconnaît  les trames envoyées par OWL CMR180)

Je l’ai adapté afin de supporter le transmetteur OWL CMR180 qui accompagne le récepteur OWL CM180. Vous pouvez télécharger un fichier zip disponible  sur le repository github https://github.com/onlinux/rtl_433 ou bien cloner le projet en local sur votre pc

git clone https://github.com/onlinux/rtl_433.git
cd rtl_433/
mkdir build
cd build
cmake ../
make
make install

20150127-zoom

@I7:~/rtl_433/build$ rtl_433 
Registering protocol[01] Rubicson Temperature Sensor 
Registering protocol[02] Prologue Temperature Sensor 
Registering protocol[03] Silvercrest Remote Control 
Registering protocol[04] ELV EM 1000 
Registering protocol[05] ELV WS 2000 
Registering protocol[06] Waveman Switch Transmitter 
Registering protocol[07] Steffen Switch Transmitter
Registering protocol[08] Acurite 5n1 Weather Station
Registering protocol[09] Acurite Temperature and Humidity Sensor
Registering protocol[10] Acurite 896 Rain Gauge
Registering protocol[11] LaCrosse TX Temperature / Humidity Sensor
Registering protocol[12] Oregon Scientific Weather Sensor
Registering protocol[13] KlikAanKlikUit Wireless Switch
Registering protocol[14] AlectoV1 Weather Sensor
Registering protocol[15] Intertechno 433
Registering protocol[16] Mebus 433
Max number of protocols reached 15
Found 1 device(s):
 0: Generic, RTL2832U, SN: 77771111153705777
Using device 0: Generic RTL2832U
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
Sample rate set to 250000.
Sample rate decimation set to 0. 250000->250000
Bit detection level set to 10000.
Tuner gain set to Auto.
Reading samples in async mode...
Tuned to 433920000 Hz.

Energy Sensor CMR180 Id 6280 power: 240W, total: 508308384W, Total Energy: 141.196kWh
Weather Sensor THGR122N RC 86 Channel 1 Temp: 19.5°C 67.1°F Humidity: 46%
Energy Sensor cmr180 Id 6282 power: 272W
Sensor temperature event:
protocol = Rubicson/Auriol, 36 bits
rid = 1d
temp = 7.5
1d 80 4b f0 00 
Energy Sensor CMR180 Id 6280 power: 272W, total: 508323744W, Total Energy: 141.201kWh

Pour la réception à l’aide d’un arduino ou d’un raspberry pi, se reporter à mon post précédent https://blog.onlinux.fr/decode-and-parse-the-oregon-scientific-v3-radio-data-transmitted-by-owl-cm180-energy-sensor-433-92mhz-2/.

Sonde température DS18B20 1-Wire intégrée à la ZiBase via Raspberry Pi

 

 

Sonde 1-wire DS18B20

Sonde 1-wire DS18B20

raspizibase

 

 

 

 

 

Pour quelques €uros vous trouverez facilement sur internet des montages avec sonde déjà pré-cablée.

ds18b20 pré-cablée

ds18b20 pré-cablée

Installation Matériel

Sonde 1-wire ​DS18B20​

shema-branchement-DS18B20

Raspberry Pi

Zibase

Installation Logiciel

module ZiBase.py modifié ( ajout méthode setVirtualProbe )

def setVirtualProbe(self, id, value1, value2=0, type=17):
 """
 Cette commande permet au système HOST d’envoyer dans ZiBASE une information de sonde virtuelle
 comme si celle-ci était reçue sur la RF.
 Probe type: 
 17 : Scientific Oregon Type
 20 : OWL Type
 """
 req = ZbRequest()
 req.command = 11 # Virtual Probe Event
 req.param1 = 6
 req.param2 = id # Sensor ID (e.g; 4196984322
 req.param4 = type
 binStr = '00000000'+ dec2bin(value2 & 0xFF) + '00000000' + dec2bin(value1 & 0xFFFF)
 req.param3= int(binStr,2)
 #req.param3 = value1
 #print binStr, req.param3
 self.sendRequest(req)

Installer le  module w1thermsensor:  https://github.com/timofurrer/w1thermsensor.git

w1thermsensor.zip

crontab

crontab -l
 
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
MAILTO=ericxxxx@gmail.com


# m h dom mon dow command
*/2 * * * * cd /home/pi/python/weather; sudo python temp.py >> temp.log

Création sonde ZiBase

 

zibase_web.php

Decode and parse the Oregon Scientific V3 radio data transmitted by OWL CM180 Energy sensor (433.92MHz)

Owl micro+ Wireless electricity monitor runs on Oregon Scientific V3 protocol.

After buying one of those wonderful little devices to study the energy consumed at home, i browsed the internet to find a way to decode frames sent by the transmitter (CMR180) but I have not found any application describing the coding system of the data within  the radio frames. So I decided to study the radio packets to decode the system.

20150117_142540

Please visit the Github repository (https://github.com/onlinux/OWL-CMR180) to get all information about how to decode the packets.

Code available for RaspberryPi and Arduino.

Load arduino sketch to run a mini Owl Micro+ energy monitor as shown on the picture above.(https://raw.github.com/onlinux/OWLCMR180/master/arduino/oregon_owl.ino)