{"id":13338594,"url":"https://github.com/christiaanderidder/esphome-create-wind-calm","last_synced_at":"2025-03-01T07:27:41.267Z","repository":{"id":248506060,"uuid":"828880687","full_name":"christiaanderidder/esphome-create-wind-calm","owner":"christiaanderidder","description":"A guide and configuration for converting the Create Wind Calm fan to ESPHome","archived":false,"fork":false,"pushed_at":"2025-02-22T10:18:25.000Z","size":82,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-22T11:23:34.928Z","etag":null,"topics":["create","esphome","ikohs","tuya","wind-calm"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/christiaanderidder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-07-15T10:07:19.000Z","updated_at":"2025-02-22T10:18:29.000Z","dependencies_parsed_at":"2024-10-23T20:38:46.326Z","dependency_job_id":"b74b79a9-75b9-43ce-adab-996152dc88ab","html_url":"https://github.com/christiaanderidder/esphome-create-wind-calm","commit_stats":null,"previous_names":["christiaanderidder/esphome-create-wind-calm"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christiaanderidder%2Fesphome-create-wind-calm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christiaanderidder%2Fesphome-create-wind-calm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christiaanderidder%2Fesphome-create-wind-calm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christiaanderidder%2Fesphome-create-wind-calm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/christiaanderidder","download_url":"https://codeload.github.com/christiaanderidder/esphome-create-wind-calm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241333796,"owners_count":19945865,"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":["create","esphome","ikohs","tuya","wind-calm"],"created_at":"2024-07-29T19:17:02.505Z","updated_at":"2025-03-01T07:27:41.252Z","avatar_url":"https://github.com/christiaanderidder.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# CREATE WIND CALM ceiling fan ESPHome mod\nThis repository contains a guide and configuration files for converting the Create Wind Calm fan from Tuya Smart to ESPHome.\nFor more information on this fan and some experiences using it, see [https://github.com/velzend/create_ikohs_fan](https://github.com/velzend/create_ikohs_fan).\nMost of the information in this guide came from [an issue on velzend's git repo](https://github.com/velzend/create_ikohs_fan/issues/7) and my own experiences.\n\n**I am not resposible for any damage you might do to your device, nor will I provide any support besides the information given below**\n\nThe [CREATE WIND CALM](https://www.create-store.com/nl/kopen-plafondventilatoren-zonder-lamp/82468-wind-calm-plafondventilator-40w-silent-o132-cm.html) (also known as IKOHS) ceiling fan is Tuya based device, which means that it requires cloud connectivity to be able to be controlled remotely.\n\nFor Tuya devices there are generally two ways to make the device local only:\n- Using local integrations that speak the tuya protocol like [localtuya](https://github.com/rospogrigio/localtuya), [tuya-local](https://github.com/make-all/tuya-local), [tinytuya](https://github.com/jasonacox/tinytuya) etc.\n- By modding the device to use ESPHome\n\n## Tuya Datapoints\nTuya devices expose a number of data points which represent different features of a tuya device. These are relevant for either type of integration. The data points for the CREATE WIND CALM can be found in the [tuya](tuya) folder in this repository.\n\n## Local integrations\nWhile these generally work, they have a big downside. It requires registering the device with the Tuya Smart app, registering as a developer on the Tuya cloud platform and finally blocking internet access from the device. All in all it works, but it is not fully local only.\nInitially this was the integration method I used, but it had a lot of intermittent connection issues, where then fan just started refusing connectings after a certain amount of time. All in all it will work in some cases, and might be the solution if you are not comfortable physicially modifying your device.\n\n## Modding to ESPHome\nThe better solution, in my eyes, is to fully eliminate the Tuya Cloud connectivity and switch over to ESPHome instead.\nFor some devices this is as easy as flashing ESPHome directly to the tuya provided board using [libretiny](https://docs.libretiny.eu/).\nIn the case of this fan this is not possible as it uses the WBR3 board which is [not supported](https://docs.libretiny.eu/docs/status/supported/#unsupported-boards) by libretiny.\nHowever, the [WBR3](https://developer.tuya.com/en/docs/iot/wbr3-module-datasheet?id=K9dujs2k5nriy) board is fully pin-compatible with an [ESP-12F](https://docs.ai-thinker.com/_media/esp8266/docs/esp-12f_product_specification_en.pdf), which makes replacing it relatively easy.\n\n## Replacing the WBR3 with ESP-12F\nFirst of all it's important to be aware that there are multiple versions of this fan. Some variants have a dimmable light, while my fan has not. The exact motor control unit and RF remote used also seem to differ between units. This is most likely due to CREATE just using any parts available off the shelve.\n\nMake sure to flash your ESP-12F with ESPHome before continuing. In my case I used a [development board](https://www.tinytronics.nl/en/development-boards/accessories/adapter-boards/development-board-for-esp8266-wi-fi-module) which makes this very quick and easy without any soldering. \nThe [esphome](esphome) folder in this repository contains the ESPHome yaml for the fan, carefully check this file and make sure you set up the correct secrets and IP addresses.\n\nWhen opening the motor control unit, it should have a main board with 2 small daughter boards soldered on using through-hole headers. One of these boards has the WBR3 soldered to it, the other is the RF receiver for the remote.\nThe WBR3 daughter board can easily be desoldered to make working on replacing the WBR3 a little easier. This is also the perfect time to remove the speaker (or put a small amount of glue in the top hole) to get rid of the annoyingly loud beeping sound the fan makes.\n\n\u003cimg src=\"https://github.com/user-attachments/assets/ce8caa76-2155-4edd-ba73-7b7db52eb295\" width=\"250\" /\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/3d6e0a4e-d0f2-47d6-b297-649c8fe9524f\" width=\"250\" /\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/be020b66-2fc3-4315-ab36-c84492b434d9\" width=\"250\" /\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/8ddb6150-24a2-4d83-b156-de602178a3f9\" width=\"250\" /\u003e\n\n1. The motor control unit with the removed daughter board.\n2. Rear side of the daughter board, the removed WBR3 and ESP-12F\n3. Front side of the daughter board, the removed WBR3 and ESP-12F\n4. Wiring from the daughter board to the ESP-12F\n\nWhen placing the ESP-12F the following connections need to be made:\n| ESP-12F  | Daughter Board | Notes |\n| -------- | -------------- | ----- |\n| TXD | TXD | |\n| RXD | RXD | |\n| GPIO15 | GND | Set correct boot mode |\n| EN | VCC | Always enable, don't use EN on daughter board |\n| VCC | VCC | |\n| GND | GND | |\n\nAs you can see, my first time soldering did not go down so well. I destroyed the pads on the daughter boards and had to use wires instead.\nThis is not neccesary if the WBR3 is removed a bit more carefully.\n\nIn the pictures a wire from GPIO12 can also be seen, but this one is not neccesary, I added it in case I would have to desolder the RF receiver directly to the ESP-12F to keep the remote working as expected.\n\nHowever, I found out that this is not neccesary, the motor control unit already informs the ESP-12F when a change is made using the remote as long are you are running ESPHome with a small fix (see [below](#fan-speed-not-working)).\n\nAfter reassembling everything, the fan should start and the ESPHome dashboard should be reachable over the network.\n\n## Home Assitant\nIf the ESPHome integration is configured in home assistant the device should be auto discovered.\n\n## Known Issues\n\n### Fan speed not working\nMultiple people ran into issues setting the fan speed, because the tuya device does not correctly report all data points to ESPHome on startup. I found out that this was caused by ESPHome not processing all information being sent by the tuya device and managed to fix this by making [a small change to ESPHome](https://github.com/esphome/esphome/pull/6980). This fix is available since ESPHome 2024.7, so make sure to use a recent version.\n\n### Fan timer\nDatapoint 64 can be used to set the countdown timer, the actual countdown is handled by the motor control unit.\nCurrently the fan turns off when this timer expires, but there is no feedback to ESPHome.\nAfter the fan turns off, ESPHome can't issue any further commands. Currently, the only way to get the fan working again is to turn it on with the RF remote after the timer expires. After doing so ESPHome works as expected again.\nSince this is a hardware issue with the motor control unit, it's probably best to not use this datapoint at all and build a custom timer script in ESPHome.\n\n### Light cycles between 3 light temperatures\nWhen the light is turned off and turned on again quickly, it will automatically cycle to the next of three different light temperatures. This can be extremely annoying, especially considering the intesity of the two brightest settings.\nSadly this is a feature that is baked directly into the LED board and not in any way controllable with this ESPHome conversion. However, it is possible to swap the LED panel for another one that only offers a single shade of white light.\nI've personally used the following light as a replacement: [AliExpress](https://www.aliexpress.com/item/1005004103063784.html?spm=a2g0o.order_list.order_list_main.11.a91c79d2zs2K1w).\nThis light offers just a single shade of warm white light and just requires swapping the original lights magnetic legs, so there is enough space for the wires underneath.\nAny comparable magnetic LED of around 11-12cm should do.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristiaanderidder%2Fesphome-create-wind-calm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchristiaanderidder%2Fesphome-create-wind-calm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristiaanderidder%2Fesphome-create-wind-calm/lists"}