I looked inside some of the sonoff RF Bridge issues, but could not find a solution for my idea.
I'm using Somfy Telis 4 RTS sender. It works on 433.92 MHz.
I don't want to control the buttons on the sender by a Sonoff device.
I rather want to replace or run in parallel the Sonoff RF Bridge,
to be able to control my electr. shutters.
If one have been able to learn the Sonoff RF Bridge to be able to handle all the Somfy RTS commands,
then there will be a wide range of abilities to integrate existing home devices into smart home solutions
by using Sonoff solutions.
I saw that also the RF chip can be reflashed.
You can sniff the commands. How this work has portisch described
https://github.com/Portisch/RF-Bridge-EFM8BB1
So it is up to you 馃憤
I have found this.
https://github.com/Nickduino/Somfy_Remote
I think it will not work with the RF Bridge and Tasmota because Somfy has rolling code.
Hi,
Seems that your issue was addressed. Closing it. Please, reopen if needed. Thanks :+1:
Hi,
i would also control my Somfy shutters with my Sonoff RF Bridge. But i can sniff the commands or something like that because i don麓t can programming stuff and other things like that. I only can flash devices with Tasmota.
Are there any news how i can control my Somfy shutters with my Sonoff RF Bridge?
Hi All can we move this to enhancement now we have RC Remote lib? This would be a great extension for most China made blinds.
No Somfy isnt compatible to RF Bridge or RC Switch lib
Rolling code isnt supported and it isnt possible in RF Bridge because of hardware limitation
Hi @Jason2866 I don't believe that Somfy RTS is rolling code it merely a 24 bit protocol which is not currently supported. I have done a hack up and got it to work mirroring the remote signal. But it would be great as pat of tasmota. The rolling code reported on the documentation refers only to the blind / remote pairing beyond that the protocol is static.
@nosaj66au
So it isnt Rolling Code at all https://github.com/Nickduino/Somfy_Remote/blob/master/Somfy_Remote.ino
but the code is to complex to integrate in the very hardware limited EFM chip...
So Somfy isnt possible with the RF Bridge. A solution could be if you have the raw data (Bitbucket)
to send it with the Rfraw command. For more Infos see https://github.com/Portisch/RF-Bridge-EFM8BB1
Wrote a somfy rts decoder. Fill in the EFM8BB1 bucket sniffing B1 line and see the result. Code is located here: https://github.com/altelch/Somfy-RTS
@altelch Great. Now it needs someone who has Somfy. I havent....
I have a Somfy Telis 16 RTS and captured some raw data. Decoding the data with @altelch tool failed, though.
I'm not familiar with this Bitbucket format yet, but I'll try to debug the code.
Does anyone have a valid input string which I could compare to my data?
Hi,
this is an example input / output I have:
{"RfRaw":{"Data":"AA B1 05 0A14 12FC 04F6 0276 807A 0000000000000012222332223323
33333233222222333323323333332233223323333222332332333323322333322334 55"}}
Manchester Decoded Data-Part
1010 0101 1000 0110 1010111001111011 01100010110011100100010
0xA 0x5 0x8 0x6 0xAE7B 0x62CE44
After deobfuscation
0xA5 0x23 0x28 0xD5 0x19 0xAC 0x8A
Command 0x2 Up
Enter B1 line: {"RfRaw":{"Data":"AA B1 05 0A14 12FC 04F6 0276 7E04 00000000000000122223322332223322233223323333233332233223333332222333323333333333332222333322333334 55"}}
Group A B C D F G
Byte: 0H 0L 1H 1L 2 3 4 6 7
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
! 0xA + R-KEY ! C M D ! C K S ! Rollingcode ! Remote Handheld Addr. !
! 0xa + 0x4 ! 0x1 ! 0x0 ! 0x28d4 ! 0x19ac8a !
+-------+-------+-------+-------+MSB----+----LSB+LSB----+-------+----MSB+
Command 0x1 My / Stop
Rolling code was incremented between my and up, Address is the same. So for me, decoding works.
Could you give me your scanned data and what you pressed?
Greetings,
Altelch.
The bridge receives data during rfraw 177 sniffing, but I'm not sure if it's only the Somfy remote.
The red LED is responding to my button presses, but does not always generate an output.
Maybe there are also other devices in my neighborhood, which are transmitting.
The tool always fails with AttributeError: ManchesterDecode instance has no attribute 'bitvec'. Am I pasting the wrong string?
You can find my data and debug output here.
My script never decodes any data as it doesn't leave state unknown. The sniffed data doesn't fit. The HW Sync Buckets and SW Sync are at the end of the sniffed data and not at the beginning. I put the remote close to the Sonoff RF and pushed the button for a few seconds to get it into repeat mode. After that I could get about 5 correct readings. If you compare your output to mine you can see that my buckets start with hwsync, swsync and the the pulses, yours starts with the pulses and ends with the sync. I'd guess the Sonoff got the start wrong and started with the data part in in's output.
Recording the Telis 16 RTS always produces twisted data, but using a Smoove origin RTS I got valid codes. I'm now working on a script which generates B0 commands. With this commands I was able to register the RF bridge as own remote-device. So I don't have to always sync the rolling code with the other remotes.
Just one more question:
Are there different codes for single-press-UP (completely open the shades) and holding-UP (move as long as the button is pressed)? I could record and replay only holding-UP.
No, no different codes but the remote switches to repeat mode and sends 7 times the same frame without incrementing rolling code. I'm also writing a script to create B0 commands but had no success in moving the blind also with the same parameters I could reproduce the exact sequence I sniffed before...maybe you could provide your script...
Why did I always install the product which is not compatible with anything? :-(
That would be so nice if Somfy works.
After all, Somfy has a large Mart share and would make many users happy. Me too, of course.
sory for my english
I do not know if it helps?
Here are a few numbers.
01:29:34 CMD: rfraw 177
01:29:34 SRC: WebConsole from 192.168.XXX.XXX
01:29:34 RSL: Gruppe 0, Index 1, Befehl RFRAW, Daten 177
01:29:34 MQT: stat/sonoff/RESULT = {"RfRaw":"ON"}
01:29:34 MQT: tele/sonoff/RESULT = {"RfRaw":{"Data":"AAA055"}}
01:29:54 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 146E 06E0 0294 012C 2A3A 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:54 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14B4 05FA 02D0 017C 2AD0 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:54 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14AA 0690 02DA 0172 2A26 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:54 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14BE 0690 02DA 0168 2AD0 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:55 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14AA 069A 02D0 017C 2A30 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:55 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14AA 069A 02D0 0172 2ADA 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:55 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 1414 0690 02DA 0172 2A26 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:55 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14AA 0690 02DA 0172 2AC6 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:56 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 140A 069A 02DA 0168 2ADA 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:56 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14E6 0690 02DA 0172 2A26 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:56 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14AA 05FA 02D0 017C 2AD0 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:56 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14BE 0690 02DA 0172 2A30 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:57 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14BE 069A 02DA 0172 2ADA 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:57 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 141E 0690 02DA 0172 2A80 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:57 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14B4 069A 02DA 0172 2A3A 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:57 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 141E 0690 02DA 0172 2A30 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:58 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14BE 069A 02DA 0172 2A3A 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:58 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14B4 05FA 02D0 0172 2ADA 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:58 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14BE 069A 02D0 017C 2A3A 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:58 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14B4 069A 02DA 0172 2AC6 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:59 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 1428 0690 02DA 0172 2A44 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:59 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14BE 0690 02DA 0172 2A3A 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:59 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 1428 0690 02DA 0172 2AD0 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:29:59 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14B4 0690 02DA 0172 2A30 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:30:00 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14B4 069A 02DA 0172 2AD0 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:30:00 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14B4 069A 02D0 0172 2A3A 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:30:00 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14BE 0690 02DA 0172 2AD0 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:30:00 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 1414 0690 02DA 0172 2ADA 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:30:01 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14B4 0690 02DA 0172 2A30 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:30:01 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14BE 05F0 02DA 0172 2ADA 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:30:01 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 1414 069A 02DA 0168 2A30 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
01:30:01 RSL: tele/sonoff/RESULT = {"RfRaw":{"Data":"AA B1 05 14B4 069A 02DA 0172 2AD0 0123322323233223233223323232323223323232232323233223322332323232233232232332322324 55"}}
Yes, I ended up using blinds from China with the dooya protocol. Now I need time to integrate it into Tasmota. I have tested the code on an esp which work fine.
@vaprinz what kind of remote where you recording? Do you have another type to try with? As I wrote before, I was only able to capture valid B1 strings with one of my remotes.
You can try to switch your shades with in programming mode and register/simulate a new one with this script https://github.com/sehaas/yfmos