Saturday, November 28, 2015

Remotely monitor Refrigerator / Freezer temperature with Acurite 986 and rtl_433 (rtl-sdr)

I suspected the thermostat in my basement refrigerator was going bad, so I picked up an Acurite 986 refrigerator and freezer remote thermometer.  The display unit will give alarms if the temperature goes out of range.

I wanted a better picture of what was going on so I figured out the Acurite's 433 mhz protocol for the 986 sensors. I've added support to rtl_433. The pull request was merged November 20th, 2015.

Now I pump the data into rrdtool and see what's going on. I now see how long and often the compressor is running, and how long it times to warm up between cycles. The spikes are the defrost cycles.

Now I can also monitor/get alerted when I'm out of the house.

I'm pretty happy with the Acurite 986 display and temperature sensors even without the rtl_433 decoding.

Acurite 00986 Refrigerator / Freezer Thermometer Protocol

  • Includes two sensors and a display, labeled 1 and 2, by default Sensor 1 - Refrigerator, 2 - Freezer.
  • Data format: Pulse Position Modulated (PPM), 5 bytes, sent twice, no gap between repeaters
  • Start/sync pulses: two short, with short gaps, followed by 4 long pulse/gaps.
  • Data Format - 5 bytes, sent LSB first, reversed
  • TT - Temperature in Fahrenehit
    • integer, 
    • MSB = sign. Encoding is "Sign and magnitude"
  • II - 16 bit sensor ID changes at each power up
  • SS - status/sensor type
    • 0x01 = Sensor 2 (
    • 0x02 = low battery
  • CC = CRC (CRC-8 polynomial 0x07, little-endian) 
I was able to easily figure out the CRC with CRC RevEng..

No comments: