I control the temperature of my fridges

🌡 Why I monitored my fridges in Home Assistant

With the summer heatwave, I wanted to monitor my fridges and freezer for a very simple reason: Avoid the unpleasant surprise.

A poorly closed door, a drifting probe or a device that starts to tire, and you can quickly lose all the content without realising it.

I chose to set up a full follow-up in Home Assistant, with sensors, notifications, a dedicated screen and a visual alert on the dashboard.

The idea was not just to read a temperature, but to see right away if something was out of the ordinary.

🧊 The sensors I retained

I separated the surveillance into several areas to keep something legible and easy to maintain.

I have a sensor for the freezer, one for the fridge on the left, one for the fridge on the right and one for the fridge in the pantry.

The entities I use are the following, they are inherited from the different temperature sensors. I did not bother to make them homogeneous because they are used elsewhere:

  • sensor.temperature _freezer _temperature
  • sensor.frigo_left _tdeg _temperature
  • sensor.frigo_right _tdeg _temperature
  • sensor.frigo_cellier_temperature_frigo_cellier

For fridges, I have chosen an alert threshold of 10°C. For the freezer, I have chosen -5°C.

This is not a “generic” logic, it is really adapted to what I want to monitor at home.

📈 The screen I created

I then put all this together in a dedicated view in Home Assistant. I called this page Controls, with a fridge icon, to have all my cold equipment in one place.

On this screen, I put 7-day temperature charts and a chart of the day.

It allows me to quickly see if a temperature variation corresponds to abnormal behavior or a simple door opening.

I also have a ‘warn me’ button, I explain this right after.

🗓 Temperature charts

For each fridge and freezer, I added a temperature graph with a red annotation at the threshold. This is very convenient because you immediately see when the curve approaches the limit.

I use custom:apexcharts-card for this, with two different views: one over 7 days and one over the current day. The whole thing remains legible, even when I compare several days in a row.

Type: custom:apexcharts-card header: show: true title: Freezer temperature show_states: true colorize _states: true graph_span: 7d series: - entity: sensor.temperature _freezer _temperature color: "#0ba4e9" show: name_in _header: false apex _config: yaxis: - min: -4 max: -20 annotations: yaxis: - y: -5 borderColor: "#FF0000" strokeDashArray: 0 label: borderColor: "#FF0000" style: color: "#FFF" background: "#FF0000" text: Alert threshold -5°C

🧩 I started by creating my helpers

Before I even took care of the alert buttons, I created my helpers in Home Assistant. I used input_boolean under the heading Entries, to have one switch per device.

I wanted something simple: if the alert is activated, Home Assistant notifies me; If it's turned off, it doesn't bother me.

It also allows me to temporarily disable the notification if a message has already been sent.

It allows me to stay in control, without touching the automation itself.

🔘 Alert buttons

I have also added one button per device to enable or disable notifications. This corresponds to the input_boolean created just before.

I wanted to be able to temporarily cut off alerts when I know I'm going to open the door for a long time, or when I do a cleaning.

The button simply displays “Enabled” or “Disabled”, which avoids getting lost in the technical states. It is a detail, but for everyday use it makes the screen clearer.

Type: tile entity: input_boolean.prevenir_si_souci_de_temperature_freezer name: Notify me if temperature alert threshold exceeded features_position: vertical bottom: false tap_action: Action: toggle icon_tap_action: Action: toggle state _display: >- {% if is_state('input_boolean.prevenir_si_souci_de_temperature_freezer', 'on') %} Activated {% else %} Disabled {% endif %}

🔔 The notifications I have put in place

When the temperature exceeds the threshold, I send two types of notifications: a visual notification and an SMS.

I wanted something reliable, because a fridge or freezer problem deserves to be seen quickly.

I only trigger the alert if the input_boolean corresponding is activated. Then the automation cuts the same button to avoid receiving a flood of notifications until the problem is solved.

I'm not documenting my notifications here. I use Pushover to warn me with notify.icone _rouge and my wife is on Free, so notify.sms _christel _via _free.

🧾 The automation of the freezer

The freezer operates on a slightly different logic from the refrigerators, with a threshold set at -5°C. As soon as the temperature rises above this value, the alert is triggered if monitoring is activated.

alias: Control Temperature Freezer Description: "" Triggers: - trigger: state entity _id: - sensor.temperature _freezer _temperature conditions: - condition: and conditions: - condition: state entity _id: input_boolean.prevenir_si_souci_de_temperature_freezer state: "on" - condition: numeric _state entity _id: sensor.temperature _freezer _temperature above: -5 actions: - action: notify.icone _rouge data: Message: >- The current temperature is {{ states('sensor.temperature _freezer _temperature') }} °C. title: Check the freezer - action: notify.sms _christel _via _free data: Message: >- The current temperature is {{ states('sensor.temperature _freezer _temperature') }} °C. title: >- The current temperature is {{ states('sensor.temperature _freezer _temperature') }} °C. - action: input_boolean.turn_off target: entity_id: input_boolean.prevenir_si_souci_de_temperature_freezer mode: single

🌡 Automation of the left fridge

I made exactly the same logic for the left-hand fridge, with a threshold of 10°C. Again, the idea is to prevent it only if the surveillance is active.

alias: Control Temperature Fridge Left Description: "" Triggers: - trigger: state entity _id: - sensor.frigo_left _tdeg _temperature conditions: - condition: and conditions: - condition: state state: "on" entity _id: input_boolean.prevenir_si_souci_de_temperature_frigo_left - condition: numeric _state entity _id: sensor.frigo_left_tdeg_temperature above: 10 actions: - action: notify.icone _rouge data: Message: >- The current temperature is {{ states('sensor.frigo_left _tdeg _temperature') }} °C. title: Check the left fridge - action: notify.sms _christel _via _free data: Message: >- The current temperature of the left fridge is {{ states('sensor.frigo_left _tdeg _temperature') }} °C. title: >- The current temperature of the left fridge is {{ states('sensor.frigo_left _tdeg _temperature') }} °C. - action: input_boolean.turn_off target: entity_id: input_boolean.prevenir_si_souci_de_temperature_frigo_left mode: single

🚪 The right fridge and the pantry

I have reproduced the same structure for the fridge on the right and for the fridge in the pantry. The principle is always the same: a sensor, a threshold, an alert button, a notification, and then an automatic shutdown to avoid duplication.

alias: Control Temperature Fridge Right Description: "" Triggers: - trigger: state entity _id: - sensor.frigo_right _tdeg _temperature conditions: - condition: and conditions: - condition: state state: "on" entity _id: input_boolean.prevenir_si_souci_de_temperature_frigo_right - condition: numeric _state entity _id: sensor.frigo_right _tdeg _temperature above: 10 actions: - action: notify.icone _rouge data: Message: >- The current temperature is {{ states('sensor.frigo_droite _tdeg _temperature') }} °C. title: Check the right fridge - action: notify.sms _christel _via _free data: Message: >- The current temperature of the right fridge is {{ states('sensor.frigo_droite _tdeg _temperature') }} °C. title: >- The current temperature of the right fridge is {{ states('sensor.frigo_droite_tdeg _temperature') }} °C. - action: input_boolean.turn_off target: entity_id: input_boolean.prevenir_si_souci_de_temperature_frigo_right mode: single
alias: Control Temperature Fridge Cellier Description: "" Triggers: - trigger: state entity _id: - sensor.frigo_cellier_temperature_frigo_cellier conditions: - condition: and conditions: - condition: state state: "on" entity _id: input_boolean.prevenir_si_souci_de_temperature_frigo_cellier - condition: numeric _state entity _id: sensor.frigo_cellier_temperature_frigo_cellier above: 10 actions: - action: notify.icone _rouge data: Message: >- The current temperature is {{ states('sensor.frigo_cellier _temperature _frigo_cellier') }} °C. title: It is necessary to check the fridge of the pantry - action: notify.sms _christel _via _free data: Message: >- The current temperature of the cellar fridge is {{ states('sensor.frigo_cellier _temperature _frigo_cellier') }} °C. title: >- The current temperature of the cellar fridge is {{ states('sensor.frigo_cellier _temperature _frigo_cellier') }} °C. - action: input_boolean.turn_off target: entity_id: input_boolean.prevenir_si_souci_de_temperature_frigo_cellier mode: single

🟥 Conditional cards on the dashboard

I wanted to go a little further than just notifications. On my main view of the dashboard, I also display a red badge flashing directly on the plan when a fridge exceeds its threshold.

The principle is simple: as long as everything is fine, nothing appears. As soon as a sensor passes above the threshold, the card is displayed at the intended location and immediately catches the eye.

🧩 The decluttering template I use

To avoid repeating the same block for each device, I created a template decluttering. It allows me to reuse the same structure with only the sensor, name, position and threshold changing.

decluttering _templates: fridge: element: Type: conditional conditions: - condition: numeric _state entity: "[[sensor]]" above: "[[threshold]]" style: top: "[[top]]" left: "[[left]" elements: - type: state-badge entity: "[[sensor]]" name: "[[name]]" style: font-size: 15px text-align: center font-weight: bold color: white "--label-badge-text-color": white "--label-badge-background-color": red "--ha-label-badge-label-color": white

Then I simply call it with the variables of each device:

- type: custom:decluttering-card template: Variable fridges: - sensor: sensor.frigo_left_tdeg_temperature - name: Left - top: 62% - left: 29% - temperature threshold: 10 card_mod: style: | @keyframes blinker { 50% { opacity: 0; } } :host { animation: blinker 2s linear infinite; }

Note that I did not manage to integrate card_mod in the decluttering. I therefore reproduced it directly on the dashboard.

I took up the same principle for the right-hand fridge, the pantry and the freezer, with their respective positions on the plan.

For the freezer, of course, the threshold remains at -5°C, since the monitoring logic is not the same as for fridges.

✅ What I won with this implementation

In the end, I now have a clear, visual and useful monitoring of my cold equipment.

I see the history, I get an alert if needed, and I have an immediate visual indicator in general if something exceeds the threshold.

What I like most is that everything is easy to read on a daily basis.

I do not need to go to the menus to find out if a fridge is starting to heat: either I see it on the dashboard, or I receive a notification.

🛠 Small choices that make a difference

The mix of graphics, notifications and conditional badges works really well for this use case.

It is not a gadget: it is a real supervision of comfort and safety for the home.

And since I kept a reusable structure, I can easily add another device later without doing it all over again.

🎯 Conclusion

I did not try to do anything complicated.

I simply wanted to know at all times whether my fridges and freezer remained in the right temperature range, and to be notified as soon as a threshold was exceeded.

With Home Assistant, a few sensors, well-thought-out automations and a clear dashboard, I now have a system that speaks to me right away when action is needed.

And for me, this is exactly what is expected of good home automation: be useful, discreet and reliable.