Self-hosted Alexa Smart Home bridge for Daikin Skyport mini splits.
This project lets you run a private Alexa skill in your own AWS account so Alexa can control Daikin mini splits that are exposed through the Skyport app but do not appear as normal thermostats to Alexa.
- Alexa account linking with Skyport credentials.
- Discovery of Skyport indoor units as Alexa thermostat endpoints.
- Power on/off.
- Cool, heat, auto, dry, and fan operation modes.
- Fahrenheit temperature reporting by default.
- Set target temperature, for example "set Upstairs Air Conditioner to 72".
- Mini-split-specific mode controllers:
- Power Mode: normal, powerful, econo
- Swing Mode: fixed, swing
- Encrypted token and credential storage in your own AWS account.
- Private self-hosted deployment using AWS CDK, Lambda, Lambda Function URL, and DynamoDB.
This is an unofficial personal integration. It uses the Skyport API behavior observed from devices and accounts we own. It is not affiliated with or endorsed by Daikin, Skyport, Amazon, or Alexa.
Alexa Smart Home voice routing can be picky with custom modes. The most reliable phrasing is usually:
Alexa, turn on Upstairs Air Conditioner.
Alexa, set Upstairs Air Conditioner to 72.
Alexa, set Upstairs Air Conditioner mode to dry.
Alexa, set Upstairs Air Conditioner mode to fan.
Alexa, set Upstairs Air Conditioner power mode to powerful.
Alexa, set Upstairs Air Conditioner swing mode to swing.
Use Node.js 20 or newer.
npm install
npm testDeploy the private backend:
npx cdk bootstrap
npm run deployThe deploy prints the Lambda ARN and OAuth URLs needed by the Alexa Developer Console. See Private Alexa Testing for the full click-by-click setup.
cp .env.example .env
npm run devThen open:
http://localhost:3000/oauth/authorize?response_type=code&client_id=skyport-alexa-local&redirect_uri=http://localhost:3000/callback&state=local-test
See Self-Hosting for local token exchange and simulator commands.
- Do not commit
.env,.local/,.mitmproxy/,captures/,cdk.out/, ornode_modules/. - The deployed backend stores Skyport credentials encrypted so it can re-login when Skyport access tokens expire.
- Keep the generated Alexa OAuth client secret private.
- If you used proxy captures while discovering the API, treat all capture files as secret-bearing and rotate your Skyport password afterward.
src/: Lambda, OAuth/account-linking server, Skyport API client, Alexa directive handlers, device mapping, stores.infra/cdk/: AWS CDK stack.scripts/: local simulation and optional capture tooling.docs/: deployment, testing, and API notes.
MIT