merbanan / rtl_433

Program to decode radio transmissions from devices on the ISM bands (and other frequencies)
GNU General Public License v2.0
6.13k stars 1.32k forks source link

Request for Baldr Rain Gauge #2394

Closed garudaonekh closed 1 year ago

garudaonekh commented 1 year ago

Hi, Please add protocol for Baldr Rain Gauge. https://www.baldrelectronic.com/products/digital-wireless-indoor-outdoor-thermometer-hygrometer-with-rain-gauge

It's also a Rainpoint product. I think it's similar to RainPoint Soil moisture sensor.

I have collected some cu8 files in my attachment. BaldrRainGauge_CU8_files.zip Regards;

zuckschwerdt commented 1 year ago

All files except g003_433.92M_250k.cu8 are empty. Drop the files https://triq.org/pdv/ on to check.

It's PPM 1000/2000. This will get the data: rtl_433 -X 'n=baldr,m=OOK_PPM,s=1000,l=2000,g=3000,r=5000' g003_433.92M_250k.cu8 as {36}75b000000

Run this live as rtl_433 -X 'n=baldr,m=OOK_PPM,s=1000,l=2000,g=3000,r=5000,bits>=36' and collect the codes. Write the readings you have (from the head unit) with each code, like this:

{36}75b000000 [10 C 60 % 3mm]

Post a list of annotated codes here.

garudaonekh commented 1 year ago

Here it's (edit: reformatted) Each transmission is 13 packet of:

{36}75b000000 [2023-02-23 21:44:39 0mm]
{36}75b8000cf [2023-02-23 21:50:27 5.2mm]
{36}75b80017a [2023-02-23 21:56:15 9.6mm]
{36}75b800224 [2023-02-23 22:02:03 13.9mm]
{36}75b8002a3 [2023-02-23 22:07:51 17.1mm]
zuckschwerdt commented 1 year ago

A shorter list is preferred, edited above. What was temperature and humidity at those times?

garudaonekh commented 1 year ago

It only report rain in mm. There's a separate temperature sensor--captured by your Nexus-TH.

zuckschwerdt commented 1 year ago

Never mind, it does not look like there is any temperature or humidity data in there. See this BitBench.

Its either 20-bit rain in 1/40 mm or 16-bit rain in 1/2.5 mm steps (scale tips) and some 4-bit checksum.

zuckschwerdt commented 1 year ago

Is there a pairing method or button?

Can you remove the batteries, wait a moment and insert them back? Does it still start with 75b or does that change? We must try to find the sender ID.

Also do you have flat batteries or a variable voltage power supply to simulate near dead batteries? Then we can find the "battery_low" flag.

garudaonekh commented 1 year ago

Is there a pairing method or button?

Can you remove the batteries, wait a moment and insert them back? Does it still start with 75b or does that change? We must try to find the sender ID.

Also do you have flat batteries or a variable voltage power supply to simulate near dead batteries? Then we can find the "battery_low" flag.

I already remove battery several times, it's still 75b. Synchornization and registration is done at the LCD monitor side. I have voltage regulator so I can simulate low battery. But I don't see any mention of battery status in its manual or on the LCD panel

zuckschwerdt commented 1 year ago

One interesting flag is the 0/8, e.g. the first code had 75b 0 but other codes then 75b 8 -- any idea what that means or when/why this appears?

garudaonekh commented 1 year ago

I remove battery and I run again. There's no 8. only 75b0000f9. I am trying to find the pattern

garudaonekh commented 1 year ago
{36}75b0001f2 [11.6mm]
{36}75b000245 [13.7mm]

And after remove battery again.

[{36}75b000000 2023-02-23 23:39:35]
[{36}75b8000aa 2023-02-23 23:42:29 3.3mm]
[{36}75b0000fd  2023-02-23 23:45:23 5.4mm]
zuckschwerdt commented 1 year ago

Maybe that is a "did it rain since last transmission" flag? Can you capture the same "mm" multiple times? Does the 8 become 0 then?

garudaonekh commented 1 year ago

Here's an update. I notice b8 still there for several minutes and when I make another click. it goes to b0

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2023-02-24 11:01:01
codes     : {48}00075b000000, {36}75b000000, {36}75b000000, {36}75b000000, {36}75b000000, {36}75b000000, {36}75b000000, {36}75b000000, {36}75b000000, {36}75b000000, {36}75b000000, {36}75b000000, {36}75b000000
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2023-02-24 11:03:56
codes     : {36}75b00007c, {36}75b00007c, {36}75b00007c, {36}75b00007c, {36}75b00007c, {36}75b00007c, {36}75b00007c, {36}75b00007c, {36}75b00007c, {36}75b00007c, {36}75b00007c, {36}75b00007c, {36}75b00007c
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2023-02-24 11:06:50
codes     : {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2023-02-24 11:24:12
codes     : {65}00000003adc000a98, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153, {36}75b800153

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2023-02-24 11:27:08
codes     : {36}75b0001a6, {36}75b0001a6, {36}75b0001a6, {36}75b0001a6, {36}75b0001a6, {36}75b0001a6, {36}75b0001a6, {36}75b0001a6, {36}75b0001a6, {36}75b0001a6, {36}75b0001a6, {36}75b0001a6, {36}75b0001a6
garudaonekh commented 1 year ago

Maybe that is a "did it rain since last transmission" flag? Can you capture the same "mm" multiple times? Does the 8 become 0 then?

No, it will not become 0.

garudaonekh commented 1 year ago

I think it the same as your Nexus Temp/humidity protocol but with different payload. They both connect to the same LCD monitor

zuckschwerdt commented 1 year ago

Yes. Then 75 must be the ID and b0/b8 some flags?

The strange thing is the rain counter: Its either 20-bit rain in 1/40 mm or 16-bit rain in 1/2.5 mm steps (scale tips) and some 4-bit checksum. I don't think a bucket tip is 1/40 =0.025 mm rain. A cup of 1/2.5 =0.4 mm sounds more reasonable.

garudaonekh commented 1 year ago

this is 1 tick: [75b000027 0.9mm] this is 2 ticks:[75b000050 2.0mm]

zuckschwerdt commented 1 year ago

That is very strange. I would have expected: 75b000027 -> 75b000028 -> 75b000029 ... or 75b000027 -> 75b00003? -> 75b00004? ...

Why would it be 27 -> 50? Can you test again and for more tips? With "tip" I mean the bucket in the rain sensor moving once. This is the minimum the sensor can "measure" and should be "1" unit.

garudaonekh commented 1 year ago

Yes, it's the smallest unit.

this is 1 tip: [75b000027 0.9mm] this is 2 tip: [75b000050 2.0mm] 3 tip: 75b00007a 4 tip: 75b0000a3 5 tip: 75b0000cd 6 tip: 75b0000f7

garudaonekh commented 1 year ago

Maybe that is a "did it rain since last transmission" flag? Can you capture the same "mm" multiple times? Does the 8 become 0 then?

The 8 appears when there're quick multiple click tips, sometimes 3 sometimes 4 and sometimes 5 tips to generate the 8.

So it may indicate heavy rain(most likely) or error

garudaonekh commented 1 year ago

I think I get a pattern which may be correct, but it increment double every 3-4 tips maybe it's not 1.25mm per tip: This steps are repeatable but a bit different value at the end. For example: 75b0000a3-75b0000a6

{36}75b000000 [2023-02-23 21:44:39 0tip] {36}75b000025 [2023-02-23 21:50:27 1tip] {36}75b000050 [2023-02-23 21:56:15 2tip] {36}75b00007a [2023-02-23 22:02:03 3tip] {36}75b0000a6 [2023-02-23 22:07:51 4tip] {36}75b0000D1 [2023-02-23 22:07:51 5tip] {36}75b0000fb [2023-02-23 22:07:51 6tip] {36}75b000125 [2023-02-23 22:07:51 7tip] {36}75b00014e [2023-02-23 22:07:51 8tip] {36}75b000178 [2023-02-23 22:07:51 9tip] {36}75b00019f [2023-02-23 22:07:51 10tip] {36}75b0001c8 [2023-02-23 22:07:51 11tip] {36}75B0001f2 [2023-02-23 22:07:51 12tip] {36}75B00021b [2023-02-23 22:07:51 13tip] {36}75B000245 [2023-02-23 22:07:51 14tip]

Screen Shot 2023-02-28 at 11 45 04 AM
garudaonekh commented 1 year ago

I think this one is better suited. Even the 75b8 also give same data as reading on its LCD.

But I don't know where to get the CRC check

Screen Shot 2023-02-28 at 1 11 12 PM
zuckschwerdt commented 1 year ago

Using -2 you are cutting of the last 2 bits, so the mm-factor ist now *10 and the 2 bits could be a parity check. I'll test that.

zuckschwerdt commented 1 year ago

Ohh, I see now. The 20d value is correct. But it's not i mm but in thou -- that's 1/1000 inch:

75b0 0000000 : 0mm = 0 thou
75b8 0000207 : 5.2mm = 205 thou
75b8 0000378 : 9.6mm = 378 thou
75b8 0000548 : 13.9mm = 547 thou
75b8 0000675 : 17.1mm = 673 thou
garudaonekh commented 1 year ago

Great! anything else you need from me?

zuckschwerdt commented 1 year ago

We can implement this now. But it will likely be default-disabled as we can't check anything about the packet (would be too many false positives).

garudaonekh commented 1 year ago

What do you mean by false positives?

zuckschwerdt commented 1 year ago

Many signals can be "seen" as this protocol. This decoder will match and decode too many other signals.

garudaonekh commented 1 year ago

I see. Just the NEXUS Tem/sensor, I see it's decoded by 3 protocols on RTL-SDR.(NExus, Bosch and the other one).

Thanks. Looking forward for testing it in RTL_SDR

garudaonekh commented 1 year ago

Hi,

rtl_433 -R 242

It looks like it can only decode when it's 0mm.

Response:

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2023-03-04 14:22:28
vdata_make() bad data type (197414298)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2023-03-04 14:22:56
vdata_make() bad data type (197414298)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2023-03-04 14:24:22
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2023-03-04 14:24:42
model     : Baldr-Rain   id        : 75b
Flags     : 0            Rain      : 0.000 in
vdata_make() bad data type (197414298)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2023-03-04 14:26:16
zuckschwerdt commented 1 year ago

Oops, thanks, fixed with 1647d9af

garudaonekh commented 1 year ago

Look correct. The result is look correct. I am waiting for my second rain gauge to verify the id is correctly identified.

The first one: 188.171 in is actually the Temperature Sensor. It is also Baldr. So it's that false positive you mentioned.

` time : 2023-03-05 15:46:07 model : Baldr-Rain id : 1c8 Flags : 1 Rain : 188.171 in [pulse_slicer_ppm] Baldr / RainPoint rain gauge. codes : {0}, {36}1c812df0b, {36}1c812df0b, {36}1c812df0b, {36}1c812df0b, {36}1c812df0b, {36}1c812df0b, {36}1c812df0b, {36}1c812df0b, {36}1c812df0b, {36}1c812df0b, {36}1c812df0b, {35}1c812df0a, {756}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 [pulse_slicer_ppm] Baldr / RainPoint rain gauge. codes : {323}000000000000000000000000000000000000000000000000000000000000000000000000000000000


time : 2023-03-05 15:47:12 model : Baldr-Rain id : 75b Flags : 0 Rain : 0.627 in [pulse_slicer_ppm] Baldr / RainPoint rain gauge. codes : {36}75b000273, {36}75b000273, {36}75b000273, {36}75b000273, {36}75b000273, {36}75b000273, {36}75b000273, {36}75b000273, {36}75b000273, {36}75b000273, {36}75b000273, {36}75b000273, {36}75b000273


time : 2023-03-05 15:48:01 model : Baldr-Rain id : 1c8 Flags : 1 Rain : 196.363 in [pulse_slicer_ppm] Baldr / RainPoint rain gauge. codes : {0}, {36}1c812ff0b, {36}1c812ff0b, {36}1c812ff0b, {36}1c812ff0b, {36}1c812ff0b, {36}1c812ff0b, {36}1c812ff0b, {36}1c812ff0b, {36}1c812ff0b, {36}1c812ff0b, {36}1c812ff0b, {35}1c812ff0a, {756}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 [pulse_slicer_ppm] Baldr / RainPoint rain gauge. codes : {323}000000000000000000000000000000000000000000000000000000000000000000000000000000000`

zuckschwerdt commented 1 year ago

Thanks for the feedback.

The first one: 188.171 in is actually the Temperature Sensor. It is also Baldr. So it's that false positive you mentioned.

Yes, I have now default-disabled the Baldr-Rain protocol. You now need -R 242 or a conf file

garudaonekh commented 1 year ago

I just receive another rain gauge, its id is 12b. Thus, I think the id is correct

zuckschwerdt commented 1 year ago

If we have 75b and 12b then the b is likely not part of the ID?

garudaonekh commented 1 year ago

its LCD receiver has rain gauge and temp sensor. Thus b might be used to identified it is a rain gauge. I am buying a few more. I will give more update