Rtl_433 sensor changes randomly change id

I’ve been using rtl_433 and MQTT to capture data from a bunch of sensors from different manufacturers, and now have an issue with my AmbientWeather floating pool thermometer. For some reason, it now seems to randomly change the unit id, so I need to process the value based on the channel instead of the unit id.

Here is the old date from MQTT Explorer:
Ambientweather-F007TH
219 = {“time”:“2022-07-04 08:42:24”,“model”:“Ambientweather-F007TH”,“id”:219,“channel”:1,“battery_ok”:1,“temperature_F”:88.34,“humidity”:43,“mic”:“CRC”}

I changed the channel in the sensor to “8” from “1”, in order to distinguish it from some next door devices.

Here is the new data from MQTT Explorer:
Ambientweather-F007TH
187 = {“time”:“2022-07-14 14:05:43”,“model”:“Ambientweather-F007TH”,“id”:187,“channel”:8,“battery_ok”:1,“temperature_F”:79.3,“humidity”:44,“mic”:“CRC”}

Here is what had been working when the unit id was “219”:

  - platform: mqtt
    state_topic: "rtl_433/Ambientweather-F007TH/219"
    name: "Pool: Floating Temperature"
    unit_of_measurement: "°F"
    force_update: true
    value_template: '{{ value_json.temperature_F | round(1) }}'

I’m wanting to do something like this:

  - platform: mqtt
    state_topic: "rtl_433/Ambientweather-F007TH/<<any value here>>"
    name: "Pool: Floating Temperature"
    unit_of_measurement: "°F"
    force_update: true
    value_template: >
      {% if value_json.channel = 8 %}
        {{ value_json.temperature_F | round(1) }}
      {% else %}
        {{ states('sensor.pool_floating_temperature') }}
      {% endif %}

I just have average coding skills, so need help getting this formatted correctly so that it will work.

I have seen this on my weather station as well, if you reset, change channel or power off the unit it will start with a new unit id.

It seems that a lot of the 433Mhz/866Mhz weather sensors behave like this, the FineOffset, generic Nexus and Prologue ones I have change but the Acurite one does not change.

Hi,

could you tell which Acurite sensor uses fixed ID? If so, does it have a large unique number as an ID?

thanks,
Matevz

Mine is a quite old temperature only sensor and is a model 00592TX and has a fixed 5 digit ID.

A lot of 433Mhz temperature sensor ID have a random part and a number-part[1,2,3] which separates them from the same type. There are little switches (1,2,3) inside the sensors which usually determines the second part. RFlink also provides the protocol part. I used an MQTT wifi link: see espRFLinkMQTT to filter those and provide sensor data via MQTT.

I identified the two parts for each protocol. I used for my sensors a filter (mask with &) to remove the random part. Afterwards I added a protocol-fixed part again (mask |) and so new ID included a kind of protocol ID plus number-part

Afterwards the ID are not changing anymore after a battery change.

I would love to bring this into home assistant. Don’t know were to start and have not so much time.

More Info/examples:
Protocol , Filter (& mask)

  { "Xiron"     ,  "80FF"  } //Ariol 
  { "Alecto_V4" ,  "F00F" } //mebus silv 
  { "Auriol_V3" ,  "00FF" } //infactory 
  { "InoValley" ,  "00FF" }, //infactory  blk
  { "Alecto_V1" ,  "F003" }, //TCM beige 
  { "Auriol_V2" ,  "00FF" } //Auriol wht  

Example: {Protocol, Remove filter, New fixed part} // Result

{ "Alecto_V4" ,  "F00F"  , "5010"   }  //mebus silv 5fea ->501A

From espRFLinkMQTT :
20;69;Alecto V4;ID=56f9;TEMP=00aa;HUM=71;
I receive topic:
Alecto_V4-5019

Did anyone ever find a permanent solution for sensors that change ID? Appears my sensors change IDs anytime they lose power.

Just adding to this to see if perhaps someone does have a solution. I have 2 Ambientweather temp/humidity sensors and recently one of them continues to get a new ID almost daily. The battery level is coming through as 100% so I don’t think it’s powering off.

If I use MQTT Exploere to see the messages being posted I can see rtl_433/74930c0d-rtl433/devices/Ambientweather-F007TH/2/182 where the /2 is the channel and the /182 is the id that keeps changing.

I thought maybe if there was a template that just assigned the device by channel and ignored the ID that might work but I couldn’t get it work for some reason, perhaps someone has an idea?

If you are comfortable with it you could add the sensor manually in the configuration file and replace the part that changes with a + sign. rtl_433/74930c0d-rtl433/devices/Ambientweather-F007TH/2/+

In my case I have a rain sensor that changes ID but this solved it for me. This sensor ignores the ID part.

mqtt:
  sensor:
    - name: "TFA drop rain sensor"
      state_topic: "+/+/RTL_433toMQTT/TFA-Drop/+"
      force_update: True
      unit_of_measurement: "mm"
      value_template: "{{ value_json.rain_mm }}"
2 Likes

That’s how I did it as well. the + is a wildcard. I also found as the batteries got near the EOL in my device the ID would change several times a day. This got a couple of months more out ot them before I needed to change. All is fine as long as you don’t have more than two of the same devices. Set each device on different channel.

Those weather station come with three sensors, wildcard does not work. The sensors have a fixed part often to be set as DIP switch and a random part which changes each power cycle.