An Arduino sketch to gather temperature and humidy from an old Oregon Scientific sensor.
These sensors use the Manchester code to transmit data to weather stations. This kind of data encoding was and still is widely used.
- Arduino Nano or Uno, or any other cheap clone
- 433Mhz receiver like this one Amazon AliExpress (RXB6 superheterodyne)
- Arduino-Oregon-Library : library used to decode the radio signal
- PlatformIO or Arduino IDE
- Fritzing part for the RXB6 module
- Oregon RTGR328N
3CCx
(with x=9,A,B,C,D) : Outside Temp-Hygro (known as0xACC
in RFLink plugins).3EA8
or3EC8
: Date & Time (0xAEC
or0xAEA
)
- Oregon THGR228N or equivalent
02D1
: Outside Temp-Hygro (0x1A2D
)
See decode.h or below for details.
I guess that some authors haven't noticed that the first nibble A
is not a part of the message, or just ignore this fact for convenience.
Nota
Bytes are received in 2 nibbles, LSB first, then MSB.
In lack of official documentation or clear and verified sources, I cannot know how Oregon Scientific sensors and stations really identify messages: 2 nibbles (0
and 2
) or 4 nibbles, and with which order (0x12D0
or 0x02D1
) ? That suppositions... I prefer the last one, because BCD numbers are reversed, the checksum is. So the ID should be too.
Desc | Content |
---|---|
Bytes received | DA CC 43 D9 16 08 80 83 64 A0 |
Nibbles | A 3CCD 4 D9 6 0081 38 8 64 0A |
Decoded | channel=4 temp=8.1°C hum=38% bat=6 |
Nibble | Value |
---|---|
0 | always 0xA (1010 in binary), kind of sync or preamble |
4-1 | message ID |
5 | channel |
7-6 | rolling code : a code to identify the sensor, change after many resets |
8 | battery state, bit 3 seems to indicate a low level battery |
12-9 | temperature in BCD, in Celsius degrees, sign in nibble 12 |
14-13 | percent of humidity in BCD |
15 | unknown, maybe comfort indicator (according to RFLink) |
17-16 | checksum (nibbles 1 to 15) |
19-18 | unknown trailing, not always present or misunderstanding of protocol |
Desc | Content |
---|---|
Bytes received | 8A EC 43 D9 76 44 31 82 12 91 71 77 CA |
Nibbles | A 3EC8 4 D9 6 47 14 23 28 1 1 19 7 77 AC |
Decoded | channel=4 state=6 clock=2019/01/28 23:14:47 |
Nibble | Value |
---|---|
0 | always 0xA (1010 in binary), kind of sync or preamble |
4-1 | message ID |
5 | channel |
7-6 | rolling code : a code to identify the sensor, change after many resets |
8 | probably sync state, bit 1 indicates that clock is valid |
14-9 | HH:MM:SS in BCD |
16-15 | day (1-31) in BCD |
17 | month (1-12) |
18 | day of week (0=sunday) |
20-10 | year in BCD |
21 | unknown |
23-22 | checksum (nibbles 1 to 21) |
25-24 | unknown trailing, not always present or misunderstanding of protocol |
- RFLink closed source RF gateway
- RFLink fork of rflink when it was open source (there are may other forks on GitHub).
- Oregon Scientific RF Protocol Description :
- Decoding the Oregon Scientific V2 protocol
- Oregon Scientific sensors with Raspberry PI
- and so on (use google)