{"id":26744280,"url":"https://github.com/domectrl/ha-rpi-pwm","last_synced_at":"2026-05-08T00:37:56.930Z","repository":{"id":283878719,"uuid":"953166719","full_name":"domectrl/ha-rpi-pwm","owner":"domectrl","description":"Homeassitant integration for raspberry Pi direct IO PWM  functions","archived":false,"fork":false,"pushed_at":"2025-03-29T18:32:38.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T19:28:53.271Z","etag":null,"topics":["fan","gpio","gpio-pins","hacs","hacs-integration","home-assistant","homeassistant","led","number","pwm","raspberry-pi","raspberry-pi-5"],"latest_commit_sha":null,"homepage":"htttps://www.domectrl.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/domectrl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"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}},"created_at":"2025-03-22T18:09:59.000Z","updated_at":"2025-03-29T18:32:43.000Z","dependencies_parsed_at":"2025-03-22T19:38:38.366Z","dependency_job_id":null,"html_url":"https://github.com/domectrl/ha-rpi-pwm","commit_stats":null,"previous_names":["domectrl/ha-rpi-pwm"],"tags_count":0,"template":false,"template_full_name":"ludeeus/integration_blueprint","purl":"pkg:github/domectrl/ha-rpi-pwm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domectrl%2Fha-rpi-pwm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domectrl%2Fha-rpi-pwm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domectrl%2Fha-rpi-pwm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domectrl%2Fha-rpi-pwm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/domectrl","download_url":"https://codeload.github.com/domectrl/ha-rpi-pwm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domectrl%2Fha-rpi-pwm/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263644995,"owners_count":23493974,"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":["fan","gpio","gpio-pins","hacs","hacs-integration","home-assistant","homeassistant","led","number","pwm","raspberry-pi","raspberry-pi-5"],"created_at":"2025-03-28T07:18:30.196Z","updated_at":"2026-05-08T00:37:51.907Z","avatar_url":"https://github.com/domectrl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Home Assistant Raspberry Pi PWM custom integration\r\n\r\n**The original Home Assistant integration that supported PWM output on direct IO pins  was removed in Home Assistant Core 2022.4. The original rpi_gpi_pwm was stored [here](https://github.com/RedMeKool/HA-Raspberry-pi-GPIO-PWM/). This variant depends on the pigpio add-on, and does not support the RPi5 hardware. In order to make the integration simpler, and less dependency-prone, and running on the RPi5, this integration moves to the lightweight alternative [rpi-hardware-pwm](https://pypi.org/project/rpi-hardware-pwm). This variant is installable and configurable via confg flow instead of via YAML, and does not need other components to be installed on [Home Assistant OS](https://github.com/home-assistant/operating-system). You will only need to configure the overlays in advance.**\r\n\r\n[![GitHub Release][releases-shield]][releases]\r\n[![GitHub Activity][commits-shield]][commits]\r\n[![License][license-shield]](LICENSE)\r\n\r\n[![hacs][hacsbadge]][hacs]\r\n![Project Maintenance][maintenance-shield]\r\n\r\n[![Discord][discord-shield]][discord]\r\n[![Community Forum][forum-shield]][forum]\r\n\r\n**Description.**\r\n\r\nThe rpi-pwm component allows to control multiple outputs using pulse-width modulation. This can be used to control devices, for example LED strips. It supports one-color, RGB and RGBW LEDs driven by the hardware pins. A PWM output can also be configured as a number. Connection to the hardware is made via the device file system of Linux.\r\n\r\nBefore use you might need to configure your systems overlays. Please check the details at the webpage of [rpi-hardware-pwm](https://pypi.org/project/rpi-hardware-pwm).\r\n\r\n**This integration can set up the following platforms.**\r\n\r\nPlatform | Description\r\n-- | --\r\n`light` | Write LED signal to digital PWM outputs.\r\n`fan` | Control a fan output.\r\n`number` | Writes signal represented by a number to PWM outputs.\r\n\r\n\r\n\r\n\r\n### HACS (Preferred)\r\n1. [Add](http://homeassistant.local:8123/hacs/integrations) the custom integration repository: https://github.com/domectrl/ha-rpi-pwm\r\n2. Select `Raspberry Pi PWM` in the Integration tab and click `download`\r\n3. Restart Home Assistant\r\n4. Done!\r\n\r\n### Manual\r\n1. Using the tool of choice open the directory (folder) for your HA configuration (where you find `configuration.yaml`).\r\n1. If you do not have a `custom_components` directory (folder) there, you need to create it.\r\n1. In the `custom_components` directory (folder) create a new folder called `ha-rpi-pwm`.\r\n1. Download _all_ the files from the `custom_components//` directory (folder) in this repository.\r\n1. Place the files you downloaded in the new directory (folder) you created.\r\n1. Restart Home Assistant\r\n\r\n## Configuration via user interface:\r\n* In the user interface go to \"Configuration\" -\u003e \"Integrations\" click \"+\" and search for \"Raspberry Pi PWM\"\r\n* For a description of the configuration parameters, see Configuration parameters\r\n\r\n## YAML Configuration\r\n\r\nThis integration can no longer be configured via YAML. Use the config flow function instead. \r\n### Configuration parameters\r\n\r\n***Light, Fan and number shared settings:***\r\n- name: Name of the entity to create.\r\n  \u003e default: empty \r\n- pin: Select the pin to be used for your entity. \r\n  Note that the numbering of the pins corresponds with the GPIO numbers like shown on [pinouts](https://pinout.xyz/). Only the pins not yet occupied by other entities can be selected. Note that only 2 pins can be configured as a PWM pin at the same time, so after configuring 2 pins the config flow will forbide you to add more devices. Note also that you will have to [configure your overlays](https://pypi.org/project/rpi-hardware-pwm) to make the pins of your choice generating PWM output.\r\n  \u003e default: first / next pin available\r\n- frequency: Frequency of the PWM cycles.\r\n  Only for light and number, for fan this value is set to the default (100Hz).\r\n  \u003e default: 100Hz\r\n\r\n***number specific settings:***\r\n- invert: Invert signal of the PWM generator\r\n  \u003e default: false\r\n- minimum: Minimal value of the number.\r\n  \u003e default: 0\r\n- maximum: Maximal value of the number. \r\n  \u003e default: 100\r\n- normalize_lower: Lower value to normalize the output of the PWM signal on. \r\n  \u003e default: 0\r\n- normalize_upper: Upper value to normalize the output of the PWM output on.\r\n  \u003e default: 100\r\n\r\nThese last four parameters might require a little more explanation:\r\n- The minimum/maximum define the range one can select on this number, for example 0..100%.\r\n- The 'normalize' parameters define at what range the output of the PWM normalizes. The Raspberry Pi registers can be programmed with a range of 0..100%. In normal cases, the the output register of the PCA9685 is set to 0% for value 0, and 100% for value 100. If the normalize value is for example to 10..60, it will set the register value 0% for each value \u003c10. Above 10, it will start raising the register, up to 100% for value 60. Above 60, the register value will remain 100%.\r\n- Using a negative value for the normalize_lower parameter, will clip the output to the register. This way, someone can assure that the value of the register will be always for larger than, for example, 10%. Using a larger-than-maximum value will clip the output to the register on the upper side.\r\n\r\n## Contributions are welcome!\r\n\r\nIf you want to contribute to this please read the [Contribution guidelines](CONTRIBUTING.md)\r\n\r\n***\r\n\r\n[commits-shield]: https://img.shields.io/github/commit-activity/y/domectrl/ha-rpi-pwm.svg?style=for-the-badge\r\n[commits]: https://github.com/domectrl/ha-rpi-pwm/commits/main\r\n[hacs]: https://hacs.xyz/\r\n[hacsbadge]: https://img.shields.io/badge/HACS-Custom-orange.svg?style=for-the-badge\r\n[discord]: https://discord.gg/Qa5fW2R\r\n[discord-shield]: https://img.shields.io/discord/330944238910963714.svg?style=for-the-badge\r\n[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg?style=for-the-badge\r\n[forum]: https://community.home-assistant.io/\r\n[license-shield]: https://img.shields.io/github/license/domectrl/ha-rpi-pwm.svg?style=for-the-badge\r\n[maintenance-shield]: https://img.shields.io/badge/maintainer-domectrl-blue.svg?style=for-the-badge\r\n[releases-shield]: https://img.shields.io/github/release/domectrl/ha-rpi-pwm.svg?style=for-the-badge\r\n[releases]: https://github.com/domectrl/ha-rpi-pwm/releases\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomectrl%2Fha-rpi-pwm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdomectrl%2Fha-rpi-pwm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomectrl%2Fha-rpi-pwm/lists"}