{"id":15145357,"url":"https://github.com/cpainchaud/rflink32","last_synced_at":"2025-04-09T13:06:15.474Z","repository":{"id":42066394,"uuid":"330986901","full_name":"cpainchaud/RFLink32","owner":"cpainchaud","description":"RFLink for ESP, with MQTT client","archived":false,"fork":false,"pushed_at":"2024-08-08T08:40:41.000Z","size":9834,"stargazers_count":148,"open_issues_count":51,"forks_count":48,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-09T13:06:06.326Z","etag":null,"topics":["diy","domoticz","esp32","esp8266","home-assistant","home-automation","mqtt","rf","rflink","rflink-esp","rfm69","sensors","sx1276","sx1278"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cpainchaud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"License.txt","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}},"created_at":"2021-01-19T13:20:57.000Z","updated_at":"2025-03-28T10:49:38.000Z","dependencies_parsed_at":"2024-08-08T10:51:28.138Z","dependency_job_id":null,"html_url":"https://github.com/cpainchaud/RFLink32","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpainchaud%2FRFLink32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpainchaud%2FRFLink32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpainchaud%2FRFLink32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpainchaud%2FRFLink32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cpainchaud","download_url":"https://codeload.github.com/cpainchaud/RFLink32/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248045231,"owners_count":21038553,"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":["diy","domoticz","esp32","esp8266","home-assistant","home-automation","mqtt","rf","rflink","rflink-esp","rfm69","sensors","sx1276","sx1278"],"created_at":"2024-09-26T11:23:51.604Z","updated_at":"2025-04-09T13:06:15.456Z","avatar_url":"https://github.com/cpainchaud.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RFLink ESP\n\nThis is a Radio Frequency to MQTT/Serial/TCP gateway built for ESP32 and ESP8266 boards (see #MCU for more).\n\nIt receives and decodes OOK 433MHz signals from your sensors, alarms and pushes them over MQTT/TCP/Serial.\nFor some devices it can also send commands to control them.\n\nThis project is forked from RFLink-ESP (for ESP8266), which itself is forked from the original RFlink project *\"Release 29\"* for Arduino.\n\nThis fork provides additional features:\n\n- Fully (almost) configurable from a web interface whilst retaining the CLI.\n- No recompilation for most options which are configurable at runtime and saved in Flash.\n- More advanced debugging and troubleshooting helpers.\n- Restructured source code with namespaces and classes (Work in Progress)\n\n## 1. MCU\n\nWe extensively use ESP32 dev kits.\nThis is the default settings in `Platformio.ini` and `RFLink.h` files.\n\nYou may also use other ESP8266/ESP8255 based boards when there are no pin limitations. NodeMCUv2 is known to work.\n\n## 2. Receiver / Transmitter / Transceiver\n\nAs a starting point, you can use the RXB6 receiver which is a simple and stable 3.3v component - it is easy to find and cheap.\nMany other receivers are also supported.\n\n\u003e **Avoid using generic noname receivers!**\n\n![Receivers](pictures/RFLink-ESP_Receivers.jpg \"A picture that has six receivers of various makes lying in a rowS on the left. To the right is a single breadboard with an ESP and a RXB6 receiver wired up to it.\")\n\nFor more advanced behavior and reliability, the following receivers are also supported when used with an ESP32 board:\n\n- SX1278\n- SX1276\n- RFM69CW\n- RFM69HCW\n- CC1101\n\nThese advanced receivers require a few pins to be connected to the host.\nThe recommended pin assignments are:\n\n|  Name         | ESP32 | SX1278/6 | RFM69(H)CW | CC1101 |\n|---------------|-------|----------|------------|--------|\n|               |  3v3  |   VCC    |  3.3V      | VCC    |\n|               |  GND  |   GND    |  GND       | GND    |\n|               |  18   |   SCK    |  SCK       | SCK    |\n|               |  19   |   MISO   |  MISO      | MISO   |\n|               |  23   |   MOSI   |  MOSI      | MOSI   |\n| pins::RX_RESET|  4¹   |  NRESET  |  RESET     |        |\n| pins::RX_CS   |  5¹   |   NSS    |  NSS       | CSN    |\n| pins::RX_DATA\u003cbr/\u003epins::TX_DATA |  26¹  |   DIO2   |  DIO2      | GDO0   |\n\n¹ *These must be configured in the web portal, values suggested here are proven to work reliably.*\n\n## 3. OLED display\n\nYou can use an OLED display.\nWe used a SSD1306 128x64 I2C screen in our tests.\n\n**This is highly experimental** and therefore not enabled by default.\n\n![OLED](pictures/RFLink-ESP_OLED_2.jpg \"A picture of a breadboard with an ESP and OLED display wired up. There is text showing on the OLED screen.\")\n\n## 4. IDE\n\nWe strongly recommend using the [PlatformIO IDE](https://platformio.org/install) but you can alternatively use the [Arduino IDE 1.8.10](https://www.arduino.cc/en/Guide/HomePage).\n\n## 5. Framework\n\nWe use [Arduino Core for ESP8266](https://github.com/esp8266/Arduino).\n\n## 6. Libraries\n\nIn addition to the core libraries, the following are also in use:\n\n- PubSubClient for MQTT messaging https://github.com/knolleary/pubsubclient\n- u8g2/u8x8 library for OLED display https://github.com/olikraus/u8g2\n\n## 7. Compile Options and Flags\n\nMany features are not enabled by default or can be disabled for various reasons like firmware size or compatibility.\n\n### OTA *(disabled by default)*\n\nThere are 3 types of OTA to update your firmware:\n\n#### Arduino/ESP's classic push over UDP *(disabled by default)*\n\n- `RFLINK_OTA_ENABLED` we recommend that you enable a password for this method or anyone on your network could push a new firmware to the device.\n- `RFLINK_OTA_PASSWORD=\"my_password_here\"` or `RFLINK_OTA_PASSWORD='\"'${sysenv.OTA_SEC}'\"'` in `platformio.ini` with an environment variable called `OTA_SEC`\n\n#### AutoOTA\n\nThe device will download new firmware from a specified URL.\n\n- RFLINK_AUTOOTA_ENABLED\n- AutoOTA_URL in `Credentials.h` or in `platformio.ini`\n\n#### Config Portal Web Upload\n\nA firmware file can be uploaded via the Config Portal's Firmware page.\n\n![Firmware Screen](pictures/webui-firmware.png \"A screen capture showing the Update via upload and the Update via HTTP URL sections from the Config Portal.\")\n\n## 8. Additional Info\n\n### Config Portal\n\n#### Repository\n\nThe Config Portal web ui is located in its [own repository](https://github.com/cpainchaud/rflink-webui).\n\n#### Default Login Details\n\nrflink32 / 433mhz\n\n### Pinout\n\n- Pin setup has to be done via the Config Portal when it is active.\n- For safety and simplicity all pins are inactive by default.\n- Decoupling capacitors and antenna can be added to improve results.\n\nSimple RX pin wiring:\n\n|  Name         | D1 mini | RXB6  |\n|---------------|---------|-------|\n| PIN_RF_TX_VCC |   D5    | 5 VCC |\n| PIN_RF_TX_NA  |   D6    | 6 DER |\n| PIN_RF_TX_DATA|   D7    | 7 DAT |\n| PIN_RF_TX_GND |   D8    | 8 GND |\n\n![Pinout](pictures/RFLink-ESP_Pinout.jpg \"A picture of a breadboard with both an ESP and RXB6 receiver seated in and wired up together.\")\n\n### Alternative Pinout\n\n- ESP8266 can't draw more than 12mA on a GPIO pin.\n- Some receivers have current spikes bigger than that (eg RXB12).\n- This leads to a non working receiver or non starting ESP.\n\nSafe alternative wiring:\n\n|  Name         | D1 mini | RXB6  |\n|---------------|---------|-------|\n| PIN_RF_TX_VCC |   3v3   | 5 VCC |\n| PIN_RF_TX_NA  |   N/A   | 6 DER |\n| PIN_RF_TX_DATA|   D7    | 7 DAT |\n| PIN_RF_TX_GND |   GND   | 8 GND |\n\n### Thanks\n\nSpecial thanks to: Axellum, Etimou, Schmurtz, Zoomx\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcpainchaud%2Frflink32","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcpainchaud%2Frflink32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcpainchaud%2Frflink32/lists"}