Smart AF Hot Tub Temperature Sensor

I have a hot tub.

I have a fear that one day the hot tub will quit heating.

I have a fear that when it quits heating it will freeze over and crack.

So I’ve been living in fear for a few years until last week when I discovered 433 MHz devices.

So I took a chance and bought this pool temperature sensor:

$20 risk. It comes with a display which is all well and good but it doesn’t do much for you. It isn’t THAT smart.

So anyway I run a program that snags everything flying around on 433.920 MHz and feeds it to an MQTT server. So I put batteries in my $20 temperature sensor and lo and behold this shows up on my server:

{"time" : "2019-01-18 00:57:24", "model" : "Nexus Temperature", "id" : 174, "channel" : 1, "battery" : "OK", "temperature_C" : 39.900}

The little cheap, no name Chinese clone works like a champ and is compatible with RTL_433 (a program that sniffs out data and decodes it). So now I can dump some code into Home Assistant software but you might note that I placed “temperature_C” above in red.

I have ANOTHER temperature sensor from a weather station that records data with a name of, you guessed it, “temperature_C”

{"time" : "2019-01-18 00:49:51", "model" : "Acurite tower sensor", "id" : 12644, "sensor_id" : 12644, "channel" : "A", "temperature_C" : 7.400, "humidity" : 69, "battery_low" : 0}

So as you might guess the sensor is going to display the first value it sees and this happened:

So both the outside temp and the hot tub temp display as 45.3 degrees F.  I don’t think so.

So I had to filter the data in code to make sure that the hot tub temp sensor was only reading from the Nexus Temperature sensor (which has an id number of 174) which, ironically is the designation of the first squadron I was in in the Navy.  VA-174 Hallrazors.  Hell Yeah!  Hellrazors Rule!

So I went into the configuration.yaml file in Home Assistant and set a value_template to filter the data.

sensor:
  - platform: mqtt
    state_topic: 'home/rtl_433'
    name: 'Outdoor Temp'
    unique_id: '12644'
    unit_of_measurement: 'F'
    value_template: >
      {% if value_json is defined and value_json.id == 12644 %}
        {{ ((value_json.temperature_C * 1.8) + 32)|round(1) }}
      {% else %}
        {{ states('sensor.outdoor_temp') }}
      {% endif %}
  - platform: mqtt
    state_topic: 'home/rtl_433'
    name: 'Outside Humidity'
    entity_id: 'sensor.outside_humidity'
    unit_of_measurement: '%'
    value_template: "{{ value_json.humidity }}"
  - platform: mqtt
    name: 'Hot Tub Temp'
    state_topic: 'home/rtl_433'
    unit_of_measurement: 'F'
    value_template: >
      {% if value_json is defined and value_json.id == 174 %}
        {{ ((value_json.temperature_C * 1.8) + 32)|round(1) }}
      {% else %}
        {{ states('sensor.hot_tub_temp_2') }}
      {% endif %}

Wow!  Ok I admit I had to seek out help on the interwebs to figure this out.  But make no mistake…….I DID FIGURE IT OUT.

Now it looks like this:

103.5 Degrees is more freaking like it.  So even now this is not much better than having it display on the fancy screen that comes with the pool temperature floating sensor thingy.

So what I did was to write an automation which will SEND ME A TEXT when the water temperature gets below 95 F.

automation 20:
  alias: Temp Alarm
  trigger:
    platform: numeric_state
    entity_id: sensor.hot_tub_temp_2
    below: 95
  action:
    - service: notify.mypushbullet
      data_template:
        title: "Hot Tub Temp Alarm"
        message: >-
          Hot Tub Temp Alarm, Bruh

So now when it gets below 95……..this happens (Screen Shot from my phone received a minute or so after taking the sensor out of the water):

 

So, basically this does not suck at all.   I have a Smart AF hot tub that texts me when the water temperature drops below a certain threshold.

You can spend tons of money for such fancy things but hey, I’ll just build it myself.

And Bob is my Uncle.

Leave a Reply

Your email address will not be published. Required fields are marked *