Skip to main content

Introduction

After creating the article for 433mhz home automation / monitoring, a frequent question I have been asked…. Can these be used for monitoring my fridge or freezer?

Well, today, I am going to put together a solution for monitoring both of my freezers, and my primary refrigerator.

Parts Needed

  1. Acurite Fridge / Freezer Set. 00986M
    1. As of me writing this, the set costed 23$ shipped. It comes with both a magnetic display, as well as two sensors which can be mounted with either a suction cup, or magnetic base mount. The display includes an alarm as well.
  2. RTL-SDR Radio
    1. If you do not have a preexisting antenna / receiver to pick up 433mhz signals, you will need one. I have been using this one for over a year now, with zero issues to report.
  3. 4x AA Batteries.
    1. Each of the two sensors included in the above set, will require two AA batteries.
  4. 2x AAA Batteries
    1. If you choose to use the included magnetic display, it will also require 2 additional AAA batteries.

Getting Started

Step 1. Ensure you have a functional rtl_433 instance, which submits data via MQTT.

Essentially, hertzg/rtl_433 acts as a bridge between your 433mhz receiver, and a MQTT instance. If you need assistance setting up this container, please view the previous article on setting up 433mhz.

Step 2. Unbox everything

Unbox everything. Have your batteries ready to go. Don’t plug it in yet though…

Unboxed, sitting on top of a piece of one of my other upcoming projects……

Step 3. Fire up MQTT-Explorer (Or your favorite MQTT browser)

You will need some fashion of application to view your MQTT broker, to pick up the proper details to integrate your sensors into home assistant. I personally, use MQTT-Explorer.

Browse to the rtl_433 section (or, whatever you configured for the container)

The goal, is to take a baseline of every device which is talking in. When we plug in the new device, we want to keep an eye out for it appearing. Let it run for a minute or two, while random devices are sending messages.

The 433mhz devices picked up after a few minutes of listening. The Acurite towers are my sensors previously installed in the 433mhz automation post I assume the LaCrosse and the rain meter are my neighbors.

Step 4. Plug in the sensors.

After adding the batteries to the new sensors, within seconds they appeared under the Acurite-986 section.

You will want to copy the ID displayed. We will need this later. For reference, here are the values being reported by my sensors.

//Kitchen Freezer
Topic: rtl_433/Acurite-986/42064
{"time":"2022-06-29 23:54:57.492968","protocol":41,"model":"Acurite-986","id":42064,"channel":"2F","battery_ok":1,"temperature_C":19.44444,"status":0,"mic":"CRC","mod":"ASK","freq":433.93104,"rssi":-0.109249,"snr":12.40653,"noise":-12.5158}

//Kitchen Refrigerator
Topic: rtl_433/Acurite-986/42294
{"time":"2022-06-29 23:55:03.922134","protocol":41,"model":"Acurite-986","id":42294,"channel":"1R","battery_ok":1,"temperature_C":19.44444,"status":0,"mic":"CRC","mod":"ASK","freq":433.92867,"rssi":-0.110607,"snr":12.89016,"noise":-13.0008}

//Garage Freezer
Topic: rtl_433/Acurite-986/41227
{"time":"2022-06-30 00:09:11.960624","protocol":41,"model":"Acurite-986","id":41227,"channel":"1R","battery_ok":1,"temperature_C":19.44444,"status":0,"mic":"CRC","mod":"ASK","freq":433.9257,"rssi":-0.11768,"snr":12.75281,"noise":-12.8705}

Step 5. Install the sensors.

Do note, the sensor marked “1” goes in the refrigerator. The sensor marked “2”, goes in the freezer.

Go mount the sensors in a suitable location.

For my fridge, I mounted the sensor down low, on the side of the wall.

For my freezer, I clipped it onto the rack at the front, near the door, out of the way.

For the freezer in the garage, I clipped the sensor on the bottom of the grates.

Step 6. Ensure you are still receiving signals!

If you have your MQTT app still open, watch it to ensure you are still receiving new temp readings. If you are not receiving readings still, you may need a bigger antenna for your 433 setup. I personally, have a fully extended set of rabbit ears which have been working amazingly well.

Regarding range, In my experiences, 433mhz is a pretty good winner. Below is a floorplan of my house with the locations marked.

Floor plan of my house. The green box in the top-middle is the location of my 433mhz rabbit ears antenna, mounted in a closet, in a closed-off room.

The primary fridge is circled in red in the kitchen area. There is a secondary deep-freezer location in my garage, circled in red near the bottom of the picture.

While, I had few concerns if I would be able to pick up the signal from the fridge in the kitchen- I was slightly concerned to know if the signal for the garage freezer would be able to be received.

Turns out- despite being at the front of my garage, at the farthest location away from my antenna, it had no issues picking up the signal coming from INSIDE of the metal freezer, in a garage full of metal lathes, and other tools.

In the below screengrab, you will notice all of the sensors are still checking in at regular intervals. As well, they are starting to cool down enough to reflect the actual temp.

Find out who is out grilling.

While I was monitoring my devices to ensure they are working properly, I noticed this odd device popping up, with a reported temp of 361C.

As curiosity got the best of me, I decided to google exactly what it belongs to. Turns out, its a BBQ thermometer -> https://www.teknihall.be/en/products/quigg/gttmbbq05

Given this knowledge, integrating my grill with home assistant could be a fun project in the future….

But, Back to automating.

Step 7. Build sensors within Home Assistant.

Next is the fun part. We get to build a few sensors within Home assistant. This is the most manual part of the entire process. However, it is pretty straight-forward… We just need to add a few pieces to your configuration.yaml.

PERSONALLY, I keep all of my mqtt-based sensors in a dedicated file. This is purely for aesthetic reasons.

You will need to modify the below configuration to add in your specific topic IDs.

-- configuration.yaml
mqtt:
  sensor: !include mqtt_sensors.yaml
  binary_sensor: !include mqtt_binary.yaml
-- mqtt_sensors.yaml

- name: fridge_temp
  state_topic: "rtl_433/Acurite-986/42294"
  json_attributes_topic: "rtl_433/Acurite-986/42294"
  value_template: "{{ value_json.temperature_C }}"
  device_class: temperature
  unique_id: fridge_temp  
  unit_of_measurement: '°C'
  expire_after: 600 ## Note- this is optional. You can remove it if you like- this causes the sensor to show unavailable if it has not received data in 10 minutes. 

- name: freezer_temp
  state_topic: "rtl_433/Acurite-986/42064"
  json_attributes_topic: "rtl_433/Acurite-986/42064"
  value_template: "{{ value_json.temperature_C }}"
  device_class: temperature
  unique_id: freezer_temp  
  unit_of_measurement: '°C'
  expire_after: 600 ## Note- this is optional. You can remove it if you like- this causes the sensor to show unavailable if it has not received data in 10 minutes. 

- name: deepfreezer_temp
  state_topic: "rtl_433/Acurite-986/41227"
  json_attributes_topic: "rtl_433/Acurite-986/41227"
  value_template: "{{ value_json.temperature_C }}"
  device_class: temperature
  unique_id: deepfreezer_temp  
  unit_of_measurement: '°C'
  expire_after: 600 ## Note- this is optional. You can remove it if you like- this causes the sensor to show unavailable if it has not received data in 10 minutes. 
-- mqtt_binary.yaml

- name: fridge_temp_battery_ok
  state_topic: "rtl_433/Acurite-986/42294"
  json_attributes_topic: "rtl_433/Acurite-986/42294"
  value_template: "{{ value_json.battery_ok }}"
  payload_off: 0
  payload_on: 1
  unique_id: fridge_temp_battery_ok

- name: freezer_temp_battery_ok
  state_topic: "rtl_433/Acurite-986/42064"
  json_attributes_topic: "rtl_433/Acurite-986/42064"
  value_template: "{{ value_json.battery_ok }}"
  payload_off: 0
  payload_on: 1
  unique_id: freezer_temp_battery_ok
  
- name: deepfreezer_temp_battery_ok
  state_topic: "rtl_433/Acurite-986/41227"
  json_attributes_topic: "rtl_433/Acurite-986/41227"
  value_template: "{{ value_json.battery_ok }}"
  payload_off: 0
  payload_on: 1
  unique_id: deepfreezer_temp_battery_ok

At this point, after you have saved your configuration files, you will need to restart home assistant.

After restarting home assistant, I built an extremely simple dashboard panel showing the value of each sensor. You will need to wait a minute or two for the sensors to transmit a new value after restarting home assistant.

Simple state display of the new sensors.

Do note- my sensors are still cooling down. It has only been in place for 10 or 15 minutes at this point.

Regarding my personal choice of units of measurement.

You are more than welcome to use Celsius, Kelvin, Centigrade, or whichever unit of measurement you wish to use in your dashboards. As I spent the last few decades using Fahrenheit, it is my personal preference to use this unit of measurement. I realize some of you will be greatly upset to see units of measurement different then your own choices.

You have the freedom to have home assistant display whichever unit of measurement you prefer.

Step 8. Build some alerts.

At this point, I would love to link a blueprint you could single-click import, to generate alerts when the temp goes above expected ranges. However- I couldn’t find a suitable one.

No worries, the automation for this is extremely simple.

Goto Automations -> Create New Automation -> Start with empty template

First, give it a somewhat descriptive name. In this case, I named mine “Freezer – Temp too high” which is descriptive enough for me.

For triggers, I added both of my freezer sensors (Only one is displayed in the screenshot). I set the threshold to 20F, which is -6C. When the value goes above this threshold, I want it to alert me to this issue.

Regarding the action, I just used notify.notify, which has not had issues delivering notifications to my phone before. This will also alert on my wife’s phone.

For those who want to see the YAML, here it is. Although- I am pretty sure if you know what to do with the YAML, you likely know how to build a notification based on a temp getting too hot.

alias: Freezer - Temp Too High
description: ''
trigger:
  - platform: numeric_state
    entity_id: sensor.freezer_temp
    above: '20'
  - platform: numeric_state
    entity_id: sensor.deepfreezer_temp
    above: '20'
condition: []
action:
  - service: notify.notify
    data:
      title: Freezer Temp Too Hot
      message: Check to ensure the freezers are working properly.
mode: single

After saving the automation, and testing it- I did successfully receive an alert on my phone.

Step 9. Update my “Alerts” section of my main dashboard.

On my primary dashboard, I have a panel called “Alerts and Notifications”

I use it for tracking things such as low batteries, and other things I should be aware of. Currently, it is showing me my Hallway Fire Alarm is unavailable (I actually replaced it… and never cleaned up the old entity), and the battery for the temp sensor in my back bedroom needs replacing.

This panel uses a combination of a vertical-stack, along with custom:auto-entities (which is available via HACs)

The source is below.

type: vertical-stack
cards:
  - type: custom:auto-entities
    show_empty: false
    card:
      title: Alerts and Notifications
      type: entities
    filter:
      include:

//Display any devices with a pending update. Show newest version as secondary information.
        - entity_id: binary_sensor.updater
          state: 'on'
          options:
            secondary_info: newest_version

//If my garage door is open, show this in the alerts section.
        - entity_id: binary_sensor.garage_open
          state: 'on'

//If any of my battery sensors are not happy, display those.
        - domain: binary_sensor
          entity_id: '*_battery'
          name: '*_battery_ok'
          state: 'off'

//Tell me if the fridge goes above 40 degrees.
        - entity_id: sensor.fridge_temp
          state: "> 40"

//This happens to pick up both freezer_temp and deepfreezer_temp. It will display if their value goes above 20F.
        - entity_id: sensor.*freezer_temp
          state: "> 20"

//Tell me if any of my sensors needs a battery replacement
        - entity_id: sensor.*_temp
          state: unavailable

//Exclude anything which has a state of "OK"
      exclude:
        - state: OK
    sort:
      method: name

To test, you can alter the state line and see the results in real-time using the editor. In this case, I altered the panel to show the fridge when its value is > 20F.

Conclusion

Overall, this was an extremely easy project to purchase, setup, and complete.

The entirety of this project, including me unboxing materials, installing everything, setting up the sensors, AND writing this article, only took one hour.

Since, it has been a reasonable amount of time since I installed the sensors, I decided to check the current values.

It would appear everything is indeed working as expected. The sensors are checking in every few minutes. The data seems accurate… AND, as a bonus, I have the display included with the acurite system, which has its own audible alarm. As much as I love automation, I always love having alternatives which are completely independent of my automation/network.

Here is what the data looked like the next morning.

Changes

7/7 – Added Binary_sensors to display battery status. Added expire_after as well.

Leave a Reply

Close Menu

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 94 other subscribers
%d bloggers like this: