Help with slightly different rf 433mhz signal code from sonoff rf Bridge flashed with tasmota and portisch

I have lots of 433mhz sensors around the house and 433mhz plugs and wireless heating system. All devices are constantly sending check signals for battery status and connection checks. This means my rf Bridge is always detecting signals.
I am trying to run alexa routine from contact sensors on my home front and back gates and front door. The contact sensors are 433mhz and are paired with my yale Alarm system which also chimes when they are activated.
My rf Bridge will only detect the signal in rfraw 177 mode. This produces 4 to 6 lines of rf signal code that is not exactly the same every time. The different sensors output signal code that is unique to the sensor but not exactly the same.
I have tried multiple flows but cannot manage to find a solution to consistently detect the exact sensor.
What is the best way to make node red find within the received data certain code to differentiate between sensors.
Sensor a 1st activation
front door button
14:03:10 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T14:03:10","RfRaw":{"Data":"AA B1 03 01F4 0532 1392 A091809180909090909090918180 55"}}
14:03:10 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T14:03:10","RfRaw":{"Data":"AA B1 04 01CC 055A 0302 1612 B091A091A0909091A1A09091A1A0 55"}}
14:03:10 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T14:03:10","RfRaw":{"Data":"AA B1 04 01C2 055A 02F8 1432 B091A091A091A091A091A1A1A090 55"}}
14:03:10 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T14:03:10","RfRaw":{"Data":"AA B1 04 01D6 055A 0302 1432 B091A091A090909090909091A1A0 55"}}
14:03:11 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T14:03:11","RfRaw":{"Data":"AA B1 04 01CC 0564 030C 1432 B091A091A091A091A091A1A1A090 55"}}
14:03:11 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T14:03:11","RfRaw":{"Data":"AA B1 04 01E0 0550 0302 143C B091A091A0909090909090918180 55"}}
14:03:11 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T14:03:11","RfRaw":{"Data":"AA B1 03 01EA 0546 143C A091809180918091809181818090 55"}}
14:03:11 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T14:03:11","RfRaw":{"Data":"AA B1 04 01E0 0550 0302 143C B09180918180909091A091A18091 55"}}
14:03:11 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T14:03:11","RfRaw":{"Data":"AA B1 04 01CC 055A 030C 143C B091A091A090909091A1A0909090 55"}}

2nd
02:45:19 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:19","RfRaw":{"Data":"AA B1 04 01A4 0582 0320 1702 B091A091A091A090909091A091A0 55"}}
02:45:19 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:19","RfRaw":{"Data":"AA B1 04 01D6 0550 02EE 16DA B091A09180909091A09181A091A0 55"}}
02:45:19 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:19","RfRaw":{"Data":"AA B1 04 01CC 0550 0302 170C B091A091A09090909090909091A0 55"}}
02:45:19 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:19","RfRaw":{"Data":"AA B1 04 01C2 055A 02F8 1716 B091A091A090909090909091A1A0 55"}}
02:45:19 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:19","RfRaw":{"Data":"AA B1 04 01CC 055A 02EE 170C B091A091A0909091A091A1A091A0 55"}}
02:45:19 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:19","RfRaw":{"Data":"AA B1 04 01CC 0550 02EE 170C B091A091A09090909090909091A0 55"}}
02:45:20 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:20","RfRaw":{"Data":"AA B1 04 01CC 055A 02F8 1716 B091A091A090909090909091A1A0 55"}}
02:45:20 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:20","RfRaw":{"Data":"AA B1 04 01CC 055A 02EE 170C B091A091A0909091A091A1A091A0 55"}}
02:45:20 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:20","RfRaw":{"Data":"AA B1 04 01D6 0546 02EE 170C B091A091A0909090909090909180 55"}}
02:45:20 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:20","RfRaw":{"Data":"AA B1 04 01CC 0550 02E4 1702 B091A091A090909090909091A1A0 55"}}
02:45:20 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:20","RfRaw":{"Data":"AA B1 04 01CC 0550 02EE 1702 B091A091A0909091A091A1A091A0 55"}}
02:45:20 MQT: tele/rfbridge/RESULT = {"Time":"2020-07-07T02:45:20","RfRaw":{"Data":"AA B1 04 01D6 0546 02EE 170C B091A091809090909090909091A0 55"}}

Please could someone help me in simple terms find a way of finding a common attribute and how to use node red to determine the bits of code in each sensor to send to my next flow
Is it possible to do something like if a line has 01cc and 0550 and 02ee then process otherwise carry on listening.

rfraw 177 is sniffing mode used to determine the signal high/low - for debugging only together with the bitbucket converter script and the AB155 mode. With that information you can build custom firmware for the rf chip. The portisch project is more or less dead unfortunately, in the recent past the person who maintained it updated the firmware quite well.

Did you try rfraw 166 ? Maybe if you are lucky your devices are detected. Else, if by any chance, you have a rtl-sdr dongle, it could make it easier to capture the sequences.

Hi. Thanks. Rfraw 166 does not detect any signal. I have tried the bitbucketconverter for converting b1 to b0 code. Unfortunately that doesn't help me. I have had some success with putting all the data in a spreadsheet and picking out common features and using the "contains" and function.
What I really need is a wildcard like asterisk is used in other software. A way of grouping 3 or 4 lines of data together and a command to ignore certain sections of each line may be useful.

Going to lookup rtl sdr dingle now as I have no idea what it is

Building custom firmware is New to me. It sounds very interesting and just the type of thing I like to get in to. Can you please point me in the right direction where to start. I will Google it and get back to you. Thank you for your input and advice.

Rfraw 166 does not detect any signal.

Which RF firmware are you using ? The one included in the tasmota repository or the one from the portisch repo ? The portisch firmware has more device support.

But is it strange that you don't detect signals in both the default itead mode and portisch mode.

The bridge won't like rfraw 177 for long lengths of time and it will eventually crash.

Building new firmware is not easy apparently many have tried, but it was created with "simplicity studio" that is not so "simple", portisch has some wiki documentation.

rtl_sdr is software defined radio - a radio scanner, that is used to capture all kinds of signals from 500Khz to ±1.75 GHz (police, airplanes, weather satellites, even ISS conversations etc) but can also be used for 433Mhz and comes in the form of a USB stick. There is node-red node available specifically for 433Mhz, if the sonoff bridge can't capture your devices, this is a solution.

Also worth checking out rtl-433 https://github.com/merbanan/rtl_433 which runs on a RTL device and tries to autodecode any 433mhz psckets

Indeed, the node-red node is using that fantastic library under the hood.

Hi. rfraw 166 does detect my smart plugs but not any sensors.
I using the latest tasmota and the portisch from the hex file in a guys name which I can't remember.
my system is up and running but it's only 99 % accurate.
If I can't find a better way of separating the rf code with more accuracy the rtl_433 looks promising.
Do you have any help to offer with producing a way of determination of the different values from a switch node. Thanks to everyone so far for your input
Also I must add that the reported crashing problems from rfraw 177 has not yet happened. If it does I will write some code to input a restart or similar or a self check that runs periodically. So far I hoping this is not going to cause me problems

Do you have any help to offer with producing a way of determination of the different values from a switch node.

You can't, that is the reason why it needs to be captured, decoded and included in the firmware, as the information you see in rfraw 177 captures information more than meets the eye.

The raw messages belong together, see this explanation, they make up the protocol used by your device, but there will always be noise and other devices that talk at the same time, so even more noise.

I understand I think your point. I may be mistaken but I not sure if I explaining what I actually need. I don't need to replicate or transmit anything to the sensors. I can get around the different data if I could get node red to do something like an "if" or an "or" rather than just "contains". Or can I join two or more lines of data together in one "contains" switch node. So that I could do something like
If payload data = a1 b0 c2 or a1 c0 c2 and ** ** ** ** e0230 *
Where "*" is a wild card
If i could do this or similar I can accurately determine the signal source.
Another question I have is does the "contains" include in the results the same order as stated. Eg is contains the same for a1 b0 c2 as c2 b0 a1. Is there any way of using the contains but only in a certain part of the data.
Thanks again for your help and patience. It is very much appreciated

If I understood you correctly, you can do such comparison using regular expressions. Example flow:

[{"id":"5244e2e4.f5961c","type":"inject","z":"12e6d248.858f5e","name":"AA B1 03 01F4 0532 1392 A091809180909090909090918180 55","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"AA B1 03 01F4 0532 1392 A091809180909090909090918180 55","payloadType":"str","x":290,"y":100,"wires":[["f6996a8a.32efe8"]]},{"id":"f6996a8a.32efe8","type":"switch","z":"12e6d248.858f5e","name":"","property":"payload","propertyType":"msg","rules":[{"t":"regex","v":"^AA B1.*0532.*55$","vt":"str","case":false},{"t":"regex","v":"^AA B1.*0533.*55$","vt":"str","case":false}],"checkall":"false","repair":false,"outputs":2,"x":250,"y":260,"wires":[["d3b47775.523988"],["1a52717b.a8030f"]]},{"id":"d3b47775.523988","type":"debug","z":"12e6d248.858f5e","name":"0532","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":410,"y":240,"wires":[]},{"id":"6a74643a.49480c","type":"inject","z":"12e6d248.858f5e","name":"AA B1 03 01F4 0533 1392 A091809180909090909090918180 55","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"AA B1 03 01F4 0533 1392 A091809180909090909090918180 55","payloadType":"str","x":290,"y":160,"wires":[["f6996a8a.32efe8"]]},{"id":"1a52717b.a8030f","type":"debug","z":"12e6d248.858f5e","name":"0533","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":410,"y":280,"wires":[]}]

In the switch node regex comparison the ^ indicates the start of string, .* any character any number of times and $ the end of string. The letters and numbers are what needs to be found in between these symbols.

Also worth investigating is if any of these ESP sw packages might work.

Brilliant mate. Just what I looking for. I been searching for that information for so long. It's difficult to search for info on subjects that you don't know the name of.
I pretty sure that now I can put a flow together that accurately explains details the sensor that is communicating.
A huge thank you to all the people who taken the time to share their knowledge on this subject.

1 Like

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.