Rubicson Meat Thermometer

Hi all,

I’ve finally managed to integrate my Rubicson wireless meat thermometer with Home Assistant. Since this involved some non-trivial steps, thought I share my findings.

Rubicson wireless meat thermometer uses 433 Mhz signals which can ben captured by for example RFXtrx433XL by RFCXOM.

First, make sure to activate support for Rubicson protocol in the RFXtrx433XL by using the RFXmng program from RFXCOM website (Note, this may inactive other protocols)

Now activate rfxtrx platform in HASS with automatic detection in the configuation.yaml

rfxtrx:
   device: /dev/ttyUSB0

sensor:
  - platform: rfxtrx
    automatic_add: true

Reboot HASS, turn on your Rubicson and you should be able see the sensor show up the gui (after reload) with id 0850090000cb011c69 Temperature or similar.

However, the Rubicson has an undesirable feature: it will assign a new id every time it is turned on.
In HASS, this will make i hard to write triggers and script based on the this sensor.

To overcome this, one solution is to write a template sensor to imitate the real (last updated) senors. The template iterates the states object to find all Rubicson-sensors (typically starts with “085009”) and then copying the value of the latest updated sensor. In your sensor-section in configuratinon.yaml add this template configuration

sensor:
  - platform: rfxtrx
    automatic_add: true
  
  - platform: template
    sensors:
      steak_temperature:
        friendly_name: 'Steak temp'
        unit_of_measurement: '°C'
        value_template: > 
          {% set ns = namespace() %}
          {% set ns.latest = 0 %}
          {% set ns.state = NULL %}
          {% for state in states.sensor %}
            {% set id_name = state.name[:6] %}
            {% if id_name == '085009' %}
              {% if as_timestamp(state.last_updated) > ns.latest|float %}
                {% set ns.state = state %}
                {% set ns.latest = as_timestamp(state.last_updated) %}
              {% endif %}
            {% endif %}
          {% endfor %}
          {% if as_timestamp(now()) -  ns.latest < 100   %}
            {{ ns.state.state }}
          {% else %}
            {{ 0 }} 
          {% endif %}

Finally, you need to decide a how often this template sensor should be updated. You can use sensor.time if happy with updates once a minute, but of you prefer more often you can add a automation in automations.yaml

- id: '1578866104785'
  alias: Every five
  description: Rapid updates of template sensor
  trigger:
    platform: time_pattern
    seconds: "/5"
  condition: []
  action:
  - entity_id: sensor.steak_temperature
    service: homeassistant.update_entity

Good luck!