Temperature, Humidity and Rain for under 10 EUR

So I received the weather station on friday (some delay in the parcel stations …).

Basically, it’s a nice set which is working pretty good but unfortunately, I’m not able to get the sensor values into HA yet.

Currently trying it with a DVB-T stick using https://github.com/james-fry/hassio-addons/tree/master/rtl4332mqtt but log only provides the following:

[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] done.
[services.d] starting services
[services.d] done.
/bin/ash: /rtl2mqtt.sh: not found
[cmd] /bin/ash exited 127
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.

I’d use rtl_433 from merbanan but I don’t want to use another Raspberry for this as I’m running on hass.io.
Does anyone know if it’s possible to run merbanan/rtl_433 simultaneously with hass.io?

To see if rtl433 works you can install it on Windows. If it doesn’t work, you have no time lost trying to install on your Pi.

Ok so I did install it on Windows:

Outdoor temperature / humidty gets recognized as Nexus Temperature / Humidty:

time      : 2020-06-17 15:39:34
model     : Nexus Temperature/Humidity             House Code: 46
Channel   : 1            Battery   : OK            Temperature: 28.20 C      Humidity  : 45 %
*** signal_start = 24798059, signal_end = 25039346, signal_len = 241287, pulses_found = 445
Iteration 1. t: 87    min: 48 (2)    max: 126 (443)    delta 386
Iteration 2. t: 87    min: 48 (2)    max: 126 (443)    delta 0
Pulse coding: Short pulse length 48 - Long pulse length 126

I also get the following when doing rtl_433 -a but I think that’s from any neighbours since I don’t have such values on the display from the bought set.

time      : 2020-06-17 15:39:57
model     : Ambient Weather F007TH Thermo-Hygrometer                         House Code: 140           Channel   : 1
Battery   : Ok           Temperature: 69.4 F       Humidity  : 46 %          Integrity : CRC
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-17 15:40:02
model     : TFA-Twin-Plus-30.3049                  Id        : 7
Channel   : 0            Battery   : LOW           Temperature: 26.2 C       Humidity  : 4294967287 %
*** signal_start = 31828269, signal_end = 32082081, signal_len = 253812, pulses_found = 1339
Iteration 1. t: 40    min: 12 (1291)    max: 69 (48)    delta 1189
Iteration 2. t: 34    min: 11 (1252)    max: 58 (87)    delta 122
Iteration 3. t: 30    min: 10 (1211)    max: 51 (128)    delta 50
Iteration 4. t: 28    min: 9 (1178)    max: 47 (161)    delta 17
Iteration 5. t: 27    min: 9 (1166)    max: 46 (173)    delta 1
Iteration 6. t: 27    min: 9 (1159)    max: 45 (180)    delta 1
Iteration 7. t: 27    min: 9 (1159)    max: 45 (180)    delta 0
Pulse coding: Short pulse length 9 - Long pulse length 45

For rain, I just get:

*** signal_start = 16426043, signal_end = 16674419, signal_len = 248376, pulses_found = 482
Iteration 1. t: 92    min: 53 (2)    max: 131 (480)    delta 173
Iteration 2. t: 92    min: 53 (2)    max: 131 (480)    delta 0
Pulse coding: Short pulse length 53 - Long pulse length 131

Short distance: 248, long distance: 501, packet distance: 1006

p_limit: 92
bitbuffer:: Number of rows: 14
[00] { 1} 00             : 0
[01] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[02] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[03] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[04] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[05] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[06] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[07] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[08] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[09] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[10] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[11] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[12] {37} ff ff ff ff f8 : 11111111 11111111 11111111 11111111 11111
[13] {37} ff ff ff ff f0 : 11111111 11111111 11111111 11111111 11110

I don’t know if that’s useful at all.

And here is a run with a bit more water (and recognized rain values on the display):

*** signal_start = 3663971, signal_end = 4039610, signal_len = 375639, pulses_found = 821
Iteration 1. t: 165    min: 129 (735)    max: 202 (86)    delta 11057
Iteration 2. t: 169    min: 129 (747)    max: 210 (74)    delta 64
Iteration 3. t: 170    min: 129 (749)    max: 211 (72)    delta 1
Iteration 4. t: 170    min: 129 (751)    max: 212 (70)    delta 1
Iteration 5. t: 170    min: 129 (751)    max: 212 (70)    delta 0
Distance coding: Pulse length 170

Short distance: 201, long distance: 483, packet distance: 990

p_limit: 170
bitbuffer:: Number of rows: 15
[00] { 0}                                                                                                                               :
[01] {36} aa b0 00 07 c0                                                                                                                : 10101010 10110000 00000000 00000111 1100
[02] {36} aa b0 00 07 c0                                                                                                                : 10101010 10110000 00000000 00000111 1100
[03] {36} aa b0 00 07 c0                                                                                                                : 10101010 10110000 00000000 00000111 1100
[04] {36} aa b0 00 07 c0                                                                                                                : 10101010 10110000 00000000 00000111 1100
[05] {36} aa b0 00 07 c0                                                                                                                : 10101010 10110000 00000000 00000111 1100
[06] {36} aa b0 00 07 c0                                                                                                                : 10101010 10110000 00000000 00000111 1100
[07] {36} aa b0 00 07 c0                                                                                                                : 10101010 10110000 00000000 00000111 1100
[08] {336} aa b0 00 00 10 05 08 00 00 00 00 00 21 00 2c 00 00 00 10 28 04 20 00 00 00 00 29 08 00 00 00 40 10 01 20 00 00 01 c0 11 ff 2d
[09] {36} 2e 81 17 f2 d0                                                                                                                : 00101110 10000001 00010111 11110010 1101
[10] {36} 2e 81 17 f2 d0                                                                                                                : 00101110 10000001 00010111 11110010 1101
[11] {36} 2e 81 17 f2 d0                                                                                                                : 00101110 10000001 00010111 11110010 1101
[12] {36} 2e 81 17 f2 d0                                                                                                                : 00101110 10000001 00010111 11110010 1101
[13] {36} 2e 81 17 f2 d0                                                                                                                : 00101110 10000001 00010111 11110010 1101
[14] {36} 2e 81 17 f2 d0                                                                                                                : 00101110 10000001 00010111 11110010 1101
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-17 15:50:34
model     : Ambient Weather F007TH Thermo-Hygrometer                         House Code: 140           Channel   : 1
Battery   : Ok           Temperature: 69.4 F       Humidity  : 46 %          Integrity : CRC
*** signal_start = 11867686, signal_end = 11918713, signal_len = 51027, pulses_found = 4
Iteration 1. t: 3    min: 3 (1)    max: 4 (3)    delta 1
Iteration 2. t: 8    min: 0 (0)    max: 17 (4)    delta 178
Iteration 3. t: 8    min: 17 (4)    max: 0 (0)    delta 578
Iteration 4. t: 8    min: 17 (4)    max: 0 (0)    delta 0
Distance coding: Pulse length 8

Short distance: 3287, long distance: 3287, packet distance: 13861

p_limit: 8
bitbuffer:: Number of rows: 3
[00] { 0}           :
[01] { 0}           :
[02] { 0}           :
Signal caught, exiting!

Ooops, sorry, totally forgot this topic.

I also ordered one and got it working with rtl_433 on a raspberry.

I’m running rtl_433 wit the following command.

/usr/local/bin/rtl_433 -F json -M newmodel -R 08 -R 19 -R 52 -R 129 | /usr/bin/mosquitto_pub -h ha-vm -t home/rtl_433 -l

The -R 19 is the protocol for the temp/humidity sensor which works out of the box.
For the rain gauge i had to enable the blacklisted -R 129 protocol.

Here’s what i get in the mqtt topic for the gauge.

20200617 20:38:17 - home/rtl_433_demux/Eurochron-TH_30 {"time" : "2020-06-17 20:38:16", "model" : "Eurochron-TH", "id" : 30, "battery_ok" : 0, "temperature_C" : 3.200, "humidity" : 0, "button" : 1}

The `temperature_C’ value needs to be multiplied with 3 and then shows exactly what’s on the display of the station.

It’s a bit tricky because the gauge resets this value from time to time, but with a few template sensors and automations, it works.

EDIT: I think the outdoor sensor alone is worth the money. The first one I saw with screws and rubber seal for the battery cover.
I have it near my Bresser-3CH sensor and the values are almost the same.
I’ve ordered a second one. :slightly_smiling_face:

2 Likes

Here’s the whole package if anyone is interested.

First, i’m using Taras (@123) MQTT Demultiplexer for the mqtt topics. See automation below.

I want to have daily values, so i save the total value from the gauge to an input_number at midnight and subtract it from the raw data of the gauge.
Also save the value if the gauge resets it’s value to 0.0, i found no logic when this happens.

### Sensors
#################################################################
sensor:
  # RTL 433 MQTT Digoo Temperature with the last timestamp an battery as attributes
  - platform: mqtt
    state_topic: "home/rtl_433_demux/Nexus-TH_50"
    name: "Outside Temp"
    unit_of_measurement: "°C"
    value_template: >
      {{ value_json.temperature_C | round(1) }}
    json_attributes_topic: "home/rtl_433_demux/Nexus-TH_50"
    json_attributes_template: "{{ {'time': value_json.time, 'batt': 'ok' if value_json.battery_ok == 1 else '?'} | tojson }}"

  # RTL 433 MQTT Digoo Humidity
  - platform: mqtt
    state_topic: "home/rtl_433_demux/Nexus-TH_50"
    name: "Outside Humi"
    unit_of_measurement: "%"
    value_template: >
      {{ value_json.humidity }}

  # RTL 433 MQTT Digoo Rain Gauge
  - platform: mqtt
    state_topic: "home/rtl_433_demux/Eurochron-TH_30"
    name: "Digoo Rain Total"
    unit_of_measurement: "mm"
    value_template: >
      {{ value_json.temperature_C | round(1) }}

  # Template sensor for the rain gauge
  - platform: template
    sensors:
      digoo_rain_template:
        friendly_name: "Rain"
        value_template: >
          {% if not is_state('sensor.digoo_rain_total', 'unknown') %}
            {% set rain = ((states('sensor.digoo_rain_total') | float - states('input_number.digoo_rain_total') | float) | round(1) * 3) | round(1)%}
            {% if rain >= 0 %}
              {{ rain }}
            {% else %}
              0.0
            {% endif %}
          {% else %}
            0.0
          {% endif %}
        unit_of_measurement: "l/㎡"
        icon_template: >
          {% if states('sensor.digoo_rain_template') | float > 0 %}
            mdi:weather-pouring
          {% else %}
            mdi:weather-cloudy
          {% endif %}


### Automations
#################################################################
automation:
  # RTL 433 MQTT Demultiplexer
  - alias: 'rtl_433 demultiplexer'
    initial_state: true
    trigger:
      platform: mqtt
      topic: home/rtl_433
    action:
      service: mqtt.publish
      data_template:
        topic: "{{ 'home/rtl_433_demux/' + trigger.payload_json.model|string + '_' + trigger.payload_json.id|string }}"
        payload: "{{trigger.payload}}"
        retain: true

  # Reset sensor at midnight
  - alias: digoo_rain_total_set
    initial_state: true
    trigger:
      - platform: time
        at: '23:59:57'
    action:
      - service: input_number.set_value
        data_template:
          entity_id: input_number.digoo_rain_total
          value: "{{ states('sensor.digoo_rain_total') }}"

  # Reset sensor when gauge resets
  - alias: digoo_rain_total_reset
    initial_state: true
    trigger:
      - platform: state
        entity_id: sensor.digoo_rain_total
        to: '0.0'
    action:
      - service: input_number.set_value
        data_template:
          entity_id: input_number.digoo_rain_total
          value: "{{ states('sensor.digoo_rain_total') }}"


### Input Number
#################################################################
input_number:
  digoo_rain_total:
    mode: box
    min: 0.0
    max: 999.9
    step: 0.1
2 Likes

Thx @VDRainer

Got it working (getting MQTT data) without another raspberry by using https://github.com/james-fry/hassio-addons/tree/master/rtl4332mqtt with the protocols provided by @VDRainer.

My config is:

mqtt_host: 192.168.0.ZZZ
mqtt_user: YYYYY
mqtt_password: XXXX
mqtt_topic: weather/station
protocol: 129
frequency: 433920000
gain: 0
frequency_offset: 0

Also, to be able to find the correct MQTT topic (it’s not just what you set in the config), you need to enable mqtt logging by uncommenting line 183 in rtl2mqtt.sh
Now I see that the correct topic is weather/station/Eurochron-TH/170

BTW: I downloaded rtl2mqtt.sh via wget to /config/rtl4332mqtt as I had problems with starting the addon first.

@VDRainer Any idea how I can set both, protocol 19 and 129, in config?

1 Like

No clue how the addon works, but if i look at the rtl2mqtt.sh, i see the rtl_433 command.

/usr/local/bin/rtl_433 -F json -R $PROTOCOL ...

Maybe for testing change it to

/usr/local/bin/rtl_433 -F json -R 19 -R $PROTOCOL ...

and ask the author of the addon howto add multiple protocols in the addon config.

1 Like

Yeah that worked, thx.

But I’m getting negative values for the rain gauge like -20.100 in weather/station/Eurochron-TH/46 and high numbers like 38.400 in weather/station/Eurochron-TH/170

Do you also get two seperate IDs from the Rain Gauge?
To which timeframe (total/1h/24h/week) do you compare to?

You’re right, now that you say it, there are multiple of them.

home/rtl_433_demux/Eurochron-TH_225 {"time" : "2020-06-17 19:58:24", "model" : "Eurochron-TH", "id" : 225, "battery_ok" : 0, "temperature_C" : -20.000, "humidity" : 255, "button" : 0}
home/rtl_433_demux/Eurochron-TH_135 {"time" : "2020-06-19 07:12:25", "model" : "Eurochron-TH", "id" : 135, "battery_ok" : 0, "temperature_C" : -17.500, "humidity" : 138, "button" : 0}
home/rtl_433_demux/Eurochron-TH_50 {"time" : "2020-06-19 20:58:25", "model" : "Eurochron-TH", "id" : 50, "battery_ok" : 0, "temperature_C" : -19.800, "humidity" : 185, "button" : 1}
home/rtl_433_demux/Eurochron-TH_30 {"time" : "2020-06-19 21:02:23", "model" : "Eurochron-TH", "id" : 30, "battery_ok" : 0, "temperature_C" : 3.700, "humidity" : 0, "button" : 1}

The last one shows the values that reflect the display.
I compare them to the weekly display.

Could it be that there’s a backchannel from the station to tha gauge?

Did the neighbor also buy one? :slightly_smiling_face:

So, I just got one of these and am just playing with it. The data is confusing… :thinking:
The Nexus-TH is straightforward and gives the correct temp and humidity but what exactly is the Eurochron_TH telling me?

As noted already there seems to be two but where is the rainfall info?

time      : 2020-06-22 23:49:35
model     : Nexus-TH     House Code: 71
Channel   : 1            Battery   : 1             Temperature: 17.20 C      Humidity  : 62 %
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-22 23:49:35
model     : Eurochron-TH id        : 71
Battery   : 0            Temperature: -19.4 C      Humidity  : 172           Button    : 0
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-22 23:50:32
model     : Eurochron-TH id        : 71
Battery   : 0            Temperature: -19.4 C      Humidity  : 172           Button    : 0
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-22 23:50:54
model     : Eurochron-TH id        : 10
Battery   : 0            Temperature: 2.2 C        Humidity  : 0             Button    : 1
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-22 23:51:29
model     : Eurochron-TH id        : 71
Battery   : 0            Temperature: -19.4 C      Humidity  : 172           Button    : 0

Should be Eurochron-TH temperature_c with ID 10 multiplied with 3. (IDs differ per unit)

Pls compare that to the weekly value on the included screen.

This morning I have this:

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-23 08:52:02
model     : Nexus-TH     House Code: 71
Channel   : 1            Battery   : 1             Temperature: 25.50 C      Humidity  : 36 %
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-23 08:52:02
model     : Eurochron-TH id        : 71
Battery   : 0            Temperature: -22.0 C      Humidity  : 255           Button    : 0
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-23 08:52:03
model     : Eurochron-TH id        : 10
Battery   : 0            Temperature: 2.2 C        Humidity  : 0             Button    : 1

I only have small amount of data so I am guessing here but,

Is it possible that:

Eurochron-TH id: 71 - Could the humidity figure be the Nexus-TH Temperature x 10?
Eurochron-TH id: 10 - Could the temperature figure be the Eurochron-TH id: 71 Temperature x -10 (to one decimal place). But what either of those temperature figures actually relate to I have no idea.

And,

Could the two button figures indicate which way the tip bucket is sitting?

And, I’m wondering/hoping the Eurochron-TH id: 10 Humidity figure might be a measure of rainfall. We have had none here for days (but I do have a reading for 2 days ago of 5.7mm from when I was tipping it by hand to test it).

I have a couple of confirming instances of the above data but as I said not enough to really be sure.

Here is another one:

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-23 09:08:11
model     : Nexus-TH     House Code: 71
Channel   : 1            Battery   : 1             Temperature: 24.80 C      Humidity  : 38 %
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-23 09:08:11
model     : Eurochron-TH id        : 71
Battery   : 0            Temperature: -21.8 C      Humidity  : 248           Button    : 0
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : 2020-06-23 09:09:03
model     : Eurochron-TH id        : 10
Battery   : 0            Temperature: 2.2 C        Humidity  : 0             Button    : 1

Well the Nexus-TH does not have to be calcluated to provide temperature and humidity data.
Both are transmitted as they are in real.

No idea about Eurochron-TH 71 but Eurochron-TH 10 temperature *3 = amount of rainfall.
You can reset the sensor by removing the batteries for about 30 seconds and then putting them in again.
To compare them to the displays data, also reset the rainfall data of the display by long-pressing the rain-buttton.

Yes, the Nexus transmits actual temp and humidity.

But your suggestion of the TH-10 temperature * 3 being rainfall doesn’t tally with my readings.

I have had no rain for the last three days and four days ago I have a reading of 5.6 because I was playing with the tip bucket.

3 * TH10 Temp = 6.6

??

Try resetting both, the sensor and the display.

I also started to receive the correct values (when multiplied *3) after resetting.

I’m definitely not getting this x3 multiplier.

But I just thought, are you both (@VDRainer, @smi) using Farenheit? That could explain it, I’m using Centigrade?

I think this has nothing to do with the units.
It’s just a value in the mqtt payload and rtl_433 shows it as ‘temperature_C’.

If i reset the gauge and the station, the value_json shows "temperature_C" : 0.0 and the station shows 0.0,

If i tip the gauge one time, the value_json shows "temperature_C" : 0.1, and the station shows 0.3, which is the least resolution of the gauge.

EDIT: Maybe the confusion comes from the display values of the station. I think it resets its value one week after it was turned on, no matter which day of the week it is.

Ahh… ok, so the confusion came from the fact that I was not realising that the temperature_C figure was the weekly total.
It all makes sense now.

Thank you!

EDIT

I should have read more carefully…

1 Like

I think I will order some :smiley: