{"id":49416608,"url":"https://github.com/nsevent/voice-dyson","last_synced_at":"2026-04-29T03:10:56.138Z","repository":{"id":53530740,"uuid":"229875694","full_name":"NSEvent/voice-dyson","owner":"NSEvent","description":"Use Alexa and a Raspberry Pi to control a Dyson fan","archived":false,"fork":false,"pushed_at":"2021-08-28T00:05:43.000Z","size":25911,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-09-29T12:57:08.975Z","etag":null,"topics":["alexa","alexa-custom-skill","alexa-skill","dyson","dyson-fan","iot","raspberry-pi","rpi"],"latest_commit_sha":null,"homepage":"","language":"Python","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/NSEvent.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}},"created_at":"2019-12-24T05:22:30.000Z","updated_at":"2023-03-07T19:12:04.000Z","dependencies_parsed_at":"2022-09-09T08:41:45.883Z","dependency_job_id":null,"html_url":"https://github.com/NSEvent/voice-dyson","commit_stats":null,"previous_names":["nsevent/voice-dyson"],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/NSEvent/voice-dyson","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSEvent%2Fvoice-dyson","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSEvent%2Fvoice-dyson/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSEvent%2Fvoice-dyson/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSEvent%2Fvoice-dyson/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NSEvent","download_url":"https://codeload.github.com/NSEvent/voice-dyson/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSEvent%2Fvoice-dyson/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32408553,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T02:37:21.628Z","status":"ssl_error","status_checked_at":"2026-04-29T02:36:50.947Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["alexa","alexa-custom-skill","alexa-skill","dyson","dyson-fan","iot","raspberry-pi","rpi"],"created_at":"2026-04-29T03:10:54.956Z","updated_at":"2026-04-29T03:10:56.121Z","avatar_url":"https://github.com/NSEvent.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# voice-dyson\nA custom Alexa skill paired with a Raspberry Pi to control a [Dyson Pure Hot+Cool HP01 purifying heater + fan](https://www.dyson.com/purifiers/dyson-pure-hot-cool-purifier.html)\n\n## About\nThis repo contains code to run a custom Alexa skill on the Alexa Skills Kit Developer Console and a Flask web server on your Raspberry Pi to control a Dyson fan via IR signals.\n\nAlthough this setup is intended for a specific device, these files may be modified to use Alexa to control any device that can be controlled with an IR remote.\n\n*User speech command -\u003e Alexa skill -\u003e JSON with parsed arguments -\u003e Flask server -\u003e LIRC -\u003e Dyson fan changes state*\n\nTested with Python 3.7 running [Raspbian Buster 2019-06-20](https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-06-24/) using an [IR Remote Shield v1.0](http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board)\n\n## Setup\n### Alexa skill\nThe `alexa-voice-model` directory contains everything needed to configure your custom Alexa skill.\n\n1. [Create a new skill](https://developer.amazon.com/alexa/console/ask/create-new-skill) - choose *Custom* for model and *Provision your own* for backend resources\n2. In the Alexa Skills Kit Developer Console, find your new skill, and click on *View Skill ID*. Save this string somewhere as we will need it for later for authentification\n3. Go to *Edit-\u003eInteraction Model-\u003eJSON Editor*\n4. Copy `interaction_model.json` to the *JSON Editor* and save model\n5. Go to *Invocation* and change *Skill Invocation Name* if desired. This will be the phrase that Alexa will listen for to activate your custom skill\n6. Go to *Interaction Model-\u003eIntent* and click on the new custom intents\n7. Under *Sample Utterances*, select *Bulk Edit*\n8. Upload `\u003cintent_name\u003e_sample_utterances.csv` for the respective intents, submit, and save model\n\n### Raspberry Pi\nThe following instructions will be performed on the Raspberry Pi command line.\n\nNote that [IR Remote Shield v1.0](http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board) needs to be attached to the GPIO pins for IR signals to send.\n\n1. `git clone https://github.com/kvntng17/voice-dyson`\n2. `cd voice-dyson`\n1. `pip install -r requirements.txt`\n2. Follow the instructions listed [here](https://gist.github.com/billpatrianakos/cb72e984d4730043fe79cbe5fc8f7941) to install LIRC for Raspbian Buster 4.19. It also contains instructions to create a custom config for your IR remote if desired\n3. `sudo mv dyson.lircd.conf /etc/lirc/lircd.conf`\n3. Open `listen_alexa.py` and locate the line that contains `app.config[\"ASK_APPLICATION_ID\"] = \"amzn1.ask.skill.e033e61a-290c-46cf-b4cb-679d9ec858a4\"`. Paste your own Skill ID here.\n4. `sudo apt install tmux`\n5. `tmux`\n6. `./bin/start_ngrok`\n7. Copy the `https://\u003cunique_id\u003e.ngrok.io` address displayed on your screen. Save this address somewhere as we will need to supply it to our Alexa skill so our server can receive information from Alexa.\n8. Enter *Ctrl-b* and *d* to detach from this tmux session\n9. `tmux`\n10. `python listen_alexa.py`\n11. Enter *Ctrl-b* and *d* to detach from this tmux session\n\n### Link Alexa skill and Raspberry Pi\n1. Open the Alexa Skills Kit Developer Console\n2. Go to *Edit-\u003eEndpoint*\n3. Ensure *HTTPS* is selected\n4. Under *Default Region*, paste your ngrok address followed by `/voice_dyson`. It should look like `https://\u003cunique_id\u003e.ngrok.io/voice_dyson`\n5. Under the dropdown box, select *My development endpoint is a sub-domain of a domain that has a wildcard certificate from a certificate authority*\n6. *Save Endpoints*\n7. Go to *Intents* and *Save Model* and *Build Model*\n\nYour setup should now be done! Make sure your *ir-tx* IR LED is pointed towards your device, and try a few commands. \n\n## Sample Commands\n\"Alexa, ask my fan to turn on.\"\n\n\"Alexa, ask my fan to turn off.\"\n\n\"Alexa, ask my fan to swivel.\"\n\n\"Alexa, ask my fan to change to hot.\"\n\n\"Alexa, ask my fan to change to hot at seventy degrees.\"\n\n\"Alexa, ask my fan to turn to eighty degrees.\"\n\n\"Alexa, ask my fan to change to cold.\"\n\n\"Alexa, ask my fan to change to cold on power level three.\"\n\n\"Alexa, ask my fan to turn to power level five.\"\n\n## Author\nKevin Tang\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnsevent%2Fvoice-dyson","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnsevent%2Fvoice-dyson","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnsevent%2Fvoice-dyson/lists"}