ESP Somfy RTS Integration

Hi,
The ESP32 Lilygo PoE does work perfectly with the CC1101 if the corrected RX/TX connections in the documentation are used. It does require some care with the addressing of the roller motors (in my case about a dozen, including groups on a remote) so “unpair” and delete do make sense (then choose an update to the latest firmware first) to have a second chance.

By the way, interruption between motor pairing and linking the remotes is not a good idea either, smoothly finish though and don’t get distracted. Label your remotes first to avoid confusion and wasted time.

Now everything works as expected with also the integration in home assistant (repository GitHub - rstrouse/ESPSomfy-RTS-HA: Control your somfy shades in Home Assistant) for automations and scripts.

Thanks for this comprehensive and brilliant tutorial.

Regards

Awesome! Sorry for the misprint in the docs and thanks for the advice.

Just wanted to thank you for this excellent solution for the Somfy RTS blinds.
I used RFLink before which missed out on the sync with the extra remotes and also the position of the blinds.
Only today I have build the hardware, installed the software and got it working.
Also the HA integration works like a charm.

A big thanks!

You are welcome! Just happy you have found some utility in it.

@rstrouse you are a crack! It is an incredible project, both the programming and the aesthetics are impeccable and intuitive.
It is an example of how to do things well. Congratulations!.
I implemented your project and it worked wonders, but I’m doing the same with some TUBE shades but I can’t link the shades with the application.
I can link the control and also see the reception of the remote control, but I will finish the programming of the shade and the software. The protocol is RTL, do you think it could be that?
Thank you so much

You may have found another variant of the RTx protocol. If you are seeing reception of the remote open the Radio section and select the Logs tab. Then check to make sure each of the button frames match the button you pressed on the remote. Don’t forget the prog button. When you are done press the copy button and paste those results either here or in an issue on the repository.

image

Is this project working for the “Somfy Motor Tilt 50 RTS Wirefree”?

Do I need the remote to be able to make this project work? Or is ESP32 and the transmitter enough (and ofcourse wiring)?

Is this project working for the “Somfy Motor Tilt 50 RTS Wirefree”?

Yes. If this is a tilt only motor then you set it up as a Tilt Only.

Do I need the remote to be able to make this project work?..

Yes you need the remote to set the end limits and open the memory to pair ESPSomfy RTS. ESPSomfy RTS does not have functions for setting the upper and lower limits.

EDIT: ESPSomfy RTS does not cannibalize a remote. It simply acts as another remote without destroying an existing one if that is the question. You can still use your existing remote and ESPSomfy RTS and the positions will be maintained.

1 Like

Now I am not sure if my question is answered or not.

I want to know if I am able to control the motor with only ESPSomfy RTS.
Can I skip buying a remote or is the remote one of the requirements to start?

Yes you need a remote but you will be able to use both.

1 Like

One final question then I am good to go (hopefully): what is the cheapest remote that will work? Somfy Situo 1 RTS Pure II?

Btw, great and detailed (and also funny) documentation.

Any of the remotes marked RTS will work. Situo 1 or Telis 1 will be fine.

1 Like

Here is a screenshot of the reception. Tell me if you need anything else, thank you very much

The buttons are working correctly. Here is the copied code

[{“encKey”: 152,
“address”: 1368635,
“rcode”: 956,
“command”: “Down”,
“rssi”: -53,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [10053,97282,2545,2581,2537,2549,4872,1255,1307,645,653,1265,671,621,1305,624,669,628,659,633,649,1269,661,628,1316,608,661,629,670,1273,660,624,1291,1289,650,617,1303,641,649,645,654,638,659,620,644,25,1285,666,622,1295,1266,672,621,655,638,1284,645,655,1266,671,620,1306,623,666,1280,1283,645,653,639,660,620,645,634,661,1267,1320,1265,1301,1280,1293,644,652,614,657,646,644,1282,1289,651,660,631,640,1269],
“time”: “2023-08-04T20:38:07.113-0300”
},
{“encKey”: 150,
“address”: 1368635,
“rcode”: 957,
“command”: “Up”,
“rssi”: -53,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [10052,97272,2545,2591,2517,2578,4846,1277,1312,617,676,1266,1303,1253,666,622,1322,613,660,1272,650,639,1309,619,676,613,659,1272,1302,641,650,1271,659,632,1290,632,659,628,665,623,657,1285,645,626,656,640,1306,1272,660,616,672,621,1307,624,667,1252,658,646,1294,639,658,1271,1304,626,644,650,658,618,651,645,645,1290,1300,1252,1309,1269,1311,620,669,636,660,627,644,1274,1310,617,676,611,658,1272],
“time”: “2023-08-04T20:38:08.768-0300”
},
{“encKey”: 149,
“address”: 1368635,
“rcode”: 958,
“command”: “My”,
“rssi”: -53,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [10036,97291,2550,2575,2527,2560,4852,1289,1300,630,662,1264,1294,1290,1301,1254,1309,1270,660,630,1299,631,660,630,651,643,652,1262,1322,1259,656,642,1296,641,651,618,676,1264,1300,1258,663,621,1319,1265,673,619,654,614,1309,644,653,1266,672,619,1306,615,670,1272,1290,644,648,636,661,625,670,627,660,1266,1297,1262,1316,1254,1308,644,652,637,657,622,667,1259,1316,628,660,615,679,1244],
“time”: “2023-08-04T20:38:10.260-0300”
},
{“encKey”: 154,
“address”: 1368635,
“rcode”: 959,
“command”: “Up+Down”,
“rssi”: -57,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [2549,2572,2518,2586,4820,1307,1287,25,648,650,1268,670,631,1258,1347,1250,674,620,1305,609,673,1247,683,633,646,645,633,660,622,661,622,672,1267,641,680,1255,671,621,657,631,1301,622,659,632,648,643,628,1304,1269,649,639,639,672,1270,669,619,1300,631,650,1286,632,658,1285,1296,613,659,642,641,683,607,649,648,1279,1286,1295,1281,1299,1297,623,667,606,680,612,659,1296,1280,647,646,656,631,1276],
“time”: “2023-08-04T20:38:13.727-0300”
},
{“encKey”: 154,
“address”: 1368635,
“rcode”: 959,
“command”: “Up+Down”,
“rssi”: -54,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 14,
“pulses”: [621,32351,2537,2554,2548,2567,2536,2573,2525,2567,2533,2546,2555,2564,2551,2547,4862,1267,1305,613,692,1260,657,619,1319,1268,1295,637,662,1250,670,611,1316,621,670,634,664,620,667,629,657,631,665,1246,660,628,1315,635,660,614,673,1272,661,615,673,620,652,615,1308,1273,658,642,650,618,1326,625,640,1276,660,623,1319,611,659,1271,1326,601,664,625,683,614,664,619,675,1261,1315,1265,1290,1271,1315,619,670,637,663,626,645,1277,1291,643,647,637,665,1277],
“time”: “2023-08-04T20:38:13.859-0300”
},
{“encKey”: 156,
“address”: 1368635,
“rcode”: 960,
“command”: “Prog”,
“rssi”: -58,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [10044,97290,2550,2555,2542,2578,4846,1280,1307,621,653,1285,640,625,657,635,1304,623,657,635,664,1270,660,631,1291,1281,1307,620,657,639,657,620,671,1262,652,644,1297,1267,1294,1288,650,618,676,613,1310,1269,1311,1273,1302,1252,670,634,635,628,1321,1260,664,618,675,613,659,623,668,629,659,615,1303,1277,1313,1268,659,633,649,619,1301,1291,1293,1267,647,644,1307,624,645,1276,660,621,1316],
“time”: “2023-08-04T20:38:21.505-0300”
},
{“encKey”: 152,
“address”: 1368635,
“rcode”: 961,
“command”: “Down”,
“rssi”: -54,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [10042,97269,2546,2591,2512,2573,4869,1280,1306,620,655,1266,671,621,1306,625,668,628,658,633,650,1271,658,615,1302,1276,1309,643,652,1266,1298,1285,655,620,1294,1266,1321,1261,1303,1274,1310,1268,1311,1270,1303,1251,669,640,630,654,1295,1260,654,643,648,636,661,616,671,622,654,635,1308,1271,1286,1270,655,640,656,619,1320,1266,1296,1261,679,618,1298,641,648,1269,660,639,1290],
“time”: “2023-08-04T20:38:34.126-0300”
},
{“encKey”: 150,
“address”: 1368635,
“rcode”: 962,
“command”: “Up”,
“rssi”: -57,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [10044,97281,2554,2574,2526,2565,4857,1289,1302,626,659,1261,1297,1288,651,618,1300,640,649,1269,659,642,1299,1256,1308,1270,1311,644,646,1261,654,645,1295,1266,1316,614,659,1273,674,613,1309,1269,1311,1270,1304,1253,670,635,634,26,654,1295,1261,654,643,646,637,661,615,672,620,654,639,1283,1270,1310,1269,656,634,665,618,1299,1267,1319,1265,648,644,1304,625,645,1275,659,623,1318],
“time”: “2023-08-04T20:38:35.858-0300”
},
{“encKey”: 149,
“address”: 1368635,
“rcode”: 963,
“command”: “My”,
“rssi”: -55,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [10055,97272,2546,2569,2542,2548,4879,1245,1316,642,646,1285,1290,1281,1306,1271,1286,1268,657,635,1315,1252,1317,1269,659,632,1292,1278,657,619,1294,1284,1293,638,659,625,669,1255,1310,1268,1314,1271,1306,1251,672,634,634,654,1297,1261,655,643,646,634,639,641,649,645,655,637,1285,1271,1312,1270,653,638,641,623,1321,1260,1293,1283,665,619,1300,632,649,1294,632,653,1291],
“time”: “2023-08-04T20:38:37.060-0300”
},
{“encKey”: 151,
“address”: 1368635,
“rcode”: 964,
“command”: “My+Up”,
“rssi”: -70,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [2551,2547,2544,2561,4859,1262,1316,625,679,1241,1325,1263,658,646,620,662,1284,1271,653,637,1308,1250,685,626,1300,611,685,599,661,1300,633,644,1296,1260,666,621,674,613,663,619,669,607,1333,1245,1298,1293,1298,1277,643,634,657,627,1317,1261,663,619,670,611,659,649,623,650,652,636,1284,1301,1286,1270,653,638,659,621,1320,1254,1317,1242,24,660,671,1273,643,644,1278,661,624,1298],
“time”: “2023-08-04T20:38:39.081-0300”
},
{“encKey”: 151,
“address”: 1368635,
“rcode”: 964,
“command”: “My+Up”,
“rssi”: -64,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 14,
“pulses”: [669,1261,666,621,1322,32940,2561,2545,2548,2570,2536,2545,2546,2561,2547,2549,2560,2554,2546,2553,4868,1277,1298,615,653,1296,1285,1273,649,637,666,625,1297,1290,650,618,1300,1267,668,629,1288,646,644,632,660,1291,644,628,1311,1275,647,635,634,645,643,632,659,640,1295,1261,1314,1278,1283,1295,635,640,648,644,1279,1282,668,632,634,655,646,622,655,639,658,620,1297,1288,1297,1261,654,643,648,635,1290,1271,1310,1273,650,635,1311,617,650,1289,649,644,1277],
“time”: “2023-08-04T20:38:39.981-0300”
},
{“encKey”: 153,
“address”: 1368635,
“rcode”: 966,
“command”: “My+Down”,
“rssi”: -69,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 8,
“pulses”: [690591,40528,15432,40706,7535,2652,271,5143,2409,50,2651,2520,2569,2532,2601,2495,2569,4844,1295,1320,616,667,1252,660,660,1277,662,628,1287,1296,1268,643,655,1282,1271,672,614,660,648,1272,667,618,1295,657,637,1279,1278,662,622,1317,1266,651,621,1324,1240,1314,1288,1289,1277,659,624,670,604,1307,1274,671,614,664,622,670,605,682,607,679,618,1323,1254,1320,1237,671,624,679,591,1333,1248,1314,1269,679,609,1308,622,681,1242,675,620,1307],
“time”: “2023-08-04T20:38:43.826-0300”
},
{“encKey”: 153,
“address”: 1368635,
“rcode”: 967,
“command”: “My+Down”,
“rssi”: -67,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [2560,2548,2547,2563,4860,1266,1322,609,664,1276,667,610,1311,619,672,1260,1307,1278,661,625,1296,1262,677,616,648,638,666,625,1298,1264,677,617,1298,1269,664,629,1311,620,672,1255,1306,1273,1311,1242,1335,1246,675,615,659,622,1319,1269,647,618,676,611,685,597,667,630,660,613,1315,1263,1328,1251,660,624,667,630,1309,1247,1328,1250,669,609,1312,642,646,1264,678,618,1297],
“time”: “2023-08-04T20:38:44.284-0300”
},
{“encKey”: 153,
“address”: 1368635,
“rcode”: 968,
“command”: “My+Down”,
“rssi”: -69,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [2538,2584,2524,2564,4869,1265,1319,616,681,1244,655,662,1281,626,652,1288,1298,1261,656,643,1295,614,691,604,680,606,667,644,646,634,661,1275,646,637,1308,624,643,637,661,1246,695,610,660,644,1272,1295,1299,1262,1308,1276,658,616,667,607,1333,1245,673,614,662,647,647,630,656,637,653,620,1297,1266,1320,1255,666,607,682,614,1294,1311,1280,1278,661,624,1299,635,666,1244,670,611,1336],
“time”: “2023-08-04T20:38:47.744-0300”
},
{“encKey”: 153,
“address”: 1368635,
“rcode”: 968,
“command”: “My+Down”,
“rssi”: -63,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 14,
“pulses”: [32942,2534,2571,2522,2570,2533,2573,2529,2568,2554,2548,2521,2582,2521,2566,4888,1246,1324,613,666,1255,685,595,1317,616,683,1245,1328,1249,670,636,1290,644,646,635,660,623,665,634,655,631,649,1271,662,613,1329,627,658,615,663,1277,660,614,667,629,1310,1246,1327,1250,1321,1258,664,630,660,632,1304,1253,662,644,641,631,661,615,665,619,671,636,1286,1270,1306,1266,674,616,664,624,1295,1289,1301,1253,684,621,1296,636,658,1271,653,613,1309],
“time”: “2023-08-04T20:38:47.915-0300”
},
{“encKey”: 154,
“address”: 1368635,
“rcode”: 969,
“command”: “Up+Down”,
“rssi”: -68,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 4,
“pulses”: [2543,2570,2541,2554,4870,1251,1333,620,670,1242,668,629,1303,1269,1287,685,608,1296,629,670,1286,632,656,637,659,622,671,1240,1332,1256,657,644,1271,669,630,645,645,1287,1284,1282,1312,1246,1330,1246,1312,1286,634,656,626,642,1295,1284,658,619,670,611,658,643,101,152,225,274,322,347,548,75,778,100,150,175,501,75,757,1280,1280,1285,1296,632,632,661,620,1321,1263,1313,1263,634,672,1272,664,627,1296,627,655,1286],
“time”: “2023-08-04T20:38:50.892-0300”
},
{“encKey”: 154,
“address”: 1368635,
“rcode”: 969,
“command”: “Up+Down”,
“rssi”: -66,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 14,
“pulses”: [32946,2534,2606,2499,2575,2538,2557,2540,2591,2529,2550,2518,2599,2502,2595,4847,1248,1309,672,622,1311,608,672,1275,1287,1285,633,657,1274,669,611,1309,619,694,616,635,670,621,1311,1284,1275,661,616,1297,642,662,623,666,1263,1316,1250,1309,1272,1304,1272,1296,1265,670,607,681,614,1315,1250,664,641,643,654,655,612,664,619,670,610,1311,1271,1328,1242,673,635,632,646,1296,1267,1320,1259,667,623,1303,624,663,1275,634,662,1274],
“time”: “2023-08-04T20:38:51.044-0300”
},
{“encKey”: 154,
“address”: 1368635,
“rcode”: 969,
“command”: “Up+Down”,
“rssi”: -60,
“bits”: 56,
“proto”: 1,
“valid”: true,
“sync”: 14,
“pulses”: [32964,2541,2567,2541,2565,2543,2558,2535,2544,2544,2569,2532,2568,2540,2563,4857,1268,1297,632,662,1266,669,628,1311,1245,1329,628,646,1273,665,627,1294,636,660,614,672,621,655,1267,1323,1259,655,618,1321,617,677,618,673,1265,1299,1255,1308,1269,1311,1271,1306,1250,671,637,661,602,1322,1262,655,618,671,635,667,612,649,644,653,614,1310,1269,1311,1269,655,639,656,615,1294,1293,1296,1263,652,641,1298,638,641,1275,667,623,1294],
“time”: “2023-08-04T20:38:51.188-0300”
}]

Change the protocol selected for that shade to RTW. It should work from there.

I am very impressed by this project. The documentation looks impressive, the UI looks to give hints to help folks without 100% confidence, plus it can listen to remotes!

We started with a TaHoma, because it was supposed to offer local control. Turns out, local control wasn’t available in North America. So it got returned.

We moved over to a Bond Bridge. It works for most of the blinds. But some of the far ones only get a signal every couple weeks, and the close ones sometimes miss a signal. Plus the Bond Bridge doesn’t have state/can’t listen to remotes.

This project looks like it can solve all of our problems. I’m ordering the parts now!

I didn’t see it mentioned, but will this work with the Somfy Clever retrofit kit? I’m assuming it will since those motors use RTS, we’ve got a bunch of Situo 5 RTS remotes working with them, and the Bond Bridge communicates to them. But figured it wouldn’t hurt to ask. If you aren’t sure, I’ll post back once I’ve got it all setup and give it a try.

Thanks for putting this together! I’m eager to have a more reliable system for our window treatments.

This is out of left field, but any interest in making a similar project for Lutron Caséta? It also uses its own RF protocol–that I believe is 434 MHz. It’s not the same frequency, but maybe there are transceivers available for it?

Reason I’m asking is that the Caséta hub has a device limit of 75. And we’d go beyond that if we were to add more devices. The docs for this project mention a 32 device limit with a 4MB board. So maybe with one of the bigger ESP32s (there’s 16MB ones, from what I can tell), it could hold more devices? Of course, given that it’d be a completely different system, there’s no telling what the device limit would actually be.

Anyway, thought I’d toss out the idea in case you wanted another project.

I had already tried it, but it didn’t work, I would really like to use your project for this Tube curtains. The strange thing is that it receives perfectly but fails to emit to the engine.
Thank you very much @rstrouse

Since the latest update my somfy is no longer working, the integration is still there, when I visit the device via its IP it is there everything is in place but there is no link to HA.
The blinds are greyed out and no update no restart gets them working again.
Has something being depreciated as they tend to like to do or am I missing something?
It worked for over a year satisfactory.