{"id":18701986,"url":"https://github.com/legion2/somfy_remote_lib","last_synced_at":"2025-05-07T22:40:49.072Z","repository":{"id":38420433,"uuid":"316538693","full_name":"Legion2/Somfy_Remote_Lib","owner":"Legion2","description":"Emulate a Somfy remote using a 433.42 MHz transmitter.","archived":false,"fork":false,"pushed_at":"2024-08-08T21:49:14.000Z","size":51,"stargazers_count":140,"open_issues_count":8,"forks_count":19,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-31T14:58:22.904Z","etag":null,"topics":["arduino","arduino-library","esp32","esp8266","remote","somfy"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Legion2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"Legion2","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"paypal.me/LeonKiefer"}},"created_at":"2020-11-27T15:35:07.000Z","updated_at":"2025-03-24T09:16:41.000Z","dependencies_parsed_at":"2023-12-26T16:27:36.240Z","dependency_job_id":"84a06d1a-39bb-423d-bec5-4b80d2288169","html_url":"https://github.com/Legion2/Somfy_Remote_Lib","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Legion2%2FSomfy_Remote_Lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Legion2%2FSomfy_Remote_Lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Legion2%2FSomfy_Remote_Lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Legion2%2FSomfy_Remote_Lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Legion2","download_url":"https://codeload.github.com/Legion2/Somfy_Remote_Lib/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252967970,"owners_count":21833243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduino-library","esp32","esp8266","remote","somfy"],"created_at":"2024-11-07T11:43:09.845Z","updated_at":"2025-05-07T22:40:49.045Z","avatar_url":"https://github.com/Legion2.png","language":"C++","funding_links":["https://github.com/sponsors/Legion2","paypal.me/LeonKiefer"],"categories":[],"sub_categories":[],"readme":"# Somfy Remote Lib [![Test](https://github.com/Legion2/Somfy_Remote_Lib/workflows/Test/badge.svg)](https://github.com/Legion2/Somfy_Remote_Lib/actions?query=event%3Apush+workflow%3Atest)\n\nBased on [Somfy Remote](https://github.com/Nickduino/Somfy_Remote) by Nickduino.\n\nThis project is an Arduino Library able to emulate a Somfy RTS (Radio Technology Somfy) remote control on Arduino, ESP8266 and ESP32 devices.\nIt provides out of the box support for multiple remotes and different storage solutions for the rolling codes.\nBecause it is a Arduino Library it can easily included in existing projects or used standalone using one of its [included example sketches](examples/).\n\nIf you want to learn more about the Somfy RTS protocol, check out [Pushtack](https://pushstack.wordpress.com/somfy-rts-protocol/).\n\n## Getting Started\n\nThis library was tested with ESP32 and the CC1101 transceiver module.\nIt should also work on any Arduino and ESP8266 Board with any *433.42 Mhz* RF transmitter.\nI have not the time and resources to test them all, so please let me know (open an Issue) when you have any problem or have tested other hardware with this library.\n\n### Hardware Requirements\n\nFor this library to work you need an *433.42 Mhz* RF transmitter.\nThe regular 433.92 MHz RF transmitter do not work, so watch out when buying a transmitter that you get a *433.42 Mhz* RF transmitter.\nAn example for such an compatible transmitter is the CC1101 module, see the [CC1101](examples/CC1101/CC1101.ino) example.\nFor the CC1101 module the `SmartRC-CC1101-Driver-Lib` must be installed.\n\n### Installation\n\nThis library can be install using the Library-Manager.\nOpen the Library-Manager in Arduino IDE via Tools-\u003eManage Libraries...\nSearch for \"Somfy_Remote_Lib\" and install the Somfy Remote Lib library.\n\n### Usage\n\nSee the [SomfyRemote example](examples/SomfyRemote/SomfyRemote.ino).\n\nAll the examples can be controlled via the Serial Monitor.\nOpen the Serial Monitor and set the baud rate to 115200 and set line endings to `Newline` (`\\n`).\nYou can type in the name of the command or the hexadecimal representation of it.\n\n#### Rolling Code Storage\n\nThis library has a plugable interface for storing the rolling codes, described in [RollingCodeStorage.h](src/RollingCodeStorage.h).\n\nCurrently, there are two implementations of the storage available:\n\n1. [EEPROM](src/EEPROMRollingCodeStorage.cpp) - should work on any device with EEPROM\n2. [NVS](src/NVSRollingCodeStorage.cpp) - should work on ESP32 with [Non Volatile Storage](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/storage/nvs_flash.html)\n\nMost [examples](examples/) use the EEPROM implementation. See the [ESP32-NVS](examples/ESP32-NVS/ESP32-NVS.ino) example for NVS.\n\nEventually you can pass NULL into the constructor of the SomfyRemote class in place of *rollingCodeStorage* and use external rolling code keeping logic. \nIf you are not using any storage, then you have to use `sendCommandWithCode` method instead of `sendCommand`.\n\n#### Available commands\n\n| Name    | Description                                     | HEX code |\n|---------|-------------------------------------------------|----------|\n| My      | The My button pressed                           | 1        |\n| Up      | The Up button pressed                           | 2        |\n| MyUp    | The My and Up button pressed at the same time   | 3        |\n| Down    | The Down button pressed                         | 4        |\n| MyDown  | The My and Down button pressed at the same time | 5        |\n| UpDown  | The Up and Down button pressed at the same time | 6        |\n| Prog    | The Prog button pressed                         | 8        |\n| SunFlag | Enable sun and wind detector                    | 9        |\n| Flag    | Disable sun detector                            | A        |\n\nThe `sendCommand` function can be customized with a second parameter.\nThe parameter controlls how often the command is repeated, default is 4 times.\n\nFor remote control Telis 4 Modulis RTS5 the following applies:\nWhen the UP command is sent once, the blinds go up (Open).\n```cpp\nsendCommand(Command::Up, 1);\n```\nWhen the DOWN command is sent once, the blinds go down (Close).\n```cpp\nsendCommand(Command::Down, 1);\n```\nIf you want to tilt the blinds, send the Up / Down command four times.\n```cpp\nsendCommand(Command::Up, 4);\n```\nor\n```cpp\nsendCommand(Command::Down, 4);\n```\n\n#### Register the Somfy Remote\n\nBefore the emulated Somfy remote can control RTS devices, the remote must be registered.\nTherefore you can refer to the original manual of your RTS device, the only difference is that instead of pressing buttons, the commands from above must be used.\nSo for example if the PROG button should be pressed, instead send the `Prog` command.\n\n### Troubleshooting\n\n#### Up/down commands not responsive after successful PROG\n\nIf your blinds jump to respond to the PROG command when registering the remote, but following commands like up and down do not respond, it is likely that your rolling code storage is not persisting. The result of this is that the remote will send a constant rolling code, which the blinds will ignore.\n\nIn the case of NVS storage, a possible cause for this is that the key used is too long. The key must [comform with the limitations of your microcontroller](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/storage/nvs_flash.html#keys-and-values).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flegion2%2Fsomfy_remote_lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flegion2%2Fsomfy_remote_lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flegion2%2Fsomfy_remote_lib/lists"}