Collected information based on investigation for implementing rtl_433 decoders.
Note: these are generally compatible with the Acurite Access RF->Network gateway
- Notos (3-n-1) Weather station
- Iris (5-n-1) Weather station
- Atlas (7-n-1) Weather station
- 592TXR/6002 "Tower" temperature and humidity sensors
- 6044m Indoor temperature and humidity sensor (aka room sensor)
- 6045m Lightning detector
- 899 Rain sensor
- 515 Refrigerator / Freezer Sensor (*)
- 1192m Water Alarm (*)
(*) Not (yet?) listed as compatible with Acurite Access but shares the same message envelope
Note: 00275m outdoor monitor, monitor with leak, soil temperature, or spot check sensor likely is part of this message family. They are listed as My Acurite compatible (so works with Acurite Access) but are implemented in rtl_433 as a separate protocol. TBD if these could be folded under the same protocol, or if there is any compelling reason to do so.
Bytes/Bits (*note demodulator returns extra bits in certain cases)
Bytes | Bits | Device |
---|---|---|
6 | 48/50* | 515 Refrigerator/Freezer |
7 | 56/57+* | "Tower" sensors (592TXR and others) |
7 | 56/? | 1192 Water alarm |
8 | 64 | 5n1/Iris Weather Station |
8 | 64 | 3n1/Notos Weather Station |
8 | 64 | Atlas Weather Station without lightning sensor |
8 | 64 | 899 Rain Gauge |
9 | 72 | 6045M Lightning sensor |
10 | 80 | Atlas Weather Stations with lightning sensor installed |
- Channel
- ID
- Message type
- Battery OK/Low
- Sequence (5n1 and Atlas weather stations only)
Unless otherwise noted, IDs are fixed at the factory and will not change.
- Acurite 6045m Lightning 14 bits - 0x3fff - 16383 possible IDs,
- Acurite 5n1 12 bits - 0x0FFF - 4095 possible IDs
- Acurite Atlas 10 bits (1023 possible IDs)
- Byte 0:
- Channel (Mask 0xc0) (4 bits, A,B,C) (no parity)
- Sequence number (5n1 and Atlas only)
- 5n1 (mask 0x30)
- Atlas (mas 0x0c)
- (TBD does 3n1 use this?)
- ID MSB bits (Mask 0x3f or 0x0f or 0x03)
- Byte 1: ID LSB bits (All 8 bits, no parity)
- Byte 2:
- Parity bit
- Battery Ok/Low (Mask 0x40)
- Message type (Mask 0x3f)
- Byte 3 - (n - 1): device specific data, parity checked
- Byte n: 8 bit checksum (no parity)
- Checksum, 8 bits, bytes 0 - (n-1)
- Parity on bytes other than 0, 1, n
- (any exceptions TBD)
Message type is encoded in the lower 6 bits (0x3f) of the third byte. 64 possible values.
#define ACURITE_MSGTYPE_LEAK_DETECTOR 0x01
#define ACURITE_MSGTYPE_TOWER_SENSOR 0x04
#define ACURITE_MSGTYPE_ATLAS_WNDSPD_TEMP_HUM 0x05
#define ACURITE_MSGTYPE_ATLAS_WNDSPD_RAIN 0x06
#define ACURITE_MSGTYPE_ATLAS_WNDSPD_UV_LUX 0x07
#define ACURITE_MSGTYPE_515_REFRIGERATOR 0x08
#define ACURITE_MSGTYPE_515_FREEZER 0x09
#define ACURITE_MSGTYPE_3N1_WINDSPEED_TEMP_HUMIDITY 0x20
#define ACURITE_MSGTYPE_ATLAS_WNDSPD_TEMP_HUM_LTNG 0x25
#define ACURITE_MSGTYPE_ATLAS_WNDSPD_RAIN_LTNG 0x26
#define ACURITE_MSGTYPE_ATLAS_WNDSPD_UV_LUX_LTNG 0x27
#define ACURITE_MSGTYPE_6045M 0x2f
#define ACURITE_MSGTYPE_899_RAINFALL 0x30
#define ACURITE_MSGTYPE_5N1_WINDSPEED_WINDDIR_RAINFALL 0x31
#define ACURITE_MSGTYPE_5N1_WINDSPEED_TEMP_HUMIDITY 0x38
Notes:
- There are likely message types reserved for the 0275m sensors
- Message Type 0x04, 7 bytes
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 |
---|---|---|---|---|---|---|
CCII IIII | IIII IIII | pB00 0100 | pHHH HHHH | p??T TTTT | pTTT TTTT | KKKK KKKK |
- C: Channel 00: C, 10: B, 11: A, (01 is invalid)
- I: Device ID (14 bits)
- B: Battery, 1 is battery OK, 0 is battery low
- M: Message type (6 bits), 0x04
- T: Temperature Celsius (11 - 14 bits?), + 1000 * 10
- H: Relative Humidity (%) (7 bits)
- K: Checksum (8 bits)
- p: Parity bit
Notes:
- Temperature
- Encoded as Celsius + 1000 * 10
- only 11 bits needed for specified range -40 C to 70 C (-40 F - 158 F)
- However 14 bits available for temperature, giving possible range of -100 C to 1538.4 C,
- @todo - check if high 3 bits ever used for anything else
Message Type 0x2f, 9 bytes
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 |
---|---|---|---|---|---|---|---|---|
CCII IIII | IIII IIII | pB10 1111 | pHHH HHHH | pA?T TTTT | pTTT TTTT | pLLL LLLL | pLRD DDDD | KKKK KKKK |
- 8 Bytes
- Two message types:
Message Type 0x31 Wind speed and direction, rain
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
---|---|---|---|---|---|---|---|
ccss IIII | IIII IIII | pB11 0001 | p??W WWWW | pWWW DDDD | pRRR RRRR | pRRR RRRR | KKKK KKKK |
Message Type 0x38 Tmperature and Humidity
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
---|---|---|---|---|---|---|---|
ccss IIII | IIII IIII | pB11 0001 | p??W WWWW | pWWW TTTT | pTTT TTTT | pHHH HHHH | KKKK KKKK |
- c: Channel 00: C, 10: B, 11: A (01 is invalid)
- s: Sequence Number/Repeat Number (00 first copy, 01 second, 02 third)
- I: Device ID (12 bits)
- B: Battery, 1 is battery OK, 0 is battery low
- M: Message type (6 bits), 0x31 Wind & Rain, 0x38 Wind, temperature, humidity
- W: Wind speed (8 bits) (number of cup rotations per 4 second interval)
- D: Wind direction (uses modified Gray code)
- R: Rain tip counter (14 bits) 1 tip == 0.01 inch,
- T: Temperature Fahrenheit (12 bits)
- H: Humidity
- K: Checksum (8 bits)
- p: Parity bit
Notes:
- Wind speed, raw is number of cup rotations/4 seconds,
- processed to KPH (Range 0-212)
- See http://www.wxforum.net/index.php?topic=27244.0 (found from weewx driver)
- Rest of 5n1 raw encodings are Imperial, so possibly should have been MPH
- Rain tip counter is 14 bits (range 16383)
- 1 tip == 0.01 inch
- TBD Wraps at 99.99 or 163.83 inches?
- Temperature
- Spec range: -40 to 158 F
- Specs: https://www.acurite.com/media/documents/AcuRite-Atlas-Specifications.pdf
- 8 bytes without lightning detector, 10 bytes with it installed
- 6 message types
- 0x05 Wind speed, Temperature, Humidity,
- 0x25 adds lightning strike count, estimaated distance
- 0x06 Wind Speed, Wind direction, Rain
- 0x26 adds lightning strike count, estimated distance
- 0x07 Wind speed, UV, Lux
- 0x27 adds lightning strike count, estimated distance
- 0x05 Wind speed, Temperature, Humidity,
Message Type 0x25 (Wind Speed, Temperature, Relative Humidity, Lightning)
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 |
---|---|---|---|---|---|---|---|---|---|
cc?? ssII | IIII IIII | pb01 0101 | pWWWWWWW | pW?? TTTT | pTTT TTTT | pHHH HHHH | pCCC CCCC | pCCD DDDD | kkkkkkkkk |
Notes:
- Spec: temperature range -40 to 158 F
- There seem to be 13 bits for temperature but only 11 needed.
- TBD what is b[4] & 0x30 used for?
- Encoded temperature is Fahrenheit * 10 + 400 (No sign)
Message Type 0x26 (Wind Speed, Wind Vector, Rain Counter, Lightning)
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 |
---|---|---|---|---|---|---|---|---|---|
cc?? ssII | IIII IIII | pb01 0101 | pWWWWWWW | pW?V VVVV | pVVV VVRR | pRRR RRRR | pCCC CCCC | pCCD DDDD | kkkk kkkk |
CHANNEL:2b xx ~SEQ:2d ~DEVICE:10d xx ~TYPE:6h SPEED:x~7bx~1b DIR:x~5bx~5bxx x~7b x~7b x~7b CHK:8h
Note:
- Wind is in degrees
- 10 bits for wind vector(direction) is too much, should only be 9 bits?
- TBD what is b[4] & 0x30 used for?
- Rain counter, 0.01 inch accumulated per increment
- 9 bits - wraps after 5.11 inches
Message Type 0x27 (Wind Speed, UV, Lux data, lightning)
Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 Byte 9 Byte 10
cc??ssdd dddddddd pb011101 pWWWWWWW pW??UUUU pLLLLLLL pLLLLLLL pCCCCCCC pCCDDDDD kkkkkkkkk
- 6 bytes, two message types 0x08 and 0x09
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 |
---|---|---|---|---|---|
CCII IIII | IIII IIII | pBMM MMMM | bTTT TTTT | bTTT TTTT | KKKK KKKK |
- C: Channel 00: C, 10: B, 11: A
- I: Device ID (14 bits), volatie, resets at power up
- B: Battery, 1 is battery OK, 0 is battery low
- M: Message type (6 bits), 0x8: Refrigerator, 0x9: Freezer
- T: Temperature Fahrenheit (14 bits?), + 1480 * 10
- K: Checksum (8 bits)
- p: Parity bit
. 3n1 and 899 rain sensors implementation currently shares part of the 5n1 code, but do those use the sequences bits, or are those ID bits. This is probably best determined by verifying IDs for those devices in My Acurite. Are any of these higher than 1024?