gswds07 Window/Door sensor coexistence with other protocols

316 views
Skip to first unread message

Mik

unread,
Aug 28, 2021, 9:22:09 AM8/28/21
to rtl_433
Hi guys,

first time for me here so "hi to everyone".
I am trying to acquire and decode a gswds07 window/door sensor with rtl_433 which actually works fine with:

/usr/local/bin/rtl_433 -F json -R 0 -X "n=gswds07,m=OOK_PWM,s=476,l=1364,r=15000,g=1600,bits>=24,bits<=25,invert,get=@0:{20}:id,get=@20:{4}:event:[10:open 14:closed 6:low_battery 7:tamper],unique" -M level

with this I get

{"time" : "2021-08-28 15:10:30", "model" : "gswds07", "count" : 20, "num_rows" : 20, "len" : 25, "data" : "4afe0a0", "id" : 307168, "event" : "open", "mod" : "ASK", "freq" : 433.985, "rssi" : -0.086, "snr" : 8.154, "noise" : -8.240}

and is very solid (please note in above case distance sensor to antenna is about 1m)

Now the use case is I also have other 433mhz sensors around the house for which I need protocol 19 and 86 to be activated.
In particular 86 is:
"[86] Wireless Smoke and Heat Detector GS 558"

and with this active I instead get the gswds07 sensor sometimes detected as smoke sensor:
{"time" : "2021-08-28 15:07:25", "model" : "Smoke-GS558", "id" : 1018, "unit" : 18, "learn" : 0, "code" : "507f52"}

{"time" : "2021-08-28 15:07:25", "model" : "gswds07", "count" : 20, "num_rows" : 20, "len" : 25, "data" : "4afe0a0", "id" : 307168, "event" : "open"}

{"time" : "2021-08-28 15:07:34", "model" : "gswds07", "count" : 1, "num_rows" : 25, "len" : 30, "data" : "24bf0170", "id" : 150512, "event" : 1} - this also doesn't get decoded correctly

{"time" : "2021-08-28 15:07:45", "model" : "Smoke-GS558", "id" : 1018, "unit" : 18, "learn" : 0, "code" : "507f52"}

{"time" : "2021-08-28 15:07:45", "model" : "Smoke-GS558", "id" : 1018, "unit" : 18, "learn" : 0, "code" : "507f52"}

Do you have any suggestion about how to improve the situation and allow coexistence of the sensors?

Christian Z.

unread,
Aug 28, 2021, 9:35:45 AM8/28/21
to rtl_433
Decoders for protocols lacking a checksum will be prone to false positives. Any pulse data just roughly fitting the timing will get decoded. The GS-558 is one such protocol.
The 25 bits length is important here: the very prominent EV1527 / HS1527 encoders (also PT2260/PT2262 SC2260/SC2262) have that length in common  and no checksum to validate anything.
For the x1527 the sync is the last pulse, for others it's the first pulse, just to make it more complicated ;)

Btw, I have a PIR motion sensor (x1527 is very common in those) that is decoded by the GS-558. But since it's a fixed code I don't mind and just record a certain smoke alarm as motion event.

TL;DR if you known the IDs you can filter with a "match=" in the flex decoder. If you don't need the GS-558 id/unit decoding then try a flex decoder with fixed ID also.

Mik

unread,
Aug 28, 2021, 11:51:39 AM8/28/21
to rtl_433
mmm so getting a bit lost about what you are suggesting to try.

So is there a way to improve the robustness of the flex (i guess -X custom decoder) by filtering out the ID of the GS-558 from the flex decoder?
I need to keep the GS-558 which i own (but i guess I get it by the -R86?)

Can you please make an example and explain better what "ID" is?

...sorry quite a newbie to rtl_433...

Christian Z.

unread,
Aug 28, 2021, 12:28:09 PM8/28/21
to rtl_433
Observe the data for the gswds07 which is 4afe0a0 (note this is already inverted, the raw data would be b501f5.
Now limit the flex decoder to match only that code:

rtl_433 -F json -R 0 -X "n=gswds07,m=OOK_PWM,s=476,l=1364,r=15000,g=1600,bits>=24,bits<=25,match=4afe0a,invert,get=@0:{20}:id,get=@20:{4}:event:[10:open 14:closed 6:low_battery 7:tamper],unique" -M level

Test by adding the expected raw data as input with  -y 'b501f5'

Your GS-558 will also report as gswds07 if you don't add the "match=", so run without the match, trigger the smoke detector and observe the code. Note the code given for the gswds07, not the GS-558 decoder output -- that output is not raw but processed.

Now add that smoke detector as second flex config, e.g. if you observed a code of abcdef0

rtl_433 -F json -R 0 \
 -X "n=gswds07,m=OOK_PWM,s=476,l=1364,r=15000,g=1600,bits>=24,bits<=25,match=4afe0a,invert,get=@0:{20}:id,get=@20:{4}:event:[10:open 14:closed 6:low_battery 7:tamper],unique" \
 -X "n=gs558,m=OOK_PWM,s=476,l=1364,r=15000,g=1600,bits>=24,bits<=25,match=abcdef,invert,get=@0:{24}:id,unique" -M level

(all bits in the code from the GD-558 are ID, there is just a unique single code the sensors will transmit ever.)


Reply all
Reply to author
Forward
0 new messages