Full Code of Apollon77/ioBroker.alexa2 for AI

master 688158d21f92 cached
41 files
774.7 KB
167.1k tokens
90 symbols
1 requests
Download .txt
Showing preview only (827K chars total). Download the full file or copy to clipboard to get everything.
Repository: Apollon77/ioBroker.alexa2
Branch: master
Commit: 688158d21f92
Files: 41
Total size: 774.7 KB

Directory structure:
gitextract_dh1xzp4m/

├── .eslintrc.json
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── auto-merge.yml
│   ├── copilot-instructions.md
│   ├── dependabot.yml
│   ├── stale.yml
│   └── workflows/
│       ├── codeql.yml
│       ├── dependabot-automerge.yml
│       └── test-and-release.yml
├── .gitignore
├── .mocharc.json
├── .npmignore
├── .releaseconfig.json
├── LICENSE
├── README.md
├── admin/
│   ├── i18n/
│   │   ├── de/
│   │   │   └── translations.json
│   │   ├── en/
│   │   │   └── translations.json
│   │   ├── es/
│   │   │   └── translations.json
│   │   ├── fr/
│   │   │   └── translations.json
│   │   ├── hu/
│   │   │   └── translations.json
│   │   ├── it/
│   │   │   └── translations.json
│   │   ├── nl/
│   │   │   └── translations.json
│   │   ├── pl/
│   │   │   └── translations.json
│   │   ├── pt/
│   │   │   └── translations.json
│   │   ├── ru/
│   │   │   └── translations.json
│   │   ├── uk/
│   │   │   └── translations.json
│   │   └── zh-cn/
│   │       └── translations.json
│   ├── index_m.html
│   └── words.js
├── io-package.json
├── lib/
│   ├── smarthomedevices.js
│   └── tools.js
├── main.js
├── package.json
└── test/
    ├── lib/
    │   └── setup.js
    ├── mocha.setup.js
    ├── testAdapter.js
    └── testPackageFiles.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .eslintrc.json
================================================
{
    "root": true,
    "env": {
        "es6": true,
        "node": true,
        "mocha": true
    },
    "extends": [
        "eslint:recommended"
    ],
    "plugins": [],
    "rules": {
        "indent": [
            "error",
            4,
            {
                "SwitchCase": 1
            }
        ],
        "no-console": "off",
        "no-var": "error",
        "no-trailing-spaces": "error",
        "prefer-const": "error",
        "quotes": [
            "error",
            "single",
            {
                "avoidEscape": true,
                "allowTemplateLiterals": true
            }
        ],
        "semi": [
            "error",
            "always"
        ]
    },
    "parserOptions": {
        "ecmaVersion": 2018
    }
}

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs     diff=csharp

# Standard to msysgit
*.doc	 diff=astextplain
*.DOC	 diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot  diff=astextplain
*.DOT  diff=astextplain
*.pdf  diff=astextplain
*.PDF	 diff=astextplain
*.rtf	 diff=astextplain
*.RTF	 diff=astextplain


================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: Apollon77
patreon: Apollon77
custom: ['https://paypal.me/Apollon77']


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Something is not working as it should
title: ''
labels: ''
assignees: ''
---

**Check if the Bug maybe is with Amazon**  
The adapter is using the same API as the Alexa mobile App. This means:
* If you can not do this what you want with the App then the Adapter also can not do it!
* Also if the App can do it please test if the same effect then the bug also happens with the App (e.g. a speak command do not work on a certain device ... can you do a speak via Alexa App? If not - Amazon problem!)

**Describe the bug**  
A clear and concise description of what the bug is. Especially describe what you verified using the Alexa App (see above).

**To Reproduce**  
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '...'
3. Scroll down to '....'
4. See error

**Expected behavior**  
A clear and concise description of what you expected to happen.

**Screenshots & Logfiles**  
If applicable, add screenshots and logfiles to help explain your problem.

**Versions:**  
 - Adapter version: <adapter-version>
 - JS-Controller version: <js-controller-version> <!-- determine this with `iobroker -v` on the console -->
 - Node version: <node-version> <!-- determine this with `node -v` on the console -->
 - Operating system: <os-name>

**Additional context**  
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---
**Consider the Reality**  
The adapter is using the same API as the Alexa mobile App. This means:

If you can not do this what you want with the App then the Adapter also can not do it! Also a feature rewuest most likely will not be possible.

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/auto-merge.yml
================================================
# Configure here which dependency updates should be merged automatically.
# The recommended configuration is the following:
- match:
      # Only merge patches for production dependencies
      dependency_type: production
      update_type: "semver:patch"
- match:
      # Except for security fixes, here we allow minor patches
      dependency_type: production
      update_type: "security:minor"
- match:
      # and development dependencies can have a minor update, too
      dependency_type: development
      update_type: "semver:minor"

# The syntax is based on the legacy dependabot v1 automerged_updates syntax, see:
# https://dependabot.com/docs/config-file/#automerged_updates

================================================
FILE: .github/copilot-instructions.md
================================================
# ioBroker.alexa2 Adapter
ioBroker.alexa2 is a Node.js adapter for ioBroker that provides remote control for Amazon Alexa devices (Amazon Echo). The adapter integrates with the ioBroker home automation platform and allows control of Alexa devices, smart home devices, routines, and more.

Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.

## Working Effectively

### Bootstrap, Build, and Test the Repository:
- `npm install` -- Install dependencies. Takes ~40 seconds. NEVER CANCEL.
- `npm test` -- Run complete test suite. Takes ~55 seconds. NEVER CANCEL. Set timeout to 90+ seconds.
- `npx eslint main.js lib/ test/ --ext .js` -- Lint main code files. Admin files have known translation issues.

### Timing Expectations:
- **NEVER CANCEL**: npm install takes 40 seconds. Wait for completion.
- **NEVER CANCEL**: npm test takes 55 seconds total. Set timeout to 90+ seconds minimum.
- **NEVER CANCEL**: The test includes full ioBroker js-controller setup which can take 30+ seconds just for initialization.

### Manual Validation After Changes:
- ALWAYS run `npm test` after making any code changes to ensure adapter functionality
- ALWAYS run ESLint on modified files: `npx eslint <modified-files> --ext .js`
- The adapter cannot be run standalone - it requires ioBroker infrastructure
- Tests automatically validate adapter startup, configuration, and shutdown sequences
- DO NOT attempt to run main.js directly - it requires ioBroker adapter-core framework

## Project Structure and Navigation

### Key Directories and Files:
```
/home/runner/work/ioBroker.alexa2/ioBroker.alexa2/
├── main.js                 # Main adapter entry point (352KB, core logic)
├── package.json           # Dependencies and npm scripts
├── io-package.json        # ioBroker adapter configuration
├── README.md              # Comprehensive adapter documentation
├── lib/
│   ├── smarthomedevices.js # Smart home device definitions and controllers
│   └── tools.js           # Utility functions
├── admin/                 # Web UI configuration files
│   ├── index_m.html       # Material Design admin interface
│   ├── words.js           # i18n translations (has known ESLint issues)
│   └── icons/             # Device type icons
├── test/
│   ├── testAdapter.js     # Main adapter functionality tests
│   ├── testPackageFiles.js # Package validation tests
│   └── lib/setup.js       # Test infrastructure and js-controller setup
└── .github/workflows/     # CI/CD pipeline configuration
```

### Important Code Areas:
- **main.js**: Core adapter logic, Alexa API integration, device management
- **lib/smarthomedevices.js**: Smart home device capability definitions for various device types
- **admin/index_m.html**: Admin configuration interface for credentials and settings  
- **test/lib/setup.js**: Complex test infrastructure that sets up js-controller environment

## Validation Scenarios

### Always Run These Validation Steps:
1. **Install and Test**: `npm install && npm test` - Ensures all dependencies work and adapter can start properly
2. **Lint Check**: `npx eslint main.js lib/ test/ --ext .js` - Check code quality (ignore admin/words.js issues)
3. **Package Validation**: Tests automatically validate package.json and io-package.json consistency

### Manual Testing Scenarios:
- The adapter requires Amazon Alexa account credentials which cannot be tested in CI
- Tests validate adapter initialization, configuration loading, and proper shutdown
- Real functionality requires proxy-based authentication flow with Amazon
- Tests use mock/stub behavior for core adapter lifecycle validation

## Common Tasks

### Dependencies and Requirements:
- **Node.js**: 16+ required (package.json engines), tested with 20.x
- **npm**: Standard package manager, uses package-lock.json
- **@iobroker/adapter-core**: ^3.2.3 - Core ioBroker adapter framework
- **alexa-remote2**: ^8.0.2 - Amazon Alexa API integration library

### npm Scripts Available:
```bash
npm test          # Run mocha test suite (takes ~55s)
npm run release   # Release automation (requires tokens)
npm run translate # Translation management
```

### Linting and Code Quality:
- ESLint configured in .eslintrc.json with strict rules
- Use single quotes, 4-space indentation, prefer const over let/var
- Main code files should lint cleanly
- admin/words.js has known translation format issues - ignore ESLint errors in this file

### GitHub Actions Workflow:
- Runs on Node.js 18.x, 20.x, 22.x, 24.x across Ubuntu, Windows, macOS
- check-and-lint job: `npm ci` only (linting commented out in workflow)
- adapter-tests job: `npm ci && npm test` 
- Deployment triggers on tagged releases

## Architecture Notes

### ioBroker Adapter Pattern:
- Extends @iobroker/adapter-core.Adapter class
- Uses state-based communication with ioBroker objects/states databases
- Implements standard adapter lifecycle: ready, unload, stateChange, objectChange
- Creates device/state hierarchies under adapter namespace (alexa2.0.*)

### External Dependencies:
- alexa-remote2: Amazon Alexa API integration
- https, nearest-color, rrule: Utility libraries
- Sentry integration for error reporting (optional)

### Test Infrastructure:
- Uses complex test setup that installs and configures js-controller
- Creates temporary ioBroker instance with Redis backends
- Tests adapter lifecycle, not actual Amazon Alexa functionality
- Mock/stub approach for external API dependencies

## Troubleshooting

### Common Issues:
- **Test timeouts**: Always set 90+ second timeouts for npm test
- **ESLint errors in admin/words.js**: These are translation files with specific format requirements - ignore
- **Cannot run main.js directly**: Requires ioBroker adapter-core framework and configuration
- **Missing dependencies**: Always run `npm install` before any other commands

### Development Environment:
- Use any modern IDE with Node.js support
- ESLint integration recommended for code quality
- Git hooks not configured - manually run linting before commits
- No TypeScript - pure JavaScript codebase

### CI/CD Pipeline:
- Tests run automatically on pushes and PRs
- Linting step commented out in workflow due to admin file issues
- Releases automated via @alcalzone/release-script
- Sentry integration for production error tracking

================================================
FILE: .github/dependabot.yml
================================================
# Dependabot will run on day 19 of each month at 02:38 (Europe/Berlin timezone)
version: 2
updates:

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "cron"
      timezone: "Europe/Berlin"
      cronjob: "38 2 19 * *"
    open-pull-requests-limit: 15

  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "cron"
      timezone: "Europe/Berlin"
      cronjob: "38 2 19 * *"
    open-pull-requests-limit: 20
    versioning-strategy: "increase"


================================================
FILE: .github/stale.yml
================================================
# Configuration for probot-stale - https://github.com/probot/stale

# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 90

# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 7

# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
onlyLabels: []

# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
exemptLabels:
  - enhancement
  - security
  - bug

# Set to true to ignore issues in a project (defaults to false)
exemptProjects: true

# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: true

# Set to true to ignore issues with an assignee (defaults to false)
exemptAssignees: false

# Label to use when marking as stale
staleLabel: wontfix

# Comment to post when marking as stale. Set to `false` to disable
markComment: >
  This issue has been automatically marked as stale because it has not had
  recent activity. It will be closed if no further activity occurs within the next 7 days.
  Please check if the issue is still relevant in the most current version of the adapter
  and tell us. Also check that all relevant details, logs and reproduction steps
  are included and update them if needed.
  Thank you for your contributions.

  Dieses Problem wurde automatisch als veraltet markiert, da es in letzter Zeit keine Aktivitäten gab.
  Es wird geschlossen, wenn nicht innerhalb der nächsten 7 Tage weitere Aktivitäten stattfinden.
  Bitte überprüft, ob das Problem auch in der aktuellsten Version des Adapters noch relevant ist,
  und teilt uns dies mit. Überprüft auch, ob alle relevanten Details, Logs und Reproduktionsschritte
  enthalten sind bzw. aktualisiert diese.
  Vielen Dank für Eure Unterstützung.

# Comment to post when removing the stale label.
# unmarkComment: >
#   Your comment here.

# Comment to post when closing a stale Issue or Pull Request.
closeComment: >
  This issue has been automatically closed because of inactivity. Please open a new
  issue if still relevant and make sure to include all relevant details, logs and
  reproduction steps.
  Thank you for your contributions.

  Dieses Problem wurde aufgrund von Inaktivität automatisch geschlossen. Bitte öffnet ein
  neues Issue, falls dies noch relevant ist und stellt sicher das alle relevanten Details,
  Logs und Reproduktionsschritte enthalten sind.
  Vielen Dank für Eure Unterstützung.

# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30

# Limit to only `issues` or `pulls`
only: issues

# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls':
# pulls:
#   daysUntilStale: 30
#   markComment: >
#     This pull request has been automatically marked as stale because it has not had
#     recent activity. It will be closed if no further activity occurs. Thank you
#     for your contributions.

# issues:
#   exemptLabels:
#     - confirmed


================================================
FILE: .github/workflows/codeql.yml
================================================
name: "CodeQL"

on:
  push:
    branches: [ "master" ]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [ "master" ]
  schedule:
    - cron: '31 17 * * 1'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: [ 'javascript' ]

    steps:
    - name: Checkout repository
      uses: actions/checkout@v5

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v4
      with:
        languages: ${{ matrix.language }}

    - name: Autobuild
      uses: github/codeql-action/autobuild@v4

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v4
      with:
        category: "/language:${{matrix.language}}"


================================================
FILE: .github/workflows/dependabot-automerge.yml
================================================
# Automatically merge Dependabot PRs when version comparison is within the range
# that is configured in .github/auto-merge.yml

name: Auto-Merge Dependabot PRs

on:
  pull_request_target:

jobs:
  auto-merge:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v5

      - name: Check if PR should be auto-merged
        uses: ahmadnassri/action-dependabot-auto-merge@v2
        with:
          # This must be a personal access token with push access
          github-token: ${{ secrets.AUTO_MERGE_TOKEN }}
          # By default, squash and merge, so Github chooses nice commit messages
          command: squash and merge

================================================
FILE: .github/workflows/test-and-release.yml
================================================
# This is a composition of lint and test scripts
# Make sure to update this file along with the others

name: Test and Release

# Run this job on all pushes and pull requests
# as well as tags with a semantic version
on:
  push:
    branches:
      - '*'
    tags:
      # normal versions
      - "v?[0-9]+.[0-9]+.[0-9]+"
      # pre-releases
      - "v?[0-9]+.[0-9]+.[0-9]+-**"
  pull_request: {}

# Cancel previous PR/branch runs when a new commit is pushed
concurrency:
  group: ${{ github.ref }}
  cancel-in-progress: true

permissions:
  id-token: write  # Required for OIDC
  contents: write
  pull-requests: read

jobs:
  # Performs quick checks before the expensive test runs
  check-and-lint:
    if: contains(github.event.head_commit.message, '[skip ci]') == false

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [22.x]

    steps:
      - uses: actions/checkout@v5
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v6
        with:
          node-version: ${{ matrix.node-version }}


      - name: Install Dependencies
        run: npm ci

#      - name: Perform a type check
#        run: npm run check:ts
#        env:
#          CI: true
      # - name: Lint TypeScript code
      #   run: npm run lint
#      - name: Test package files
#        run: npm run test:package

  # Runs adapter tests on all supported node versions and OSes
  adapter-tests:
    if: contains(github.event.head_commit.message, '[skip ci]') == false

    needs: [check-and-lint]

    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        node-version: [18.x, 20.x, 22.x, 24.x]
        os: [ubuntu-latest, windows-latest, macos-latest]

    steps:
      - uses: actions/checkout@v5
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v6
        with:
          node-version: ${{ matrix.node-version }}

      - name: Install Dependencies
        run: npm ci

      - name: Run local tests
        run: npm test
#      - name: Run unit tests
#        run: npm run test:unit
#      - name: Run integration tests # (linux/osx)
#        if: startsWith(runner.OS, 'windows') == false
#        run: DEBUG=testing:* npm run test:integration
#      - name: Run integration tests # (windows)
#        if: startsWith(runner.OS, 'windows')
#        run: set DEBUG=testing:* & npm run test:integration

  # Deploys the final package to NPM
  deploy:
    needs: [adapter-tests]

    # Trigger this step only when a commit on master is tagged with a version number
    if: |
      contains(github.event.head_commit.message, '[skip ci]') == false &&
      github.event_name == 'push' &&
      startsWith(github.ref, 'refs/tags/')
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [22.x]

    steps:
      - name: Checkout code
        uses: actions/checkout@v5

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v6
        with:
          node-version: ${{ matrix.node-version }}

      - name: Extract the version and commit body from the tag
        shell: bash
        id: extract_release
        # The body may be multiline, therefore newlines and % need to be escaped
        run: |
          VERSION="${{ github.ref }}"
          VERSION=${VERSION##*/v}
          echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
          EOF=$(od -An -N6 -x /dev/urandom | tr -d ' ')
          BODY=$(git show -s --format=%b)
          echo "BODY<<$EOF" >> $GITHUB_OUTPUT
          echo "$BODY" >> $GITHUB_OUTPUT
          echo "$EOF" >> $GITHUB_OUTPUT
          if [[ $VERSION == *"-"* ]] ; then
            echo "TAG=--tag next" >> $GITHUB_OUTPUT
          fi

      - name: Install Dependencies
        run: npm ci

#      - name: Create a clean build
#        run: npm run build
      - name: Publish package to npm
        run: |
          npm install -g npm@latest
          npm publish ${{ steps.extract_release.outputs.TAG }}

      - name: Create Github Release
        uses: softprops/action-gh-release@v2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          name: Release v${{ steps.extract_release.outputs.VERSION }}
          draft: false
          # Prerelease versions create prereleases on Github
          prerelease: ${{ contains(steps.extract_release.outputs.VERSION, '-') }}
          body: ${{ steps.extract_release.outputs.BODY }}

      - name: Notify Sentry.io about the release
        run: |
          npm i -g @sentry/cli  
          export SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}
          export SENTRY_URL=https://sentry.iobroker.net
          export SENTRY_ORG=iobroker
          export SENTRY_PROJECT=iobroker-alexa2
          export SENTRY_VERSION=iobroker.alexa2@${{ steps.extract_release.outputs.VERSION }}
          sentry-cli releases new $SENTRY_VERSION
          sentry-cli releases set-commits $SENTRY_VERSION --auto
          sentry-cli releases finalize $SENTRY_VERSION

        # Add the following line BEFORE finalize if sourcemap uploads are needed
        # sentry-cli releases files $SENTRY_VERSION upload-sourcemaps build/


================================================
FILE: .gitignore
================================================
# Created by .ignore support plugin (hsz.mobi)
### Node template
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock
admin/i18n/flat.txt
admin/i18n/*/flat.txt

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Typescript v1 declaration files
typings/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env


.idea

# ioBroker dev-server
.dev-server/

# Test temporary files
tmp/

#ignore .commitinfo created by ioBroker release script
.commitinfo


================================================
FILE: .mocharc.json
================================================
{
    "require": [
        "./test/mocha.setup.js"
    ]
}


================================================
FILE: .npmignore
================================================
# exclude all dot-files and directories
.*

admin/i18n
tasks
node_modules
.idea
.git
/node_modules
test
.travis.yml
appveyor.yml
.github
package-lock.json
.gitattributes


================================================
FILE: .releaseconfig.json
================================================
{
    "plugins": ["iobroker", "license"]
}


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2018-2025 Ingo Fischer <iobroker@fischer-ka.de>, 2017-2018 soef <soef@gmx.net>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


================================================
FILE: README.md
================================================
![Logo](admin/alexa.png)
# ioBroker.alexa2

![Number of Installations](http://iobroker.live/badges/alexa2-installed.svg)
![Number of Installations](http://iobroker.live/badges/alexa2-stable.svg)
[![NPM version](http://img.shields.io/npm/v/iobroker.alexa2.svg)](https://www.npmjs.com/package/iobroker.alexa2)

![Test and Release](https://github.com/Apollon77/iobroker.alexa2/workflows/Test%20and%20Release/badge.svg)
[![Translation status](https://weblate.iobroker.net/widgets/adapters/-/alexa2/svg-badge.svg)](https://weblate.iobroker.net/engage/adapters/?utm_source=widget)
[![Downloads](https://img.shields.io/npm/dm/iobroker.alexa2.svg)](https://www.npmjs.com/package/iobroker.alexa2)

**This adapter uses Sentry libraries to automatically report exceptions and code errors to the developers.** For more details and for information how to disable the error reporting see [Sentry-Plugin Documentation](https://github.com/ioBroker/plugin-sentry#plugin-sentry)! Sentry reporting is used starting with js-controller 3.0.

This adapter allows you to remotely control your Alexa (Amazon Echo) devices.

Big thanks go to soef for version 1 of the adapter and to Hauke and ruhr70 for ideas in their scripts from ioBroker-Forum (especially the media progress updates)!
Also, big thanks to meicker for support in documenting all of this and numerous users from ioBroker Forum for their testing support!

## Disclaimer
**All product and company names or logos are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them or any associated subsidiaries! This personal project is maintained in spare time and has no business goal.**
**ALEXA is a trademark of AMAZON TECHNOLOGIES, INC.**

## States and their meanings:

In the adapter namespace (e.g., alexa2.0) some channels are created

### alexa2.0

| State name           | meaning                                                |
|----------------------|--------------------------------------------------------|
| Echo-Devices.*       | States per Echo device, see below                      |
| History.*            | Infos for command history, see below                   |
| Smart-Home-Devices.* | States per smart home device and in general, see below |
| info.*               | General information about the adapter status           |
| requestResult        | Error info for TuneIn and smart-home device requests   |

### alexa2.0.Contacts.ContactId.*
All Alexa-Contacts that can be used to send Text Messages to, including himself. The own contact gets a special "(Self)" after his name.

| State name        | meaning                                                                                                                                        |
|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------|
| #clearOwnMessages | Only exists in own contact and a trigger deletes all messages that are send to himself (also includes messages to himself via App or devices!) |
| textMessage       | Sends this text as message to the user. It is shown on all devices of this user with a "yellow ring"                                           |

### alexa2.0.Echo-Devices.CommandsAll.*
Commands to be sent to all devices in the account.

| State name         | meaning                                         | Comments                                                                                                     |
|--------------------|-------------------------------------------------|--------------------------------------------------------------------------------------------------------------|
| deviceStop         | Stop all actions on device                      | Button                                                                                                       |
| deviceDoNotDisturb | Switch on/off "Do not Disturb" for all devices. | true/false, or number in seconds to enable (max 12h) or string in form "HH:MM" until this time it is enabled |

### alexa2.0.Echo-Devices.Serialnumber.*
Under "echo-devices" every amazon echo device is listed with its serial number. Not every device shows all the states. Every device has its own states as described below:

### alexa2.0.Echo-Devices.Serialnumber.Alarm.*
Alarm (Wecker) settings for each device, if available.

| State name            | meaning                                                                                                                                                                                                                                                                                                                                                                               | value                                                                                                                                                                                                                                                                                                                              |
|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| <id>.customVolume     | Set a custom Volume for this Reminder. The volume is set 2s before the reminder triggers and re-set to the value before as soon as the timer is (or adapter thinks!) stopped - latest after 120s! When custom volumes and trigger times overlap it will be restored at the end once!                                                                                                  | Number 0..100                                                                                                                                                                                                                                                                                                                      |
| <id>.date             | Overwrite the date for existing alarm to set a new date for this alarm. In case you have an existing alarm you can change the date here by simply overwrite the time in format YYYY-MM-DD. Might have no effect when multiple-times-per-day recurring settings were used!                                                                                                             | Date Output                                                                                                                                                                                                                                                                                                                        |
| <id>.delete           | Button to delete the Alarm                                                                                                                                                                                                                                                                                                                                                            | delete with true                                                                                                                                                                                                                                                                                                                   |
| <id>.enabled          | Shows status of alarm and allows to change it: Activate alarm with true - Deactivate alarm with false                                                                                                                                                                                                                                                                                 | true / false                                                                                                                                                                                                                                                                                                                       |
| <id>.musicEntity      | Shows the track info if this alarm is a music alarm                                                                                                                                                                                                                                                                                                                                   | String or null                                                                                                                                                                                                                                                                                                                     |
| <id>.musicProvider    | Shows the provider of the music  if this alarm is a music alarm                                                                                                                                                                                                                                                                                                                       | String or null                                                                                                                                                                                                                                                                                                                     |
| <id>.nextTriggerDate  | Contains the timepoint of the next expected triggering as unix epoch in ms                                                                                                                                                                                                                                                                                                            | Number                                                                                                                                                                                                                                                                                                                             |
| <id>.recurringDays    | Shows the list of days configured if the Alarm has recurring settings                                                                                                                                                                                                                                                                                                                 | US notation of weekdays (e.g. MO,TU,WE,TH,FR,SA,SU)                                                                                                                                                                                                                                                                                |
| <id>.recurringPattern | Shows the recurring pattern of alarm                                                                                                                                                                                                                                                                                                                                                  | 0 = one time, no recurring <br> P1D = daily <br> XXXX-WD = on weekdays <br> XXXX-WE = on weekends <br> XXXX-WXX-1 = every monday <br> XXXX-WXX-2 = every tuesday <br> XXXX-WXX-3 = every wednesday <br> XXXX-WXX-4 = every thursday <br> XXXX-WXX-5 = every friday <br> XXXX-WXX-6 = every saturday <br> XXXX-WXX-7 = every sunday |
| <id>.snoozed          | true if the Alarm is snoozed at the moment                                                                                                                                                                                                                                                                                                                                            | true/false                                                                                                                                                                                                                                                                                                                         |
| <id>.sound            | Contains the set sound for this alarm. Can be changed. Also changing between music sound entry and "build in sounds" is possible.                                                                                                                                                                                                                                                     | ID from list                                                                                                                                                                                                                                                                                                                       |
| <id>.time             | Time for alarm. Overwrite the time for existing alarm to set a new time for this alarm. In case you have an existing alarm you can change the time here by simply overwrite the time in format hh:mm:ss, seconds are not needed to set. Might have no effect when multiple-times-per-day recurring settings were used!                                                                | Time Input                                                                                                                                                                                                                                                                                                                         |
| <id>.triggered        | true if alarm is reached and triggered. Clock must be in sync with Amazon and iobroker, Use this to trigger other action as soon as the alarm time is reached                                                                                                                                                                                                                         | true / false                                                                                                                                                                                                                                                                                                                       |
| New                   | Data to create a new Reminder as String in following format separated by ; as "timestamp;[label];[sound];[recurring]. timestamp as unix timestamp in ms, label as Text, sound as sound ID, recurring either empty for once, "DAILY" for daily or "WEEKLY=MO,TU,WE,TH,FR,SA,SU" with comma separated weekly day list. Fields in example above in brackets mean that they are optional! | String                                                                                                                                                                                                                                                                                                                             |
| triggered             | ID of the Alarm that triggered last on this device                                                                                                                                                                                                                                                                                                                                    | ID                                                                                                                                                                                                                                                                                                                                 |

When changing an Alarm does not work, please make sure that the Alarm timepoint is in the future - so changing e.g. "sound" on an Alarm in the past will _not_ work!

### alexa2.0.Echo-Devices.Serialnumber.Bluetooth.*
Here you find all connected or known bluetooth device(s) with MAC address(es). The states of each device:


| State name | meaning                                                                                            |
|------------|----------------------------------------------------------------------------------------------------|
| connected  | Shows current connection status and allow connection (set to true) or disconnection (set to false) |
| unpair     | Button to unpair this device from the echo device                                                  |

### alexa2.0.Echo-Devices.Serialnumber.Commands.*
With Commands, you can trigger some actions on your Alexa-Device. If you use these on a multiroom device, then they are executed independently and *will not* run in sync on the single devices!

| State name    | meaning                                                                                                                                | value                                                                                                        |
|---------------|----------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------|
| doNotDisturb  | Switch on/off "Do not Disturb" for this device or group. Value is updated with Device Configuration updates from Cloud too             | true/false, or number in seconds to enable (max 12h) or string in form "HH:MM" until this time it is enabled |
| flashbriefing | Briefing in 100 seconds - news etc.pp                                                                                                  | Button                                                                                                       |
| goodmorning   | Good morning from Alexa ...                                                                                                            | Button                                                                                                       |
| funfact       | Fun fact from Alexa ... (Only USA at the moment)                                                                                       | Button                                                                                                       |
| joke          | Joke from Alexa ...                                                                                                                    | Button                                                                                                       |
| cleanup       | Plays a "gong" tone like for start/end of listening mode ...                                                                           | Button                                                                                                       |
| curatedtts    | Random sentence from the chosen area from Alexa ...                                                                                   | Text (allowed: "goodbye", "confirmations", "goodmorning", "compliments", "birthday", "goodnight", "iamhome") |
| singasong     | Alexa sings a song ...                                                                                                                 | Button                                                                                                       |
| speak         | Alexa says what you type in here ...                                                                                                   | Text Input                                                                                                   |
| speakvolume   | Adjust the speak volume of Alexa, this volume is set before the speak and reset afterwards                                             | 0-100                                                                                                        |
| skill         | Launch a defined Skill                                                                                                                 | Skill-ID as String                                                                                           |
| skillYours    | launch a defined Skill - is prefilled with "Your Skills" as displayed in Alexa App too                                                 | Skill-ID as String                                                                                           |
| tellstory     | Alexa tells a story                                                                                                                    | Button                                                                                                       |
| traffic       | Traffic news                                                                                                                           | Button                                                                                                       |
| weather       | Weather news                                                                                                                           | Button                                                                                                       |
| deviceStop    | Stop all actions on device                                                                                                             | Button                                                                                                       |
| notification  | Send text notification to customer of the device                                                                                       | Text, optionally specify title "title;text"                                                                  |
| announcement  | Play announcement (like speak but with Bing before text) <br>*Note: will only work if announcements (for this device) are activated and the device is not in "do not disturb"-mode*                                                                              | Text                                                                                                         |
| ssml          | Speak SSML XML string <br>*Note: will only work if announcements (for this device) are activated and the device is not in "do not disturb"-mode*                                                                                                                 | Text                                                                                                         |
| textcommand   | Send a Text command to Alexa,. Make sure to only use text (e.g. also 3 -> three and such, else Alexa might not correctly react to it!) | Text                                                                                                         |
| sound         | Play a sound on the device.                                                                                                            | Text                                                                                                         |

Detailed information Speak and Announcement: Type in here what you want Alexa to say. You can also adjust the volume of Alexa by giving a percentage before your text.
Example: 10;Alexa is saying Alexa with 10% volume, while 100;Alexa is 100% volume.
Normally, you only can send 250 characters per speak command. By using the semicolon, it is possible to write as much as you want, as long as you separate 250 characters with a semicolon.
Alexa will then speak the text after each other with a small break. You also can use the volume together with more 255 blocks by writing #Volume;#Block1;#Block2, a.s.o A volume set here will be used over a defined speak-volume.

Partially also sounds from https://developer.amazon.com/en-US/docs/alexa/custom-skills/ask-soundlibrary.html work. Specify in speak or ssml as `<audio src="soundbank://soundlibrary/animals/amzn_sfx_bear_groan_roar_01"/>`. Details and discussion please at https://forum.iobroker.net/topic/27509/ssml-audio

### alexa2.0.Echo-Devices.Serialnumber.FireTVCommands.*
If a device is an Amazon FireTV then you can use the following commands:

| State name   | meaning                  | value  |
|--------------|--------------------------|--------|
| turnOn       | Turn FireTV and TV on    | Button |
| turnOff      | Turn FireTV and TV off   | Button |
| videoPause   | Pause the running video  | Button |
| videoResume  | Resume the current video | Button |
| navigateHome | Navigate to Home         | Button |

### alexa2.0.Echo-Devices.Serialnumber.Info.*
Information about the Alexa device

| State name        | meaning                                                                                     | value                     |
|-------------------|---------------------------------------------------------------------------------------------|---------------------------|
| capabilities      | capabilities if the alexa device                                                            | Information               |
| deviceType        | device type from Amazon                                                                     | Information               |
| deviceTypeString  | Device Type as string                                                                       | Information               |
| isMultiroomDevice | Is multiroom device - Multiroom is a virtual device group                                   | Information, true / false |
| isMultiroomMember | Is Multiroom member - If true the device is part of a multiroom device group                | Information, true / false |
| MultiroomParents  | If this device is part of a multiroom device group this state shows the parent group device | Information               |
| name              | Name of Alexa Device                                                                        | Information               |
| SerialNumber      | Serial number of Alexa device                                                               |

### alexa2.0.Echo-Devices.Serialnumber.Music-Provider.*
Directly tell Alexa to play Music or a playlist from supported music providers. Actually supported are: My Library, Amazon Music, Tune In. You can also include a multiroom device group name in the phrase to play it on this group (e.g. "SWR3 auf Erdgeschoss")

| State name            | meaning                            | value      |
|-----------------------|------------------------------------|------------|
| Amazon-Music          | Phrase to play with Amazon Music   | Text input |
| Amazon-Music-Playlist | Playlist to play with Amazon Music | Text input |
| My-Library            | Phrase to play with My Library     | Text input |
| My-Library-Playlist   | Playlist to play with My Library   | Text input |
| Tune-In               | Phrase to play with Tune In        | Text input |
| Tune-In-Playlist      | Playlist to play with Tune In      | Text input |

### alexa2.0.Echo-Devices.Serialnumber.Player.*
States to control the Playback of the device and to see the current status and media information

| State name          | meaning                                                                                                                                                                                                | value                                                        |
|---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
| allowNext           | Is the Next/Forward action allowed?                                                                                                                                                                    | Information                                                  |
| allowPlayPause      | Is the Play/Pause action allowed?                                                                                                                                                                      | Information                                                  |
| allowPrevious       | Is the Previous action allowed?                                                                                                                                                                        | Information                                                  |
| allowRepeat         | Can Repeat function be used?                                                                                                                                                                           | Information                                                  |
| allowShuffle        | Can Shuffle function be used?                                                                                                                                                                          | Information                                                  |
| ContentType         | text field to put in desired content to play on this device                                                                                                                                            | Information                                                  |
| controlForward      | Button to trigger player "forward" command (30s)                                                                                                                                                       | Button                                                       |
| controlNext         | Button to trigger player "next" command                                                                                                                                                                | Button                                                       |
| controlPause        | Button to trigger player "pause" command                                                                                                                                                               | Button                                                       |
| controlPlay         | Button to trigger player "play" command                                                                                                                                                                | Button                                                       |
| controlPrevious     | Button to trigger player "previous" command                                                                                                                                                            | Button                                                       |
| controlRepeat       | Button to trigger player "repeat" command                                                                                                                                                              | true / false                                                 |
| controlRewind       | Button to trigger player "rewind" command (30s)                                                                                                                                                        | Button                                                       |
| controlShuffle      | Switch to enable or disable Shuffle mode for player                                                                                                                                                    | true / false                                                 |
| currentAlbum        | Current album actually playing                                                                                                                                                                         | Information                                                  |
| currentArtist       | Current artist actually playing                                                                                                                                                                        | Information                                                  |
| currentState        | If playing -> true , else false                                                                                                                                                                        | true / false                                                 |
| currentTitle        | Current title actually playing                                                                                                                                                                         | Information                                                  |
| imageURL            | URL to the image of the album                                                                                                                                                                          | Information                                                  |
| mainArtURL          | URL to current main art                                                                                                                                                                                | Information                                                  |
| mediaId             | media ID of the current played media (usually queueID:<number>                                                                                                                                         | String, can be set to jump to the provided media ID          |
| mediaLength         | Length of the current title                                                                                                                                                                            | Information                                                  |
| mediaLengthStr      | active media length as (HH:)MM:SS                                                                                                                                                                      | Information                                                  |
| mainProgress        | active media elapsed time                                                                                                                                                                              | Information                                                  |
| mainProgressPercent | active media elapsed time in percent                                                                                                                                                                   | Information                                                  |
| mediaProgressStr    | active media progress as (HH:)MM:SS                                                                                                                                                                    | Information                                                  |
| miniArtUrl          | URL to the art (mini)                                                                                                                                                                                  | Information                                                  |
| muted               | state of 'MUTE'                                                                                                                                                                                        | Information, true / false, volume = 0 is considered as muted |
| playingInGroup      | Is the medium played in a group?                                                                                                                                                                       | Information                                                  |
| playingInGroupId    | ID of the playing group                                                                                                                                                                                | Information                                                  |
| providerID          | ID of the current music provider                                                                                                                                                                       | Information                                                  |
| providerName        | Name of the current music provider                                                                                                                                                                     | Information                                                  |
| quality             | quality name of the current medium (might be empty)                                                                                                                                                    | Information                                                  |
| qualityCodec        | Codec of the current medium (might be empty)                                                                                                                                                           | Information                                                  |
| qualityDataRate     | data rate (kbps) of the current medium (might be empty)                                                                                                                                                | Information                                                  |
| qualitySampleRate   | sample rate (Hz) of the current medium (might be empty)                                                                                                                                                | Information                                                  |
| queueId             | queue ID of the current playlist                                                                                                                                                                       | Information                                                  |
| radioStationId      | ID of the TuneIn radio station                                                                                                                                                                         | Information                                                  |
| service             | name of the current music service                                                                                                                                                                      | Information                                                  |
| TuneIn-Station      | text field to put in a Station name to play this station on this device. Also it is possible to type in the station number (s123456...), a show/podcast id (p1234567...) or a topic id (t123456789...) | Text input                                                   |
| volume              | Volume of playback. You can enter a value between 0-100%                                                                                                                                               | INPUT Volume                                                 |

### alexa2.0.Echo-Devices.Serialnumber.Preferences.*
Here you find some device preferences.

| State name                       | meaning                                                                                                                                                                    | value                                                                           |
|----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------|
| ringNotificationsEnabled         | Shows if the ring notifications are enabled or not and allows to edit it (true/false). The status is updated from cloud with a device configuration interval               |
| notificationVolume               | The notification volume set for the device. The value is loaded once on adapter start and then not synced with Cloud services, but changeable                              | number 0..100                                                                   |
| ascendingAlarmState              | The ascending alarm state set for the device. The value is loaded once on adapter start and then not synced with Cloud services, but changeable                            | Boolean                                                                         |
| auxPort-*-Direction              | The direction of the AuxPort (when supported). The value is loaded once on adapter start and then not synced with Cloud services, but changeable                           | "INPUT" or "OUTPUT"                                                             |
| connectedSpeaker                 | The speaker with is used for the Device output. The value is loaded once on adapter start and then not synced with Cloud services, but changeable                          | "InternalSpeaker", "Bluetooth" or "Aux" (if supported by Device! check the App) |
| defaultAlarmNotificationSound    | The default alarm sound set for the device. The value is loaded once on adapter start and then not synced with Cloud services, but changeable                              | ID from a list                                                                  |
| defaultTimerNotificationSound    | The default timer sound set for the device. The value is loaded once on adapter start and then not synced with Cloud services, but changeable                              | ID from a list                                                                  |
| displayAdaptiveBrightnessEnabled | Is the adaptive brightness for the display of the device enabled or not. The value is loaded once on adapter start and then not synced with Cloud services, but changeable | true/false                                                                      |
| displayEnabled                   | Is the display of the device enabled or not. The value is loaded once on adapter start and then not synced with Cloud services, but changeable                             | true/false                                                                      |
| displayBrightness                | Brightness of the display. The value is loaded once on adapter start and then not synced with Cloud services, but changeable                                               | 0..100%                                                                         |
| equalizerBass                    | Equalizer Bass setting. Value is updated when changed if push connection is enabled                                                                                        | Number                                                                          |
| equalizerMidRange                | Equalizer Midrange  setting. Value is updated when changed if push connection is enabled                                                                                   | Number                                                                          |
| equalizerTreble                  | Equalizer Treble  setting. Value is updated when changed if push connection is enabled                                                                                     | Number                                                                          |


### alexa2.0.Echo-Devices.Serialnumber.Reminder.*
Reminder (Erinnerungen) settings for each device, if available.

| State name            | meaning                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | value                                                                                                                                                                                                                                                                                                                              |
|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| <id>.customVolume     | Set a custom Volume for this Reminder. The volume is set 2s before the reminder triggers and re-set to the value before as soon as the timer is (or adapter thinks!) stopped - latest after 120s! When custom volumes and trigger times overlap it will be restored at the end once!                                                                                                                                                                                                                                     | Number 0..100                                                                                                                                                                                                                                                                                                                      |
| <id>.date             | Overwrite the date for existing alarm to set a new date for this alarm. In case you have an existing alarm you can change the date here by simply overwrite the time in format YYYY-MM-DD. Might have no effect when multiple-times-per-day recurring settings were used!                                                                                                                                                                                                                                                | Date Output                                                                                                                                                                                                                                                                                                                        |
| <id>.delete           | Button to delete the Alarm                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | delete with true                                                                                                                                                                                                                                                                                                                   |
| <id>.enabled          | Shows status of alarm and allows to change it: Activate alarm with true - Deactivate alarm with false                                                                                                                                                                                                                                                                                                                                                                                                                    | true / false                                                                                                                                                                                                                                                                                                                       |
| <id>.nextTriggerDate  | Contains the timepoint of the next expected triggering as unix epoch in ms                                                                                                                                                                                                                                                                                                                                                                                                                                               | Number                                                                                                                                                                                                                                                                                                                             |
| <id>.recurringDays    | Shows the list of days configured if the Alarm has recurring settings                                                                                                                                                                                                                                                                                                                                                                                                                                                    | US notation of weekdays (e.g. MO,TU,WE,TH,FR,SA,SU)                                                                                                                                                                                                                                                                                |
| <id>.recurringPattern | Shows the recurring pattern of alarm                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | 0 = one time, no recurring <br> P1D = daily <br> XXXX-WD = on weekdays <br> XXXX-WE = on weekends <br> XXXX-WXX-1 = every monday <br> XXXX-WXX-2 = every tuesday <br> XXXX-WXX-3 = every wednesday <br> XXXX-WXX-4 = every thursday <br> XXXX-WXX-5 = every friday <br> XXXX-WXX-6 = every saturday <br> XXXX-WXX-7 = every sunday |
| <id>.snoozed          | true if the Alarm is snoozed at the moment                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | true/false                                                                                                                                                                                                                                                                                                                         |
| <id>.sound            | Contains the set sound for this alarm. Can be adjusted                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | ID from list                                                                                                                                                                                                                                                                                                                       |
| <id>.time             | Time for alarm. Overwrite the time for existing alarm to set a new time for this alarm. In case you have an existing alarm you can change the time here by simply overwrite the time in format hh:mm:ss, seconds are not needed to set. Might have no effect when multiple-times-per-day recurring settings were used!                                                                                                                                                                                                   | Time Input                                                                                                                                                                                                                                                                                                                         |
| <id>.triggered        | true if alarm is reached and triggered. Clock must be in sync with Amazon and iobroker, Use this to trigger other action as soon as the alarm time is reached                                                                                                                                                                                                                                                                                                                                                            | true / false                                                                                                                                                                                                                                                                                                                       |
| New                   | Data to create a new Reminder as String in following format separated by ; as "timestamp;label;[sound];[recurring]. timestamp as unix timestamp in ms or text like "HH:MM", label as Text (required), sound as sound ID, recurring either empty for once, "DAILY" for daily or "WEEKLY=MO,TU,WE,TH,FR,SA,SU" with comma separated weekly day list. For full flexibility recurring can also be a JSONified object with all data which is passed through. Fields in example above in brackets mean that they are optional! | String                                                                                                                                                                                                                                                                                                                             |
| triggered             | ID of the Alarm that triggered last on this device                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | ID                                                                                                                                                                                                                                                                                                                                 |

When changing a Reminder does not work, please make sure that the Reminder timepoint is in the future - so changing e.g. "sound" on a Reminder in the past will _not_ work!

### alexa2.0.Echo-Devices.Serialnumber.Routines.*
Overview of routines set up in Alexa App. Self created routines have a serial number, Amazon shows as 'preconfigured:...' Each routine can be triggered with a button to run once.

| State name                         | meaning         | value  |
|------------------------------------|-----------------|--------|
| Serial or internal name of routine | name of routine | Button |

### alexa2.0.Echo-Devices.Serialnumber.Timer.*
You can have one or more timers running on each Alexa device. Because of the very dynamic nature of timers, there will be no further objects created like with Alarm or Reminders, but a way to get triggered info exists.

| State name      | meaning                                                                                                      | value      |
|-----------------|--------------------------------------------------------------------------------------------------------------|------------|
| activeTimerList | JSON array with the list of active timers containing ID, label and trigger timepoint as unix timestamp in ms | JSON array |
| nextTimeDate    | Contains the timepoint of the next expected triggering as unix epoch in ms                                   | Number     | Number
| nextTimerId     | ID of the next timer to trigger                                                                              | String     |
| stopTimerId     | Control with a timer ID to stop the timer (also stops if the timer is currently ringing!)                    | String     |
| triggered       | A timer got triggered - in fact it is the "nextTimerId" one                                                  | true/false |

**Please note that it is important that the timezone of the iobroker host is set to match your local timezone, else the triggered time detection might be wrong!**

### alexa2.0.Echo-Devices.Serialnumber.online
Is this Alexa device online and connected to the Amazon cloud?

| State name | meaning                | value        |
|------------|------------------------|--------------|
| online     | Is the device online ? | True / False |

### alexa2.0.History

| State name            | meaning                                                                                                                                                            | value                                                                                                                                                                                |
|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| #trigger              | Button to get new History (more current then timestamp in creationTime), only needed when not using the push connection or when the automatic querying is disabled | Button                                                                                                                                                                               |
| cardContent           | Additional information as shown in Alexa-App/Echo Show                                                                                                             | Information                                                                                                                                                                          |
| cardJson              | Additional information as shown in Alexa-App/Echo Show in JSON format                                                                                              | Information                                                                                                                                                                          |
| creationTime          | date of this history entry, new history entries are only considered when later as this timestamp                                                                   | Information                                                                                                                                                                          |
| domainApplicationId   | Additional information like Skill-ID or such, optional                                                                                                             | Information                                                                                                                                                                          |
| domainApplicationName | Additional information like Skill name or such, optional                                                                                                           | Information                                                                                                                                                                          |
| json                  | Json of last command data to be able to process all infos e.g. in own JavaScripts                                                                                  | JSON                                                                                                                                                                                 |
| name                  | Name of the device that got the last request                                                                                                                       | Information                                                                                                                                                                          |
| serialNumber          | Serial number of the device that got the last request                                                                                                              | Information                                                                                                                                                                          |
| status                | Status of last command to Alexa                                                                                                                                    | SUCCESS / FAULT / DISCARDED_NON_DEVICE_DIRECTED_INTENT; last one is generated when activating the device by saying the wake word, or when the device discarded input as "not for me" |
| summary               | text/summary/action received by the device                                                                                                                         | Information                                                                                                                                                                          |

### alexa.0.Smart-Home-Devices
Includes all smart home devices Alexa knows from your skills. States as follows, for all known devices:

| State name      | meaning                                                                                    | value  |
|-----------------|--------------------------------------------------------------------------------------------|--------|
| deleteAll       | deletes all smart home devices from Alexa, same as the button in the Alexa App             | Button |
| discoverDevices | finds new smart home devices, same as the button in the Alexa App                          | Button |
| queryAll        | queries all devices, only visible when at least one device is able to retrieve information | Button | 

### alexa.0.Smart-Home-Devices.SerialNumber.*
| State name         | meaning                                                                                                                                                       | value                         |
|--------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------|
| #delete            | delete smart home device from Alexa                                                                                                                           | Button                        |
| #enabled           | Is the smart home device active? Status and control to enable/disable. State will be synced with the cloud in the same interval as the smart home deice data. | true / false                  |
| #includeInAllQuery | Should this device be included when querying all device states ?                                                                                              | true / false                  |
| #query             | query data for this device, only visible when the smart home device/skill supports to retrieve information                                                    | Button                        |
| active             | shown for scenes when they can be activated/deactivated                                                                                                       | true / false                  |
| powerState         | Switch power on / off                                                                                                                                         | changeable, true / false      |
| ...                | Many more possible states depending on the type of the smart home device                                                                                      | Information or changeable :-) |

**-> Special states for color/light devices**

| State name               | meaning                                                                 | value                          |
|--------------------------|-------------------------------------------------------------------------|--------------------------------|
| brightness               | brightness of the HUE light                                             | changeable 0-100%              |
| color-Brightness         | brightness for color definition (together with hue and saturation, HSV) | Information, 0-1%              |
| color-hue                | hue value of the color (together with brightness and saturation, HSV)   | Information, 0-360°            |
| color-saturation         | saturation of the color (together with brightness and hue, HSV)         | Information, 0-1               |
| colorRGB                 | RGB code of actual color build out of color-* values                    | Information, #rrggbb           |
| colorName                | Name of the color as defined by Alexa - fixed values                    | changeable to set color, 0-144 |
| colorTemperatureInKelvin | Color temperature in Kelvin                                             | Information, 1000-10000K       |
| colorTemperatureName     | Color temperature name as defined by Alexa - fixed values               | changeable to set, 0-18        |

With #brightness you can adjust the brightness of your light, #colorName is to pick one predefined color (0-144). For HUE Ambient light, you can choose between 19 Values from 0-18 in #colorTemperatureName. All light can switched on and off with #powerState.

### alexa2.0.Info.*
| State name | meaning                                                                             | value                       |
|------------|-------------------------------------------------------------------------------------|-----------------------------|
| connection | If connection to Alexa is OK                                                        | Information -> true / false |
| cookie     | Alexa cookie, use with several external scripts that also want to access Alexa APIs | Information                 |
| csrf       | Alexa CSRF, use with several external scripts that also want to access Alexa APIs   | Information                 |


## Installation
As usual using stable repository, the latest repository or uses the ioBroker "Install" options from GitHub

## Send Alexa Device Command sequences via messages
All commands to the alexa devices can be sent via the adapter to single devices or to groups. The adapter supports sending of these commands and - if needed - also combines them to set a specific volume before a voice output and restore the original volume afterward.

When you want to send custom sequences to alexa devices, you can create a Routine and trigger the routine also via the states.

If this is not flexible enough, the adapter offers since version 3.14.0 a way to send commands via messages.

You provide an array structure which will be converted to commands. There are two types of options for one array element:

**A command**
```json
{
    "command": "speak", // command like the state name in Commands states
    "value": "This is a test speak.", // value like value you set on state
    "device": "..." // optional: serialNumber of the device to send this command to
}
```

**A sequence definition**

```json
{
    "sequenceType": "...", // "SerialNode" or "ParallelNode"
    "nodes": [...] // array of commands or sequences
}
```

Sending the message e.g. using JavaScript adapter looks like this:

```javascript
adapter.sendTo(
    "alexa.0", // target
    "sendSequenceCommand", // command
    { // value
        "deviceSerialNumber": "...", // Serial number of one device to get Meta data which will be used if no device is pecified on the commands
        "sequenceNodes": [...], // list of sequences or commands
        "sequenceType": "SerialNode" // "SerialNode" or "ParallelNode" for the provided sequenceNodes on main level. Default is "SerialNode"
    }, (err, res) => {
        console.log(err);
        console.log(JSON.stringify(res));
    }
);
```

When commands are executed as "ParallelNode" in parallel, which mainly makes sense to send commands to different devices. Commands as "SerialNode" are executed one after the other - **Amazon takes care about this and handles this, not the adapter!** 

A structure like the following is possible:

```json
... // use ParallelNode on main level
"sequenceNodes": [
    {
        "sequenceType": "SerialNode",
        "nodes": [
            {
                "command": "speak",
                "value": "This is a test speak.",
                "device": "DeviceA"
            },
            {
                "command": "speak",
                "value": "This is a second test speak.",
                "device": "DeviceA"
            }
        ]
    },
    {
        "sequenceType": "SerialNode",
        "nodes": [
            {
                "command": "speak",
                "value": "This is a test speak.",
                "device": "DeviceB"
            },
            {
                "command": "speak",
                "value": "This is a second test speak.",
                "device": "DeviceB"
            },
            {
                "sequenceType": "ParallelNode",
                "nodes": [
                    {
                        "command": "flashbriefing",
                        "device": "DeviceC"
                    },
                    {
                        "command": "flashbriefing",
                        "device": "Device B"
                    }
                ]
            }
        ]
    }
]

```

## Troubleshooting

### Problem with Cookie determination with SMS based 2FA flow
If you still use the SMS/E-Mail based 2FA flow, then this might not work. Please update the 2FA/OTP method in the amazon settings to the current process! Not working could also mean that a Error 404/Page not found is shown. ALso then check and upgrade OTP settings!

### The Alexa App opens when I try to log in
If you open the Proxy URL from a mobile device where also the Alexa App is installed on, it might be that it does not work because Amazon might open the Alexa App. So please use a device or PC where the Alexa App is not installed!

### I get a page shown with a QR code telling me to scan it
If you see a page that tells you that "alexa.amazon.xx is deprecated" and you should use the alexa app and with a QR code on it when you enter the Proxy URL" then this means that you call the proxy URL ith a different IP/Domainname then you entered in the "proxy own IP" settings, or you adjusted the IP shown in the Adapter configuration.

The "own IP" setting **needs to** match the IP/Domainname you use to call the proxy URL!

### Problems with Cookie determination via E-Mail/Password
Sometimes Amazon has weired checks in place when they detect unexpected traffic on Login.
This can result in the problem that a captcha needs to be answered in order to log in.
Mostly, this captcha needs to be answered once and after this, the login works without Captcha.

When you need to answer such a captcha, then try to do the following:
* Use a common Browser (e.g., Chrome)
* disable Javascript!
* clear all cookies that may exist for Amazon or use Private/Incognito mode of the browser
* call https://alexa.amazon.de
* you should get a login form (normally displayed for older mobile browsers)
* login there with your Amazon credentials where the Echo/Alexa is registered in
* you may need to log in twice or solve a Captcha
* In the end, you should see "https://alexa.amazon.de/spa/index.html" as URL but without any real content (because JS is still disabled), BUT THIS IS COMPLETELY OK!!!!
* now try to get cookie again
* if it still not works, do it again and check the User-Agent and accept-Language from your browser and use those in adapter on next try

Additionally, the Accept-Language-Header (default to "de-DE") needs to match with your language/the browser language/the language of the amazon page you log in.

You can also try to play around with the User-Agent and use one which more matches to the system type you use.
As example using "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" as User-Agent was reported as working better when ioBroker runs on a linux system.

You can override all those parameters in the adapter configuration.

### Push Connections do not connect
Sometimes it could happen that because of too many connection tries aAmazon blocks the push connection endpoint for a specific IP and "device".

If the Push connection is never established, then you can try to use the following:
* delete the instance of the adapter
* check if there are files like /opt/iobroker/node_modules/iobroker.alexa2/formerDataStore*.json - if existing please delete them
* add new instance and get new cookie

Then it should work again

### I have too many App/"This device" devices in my list of Echo-Devices
The adapter reads whatever Amazon reports. Sometimes unused and old Apps or other connections stay in that list.
If you want to clean this up, you need to do that by visiting the Amazon website and remove the devices there.

Link: https://www.amazon.de/hz/mycd/digital-console/devicedetails?deviceFamily=ALEXA_APP

After deleting an unused device, please restart the adapter to remove them there too.

### 🌍 Region‑specific Amazon configuration

Some users may encounter crashes when first configuring the adapter.  
This is often caused by the adapter being **preconfigured for the German Amazon region (amazon.de)**.  
If your Alexa account is registered in another Amazon marketplace, you must update few settings so the adapter communicates with the correct regional endpoints.

When these values are not adjusted, authentication and cookie might work but failure will occurs when fetching your devices, leading to adapter startup errors and got a terminate signal TERMINATE_YOURSELF.

To correct the regional endpoints, go to `Instances > alexa2.x > Settings > Cookie` and configure the values as below.

| Region / Country | Alexa Base URL        | Accept‑Language  | Cookie Amazon URL  |
|------------------|-----------------------|------------------|--------------------|
| **France** 🇫🇷    | `alexa.amazon.fr`     | `fr-FR`          | `amazon.fr`        |
| *(Add more...)*  |                       |                  |                    |

If you region is not present, and you find out the value, do not hesitate to enrich this documentation with your findings.

## Changelog
<!-- ### __WORK IN PROGRESS__ -->
### 3.27.4 (2025-11-06)
* (@Apollon77) Adjusts authentication check to recent Amazon changes

### 3.27.3 (2025-07-15)
* (Apollon77) Adjust Lists to recent Amazon changes
* (Apollon77) Adjust retrieving the Smart home device list to recent Amazon changes
* (Apollon77) Delete all ioBroker originated Smart Home devices because not controllable anyway
* (Apollon77) Adjust usage of some deprecated js-controller methods

### 3.26.7 (2024-10-24)
* (Apollon77) Fix Sentry integration

### 3.26.6 (2024-10-20)
* (simatec) Responsive Design added

### 3.26.5 (2024-04-16)
* (Apollon77) Adjust History query to recent Amazon changes

### 3.26.4 (2024-01-25)
* (Apollon77) Removed Weblink
* (Apollon77) Adjust History query to recent Amazon changes

### 3.26.3 (2023-11-25)
* (Apollon77) Fixed the proxy login process

### 3.26.2 (2023-11-24)
* (Apollon77) Removed infos how to get cookies manually because no longer available
* (Apollon77) Optimized Admin configuration order of settings for history
* (Apollon77) Fixed some crash cases reported by Sentry
* (Diginix/Apollon77) Added some more device types

### 3.26.1 (2023-11-08)
* (Apollon77) Fix missing text in Admin Config

### 3.26.0 (2023-11-08)
* (Apollon77) Automatically query of activity/history needs to be enabled manually (if you need it!)

### 3.25.5 (2023-10-29)
* (Apollon77) Optimize activity detection to process all relevant entries in all cases

### 3.25.4 (2023-10-27)
* (Apollon77) Optimize activity detection to process all relevant entries and not just the last one

### 3.25.3 (2023-10-27)
* (Apollon77) Adjust History update to work with recent Amazon changes

### 3.25.2 (2023-09-12)
* (Apollon77) Optimize reconnection handling for push connections

### 3.25.1 (2023-09-09)
* IMPORTANT: Minimum required Node-js version is 16 now!
* (Apollon77) Updated the Push connection after Amazon technology changes
* (Apollon77) Added some more device types

### 3.24.1 (2023-08-08)
* (Apollon77) Work around Amazon changes that affected all functions over the Push connection
* (Apollon77) Some smaller fixes and adjustments

### 3.23.2 (2022-11-30)
* (Apollon77) Prioritize real devices higher than app devices when serialnumbers overlap

### 3.23.1 (2022-11-26)
* (Apollon77) Enhance checks when changing smart device values
* (Apollon77) Try to prevent Amazon rate limiting (again)

### 3.21.0 (2022-11-03)
* IMPORTANT: Because of rate limits by Amazon, I decided to remove the update of smart home device values in intervals because it seems to produce too much load in Skills and Amazon systems.
* (Apollon77) Optimizes loading of smart home device states
* (Apollon77) Fixed issue with enabling/disabling of Alarms in combination with non-default music for the alarm
* (Apollon77) Prevented that Timers or Alarms that are long in the future to trigger their trigger state too early
* (Apollon77) Fixed deleting own user Messages state
* (Apollon77) Already request Notification updates when history registered a Notification action and do not wait for Push info to come in

### 3.20.1 (2022-10-29)
* (Apollon77) make sure caching works correctly with multiple instances of the adapter

### 3.20.0 (2022-10-29)
* (Apollon77) Increase minimum interval for requesting smart home device data to 15 minutes (900s) because of Amazon rate limits. Please do not try to work around it!
* (Apollon77) Cache Smart home device list and data to prevent too many requests when restarting adapter in short intervals and to prevent deleted smart home devices also on further rate limit issues

### 3.19.10 (2022-10-27)
* (Apollon77) Fix issue in retry handling when rate limit exceeded is returned by Amazon
* (Apollon77) Do not clean up Smart Home Device objects for now - delete manually if you remove a device

### 3.19.9 (2022-09-12)
* (Apollon77) Receive the correct player status again when musik is stopped

### 3.19.8 (2022-09-07)
* (Apollon77) Add safeguard for too high intervals

### 3.19.7 (2022-08-19)
* (Apollon77) Fix doNotDisturb when using a time string

### 3.19.6 (2022-08-18)
* (Apollon77) Fix doNotDisturb when using a time string

### 3.19.5 (2022-08-09)
* (Apollon77) Fix doNotDisturb for groups

### 3.19.4 (2022-08-07)
* (Apollon77) Prevent unwanted device Name updates

### 3.19.3 (2022-08-07)
* (Apollon77) Fix crash check with multiple adapter instances

### 3.19.2 (2022-08-06)
* (Apollon77) Fix Alarm creation when just providing time and it is for next day

### 3.19.1 (2022-08-04)
* (Apollon77) Fix retry handling

### 3.19.0 (2022-08-04)
* (Apollon77) Preserve Names as soon as it is an App type in general
* (Apollon77) Enhance checks and safeguards for polling intervals
* (Apollon77) Check for restart intervals that do not make sense and stop adapter if detected
* (Apollon77) Add additional crash-loop detection

### 3.18.6 (2022-07-19)
* (Apollon77) Fix deviceStop sequence command

### 3.18.5 (2022-07-19)
* (Apollon77) Fix crash case reported by Sentry
* (arteck) Add image for Fire Cube

### 3.18.3 (2022-07-18)
* (Apollon77) Fix doNotDisturb and doNotDisturb for All devices
* (Apollon77) Update do not disturb status after set for all devices
* (Apollon77) preserve a changed name for a "This device" device object

### 3.18.2 (2022-07-18)
* (Apollon77) Enable commands again for Apps with type A2TF17PFR55MTB - will only work sometimes as it seems

### 3.18.1 (2022-07-18)
* (Apollon77) Optimize Handling when push connection could not be established

### 3.18.0 (2022-07-18)
* IMPORTANT: Smart home device values are from now on only synchronized when enabled via #includeInIntervalQuery state. Enable only what's really needed!
* (Apollon77) Allow to query several more smart home device states (incl. the Echo own Temperature-Sensor if available) and more optimizations
* (Apollon77) Optimize querying smart home device states to only request relevant properties
* (Apollon77) Exclude some value types again from requesting from Amazon because they make no sense and will never contain meaningful data
* (Apollon77) Add FireTV commands for FireTV devices
* (Apollon77) Add CommandsAll.deviceStop and CommandsAll.deviceDoNotDisturb commands to be sent to all devices
* (Apollon77) Add Equalizer preferences (if supported by devices)
* (Apollon77) Add Speaker and AUX preferences (if supported by devices)
* (Apollon77) Add Display (enabled, brightness, adaptive brightness) preferences (if supported by devices)
* (Apollon77) Enhance doNotDisturb state to also allow specifying a enable duration or end timepoint
* (Apollon77) Add a fallback to update music player when a new history record mentions music as target for the spoken words. Could help as fallback when push infos are not coming in sometimes with Sonos
* (Apollon77) Delay initialization of push connection to when basic structures are initialized
* (Apollon77) Add some more devices

### 3.17.5 (2022-07-14)
* (Apollon77) Minimum smart home device query interval is now 5 minutes and not 1 minute anymore to remove some requests for now

### 3.17.4 (2022-07-13)
* (Apollon77) Make sure disabling query intervals really work (disabling smart home device and state and configuration was not possible)

### 3.17.3 (2022-07-12)
* (Apollon77) Prevent datatype warnings in log

### 3.17.2 (2022-07-12)
* (Apollon77) Another adjustment for smart home device data readings
* (Apollon77) Fix crash cases reported by Sentry

### 3.17.1 (2022-07-12)
* (Apollon77) Work around timing issues with speak-volume when using announcement
* (Apollon77) Correctly initialize volume/mute on startup also when player data are not available
* (Apollon77) Do not overwrite speak-volume (and some other fields) with null on adapter start
* (Apollon77) Fix crash cases reported by Sentry

### 3.17.0 (2022-07-11)
* (Apollon77) Add support to play Audible books in Music-Providers
* (Apollon77) Optimize deletion of alarms and reminders
* (Apollon77) Optimize requesting smart home device data

### 3.16.1 (2022-07-11)
* (Apollon77) Fix deletion and cancellation of Alarms and Reminders

### 3.16.0 (2022-07-11)
* (Apollon77) Add (official) support for Music-Alarms - they are now listed under "Alarms" together with the other Alarms! The "sound" list will contain the device specific music targets - so you can basically zse the ones that you created at least once via voice commands.
* (Apollon77) For a Music Alarm the "customVolume" on the alarm is used to set the normal device volume 2s before the alarm but do not (!) reset it afterwards
* (Apollon77) Prevent crashes on one time Alarms that just triggered

### 3.15.2 (2022-07-09)
* (Apollon77) Fix case where initialization of the adapter was never finished and so nothing was controllable when App devices where not synced

### 3.15.1 (2022-07-09)
* (Apollon77) Convert Smarthome device values if wrong datatype is delivered by device
* (Apollon77) Add handling for two more battery health states for smart home devices
* (Apollon77) Fix crash case when initializing notifications

### 3.15.0 (2022-07-09)
* (Apollon77) IMPORTANT: Format to specify multiple Details on "New" for Alarms and Reminders changed, see documentation!
* (Apollon77) Add Alarm/Reminder triggered state per device which will contain the ID of the alarm that got triggered when it is triggered
* (Apollon77) Add several more fields for Alarms and Reminders to show better the details of the alarm
* (Apollon77) Allow to cancel Reminders and Alarms as in the Alexa App
* (Apollon77) Allow to also edit Alarm/Reminder Dates additionally to the times
* (Apollon77) Allow to set a custom Volume for Reminders and Alarms - it will be set 2s before the expected trigger and restored afterwards
* (Apollon77) Calculate the "nextTriggerDate" as Timestamp of next expected triggering
* (Apollon77) Add a JSON-Array with all running timers and the "next id" as state
* (Apollon77) Allow to stop a timer by ID
* (Apollon77) Add the days-list of Alarms when configured for recurrency
* (Apollon77) Add new Commands skill and skillYours to start Skills
* (Apollon77) Add Notification volume, Ascending Alarm setting and default notification sounds as preferences
* (Apollon77) Slow down the initialization of all data a bit, so startup could take longer

### 3.14.0 (2022-07-06)
* (Apollon77) Allow to define if Lists and Smart home devices are synced by the adapter with the Amazon Cloud at all
* (Apollon77) Enhance Smart Home Device support by adding various controllers and states. If in your Alexa App something is configurable which is not in ioBroker please send a debug log!
* (Apollon77) Re-Introduce the ability to poll smart home device states in intervals, but only devices are queried that report their status proactively to Amazon-Cloud to prevent Skill developer costs! ioBroker (and OpenHab) devices are NOT queried! The interval can be configured but must not be lower than 60s! Querying is disabled by default.
* (Apollon77) Add message to send out sequences of commands to alexa devices
* (Apollon77) Add Info states for macAddress and WifiSSID of the Alexa devices
* (Apollon77) Add several new states for Player for allowed actions, medium quality
* (Apollon77) Add mediaId and also allow to set it to jump to a defined entry in the playlist
* (Apollon77) Add Commands.sound to play a sound
* (Apollon77) Do not set the speak-volume when executing textCommand and deviceStop
* (Apollon77) Do not set speak-volume if the volume is already as wanted when executing commands
* (Apollon77) update Do-Not-Disturb status once on start and with device configuration updates
* (Apollon77) Allow to specify the title in notification commands
* (Apollon77) When a device plays music in a group then new states in "Player"will indicate this together with the group ID
* (Apollon77) Allow to enable and disable smart home devices - this will be synced together with the smart home state updates from the cloud if changed in the app!
* (Apollon77) Detect Rate limit exceeded response and do one automatic request retry 10s later (plus a random part)
* (Apollon77) Slow down the update of player status to prevent rate limit exceeded errors. initial update of the player states is delayed on startup of the adapter
* (Apollon77) Restore character replacement for Music providers (space is now again a "-")
* (Apollon77) Add more devices
* (Apollon77) Optimize startup and unload handling

### 3.13.0 (2022-07-02)
* IMPORTANT List Names are now checked for invalid characters and replaced. Might change the name of objects in ioBroker. Old ones need to be deleted manually!
* (Apollon77) Fix command sending in multi owner environments (e.g. Family shared devices)
* (Apollon77) Add some new devices
* (ammawel) Add the date of an alarm as state, not only time
* (Apollon77) Add option to also query the App Devices to allow to send commands to them
* (Apollon77) Rework Multiroom for commands to prevent rate limiting issues!
* (Apollon77) Fix Routine Naming if triggers were used
* (Apollon77) Support devices with "Ziggy" as wake word
* (Apollon77) All commands with voice output respect the defined speak-volume now
* (Apollon77) Allow again to directly enter TuneIn station Ids (s*) and topicIds (t*)
* (Apollon77) Add media states to show remaining time of media playback
* (simatec) Adjust link color im Admin configuration
* (Apollon77) Some requests are automatically retried with a slight delay if Amazon responds with error 503

### 3.12.0 (2021-11-13)
* (Apollon77) SequenceNodes created for a device are now bound to the "deviceOwnCustomer" - should help in mixed owner groups
* (ammawel) Add recurringPattern for Notifications (see Readme)
* (Apollon77) Fix crash case
* (Apollon77) Make sure states are not set too early before objects are created

### 3.11.2 (2021-10-12)
* (Apollon77) Fix crash case (Sentry IOBROKER-ALEXA2-AT)

### 3.11.1 (2021-10-12)
* (Apollon77) Prevent warnings with js-controller 3.3

### 3.11.0 (2021-10-12)
* (Apollon77) Add support for Multi Utterance Routines
* (Apollon77) Fix object deletion for lists
* (Apollon77) Fix Creation of new Lists and add deletion support
* (Apollon77) Allow Commands for Stereo Pairs
* (Apollon77) Optimize Push Connection and History retrieval

### 3.10.4 (2021-10-11)
* IMPORTANT: Node.js 10 support is dropped, supports LTS versions of Node.js starting with 12.x
* (Apollon77) Update Push Connection

### 3.9.3 (2021-07-11)
* (Apollon77) Try to fix setting targetTemperature for ThermostatController

### 3.9.2 (2021-07-05)
* (Apollon77) Only ignore empty history entries if both, summary and alexaResponse is empty

### 3.9.1 (2021-06-04)
* (Apollon77) Fix cookie exchange and cookie validation checks

### 3.9.0 (2021-05-11)
* (Apollon77) Add some new devices
* (Apollon77) Always recognize "alexa" as wakeword to handle commands via the apps correctly

### 3.8.4 (2021-05-11)
* (Apollon77) Optimize Cookie refresh handling
* (Apollon77) Fix warnings from js-controller 3.3 and optimize

### 3.8.2 (2021-04-19)
* (Apollon77) Adjust automatic Cookie Refresh interval from 7 to 4 days

### 3.8.1 (2021-02-09)
* (Apollon77) Initialize volume for all devices on start

### 3.8.0 (2021-02-04)
* (Apollon77) Add configuration option to not write history entries where no command text was recognized

### 3.7.1 (2021-02-03)
* (Apollon77) add some more detected text into summary and answerText states (textCommand commands should be in history back again)

### 3.7.0 (2021-02-03)
* (Apollon77) IMPORTANT: History entries are now requested via a different data source because Amazon seems to tun off the old option. History.status is for this no longer filled, but new states were added. Only voice commands are reported ( textCommand entries not longer)
* (Apollon77) other optimizations in communications and prevent hammering amazon with requests in error cases

### 3.6.1 (2021-02-02)
* (fbeister) Add and adjust some known devices
* (Apollon77) Optimize object deletion

### 3.6.0 (2021-01-28)
* (Apollon77) Update Routines API because of amazon changes

### 3.5.6 (2021-01-22)
* (Apollon77) Catch error when deleting objects

### 3.5.4 (2021-01-22)
* (Apollon77) restart adapter when no initial cookie could be requested

### 3.5.2 (2021-01-17)
* (Apollon77) Prevent to write non-existing state values
* (Apollon77) Add and adjust some known devices

### 3.5.0 (2020-12-24)
* (Apollon77) Remove bespoken because textCommand is more flexible
* (Apollon77) Add and adjust some known devices, add Echo 4 image

### 3.4.0 (2020-12-11)
* (Apollon77) add support for textCommand - tell an Alexa device a text as you would speak it
* (Apollon77) make sure discovery of devices is still possible also after deleting all devices before

### 3.3.5 (2020-12-03)
* (Apollon77) make sure music providers with empty names do not produce errors

### 3.3.2 (2020-11-23)
* (Apollon77) prevent crash cases and optimize reconnection handling

### 3.3.1 (2020-07-24)
* (Apollon77) Further optimize Cookie handling

### 3.3.0 (2020-07-19)
* (Apollon77) Hopefully allow easier upgrades if old deviceId is invalid now
* (Apollon77) Allow to have separate deviceIds per instance

### 3.2.8 (2020-07-16)
* (Apollon77) Work around Amazon Security changes and make proxy working again

### 3.2.7 (2020-07-15)
* (Apollon77) Work around Amazon Security changes and make proxy working again
* (arteck) add echo studio

### 3.2.6 (2020-07-15)
* (Apollon77) Work around Amazon Security changes and make proxy working again

### 3.2.5 (2020-07-13)
* (Apollon77) Work around Amazon Security changes and make proxy working again 
* (Apollon77) fix Sentry crash case when Amazon do not respond correctly (IOBROKER-ALEXA2-1C)

### 3.2.4 (2020-06-18)
* (Apollon77) Update Alexa-Remote Library to optimize communication error/timeout cases

### 3.2.3 (2020-06-17)
* (Apollon77) Fix currentState handling

### 3.2.2 (2020-06-17)
* (Apollon77) remove goodnight because was not working
* (Apollon77) Fix Play/Pause states and some media optimizations

### 3.2.1 (2020-06-17)
* (Apollon77) update amazon-cookie library: another optimization for Node.js 14

### 3.2.0 (2020-06-17)
* (Apollon77/hive) add new commands, jokes/facts/goodnight/cleanup
* (Apollon77/hive) add new command curatedtts with allowed values ["goodbye", "confirmations", "goodmorning", "compliments", "birthday", "goodnight", "iamhome"] to play random curated sentences
* (Apollon77) Prevent some crashes
* (Apollon77) Make sure Timer are not triggering the state when deleted
* (Apollon77) make sure that Lists objects are deleted correctly when deleting
* (Apollon77) Make compatible with nodejs 14
* (Apollon77) Adjust to changes from Amazon so that initial Proxy process works again
* (OberstVonGatow) Make sure that for Spotify Media data requests do not have negative effects and stop the playback

### 3.1.2 (2020-03-18)
* (Gieskanne/Apollon77) Add Next Timer Date as state
* (Apollon77) Fix missing history entries
* (Apollon77) Prevent List deletions from logging errors
* (Apollon77) optimiztions, dependency updates and fixes
* (Apollon77) Switch to ioBroker own sentry instance
* (Apollon77) add Info.softwareVersion

### 3.0.8 (2020-01-19)
* (Apollon77) fix some crash cases
* (Apollon77) Update Sentry DSN and add filtering
* (Apollon77) Update deps

### 3.0.7 (2019-12-28)
* (Apollon77) Prevent some errors

### 3.0.6 (2019-12-26)
* (Apollon77) Prevent some errors

### 3.0.5 (2019-12-25)
* (Apollon77) Prevent some errors

### 3.0.4 (2019-12-24)
* (Apollon77) Prevent some errors

### 3.0.3 (2019-12-24)
* Adapter needs nodejs 8+ and js-controller 2.0 now!
* (Zefau) add functionality for handling of lists
* (Apollon77) Add answerText when available from history
* (Apollon77) handle error for empty valueMaps for ColorTemperatures
* (Apollon77) also support names for new special routines (Alarm Notifications, Sensor Detections, ..)
* (Apollon77) GitHub Actions for Test& Build
* (Apollon77) Add Sentry for error reporting
* (Apollon77) prevent some crashed after changes by Amazon
* (Apollon77) fix Routine names after changes by Amazon
* (Apollon77) add some devices and new images
* (Apollon77) Add more situations to update player status because amazon send no info anymore on title changes

### 2.6.4 (2019-07-25)
* (Apollon77) add some error handling for contacts

### 2.6.1 (2019-07-22)
* (Apollon77) add new device
* (Apollon77) fix volume logic for ssml
* (Apollon77) Allow reminders to bet set >+ 1day

### 2.6.0 (2019-07-21)
* (Apollon77) added possibility to send text messages to users including himself, allows deletion of all messages to himself
* (Apollon77) added option to reset Cookies. After sahev the adapter will restart and needs to get a new Login (see adapter config)
* (Apollon77) change announcement and ssml to send commands more synchronous

### 2.5.0/1 (2019-07-07/18)
* (INgoRah) Support compact mode
* (Apollon77) enhance error handling for broken authentications

### 2.4.6 (2019-07-05)
* (Apollon77) enhance error handling for broken authentications

### 2.4.5 (2019-07-01)
* (Apollon77) enhance error handling for broken authentications

### 2.4.4 (2019-06-26)
* (Apollon77) new devices added

### 2.4.3 (2019-06-25)
* (Apollon77) enhance error handling for Amazon Push Infos

### 2.4.1/2 (2019-06-23)
* (Apollon77) Allow to specify an external docker container IP to override Proxy-IP
* (Apollon77) Add more Devices from GitHub
* (Apollon77) try to work around an Image URL bug from Amazon
* (Apollon77) optimize Admin display of Status/Link
* (Apollon77) add Link to https://alexa.amazon.com to Admin instance overview
* (Apollon77) Remove Admin2 support
* (Apollon77) Optimize Handling from DNS errors (hopefully) to prevent stopped Adapters on Internet/DNS problems

### 2.3.3 (2019-06-21/22)
* (Apollon77) adjust to current Amazon changes
* (Apollon77) fix volume handling
* (Apollon77) Add some more devices
* (Apollon77) Logging reduced
* (Apollon77) unknown devices get commands activated automatically
* (Apollon77) remove Email/Password fields and add info about login to Admin screen (still needs to be polished, only Admin v3)
* (Apollon77) detect App-Devices and remove them from the list because they are not usable in any way

### 2.2.0 (2019-01-xx) [unpublished]
* (Apollon77) add new sequenceCommands "calendarNext", "calendarToday", "calendarTomorrow"
* (Apollon77) fix wake word handling and history sanitizing

### 2.1.0 (2019-01-13) [unpublished]
* (Apollon77) cookie handling completely rewritten, no email/password anymore, only Proxy (still only from log)
* (Apollon77) fixes routine triggering that triggered on wrong device sometimes
* (Apollon77) added new commands "deviceStop", "announcement", "notification", and "ssml" (see documentation above)

### 1.1.3 (2018-11-17)
* (Apollon77) optimize cookie handling again

### 1.1.2 (2018-11-17)
* (Apollon77) new devices
* (Apollon77) make proxy for cookies work again

### 1.1.1 (2018-11-09)
* (Apollon77) new devices
* (Apollon77) make proxy for cookies work again

### 1.1.0 (2018-09-18)
* (Apollon77) Further optimizations to lower number of requests
* (Apollon77) Experimental support for Playlist IDs (p1234567) in TuneIn-Station

### 1.0.1 (2018-09-16)
* (Apollon77) fixes and important changes to make sure not too many requests are sent

### 1.0.0 (2018-09-06)
* (Apollon77) polishng and finalization, make it 1.0.0

### 0.7.5 (2018-09-04)
* (Apollon77) speak can now contain separated text by semicolons. These Texts will then be spoken sequencially. So the old limit if 250 characters is only existing for one such text part. So, now longer texts are possible too. Separate it with a semicolon.
* (Apollon77) more color handling fixes

### 0.7.0 (2018-08-30)
* (Apollon77) Add Bespoken Virtual device support to be able to interact with Alexa infrastructure
* (Apollon77) add new Device Types for Smarthome-integration (Contact and Motion sensors)

### 0.6.4 (2018-08-30)
* (Apollon77) fixes to colorhandling
* (Apollon77) allow to deliver a volume together with aspeak command by using "80;text" and then volume is set before speak and reset afterwards. Experimental!

### 0.6.1 (2018-08-24)
* (Apollon77) sometimes new alarms were not triggered in adapter
* (Apollon77) add support to control smart devices and groups (and also add groups). Because I was only able to test a few types i added logging. please check log, try out and report back!
* (Apollon77) When routines are executed via voice command and push connection is enabled the routine state is also triggered by "true" with ack=true when routine trigger text is matching exactly to spoken text
* (Apollon77) corrected volume and mute handling in states, a volume of 0 is also seen as "muted" if muting flag is not supported by device
* (Apollon77) when speak text is coming from cloud adapter and contains SSML tags they will be filtered out, so you can use a speak endpoint directly to output response from Smart Home skill actions

### 0.5.2 (2018-08-16)
* (Apollon77) fix an error when getting new cookie
* (Apollon77) add new "Playlist" states for the Music providers to directly prepend "playlist" :-)
* (Apollon77) Volumes are not updated for multiroom devices when === 0
* (Apollon77) Add Reminder and Alarms support. Write time and pot. text separated by comma into the "New" stat to create a new one (e.g. "10:00:00, Test-Reminder")
* (Apollon77) Also with Push-Connection some times states are generally updated to make sure data are correct (e.g. player media info will disappear 2h after stopping the music)
* (Apollon77) Added some more deviceTypes

### 0.4.0 (2018-08-13)
* (Apollon77) internal Refactoring
* (Apollon77) states that are not needed anymore will be removed. This will be logged for now, so please check this and give feedback!
* (Apollon77) sanitized music provider state names (spaces are now dashes ... should be removed automatically)
* (Apollon77) Renamed TuneIn-Direct to TuneIn-Station (even if you still can enter text to search, this works with stations too) ... should be removed automatically)
* (Apollon77) Device and Bluetooth status is now also checked at states update
* (Apollon77) After enabling Push-Connection the configured polling is turned off and anything is done based on real time informations from Alexa. Test it
* (Apollon77) Enhanced History states to include the status of the action (SUCCESS, FAIL ...), infos from returned cards (if available) and info on accessed skill for this action.
* (Apollon77) When using Push-Connection History update is also updated automatically. An empty summary with status DISCARDED_NON_DEVICE_DIRECTED_INTENT means the activation of the echo by saying the wake word
* (Bluefox) Add icons for some of the devices for Admin

### 0.3.8 (2018-07-27)
* (Apollon77) Several Multiroom-fixes
* (Apollon77) fixed shuffle/repeat
* (Apollon77) fixed status for play, pause, shuffle and repeat

### 0.3.4 (2018-07-27)
* (Apollon77) Only 20 Routines were queried, now up to 2000
* (Apollon77) Also allow commands including speak for multiroom, BUT it is triggered per device, so NO synchronous audio output!!
* (Apollon77) Thanks to Matten-Matten also Music-provers can be started on multiroom devices

### 0.3.2 (2018-07-25)
* (Apollon77) Fix volume settings for multiroom devices (please report other devices where it is not working)
* (Apollon77) Add serial number and name to Info

### 0.3.0 (2018-07-24)
* (Bluefox) Admin3 fixes and slight changes to roles and code
* (Apollon77) Reworked state names (hopefully last time!)
* (Apollon77) Combine Player-Control and Player-Info into channel Player to support better detection and material support
* (Apollon77) Added further information in Infos states per echo device
* (Apollon77) Try to detect the type of the device different and decide if commands are available or not (till capabilities are known better)
* (Apollon77) New "Music-Provider" states depending on available music providers with possibility to enter a text to play something (same as you would speak it)
* (Apollon77) Volume is send different now, so that it also works when Device player get's inactive

### 0.2.4 (2018-07-22)
* (pix) materialize settings window
* (Apollon77) WOn IP is set automatically with IP from first network interface
* (Apollon77) fix comma replacements in speaks, do not speak empty text
* (Apollon77) if Device is Multiroom, the do not create Routines and Commands and not bluetooth
* (Apollon77) add information about multiroom device and master (later we can use this to sort out commands that are impossible with multiroom)
* (Apollon77) History is also stored as JSON, so it can be used to monitor one datapoint and have all infos on updateState
* (Apollon77) Several other fixes

### 0.2.3 (2018-07-20)
* (Apollon77) in Numbers with . are replaced by commas

### 0.2.2 (2018-07-20)
* (Apollon77) Finally fix device renaming

### 0.2.1 (2018-07-20)
* (Apollon77) Small fix of history channel type and setting states initially

### 0.2.0 (2018-07-20) (as iobroker.alexa2)
* (Apollon77) 0.2.0: added many Player-Info datapoints including "progress updates " when media is playing
* (Apollon77) 0.2.0: removed "Notifications" because the only benefit for now is to show them, no interaction or change possible
* (Apollon77) 0.2.0: adapter now allows to configure intervals for history updates and other data updates like player info
* (Apollon77) 0.2.0: if cookie could not be determined correctly a proxy is started to allow manual login and cookie is catched in the background on success
* (Apollon77) 0.2.0: add info datapoints for connection (connected to Alexa), cookie and csrf
* (Apollon77) 0.2.0: rework complete logic to not use soef library anymore
* (Apollon77) 0.2.0: Speaking free text at any timepoint is available under Commands.speak
* (Apollon77) 0.2.0: Sequence-Commands (weather, traffic, flashbriefing, goodmorning, singasong, tellstory) are available to be triggered under "Commands"
* (Apollon77) 0.2.0: Automation-Routines are now available to be triggered per device under "Routines"
* (Apollon77) 0.2.0: Automatically use different user-agents for Win32, MacOS and Linux based systems
* (Apollon77) 0.2.0: Automatically use different user-agents for Win32, MacOS and Linux based systems
* (Apollon77) 0.2.0: Also support entering TuneIn-Station IDs ("s" plus 4-6 digits) to play that station

### 0.1.0 (2018-07-10)
* (Apollon77) get Adapter working again, especially getting cookie and optimize refresh

### 0.0.x
* soef versions

## License

The MIT License (MIT)

Copyright (c) 2018-2025 Ingo Fischer <iobroker@fischer-ka.de>, 2017-2018 soef <soef@gmx.net>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


================================================
FILE: admin/i18n/de/translations.json
================================================
{
    "Email": "E-Mail",
    "Password": "Passwort",
    "Please wait while loading Adapter-Status ...": "Der Adapter-Status wird geladen. Bitte warten …",
    "ProxyInfo": "Bitte den <a href=\"%s\" target=\"_blank\">folgenden Link zur einmaligen Anmeldung im Amazon-Konto</a> nutzen, um die Adapterverbindung zu Ihren Alexa-Geräten zu aktivieren.",
    "Settings": "Einstellungen",
    "StatusInfo": "Alexa-Cookies sind aktuell und zuletzt aktualisiert am %s",
    "acceptLanguage": "Eigener Accept-Language-Header",
    "alexaLogin": "Alexa Login Daten",
    "alexaServiceHost": "Alexa Basis URL",
    "auth": "Login-Daten für das Amazon-Konto, in dem die Alexa Geräte registriert sind",
    "auth_info": "Die Login-Daten werden verschlüsselt in der lokalen ioBroker-Instanz gespeichert. Wenn die Daten nicht angegeben werden, muss das Cookie selbst ausgelesen werden oder über den Proxy des Adapters der Login vorgenommen werden, sodass das Cookie ermittelt werden kann. Dies muss aber manuell wiederholt werden sobald der Cookie ungültig geworden ist.",
    "autoQueryActivityOnTrigger": "Fragen Sie die Aktivität bei Geräteinteraktion automatisch ab",
    "autoQueryActivityOnTrigger_info": "Bitte nur aktivieren, wenn Sie Aktivitätsinformationen wirklich automatisch benötigen!",
    "bespoken": "Virtuelles Bespoken Gerät",
    "bespokenToken": "Bespoken Validation Token",
    "bespoken_info": "Die Bespoken Virtual Devices können verwendet werden, um Textbefehle an Ihr Amazon-Konto zu senden und gibt Ihnen eine eingeschränkte Kontrolle über Ihre Geräte - wenn möglich mit gesprochenen Wörtern. <br/> <br/> Sie müssen ein Bespoken-Konto und dann ein virtuelles Gerät erstellen Holen Sie sich ein Bespoken-Token wie unter https://read.Bespoken.io/end-to-end/setup/ beschrieben. Dann geben Sie unten das Token ein und Sie sehen neue Objekte für den Adapter. <br/> <br/> Hinweis: Bespoken erstellt aus Ihrem Text eine Audiodatei und sendet diese an die Alexa-APIs. Also ist die Verständnisqualität von Alexa so gut wie diese Sprachgenerierung, so dass es mit speziellen Wörtern problematisch sein kann.",
    "cookie": "Cookie",
    "cookieLoginUrl": "Eigene Cookie-Amazon-URL",
    "device_settings": "Geräteeinstellungen",
    "device_settings_info": "Einstellungen für die Geräte, die von Amazon abgerufen werden",
    "history": "Verlaufseinstellungen",
    "historyIgnoreEmptySummary": "Verlaufseinträge ignorieren, wenn kein Befehl erkannt wurde",
    "history_info": "Einstellungen für Verlaufsdaten, die in den \"History\" Zuständen verfügbar sind",
    "includeAppDevices": "Auch App-Devices abfragen und hinzufügen",
    "interval": "Datenaktualisierungsintervall",
    "interval_info": "Bestimmte Daten können automatisch aktualisiert werden. Wie oft dies passiert, wird hier in Sekunden ferstgelegt. Über den Datenunkt history.#trigger kann jederzeit manuell eine Aktualisierung angestossen werden. Die Angabe von 0 deaktiviert die automatischen Aktualisierungen. ",
    "overwrite": "Überschreiben spezieller Parameter zur Cookie-Ermittlung und Kommunikation",
    "overwrite_info": "Standardmäßig verbindet sich der Adapter mit einem deutschen Amazon-Konto. Bei der Nutzung von Accounts aus anderen Amazon-Ländern müssen hier die korrekten Daten eingetragen werden. Einige Hinweise dazu sind in der Adapter-README zu finden. Auch in speziellen Fällen, wenn die automatische Cookie-Ermittlung fehlschlägt, kann es helfen die Felder User-Agent und Accept-Language anzupassen.",
    "password": "Passwort",
    "proxy": "Proxy-Einstellungen",
    "proxyListenBind": "Proxy-Beschränkung auf folgende IP (Listen Bind)",
    "proxyOverrideIp": "Externe Container-IP (Docker)",
    "proxyOwnIp": "Eigene IP oder Hostname für den Proxy-Link",
    "proxyPort": "Proxy-Port",
    "proxyPort_info": "(0 = zufälliger Port)",
    "proxy_info": "Wenn die automatische Cookie-Ermittlung nicht funktioniert öffnet der Adapter einen Proxy um einen manuellen Login zu erlauben. Das Logfile und die Admin-Seite zeigt in dem Fall den aufzurufenden Link an. Diese mit dem Browser aufrufen, bei Amazon einloggen, alle potentiell angezeigten Captchas und Zwei-Faktor-Abfragen beantworten und das Cookie wird bei Erfolg im Hintergrund automatisch ermittelt.",
    "push_connection": "Push-Verbindung",
    "push_connection_info": "Mit der direkten Push-Verbindung werden die Änderungen von den Alexa-Geräten an den Adapter gemeldet und verwendet, um nur benötigte Daten in naher Echtzeit zu aktualisieren. Wenn einige aktivierte Daten-Update-Intervalle unten nicht verwendet werden. Es wird dringend empfohlen, die Push-Verbindung zu verwenden, um die von der Amazon-Cloud angeforderten Daten zu begrenzen!",
    "resetCookie": "Amazon-Cookies zurücksetzen",
    "s (0 = disabled)": "s (0 = deaktiviert)",
    "sync_settings": "Synchronisierungseinstellungen",
    "sync_settings_info": "Definition welche Daten von der Amazon Cloud zur ioBroker-Instanz synchronisiert werden sollen. Bitte nur die Daten aktivieren, die wirklich benötigt werden!",
    "synchronizeLists": "Listen synchronisieren (z. B. Todo)",
    "synchronizeSmartHomeDevices": "Smart-Home-Geräte synchronisieren",
    "updateConfigurationInterval": "Aktualisierungsintervall der Gerätekonfiguration",
    "updateConfigurationInterval_info": "Die Gerätekonfiguration kann automatisch aktualisiert werden. Das Update-Intervall definiert, wie oft dies geschehen sollte. Stellen Sie das nicht zu niedrig, weil sonst Amazon Sie blockieren könnte! Das Minimum ist 300s oder auf 0 gesetzt, um das Update zu deaktivieren.",
    "updateHistoryInterval": "History-Aktualisierungsintervall",
    "updateHistoryInterval_info": "Das History Update-Intervall definiert, wie oft die History-Daten von den Amazon-Servern aktualisiert werden sollen. Das Minimum ist 60s oder auf 0 gesetzt, um das Update zu deaktivieren. Setzen Sie das nicht zu niedrig, weil sonst Amazon Sie blockieren könnte! Wenn die Push-Connection festgestellt wird, wird das Update-Intervall nicht verwendet, da Push-Informationen es bei Bedarf automatisch auslösen.",
    "updateSmartHomeDevicesInterval": "Aktualisierungsintervall für Smart-Home-Geräte",
    "updateSmartHomeDevicesInterval_info": "Bitte dieses Intervall nur aktivieren, wenn die Werte der Smart Home-Geräte wirklich benötigt werden! Nur die intelligenten Home-Geräte, die #includeInIntervalQuery in den Objekten aktiviert haben und aktiv ihren Status auf Amazon-Systeme melden, werden aktualisiert, um sicherzustellen, dass keine Probleme und Kosten auf der Entwicklerseite des Skills entstehen! Bitte das Intervall nicht zu niedrig, setzen, weil sonst Amazon Sie blockieren könnte! Das Minimum ist 900s oder kann auf 0 gesetzt werden, um das Update zu deaktivieren (Update kann manuell über #query Zustände ausgelöst werden).",
    "updateStateInterval": "Datenaktualisierungsinterval (Player-Info ...)",
    "updateStateInterval_info": "Das allgemeine Datenupdate-Intervall des Geräts definiert, wie oft die Daten von den Amazon-Servern aktualisiert werden sollen. Das Minimum ist 300s oder wird auf 0 gesetzt um das Update zu deaktivieren. Setzen Sie das nicht zu niedrig, weil Amazon Sie sonst blockieren könnte! Wenn die Push-Connection hergestellt ist wird das Update-Intervall auf 60 Minuten gestellt, falls aktiviert.",
    "usePushConnection": "Push-Verbindung verwenden",
    "userAgent": "Eigener User-Agent"
}


================================================
FILE: admin/i18n/en/translations.json
================================================
{
    "Email": "E-Mail",
    "Password": "Password",
    "Please wait while loading Adapter-Status ...": "Please wait while loading Adapter-Status …",
    "ProxyInfo": "Please click <a href=\"%s\" target=\"_blank\">here to log in to your Amazon Account once</a> to activate the connection to your Alexa devices for this instance.",
    "Settings": "Settings",
    "StatusInfo": "Alexa-Cookies are up to date and last updated on %s",
    "acceptLanguage": "Custom Accept-Language Header",
    "alexaLogin": "Alexa login data",
    "alexaServiceHost": "Alexa base url",
    "auth": "Login Details for Amazon Account where your Alexa devices are registered",
    "auth_info": "The credentials will be stored encrypted in your local ioBroker instance. You can also leave them empty, but then you need to fetch the Amazon cookie by your own or use the proxy from the adapter to login and get the cookie.",
    "autoQueryActivityOnTrigger": "Automatically query activity on device interaction",
    "autoQueryActivityOnTrigger_info": "Please only enable if you really need activity information automatically!",
    "bespoken": "Bespoken Virtual Device",
    "bespokenToken": "Bespoken Validation Token",
    "bespoken_info": "The Bespoken Virtual Devices can be used to send text commands to you Amazon Account and gives limited control over your Devices - when possible using spoken words.<br/><br/>You need to create a Bespoken Account and then a Virtual Device to get a Bespoken Token as described on https://read.Bespoken.io/end-to-end/setup/ . Then you enter the token below and you will see new objects for the adapter.<br/><br/>Please note: Bespoken creates a audio file out of your text and sends this to the Alexa-APIs. So the understanding quality of Alexa is as good as this speech generation, so it may be problematic with special words.",
    "cookie": "Cookie",
    "cookieLoginUrl": "Custom Cookie-Amazon-URL",
    "device_settings": "Device Settings",
    "device_settings_info": "Settings for the devices that are fetched from Amazon",
    "history": "History Settings",
    "historyIgnoreEmptySummary": "Ignore History-Entries when no command was recognized",
    "history_info": "Settings for History data that are available in the \"History\" states",
    "includeAppDevices": "Query and add also App-Devices",
    "interval": "Data update interval",
    "interval_info": "Several data can be updated automatically. You define here in seconds how often this should happen. Using the state history.#trigger you can always update the data manually. If you set 0 as interval the automatic update is disabled. ",
    "overwrite": "Override special parameter for cookie determination and communication",
    "overwrite_info": "By default the parameters are set to connect with a german Amazon account. If your account is located in an other Amazon country you need to enter the correct details here. Check in Adapter README for some details. Also in certain cases when the automatic cookie determination is failing it can help to play around here especially with the Accept-Language and user-agent settings.",
    "password": "Password",
    "proxy": "Proxy Settings",
    "proxyListenBind": "Proxy Binding to certain IP",
    "proxyOverrideIp": "External Container-IP (Docker)",
    "proxyOwnIp": "Own IP or hostname to use in proxy link",
    "proxyPort": "Proxy-Port",
    "proxyPort_info": "(0 = random port)",
    "proxy_info": "If the automatic determination of a cookie was not possible, the adapter opens a proxy to allow a manual login to amazon. The Logfile and Admin screen will tell you the URL to use then. Open this in your browser, manually login into Amazon, solve all potential Captchas or Two-Factor-Authentications and the cookie is catched automatically in the background if successful.",
    "push_connection": "Push-Connection",
    "push_connection_info": "With the direct push connection the changes from the Alexa devices are notified to the adapter and are used to update only needed data in near real time. If enabled some data update intervals below are not used. It is Urgently recommended to use the push connection to limit the data requested from the amazon cloud!",
    "resetCookie": "Reset Amazon Cookies",
    "s (0 = disabled)": "s (0 = disabled)",
    "sync_settings": "Synchronization Settings",
    "sync_settings_info": "Specify which data should be synced from the Amazon Cloud to the ioBroker instance. Please only enable the data you really need!",
    "synchronizeLists": "Synchronize Lists (e.g. Todo)",
    "synchronizeSmartHomeDevices": "Synchronize Smart Home Devices",
    "updateConfigurationInterval": "Device Configuration update interval",
    "updateConfigurationInterval_info": "The device configuration can be updated automatically. The update interval defines how often this should happen. Do not set this too low because else Amazon might block you! The Minimum is 300s or set to 0 to disable the update.",
    "updateHistoryInterval": "History update interval",
    "updateHistoryInterval_info": "The History update interval defines how often the History data should be updated from the Amazon servers. The minimum is 60s or set to 0 to disable the update. Do not set this too low because else Amazon might block you! When the Push-Connection is established the update interval is not used because push information will trigger it when needed automatically.",
    "updateSmartHomeDevicesInterval": "Smart Home devices update interval",
    "updateSmartHomeDevicesInterval_info": "Please enable this interval only if you really need the values of the smart home devices! Only the smart home devices that have #includeInIntervalQuery activated in the objects and actively report their status to Amazon systems are updated to make sure to not create issues and costs on the skill developer side! Do not set this too low because else Amazon might block you! The Minimum is 900s or set to 0 to disable the update (can be triggered manually via #query states).",
    "updateStateInterval": "Data update interval (player info …)",
    "updateStateInterval_info": "The general device data update interval defines how often the data should be updated from the Amazon servers. The minimum is 300s or set to 0 to disable the update. Do not set this too low because else Amazon might block you! When the Push-Connection is established the update interval is set to 60 minutes when enabled.",
    "usePushConnection": "Use push connection",
    "userAgent": "Custom User-Agent"
}


================================================
FILE: admin/i18n/es/translations.json
================================================
{
    "Email": "Usuario/Correo electrónico",
    "Password": "Contraseña",
    "Please wait while loading Adapter-Status ...": "Por favor, espere mientras se carga el adaptador de estado ...",
    "ProxyInfo": "Haga clic <a href=\"%s\" target=\"_blank\">aquí para iniciar sesión en su cuenta de Amazon una vez</a> para activar la conexión a sus dispositivos Alexa para esta instancia.",
    "Settings": "Configuraciones",
    "StatusInfo": "Las cookies de Alexa están actualizadas y actualizadas por última vez en %s ",
    "acceptLanguage": "Encabezado personalizado de idioma de aceptación",
    "alexaLogin": "Datos de acceso de Alexa",
    "alexaServiceHost": "URL base de Alexa",
    "auth": "Detalles de inicio de sesión para Amazon Cuenta donde están registrados los dispositivos Echo",
    "auth_info": "Las credenciales se almacenarán encriptadas en su instancia local de ioBroker. También puede dejarlos vacíos, pero luego debe buscar la cookie de Amazon por su cuenta o usar el proxy del adaptador para iniciar sesión y obtener la cookie.",
    "autoQueryActivityOnTrigger": "Consultar automáticamente la actividad en la interacción del dispositivo",
    "autoQueryActivityOnTrigger_info": "¡Habilítelo solo si realmente necesita información de actividad automáticamente!",
    "bespoken": "Dispositivo virtual Bespoken",
    "bespokenToken": "Bespoken Validation Token",
    "bespoken_info": "Los dispositivos virtuales Bespoken se pueden utilizar para enviar comandos de texto a su cuenta de Amazon y le dan un control limitado sobre sus dispositivos, cuando sea posible utilizando palabras habladas. <br/> <br/> Usted necesita crear una cuenta de Bespoken y luego un dispositivo virtual para obtener un token Bespoken como se describe en https://read.Bespoken.io/end-to-end/setup/. A continuación, ingrese el token a continuación y verá nuevos objetos para el adaptador. <br/> <br/> Tenga en cuenta: Bespoken crea un archivo de audio de su texto y lo envía a las API de Alexa. Entonces, la calidad de comprensión de Alexa es tan buena como esta generación de habla, por lo que puede ser problemático con palabras especiales.",
    "cookie": "Cookie",
    "cookieLoginUrl": "Cookie personalizada-Amazon-URL",
    "device_settings": "Configuración de dispositivo",
    "device_settings_info": "Configuración para los dispositivos que se obtienen de Amazon",
    "history": "Configuración del historial",
    "historyIgnoreEmptySummary": "Ignorar entradas de historial donde no se reconoció ningún comando",
    "history_info": "Configuración de los datos del historial que están disponibles en los estados \"History\"",
    "includeAppDevices": "Consultar y agregar también App-Devices",
    "interval": "Intervalos de actualización de datos",
    "interval_info": "Varios datos se pueden actualizar automáticamente. Usted define aquí en segundos con qué frecuencia esto debería suceder. Con el disparador de historial de estado. #, Siempre puede actualizar los datos manualmente. Si configura 0 como intervalo, la actualización automática está deshabilitada.",
    "overwrite": "Anula el parámetro especial para la determinación y comunicación de cookies",
    "overwrite_info": "Por defecto, los parámetros están configurados para conectarse con una cuenta amazon alemana. Si está utilizando otros países amazónicos, debe establecer los datos correctos aquí. Verifique en el adaptador README para algunos detalles. También en algunos casos, la determinación automática de cookies está fallando, puede ayudar a jugar aquí especialmente con Accept-Language y User-Agent.",
    "password": "contraseña",
    "proxy": "Configuración de proxy",
    "proxyListenBind": "Enlazado Proxy a cierta IP",
    "proxyOverrideIp": "Contenedor externo-IP (Docker)",
    "proxyOwnIp": "IP propia o nombre de host para usar en el enlace proxy",
    "proxyPort": "Puerto proxy",
    "proxyPort_info": "(0 = puerto aleatorio)",
    "proxy_info": "Si la determinación automática de una cookie no puede, el adaptador abre un proxy para permitir un inicio de sesión manual en Amazon. El archivo de registro le dirá la URL que debe usar. Abra esto en su navegador, inicie sesión manualmente en Amazon, resuelva todas las posibles Captchas o Autenticaciones de dos factores y la cookie queda atrapada en segundo plano automáticamente si tiene éxito.",
    "push_connection": "Push-Connection",
    "push_connection_info": "Con la conexión de empuje directo los cambios de los dispositivos Alexa se notifican al adaptador y se utilizan para actualizar sólo los datos necesarios en tiempo real cercano. Si se activan algunos intervalos de actualización de datos a continuación no se utilizan. Se recomienda urgentemente utilizar la conexión push para limitar los datos solicitados desde la nube amazon!",
    "resetCookie": "Restablecer las cookies de Amazon",
    "s (0 = disabled)": "s (0 = deshabilitado)",
    "sync_settings": "Configuración de sincronización",
    "sync_settings_info": "Especifique qué datos deben ser sincronizados desde la nube amazónica a la instancia ioBroker. Por favor, sólo active los datos que realmente necesita!",
    "synchronizeLists": "Sincronizar listas (por ejemplo, Todo)",
    "synchronizeSmartHomeDevices": "Sincronizar dispositivos domésticos inteligentes",
    "updateConfigurationInterval": "Intervalo de actualización de la configuración del dispositivo",
    "updateConfigurationInterval_info": "La configuración del dispositivo se puede actualizar automáticamente. El intervalo de actualización define con qué frecuencia debería ocurrir esto. No pongas esto demasiado bajo porque si no Amazon podría bloquearte! El Mínimo es de 300 o se establece a 0 para desactivar la actualización.",
    "updateHistoryInterval": "Intervalo de actualización de historial",
    "updateHistoryInterval_info": "El intervalo de actualización de la historia define con qué frecuencia los datos de la historia deben actualizarse desde los servidores de Amazon. El mínimo es de 60 o se establece a 0 para desactivar la actualización. No pongas esto demasiado bajo porque si no Amazon podría bloquearte! Cuando el Push-Connection se establece el intervalo de actualización no se utiliza porque la información de empuje lo activará cuando sea necesario automáticamente.",
    "updateSmartHomeDevicesInterval": "Intervalo de actualización de dispositivos domésticos inteligentes",
    "updateSmartHomeDevicesInterval_info": "Por favor, active este intervalo sólo si realmente necesita los valores de los dispositivos caseros inteligentes! Sólo los dispositivos inteligentes caseros que tienen #includeInIntervalQuery activados en los objetos y reportan activamente su estado en los sistemas de Amazon se actualizan para asegurarse de no crear problemas y costos en el lado desarrollador de habilidades! No pongas esto demasiado bajo porque si no Amazon podría bloquearte! El Mínimo es de 900 o se establece a 0 para desactivar la actualización (puede activarse manualmente a través de estados #query).",
    "updateStateInterval": "Intervalo de actualización de datos (Player-Info ...)",
    "updateStateInterval_info": "El intervalo de actualización de datos del dispositivo general define con qué frecuencia los datos deben actualizarse desde los servidores de Amazon. El mínimo es de 300 o se establece a 0 para desactivar la actualización. No pongas esto demasiado bajo porque si no Amazon podría bloquearte! Cuando el Push-Connection se establece el intervalo de actualización se establece a 60 minutos cuando está habilitado.",
    "usePushConnection": "Use la conexión push",
    "userAgent": "User-Agent personalizado"
}


================================================
FILE: admin/i18n/fr/translations.json
================================================
{
    "Email": "Utilisateur/Email",
    "Password": "Mot de passe",
    "Please wait while loading Adapter-Status ...": "Veuillez patienter pendant le chargement de Adapter-Status ...",
    "ProxyInfo": "Veuillez cliquer <a href=\"%s\" target=\"_blank\">ici pour vous connecter une fois à votre compte Amazon</a> afin d'activer la connexion à vos appareils Alexa pour cette instance.",
    "Settings": "Paramètres",
    "StatusInfo": "Les cookies Alexa sont à jour et mis à jour pour la dernière fois le %s ",
    "acceptLanguage": "En-tête personnalisé Accept-Language",
    "alexaLogin": "Données de connexion Alexa",
    "alexaServiceHost": "Alexa base de l'Alexa",
    "auth": "Détails de connexion pour le compte Amazon où les appareils Echo sont enregistrés",
    "auth_info": "Les informations d'identification seront stockées cryptées dans votre instance ioBroker locale. Vous pouvez également les laisser vides, mais vous devez ensuite récupérer le cookie Amazon par vous-même ou utiliser le proxy de l'adaptateur pour vous connecter et obtenir le cookie.",
    "autoQueryActivityOnTrigger": "Interroger automatiquement l'activité sur l'interaction de l'appareil",
    "autoQueryActivityOnTrigger_info": "Veuillez l'activer uniquement si vous avez vraiment besoin automatiquement d'informations sur votre activité !",
    "bespoken": "Appareil virtuel Bespoken",
    "bespokenToken": "Bespoken Validation Token",
    "bespoken_info": "Les périphériques virtuels Bespoken peuvent être utilisés pour envoyer des commandes de texte à votre compte Amazon et donner un contrôle limité sur vos périphériques - si possible en utilisant des mots prononcés. <br/> <br/> Vous devez créer un compte Bespoken puis un périphérique virtuel pour obtenir un jeton Bespoken comme décrit sur https://read.Bespoken.io/end-to-end/setup/. Ensuite, vous entrez le jeton ci-dessous et vous verrez de nouveaux objets pour l'adaptateur. <br/> <br/> Remarque: Bespoken crée un fichier audio à partir de votre texte et l'envoie aux API Alexa. Donc, la qualité de la compréhension d’Alex est aussi bonne que cette génération de discours, donc il peut être problématique avec des mots spéciaux.",
    "cookie": "Cookie",
    "cookieLoginUrl": "Cookie personnalisé-Amazon-URL",
    "device_settings": "Réglages de l'appareil",
    "device_settings_info": "Paramètres des appareils récupérés sur Amazon",
    "history": "Paramètres d'historique",
    "historyIgnoreEmptySummary": "Ignorer les entrées d'historique où aucune commande n'a été reconnue",
    "history_info": "Paramètres des données d'historique disponibles dans les états \"History\"",
    "includeAppDevices": "Interroger et ajouter également des appareils d'application",
    "interval": "Intervalles de mise à jour",
    "interval_info": "Plusieurs données peuvent être automatiquement mises à jour. Vous définissez ici en secondes combien de fois cela devrait arriver. En utilisant l'historique d'état. # Trigger, vous pouvez toujours mettre à jour les données manuellement. Si vous définissez 0 comme intervalle, la mise à jour automatique est désactivée.",
    "overwrite": "Remplacer le paramètre spécial pour la détermination des cookies et la communication",
    "overwrite_info": "Par défaut, les paramètres sont définis pour se connecter avec un compte amazon allemand. Si vous utilisez d'autres pays amazon, vous devez définir les données correctes ici. Vérifiez l'adaptateur README pour plus de détails. Dans certains cas, lorsque la détermination automatique des cookies échoue, cela peut aider à jouer ici, en particulier avec Accept-Language et user-agent.",
    "password": "mot de passe",
    "proxy": "Paramètres du proxy",
    "proxyListenBind": "Liaison proxy à certaines adresses IP",
    "proxyOverrideIp": "IP de conteneur externe (Docker)",
    "proxyOwnIp": "Propre IP ou nom d'hôte à utiliser dans un lien de proxy",
    "proxyPort": "Port proxy",
    "proxyPort_info": "(0 = port aléatoire)",
    "proxy_info": "Si la détermination automatique d'un cookie n'est pas possible, l'adaptateur ouvre un proxy pour autoriser une connexion manuelle à amazon. Le fichier journal vous indiquera l'URL à utiliser ensuite. Ouvrez-le dans votre navigateur, connectez-vous manuellement à Amazon, résolvez tous les captcha potentiels ou les authentifications à deux facteurs et le cookie est automatiquement récupéré en arrière-plan en cas de succès.",
    "push_connection": "Push-Connection",
    "push_connection_info": "Avec la connexion push directe les changements des appareils Alexa sont notifiés à l'adaptateur et sont utilisés pour mettre à jour seulement les données nécessaires en temps réel. Si activé certains intervalles de mise à jour de données ci-dessous ne sont pas utilisés. Il est urgent d'utiliser la connexion push pour limiter les données demandées sur le nuage amazon!",
    "resetCookie": "Réinitialiser les cookies Amazon",
    "s (0 = disabled)": "s (0 = désactivé)",
    "sync_settings": "Paramètres de synchronisation",
    "sync_settings_info": "Préciser quelles données doivent être synchronisées depuis Amazon Cloud jusqu'à l'instance ioBroker. Veuillez uniquement activer les données dont vous avez vraiment besoin !",
    "synchronizeLists": "Synchroniser les listes (par exemple Todo)",
    "synchronizeSmartHomeDevices": "Synchroniser les appareils domestiques intelligents",
    "updateConfigurationInterval": "Intervalle de mise à jour de la configuration de l'appareil",
    "updateConfigurationInterval_info": "La configuration de l'appareil peut être mise à jour automatiquement. L'intervalle de mise à jour définit combien de fois cela devrait se produire. Ne le mettez pas trop bas parce que d'autres Amazon pourraient vous bloquer! Le minimum est de 300 ou de 0 pour désactiver la mise à jour.",
    "updateHistoryInterval": "Intervalle de mise à",
    "updateHistoryInterval_info": "L'intervalle de mise à jour d'Histoire définit la fréquence de mise à jour des données d'Histoire des serveurs Amazon. Le minimum est de 60 ou de 0 pour désactiver la mise à jour. Ne le mettez pas trop bas parce que d'autres Amazon pourraient vous bloquer! Lorsque le Push-Connection est établi, l'intervalle de mise à jour n'est pas utilisé parce que l'information de poussée le déclenchera au besoin automatiquement.",
    "updateSmartHomeDevicesInterval": "Intervalle de mise à jour des appareils Smart Home",
    "updateSmartHomeDevicesInterval_info": "Veuillez activer cet intervalle seulement si vous avez vraiment besoin des valeurs des appareils à domicile intelligents! Seuls les appareils smart home qui ont #includeInIntervalQuery activés dans les objets et rapportent activement leur statut aux systèmes Amazon sont mis à jour pour s'assurer de ne pas créer de problèmes et de coûts sur le côté développeur de compétences! Ne le mettez pas trop bas parce que d'autres Amazon pourraient vous bloquer! Le minimum est de 900 ou défini à 0 pour désactiver la mise à jour (peut être déclenché manuellement via les états #query).",
    "updateStateInterval": "Intervalle de mise à jour des données (Player-Info ...)",
    "updateStateInterval_info": "L'intervalle général de mise à jour des données de périphérique définit la fréquence de mise à jour des données des serveurs Amazon. Le minimum est de 300 ou de 0 pour désactiver la mise à jour. Ne le mettez pas trop bas parce que d'autres Amazon pourraient vous bloquer! Lorsque le Push-Connection est établi, l'intervalle de mise à jour est fixé à 60 minutes lorsque activé.",
    "usePushConnection": "Utiliser la connexion push",
    "userAgent": "User-Agent personnalisé"
}


================================================
FILE: admin/i18n/hu/translations.json
================================================
{
    "Password": "Jelszó",
    "Settings": "Beállítások",
    "StatusInfo": "Az Alexa-sütik naprakészek, utolsó frissítés időpontja: %s",
    "alexaLogin": "Alexa belépési adatok",
    "alexaServiceHost": "Alexa alap-url",
    "acceptLanguage": "Egyedi Accept-Language fejléc",
    "auth": "Bejelentkezési adatok az Amazon Account-hoz, ahol az Alexa eszköz regisztrálva lett",
    "auth_info": "Az azonosító adatok az ioBroker egységén titkosítva tárolódnak. Üresen hagyhatóak, de az Amazon-sütiket egyedileg kell megszerezni, vagy proxy-t kell használni a bejelentkezéshez és a sütik megszerzéséhez.",
    "Email": "E-Mail",
    "cookie": "Süti",
    "history": "Beállítási napló",
    "Please wait while loading Adapter-Status ...": "Kérem várjon, míg az Adapter-állapota betöltődik…",
    "ProxyInfo": "Kattintson a <a href=\"%s\" target=\"_blank\"> címre az Amazon Account belépéshez </a> és az Amazon eszközének aktíválásához.",
    "cookieLoginUrl": "Egyedi Amazon-Süti-URL",
    "interval": "Adatfrissítési periódus",
    "proxyPort_info": "(0 = véletlen választott port)",
    "sync_settings_info": "Jelölje meg mely adatokat szinkronizálja az Amazon Felhőből az ioBrokerbe. Kérem, csak a legfontosabb adatokat jelölje ki!",
    "password": "Jelszó",
    "proxy": "Proxy beállítások",
    "proxyPort": "Proxy-port",
    "resetCookie": "Amazon sütik törlése",
    "s (0 = disabled)": "s (0 = kikapcsolva)",
    "updateConfigurationInterval_info": "Az eszközbeálltások automatikusan frissültek. Az frissítés intervallumának gyakorisága beállítható. Ne állítsa nagyon alacsony értékre, mert az Amazon blokkolhatja! A minimum érték 300 másodperc vagy a 0 beállításával kikapcsolható a frissítés.",
    "updateHistoryInterval": "Az előzmények frissítésének időtartama",
    "proxyListenBind": "Proxy-kapcsolat bizonyos IP-címekhez",
    "proxyOwnIp": "Saját IP cím vagy hosztnév a proxy kapcsolatban",
    "proxyOverrideIp": "Külső konténer-IP címe (Docker)",
    "historyIgnoreEmptySummary": "Korábbi bejegyzések kihagyása, ha az utasítás nem ismerhető fel",
    "history_info": "Beállítások a korábbi adatokhoz, amik a \"Korábbi\" állapot cimkével elérhetők",
    "updateStateInterval": "Adatfrissítési intervallum (lejátszási információ ...)"
}


================================================
FILE: admin/i18n/it/translations.json
================================================
{
    "Email": "Utente/E-mail",
    "Password": "Parola d'ordine",
    "Please wait while loading Adapter-Status ...": "Si prega di attendere durante il caricamento di Adapter-Status ...",
    "ProxyInfo": "Fai clic <a href=\"%s\" target=\"_blank\">qui per accedere al tuo account Amazon una volta</a> per attivare la connessione ai tuoi dispositivi Alexa per questa istanza.",
    "Settings": "impostazioni",
    "StatusInfo": "Alexa-Cookies sono aggiornati e aggiornati per l'ultima volta su %s ",
    "acceptLanguage": "Intestazione di lingua accettabile personalizzata",
    "alexaLogin": "Dati di login di Alexa",
    "alexaServiceHost": "Alexa base url",
    "auth": "Dettagli di accesso per l'account Amazon in cui sono registrati i dispositivi Echo",
    "auth_info": "Le credenziali verranno archiviate crittografate nell'istanza ioBroker locale. Puoi anche lasciarli vuoti, ma poi devi recuperare il cookie Amazon da solo o utilizzare il proxy dall'adattatore per accedere e ottenere il cookie.",
    "autoQueryActivityOnTrigger": "Interroga automaticamente l'attività sull'interazione del dispositivo",
    "autoQueryActivityOnTrigger_info": "Abilitalo solo se hai veramente bisogno delle informazioni sull'attività automaticamente!",
    "bespoken": "Dispositivo virtuale Bespoken",
    "bespokenToken": "Bespoken Validation Token",
    "bespoken_info": "I dispositivi virtuali Bespoken possono essere utilizzati per inviare comandi di testo al tuo account Amazon e forniscono un controllo limitato sui tuoi dispositivi - quando possibile usando parole parlate. <br/> <br/> Devi creare un account Bespoken e poi un dispositivo virtuale per ottenere un token Bespoken come descritto su https://read.Bespoken.io/end-to-end/setup/. Quindi inserisci il token qui sotto e vedrai nuovi oggetti per l'adattatore. <br/> <br/> Nota: Bespoken crea un file audio dal tuo testo e lo invia alle API Alexa. Quindi la qualità della comprensione di Alexa è buona quanto questa generazione di parlato, quindi potrebbe essere problematica con parole speciali.",
    "cookie": "Cookie",
    "cookieLoginUrl": "Cookie personalizzato-Amazon-URL",
    "device_settings": "Impostazioni del dispositivo",
    "device_settings_info": "Impostazioni per i dispositivi recuperati da Amazon",
    "history": "Impostazioni cronologia",
    "historyIgnoreEmptySummary": "Ignora voci di cronologia in cui non è stato riconosciuto alcun comando",
    "history_info": "Impostazioni per i dati della cronologia disponibili negli stati \"History\"",
    "includeAppDevices": "Interroga e aggiungi anche App-Devices",
    "interval": "Intervalli di aggiornamento dei dati",
    "interval_info": "Diversi dati possono essere aggiornati automaticamente. Definisci qui in secondi quanto spesso ciò dovrebbe accadere. Utilizzando la cronologia dello stato. # Trigger puoi sempre aggiornare i dati manualmente. Se si imposta 0 come intervallo, l'aggiornamento automatico è disabilitato.",
    "overwrite": "Sostituisci i parametri speciali per la determinazione e la comunicazione dei cookie",
    "overwrite_info": "Di default i parametri sono impostati per connettersi con un account tedesco di Amazon. Se stai utilizzando altri paesi di Amazon, devi impostare qui i dati corretti. Controllare in Adapter README per alcuni dettagli. Inoltre, in alcuni casi in cui la determinazione automatica dei cookie non funziona, può aiutare a giocare qui, specialmente con Accept-Language e user-agent.",
    "password": "parola d'ordine",
    "proxy": "Impostazioni proxy",
    "proxyListenBind": "Collegamento a determinati indirizzi IP",
    "proxyOverrideIp": "External Container-IP (Docker)",
    "proxyOwnIp": "Proprio IP o nome host da utilizzare nel collegamento proxy",
    "proxyPort": "Porta proxy",
    "proxyPort_info": "(0 = porta casuale)",
    "proxy_info": "Se la determinazione automatica di un cookie non è possibile, l'adattatore apre un proxy per consentire l'accesso manuale ad Amazon. Il file di registro ti indicherà l'URL da utilizzare in quel momento. Apri questo nel tuo browser, accedi manualmente ad Amazon, risolvi tutti i potenziali Captcha o Autenticazione a due fattori e il cookie viene automaticamente catturato in background in caso di successo.",
    "push_connection": "Push-Connection",
    "push_connection_info": "Con la connessione a spinta diretta le modifiche dei dispositivi Alexa vengono notificate all'adattatore e vengono utilizzate per aggiornare solo i dati necessari in tempo reale. Se abilitato alcuni intervalli di aggiornamento dati di seguito non vengono utilizzati. È urgentemente consigliato utilizzare la connessione push per limitare i dati richiesti dal cloud amazon!",
    "resetCookie": "Reimposta i cookie Amazon",
    "s (0 = disabled)": "s (0 = disabilitato)",
    "sync_settings": "Impostazioni di sincronizzazione",
    "sync_settings_info": "Specificare quali dati dovrebbero essere sincronizzati da Amazon Cloud all'istanza ioBroker. Si prega di abilitare solo i dati di cui hai veramente bisogno!",
    "synchronizeLists": "Sincronizza elenchi (ad es. Todo)",
    "synchronizeSmartHomeDevices": "Sincronizza i dispositivi Smart Home",
    "updateConfigurationInterval": "Intervallo di aggiornamento della configurazione del dispositivo",
    "updateConfigurationInterval_info": "La configurazione del dispositivo può essere aggiornata automaticamente. L'intervallo di aggiornamento definisce quanto spesso questo dovrebbe accadere. Non impostare questo troppo basso perché altrimenti Amazon potrebbe bloccarti! Il Minimo è 300 o impostato a 0 per disabilitare l'aggiornamento.",
    "updateHistoryInterval": "Intervallo di aggiornamento della cronologia",
    "updateHistoryInterval_info": "L'intervallo di aggiornamento di Storia definisce quanto spesso i dati di Storia dovrebbero essere aggiornati dai server Amazon. Il minimo è di 300 o impostato a 0 per disabilitare l'aggiornamento. Non impostare questo troppo basso perché altrimenti Amazon potrebbe bloccarti! Quando la Push-Connection viene stabilita l'intervallo di aggiornamento non viene utilizzato perché le informazioni push lo innescheranno quando necessario automaticamente.",
    "updateSmartHomeDevicesInterval": "Intervallo di aggiornamento dei dispositivi Smart Home",
    "updateSmartHomeDevicesInterval_info": "Si prega di attivare questo intervallo solo se hai davvero bisogno dei valori dei dispositivi smart home! Solo i dispositivi smart home che hanno #includeInIntervalQuery attivato negli oggetti e riportano attivamente il loro stato ai sistemi Amazon sono aggiornati per assicurarsi di non creare problemi e costi sul lato sviluppatore di abilità! Non impostare questo troppo basso perché altrimenti Amazon potrebbe bloccarti! Il Minimo è 900 o impostato a 0 per disabilitare l'aggiornamento (può essere attivato manualmente tramite #query stati).",
    "updateStateInterval": "Intervallo di aggiornamento dei dati (Player-Info ...)",
    "updateStateInterval_info": "L'intervallo di aggiornamento dei dati del dispositivo generale definisce quanto spesso i dati dovrebbero essere aggiornati dai server Amazon. Il minimo è di 300 o impostato a 0 per disabilitare l'aggiornamento. Non impostare questo troppo basso perché altrimenti Amazon potrebbe bloccarti! Quando viene stabilita la Push-Connection, l'intervallo di aggiornamento viene impostato a 60 minuti quando abilitato.",
    "usePushConnection": "Utilizzare la connessione push",
    "userAgent": "User-Agent personalizzato"
}


================================================
FILE: admin/i18n/nl/translations.json
================================================
{
    "Email": "User/E-mail",
    "Password": "Wachtwoord",
    "Please wait while loading Adapter-Status ...": "Een ogenblik geduld tijdens het laden van de adapter-status ...",
    "ProxyInfo": "Klik <a href=\"%s\" target=\"_blank\">hier om u eenmaal aan te melden bij uw Amazon-account</a> om de verbinding met uw Alexa-apparaten voor deze instantie te activeren.",
    "Settings": "instellingen",
    "StatusInfo": "Alexa-cookies zijn up-to-date en voor het laatst bijgewerkt op %s ",
    "acceptLanguage": "Aangepaste acceptatie-taalkop",
    "alexaLogin": "Alexa-inloggegevens",
    "alexaServiceHost": "Alexa-basis-URL",
    "auth": "Aanmeldgegevens voor Amazon-account waarop Echo-apparaten zijn geregistreerd",
    "auth_info": "De inloggegevens worden gecodeerd opgeslagen in uw lokale instantie ioBroker. Je kunt ze ook leeg laten, maar dan moet je de Amazon-cookie zelf ophalen of de proxy van de adapter gebruiken om in te loggen en de cookie te krijgen.",
    "autoQueryActivityOnTrigger": "Automatisch opvragen van activiteit bij apparaatinteractie",
    "autoQueryActivityOnTrigger_info": "Schakel dit alleen in als u activiteitsinformatie echt automatisch nodig heeft!",
    "bespoken": "Bespoken virtueel apparaat",
    "bespokenToken": "Bespoken Validation Token",
    "bespoken_info": "De virtuele BESACT-apparaten kunnen worden gebruikt om tekstopdrachten naar uw Amazon-account te verzenden en geeft beperkte controle over uw apparaten - indien mogelijk met behulp van gesproken woorden. <br/> <br/> U moet eerst een Bespoken-account en vervolgens een virtueel apparaat maken een Bespoken-token krijgen zoals beschreven op https://read.Bespoken.io/end-toend/setup/. Vervolgens voert u de token hieronder in en ziet u nieuwe objecten voor de adapter. <br/> <br/> Let op: Bespoken maakt een audiobestand van uw tekst en stuurt dit naar de Alexa-API's. Dus de kenniskwaliteit van Alexa is net zo goed als deze spraakgeneratie, dus het kan problematisch zijn met speciale woorden.",
    "cookie": "Cookie",
    "cookieLoginUrl": "Aangepaste Cookie-Amazon-URL",
    "device_settings": "Apparaat instellingen",
    "device_settings_info": "Instellingen voor de apparaten die van Amazon worden opgehaald",
    "history": "Geschiedenis instellingen",
    "historyIgnoreEmptySummary": "Negeer geschiedenis-items waar geen commando werd herkend",
    "history_info": "Instellingen voor geschiedenisgegevens die beschikbaar zijn in de status \"History\"",
    "includeAppDevices": "Vraag en voeg ook app-apparaten toe",
    "interval": "Gegevens update-intervallen",
    "interval_info": "Verschillende gegevens kunnen automatisch worden bijgewerkt. Je definieert hier in seconden hoe vaak dit moet gebeuren. Door de # trigger te gebruiken, kunt u de gegevens altijd handmatig bijwerken. Als u 0 instelt als interval, is de automatische update uitgeschakeld.",
    "overwrite": "Speciale parameter voor cookie-bepaling en communicatie overschrijven",
    "overwrite_info": "Standaard zijn de parameters ingesteld om verbinding te maken met een Duits Amazon-account. Als u andere Amazon-landen gebruikt, moet u hier de juiste gegevens instellen. Raadpleeg de README van de adapter voor meer informatie. Ook in bepaalde gevallen waar de automatische cookie-bepaling faalt, kan het helpen om hier te spelen, vooral met Accept-Language en user-agent.",
    "password": "wachtwoord",
    "proxy": "Proxy instellingen",
    "proxyListenBind": "Proxy-binding aan bepaalde IP",
    "proxyOverrideIp": "External Container-IP (Docker)",
    "proxyOwnIp": "Eigen IP of hostnaam om te gebruiken in proxy-koppeling",
    "proxyPort": "Proxy-Port",
    "proxyPort_info": "(0 = willekeurige poort)",
    "proxy_info": "Als de automatische vaststelling van een cookie niet mogelijk is, opent de adapter een proxy om handmatig inloggen bij Amazon mogelijk te maken. Het logbestand geeft u de URL die u vervolgens moet gebruiken. Open dit in uw browser, log handmatig in bij Amazon, los alle mogelijke Captchas of Two-Factor-Authenticaties op en de cookie wordt automatisch in de achtergrond gevangen als het succesvol is.",
    "push_connection": "Push-aansluiting",
    "push_connection_info": "Met de directe verbinding die de veranderingen van de Alexa apparatuur zijn geïnformeerd aan de adapter en worden gebruikt om gegevens te updaten in de echte tijd. Als een aantal data updates beneden niet gebruikt worden. Het is Urgently aanbevolen de persverbinding te gebruiken om de gegevens te beperken van de Amazonewolk!",
    "resetCookie": "Reset Amazon-cookies",
    "s (0 = disabled)": "s (0 = uitgeschakeld)",
    "sync_settings": "Synchronisatie-instellingen",
    "sync_settings_info": "Vermeld welke gegevens moeten worden gesynchroniseerd van de Amazone Cloud naar het ioBroker instance. Bevestig de gegevens die je echt nodig hebt!",
    "synchronizeLists": "Lijsten synchroniseren (bijv. Todo)",
    "synchronizeSmartHomeDevices": "Synchroniseer Smart Home-apparaten",
    "updateConfigurationInterval": "Update-interval apparaatconfiguratie",
    "updateConfigurationInterval_info": "Het apparaat kan automatisch bijgewerkt worden. De update interval definieert hoe vaak dit zou moeten gebeuren. Zet dit niet te laag, want anders blokkeert Amazone je. Het Minimum is 300 of klaar om de update uit te schakelen.",
    "updateHistoryInterval": "Historisch update-interval",
    "updateHistoryInterval_info": "De geschiedenis interval definieert hoe vaak de geschiedenisgegevens moeten worden geüpdateerd van de Amazone servers. Het minimum is 60 of klaar om de update uit te schakelen. Zet dit niet te laag, want anders blokkeert Amazone je. Als de Push-Connectie is vastgesteld dat de update niet gebruikt wordt, omdat informatie het zal activeren als het automatisch nodig is.",
    "updateSmartHomeDevicesInterval": "Update-interval voor Smart Home-apparaten",
    "updateSmartHomeDevicesInterval_info": "Beveel deze interval alleen als je echt de waarden van de slimme thuis apparaten nodig hebt! Alleen de slimme thuis apparaten die includeïnfiltervalQuery geactiveerd in de objecten en actief hun status aan Amazon systemen rapporteren om geen problemen te creëren en kosten aan de ontwikkelaar. Zet dit niet te laag, want anders blokkeert Amazon je. Het Minimum is 900 of set to 0 om de update te ontmantelen.",
    "updateStateInterval": "Gegevensbijwerkingsinterval (Player-Info ...)",
    "updateStateInterval_info": "De algemene apparatuur update bepaalt hoe vaak de gegevens moeten worden geüpload van de Amazone servers. Het minimum is 300 of klaar om de update uit te schakelen. Zet dit niet te laag, want anders blokkeert Amazone je. Als de Push-Connectie is vastgesteld dat de update interval is gestart tot 60 minuten wanneer het in staat is.",
    "usePushConnection": "Gebruik een push-verbinding",
    "userAgent": "Aangepaste User-Agent"
}


================================================
FILE: admin/i18n/pl/translations.json
================================================
{
    "Email": "Użytkownik/Email",
    "Password": "Hasło",
    "Please wait while loading Adapter-Status ...": "Poczekaj na załadowanie statusu adaptera ...",
    "ProxyInfo": "Kliknij <a href=\"%s\" target=\"_blank\">tutaj, aby zalogować się raz na swoje konto Amazon</a>, aby aktywować połączenie z urządzeniami Alexa dla tej instancji.",
    "Settings": "Ustawienia",
    "StatusInfo": "Alexa-Cookies są aktualne i ostatnio aktualizowane w %s ",
    "acceptLanguage": "Niestandardowy nagłówek Accept-Language",
    "alexaLogin": "Dane logowania Alexa",
    "alexaServiceHost": "Adres bazowy Alexa",
    "auth": "Dane logowania do konta Amazon, w którym zarejestrowane są urządzenia Echo",
    "auth_info": "Dane uwierzytelniające będą przechowywane w postaci zaszyfrowanej w lokalnej instancji ioBroker. Możesz również pozostawić je puste, ale musisz pobrać plik cookie Amazon samodzielnie lub użyć proxy z adaptera, aby się zalogować i uzyskać plik cookie.",
    "autoQueryActivityOnTrigger": "Automatycznie sprawdzaj aktywność związaną z interakcją urządzenia",
    "autoQueryActivityOnTrigger_info": "Włącz tylko wtedy, gdy naprawdę potrzebujesz automatycznie informacji o aktywności!",
    "bespoken": "Wirtualne urządzenie Bespoken",
    "bespokenToken": "Bespoken Validation Token",
    "bespoken_info": "Urządzenia wirtualne Bespoken mogą być używane do wysyłania poleceń tekstowych do konta Amazon i dają ograniczoną kontrolę nad urządzeniami - w miarę możliwości za pomocą wypowiadanych słów. <br/> <br/> Musisz utworzyć konto Bespoken, a następnie urządzenie wirtualne do zdobądź token Bespoken zgodnie z opisem na https://read.Bespoken.io/end-to-end/setup/. Następnie wpisz poniższy token, a zobaczysz nowe obiekty dla adaptera. <br/> <br/> Uwaga: Bespoken tworzy plik audio poza tekstem i wysyła go do Alexa-API. Zatem jakość rozumienia Alexy jest tak dobra, jak ta generacja mowy, więc może być problematyczne w przypadku specjalnych słów.",
    "cookie": "Cookie",
    "cookieLoginUrl": "Niestandardowy plik cookie-Amazon-URL",
    "device_settings": "Ustawienia urządzenia",
    "device_settings_info": "Ustawienia urządzeń pobieranych z Amazon",
    "history": "Ustawienia historii",
    "historyIgnoreEmptySummary": "Ignoruj wpisy historii, w których nie rozpoznano żadnego polecenia",
    "history_info": "Ustawienia danych historii, które są dostępne w stanach „History”",
    "includeAppDevices": "Zapytanie i dodawanie również App-Devices",
    "interval": "Interwały aktualizacji danych",
    "interval_info": "Kilka danych może być automatycznie aktualizowanych. Tutaj określasz w sekundach, jak często powinno to mieć miejsce. Korzystając z historii stanów. # Trigger zawsze możesz zaktualizować dane ręcznie. Jeśli ustawisz 0 jako interwał, aktualizacja automatyczna zostanie wyłączona.",
    "overwrite": "Zastąp specjalny parametr do określania i komunikacji plików cookie",
    "overwrite_info": "Domyślnie parametry są ustawione na połączenie z niemieckim kontem Amazon. Jeśli korzystasz z innych krajów amazon, musisz ustawić poprawne dane tutaj. Sprawdź w pliku README na temat niektórych szczegółów. Również w niektórych przypadkach, gdy automatyczne określanie ciasteczek zawodzi, może pomóc w zabawie, szczególnie w Accept-Language i user-agent.",
    "password": "hasło",
    "proxy": "Ustawienia proxy",
    "proxyListenBind": "Wiązanie proxy do określonego adresu IP",
    "proxyOverrideIp": "Zewnętrzny kontener-IP (Docker)",
    "proxyOwnIp": "Własny adres IP lub nazwa hosta do użycia w łączu proxy",
    "proxyPort": "Port proxy",
    "proxyPort_info": "(0 = losowy port)",
    "proxy_info": "Jeśli automatyczne określenie pliku cookie nie jest możliwe, adapter otwiera proxy, aby umożliwić ręczne logowanie do Amazon. Logfile wskaże ci adres URL, którego będziesz używał. Otwórz to w przeglądarce, ręcznie zaloguj się do Amazon, rozwiąż wszystkie potencjalne Captchas lub uwierzytelnienia dwuetapowe, a ciasteczko zostanie automatycznie przechwycone w tle, jeśli się powiedzie.",
    "push_connection": "Push-Connection",
    "push_connection_info": "Dzięki bezpośredniemu połączeniu zmian w urządzeniach Aleksy są powiadomione do adaptera i są wykorzystywane do aktualizacji potrzebnych danych w czasie rzeczywistym. Jeśli uaktualnione dane nie są używane. Zaleca się użycie połączenia naciskowego w celu ograniczenia danych żądanych przez niebieską chmurę!",
    "resetCookie": "Zresetuj ciasteczka Amazon",
    "s (0 = disabled)": "s (0 = wyłączone)",
    "sync_settings": "Ustawienia synchronizacji",
    "sync_settings_info": "Wskazuje się, że dane powinny być syndykowane z Amazon Cloud na przykład ioBrokera. Pozwoliło na to tylko dane, które potrzebują!",
    "synchronizeLists": "Synchronizuj listy (np. Todo)",
    "synchronizeSmartHomeDevices": "Synchronizuj inteligentne urządzenia domowe",
    "updateConfigurationInterval": "Interwał aktualizacji konfiguracji urządzenia",
    "updateConfigurationInterval_info": "Konfiguracja urządzenia może być automatycznie aktualizowana. Przedział aktualizacji definiuje sposób, w jaki często się to dzieje. Nie ustalono tego zbyt niskiego, ponieważ inna Amazonka może blokować Ciebie. Minimum jest 300 lub ustawiony do 0, aby złagodzić aktualizację.",
    "updateHistoryInterval": "Interwał aktualizacji historii",
    "updateHistoryInterval_info": "Przedział historii określa, jak często dane historyczne powinny być aktualizowane z serwerów Amazon. Minimalna liczba wynosi 60 lub jest ustawiona do 0, aby złagodzić aktualizację. Nie ustalono tego zbyt niskiego, ponieważ inna Amazonka może blokować Ciebie. Kiedy Push-Connection jest ugruntowany przedział uaktualnienia nie jest używany, ponieważ informacje naciśnięte będą uruchamiane automatycznie.",
    "updateSmartHomeDevicesInterval": "Interwał aktualizacji urządzeń Smart Home",
    "updateSmartHomeDevicesInterval_info": "Pozwólcie to tylko wtedy, gdy potrzebujesz wartości inteligentnych urządzeń. Jedynie inteligentne urządzenia domowe, które #include inIntervalQuery aktywowane w obiektach i aktywnie informują o ich statusie w systemach Amazon, aby nie uaktualnić problemów i kosztów po stronie wytwórcy. Nie ustalono tego zbyt niskiego, ponieważ inna Amazonka może blokować Ciebie. Minimum jest 900 lub ustawiony do 0, aby zdyskwalifikować aktualizację (może być uruchamiany ręcznie przez stany numeryczne).",
    "updateStateInterval": "Interwał aktualizacji danych (Player-Info ...)",
    "updateStateInterval_info": "Ogólna aktualizacja danych definiuje, jak często dane powinny być aktualizowane z serwerów Amazon. Minimalna liczba wynosi 300 lub jest ustawiona do 0, aby złagodzić aktualizację. Nie ustalono tego zbyt niskiego, ponieważ inna Amazonka może blokować Ciebie. Po ustanowieniu przez Push-Connection przedziału aktualizacji następuje do 60 minut.",
    "usePushConnection": "Użyj połączenia push",
    "userAgent": "Niestandardowy User-Agent"
}


================================================
FILE: admin/i18n/pt/translations.json
================================================
{
    "Email": "E-mail",
    "Password": "Senha",
    "Please wait while loading Adapter-Status ...": "Por favor, aguarde enquanto carrega o estado do adaptador …",
    "ProxyInfo": "Clique <a href=\"%s\" target=\"_blank\">aqui para fazer login em sua conta Amazon</a> para ativar a conexão com seus dispositivos Alexa para esta instância.",
    "Settings": "Configurações",
    "StatusInfo": "Os cookies da Alexa são atuais e foram atualizados pela última vez em %s",
    "acceptLanguage": "Próprio Accept-Language-Header",
    "alexaLogin": "Dados de login para Alexa",
    "alexaServiceHost": "URL básico da Alexa",
    "auth": "Dados de login para a conta da Amazon na qual os dispositivos da Alexa estão registrados",
    "auth_info": "Os dados de login serão armazenados criptografados na instância local do ioBroker. Se os dados não forem especificados, o próprio cookie deve ser lido ou o login deve ser realizado através do proxy do adaptador para que o cookie possa ser determinado. No entanto, isso deve ser repetido manualmente assim que o cookie se tornar inválido.",
    "autoQueryActivityOnTrigger": "Consultar automaticamente a atividade na interação do dispositivo",
    "autoQueryActivityOnTrigger_info": "Ative apenas se você realmente precisar de informações de atividades automaticamente!",
    "bespoken": "Dispositivo virtual Bespoken",
    "bespokenToken": "Token de validação para Bespoken",
    "bespoken_info": "Os Dispositivos Virtuais da Bespoken podem ser usados ​​para enviar comandos de texto para sua Conta da Amazon e fornecer controle limitado sobre seus Dispositivos - quando possível, usando palavras faladas. <br/> <br/> Você precisa criar uma Conta Bespoken e, em seguida, um Dispositivo Virtual para obtenha um Token Bespoken conforme descrito em https://read.Bespoken.io/end-to-end/setup/. Em seguida, você insere o token abaixo e verá novos objetos para o adaptador. <br/> <br/> Observação: Bespoken cria um arquivo de áudio com o texto e o envia para as APIs do Alexa. Portanto, a qualidade de compreensão do Alexa é tão boa quanto essa geração de fala, por isso pode ser problemático com palavras especiais.",
    "cookie": "Biscoito",
    "cookieLoginUrl": "Cookie personalizado-Amazon-URL",
    "device_settings": "Configurações do dispositivo",
    "device_settings_info": "Configurações para os dispositivos que são buscados na Amazon",
    "history": "Configurações de histórico",
    "historyIgnoreEmptySummary": "Ignorar entradas de histórico onde nenhum comando foi reconhecido",
    "history_info": "Configurações para dados de histórico que estão disponíveis nos estados \"History\"",
    "includeAppDevices": "Consulte e adicione também App-Devices",
    "interval": "Intervalos de atualização de dados",
    "interval_info": "Vários dados podem ser atualizados automaticamente. Você define aqui em segundos quantas vezes isso deve acontecer. Usando o histórico de estados. # Trigger, você sempre pode atualizar os dados manualmente. Se você definir 0 como intervalo, a atualização automática será desativada.",
    "overwrite": "Substituir parâmetro especial para determinação e comunicação de cookies",
    "overwrite_info": "Por padrão, os parâmetros são configurados para se conectar a uma conta da Amazon na Alemanha. Se você estiver usando outros países amazônicos, precisará definir os dados corretos aqui. Verifique no Adaptador README para alguns detalhes. Também em certos casos, quando a determinação automática de cookies está falhando, pode ajudar a brincar aqui, especialmente com Accept-Language e user-agent.",
    "password": "Senha",
    "proxy": "Configurações de proxy",
    "proxyListenBind": "Ligação Proxy a determinados IPs",
    "proxyOverrideIp": "Container-IP Externo (Docker)",
    "proxyOwnIp": "IP ou nome de host próprio para usar no link do proxy",
    "proxyPort": "Porta proxy",
    "proxyPort_info": "(0 = porta aleatória)",
    "proxy_info": "Se a determinação automática de um cookie não for capaz, o adaptador abre um proxy para permitir um login manual na amazon. O arquivo de registro irá dizer-lhe o URL para usar então. Abra isso no seu navegador, faça login manualmente na Amazon, resolva todos os Captchas ou Autenticações de dois fatores em potencial e o cookie será capturado em segundo plano automaticamente se for bem-sucedido.",
    "push_connection": "Conexão Push",
    "push_connection_info": "Com a conexão de push direta, as alterações dos dispositivos Alexa são notificadas ao adaptador e são usadas para atualizar apenas dados necessários em tempo real. Se ativado alguns intervalos de atualização de dados abaixo não são usados. Recomenda-se urgentemente usar a conexão de push para limitar os dados solicitados da nuvem de amazon!",
    "resetCookie": "Redefinir cookies da Amazon",
    "s (0 = disabled)": "s (0 = desativado)",
    "sync_settings": "Configurações de sincronização",
    "sync_settings_info": "Especifique quais dados devem ser sincronizados da Amazon Cloud para a instância do ioBroker. Por favor, apenas ative os dados que você realmente precisa!",
    "synchronizeLists": "Sincronizar listas (por exemplo, Todo)",
    "synchronizeSmartHomeDevices": "Sincronizar dispositivos de casa inteligente",
    "updateConfigurationInterval": "Intervalo de atualização da configuração do dispositivo",
    "updateConfigurationInterval_info": "A configuração do dispositivo pode ser atualizada automaticamente. O intervalo de atualização define com que frequência isso deve acontecer. Não coloque isso muito baixo porque a Amazon pode bloquear você! O Mínimo é de 3300 ou definido para 0 para desativar a atualização.",
    "updateHistoryInterval": "Intervalo de atualização do histórico",
    "updateHistoryInterval_info": "O intervalo de atualização de História define com que frequência os dados de História devem ser atualizados a partir dos servidores da Amazon. O mínimo é 60s ou definido para 0 para desativar a atualização. Não coloque isso muito baixo porque a Amazon pode bloquear você! Quando o Push-Connection é estabelecido o intervalo de atualização não é usado porque a informação do push irá acioná-lo quando necessário automaticamente.",
    "updateSmartHomeDevicesInterval": "Intervalo de atualização dos dispositivos Smart Home",
    "updateSmartHomeDevicesInterval_info": "Por favor, ative este intervalo apenas se você realmente precisar dos valores dos dispositivos domésticos inteligentes! Apenas os dispositivos domésticos inteligentes que têm #includeInIntervalQuery ativado nos objetos e relatar ativamente seu status para sistemas Amazon são atualizados para se certificar de não criar problemas e custos no lado desenvolvedor de habilidades! Não coloque isso muito baixo porque a Amazon pode bloquear você! O Mínimo é de 900 ou definido para 0 para desativar a atualização (pode ser acionado manualmente via #query states).",
    "updateStateInterval": "Intervalo de atualização de dados (informações do player ...)",
    "updateStateInterval_info": "O intervalo geral de atualização de dados do dispositivo define com que frequência os dados devem ser atualizados a partir dos servidores da Amazon. O mínimo é 300s ou definido para 0 para desativar a atualização. Não coloque isso muito baixo porque a Amazon pode bloquear você! Quando o Push-Connection é estabelecido o intervalo de atualização é definido para 60 minutos quando ativado.",
    "usePushConnection": "Use conexão push",
    "userAgent": "Custom User-Agent"
}


================================================
FILE: admin/i18n/ru/translations.json
================================================
{
    "Email": "Пользователь/Email",
    "Password": "Пароль",
    "Please wait while loading Adapter-Status ...": "Пожалуйста, подождите, пока загружается Adapter-Status ...",
    "ProxyInfo": "Нажмите <a href=\"%s\" target=\"_blank\">здесь, чтобы войти в свою учетную запись Amazon один раз</a>, чтобы активировать подключение к вашим устройствам Alexa для этого экземпляра.",
    "Settings": "Настройки",
    "StatusInfo": "Alexa-Cookies обновлены и обновлены до %s ",
    "acceptLanguage": "Пользовательский заголовок Accept-Language",
    "alexaLogin": "Входные данные Alexa",
    "alexaServiceHost": "Alexa base url",
    "auth": "Детали входа для учетной записи Amazon, на которой зарегистрированы устройства Echo",
    "auth_info": "Учетные данные будут храниться зашифрованными в вашем локальном экземпляре ioBroker. Вы также можете оставить их пустыми, но затем вам нужно получить cookie Amazon самостоятельно или использовать прокси-сервер от адаптера для входа в систему и получить файл cookie.",
    "autoQueryActivityOnTrigger": "Автоматически запрашивать активность при взаимодействии с устройством",
    "autoQueryActivityOnTrigger_info": "Пожалуйста, включайте эту функцию только в том случае, если вам действительно нужна автоматическая информация об активности!",
    "bespoken": "Виртуальное устройство Bespoken",
    "bespokenToken": "Bespoken Validation Token",
    "bespoken_info": "Виртуальные устройства Bespoken можно использовать для отправки текстовых команд на вашу учетную запись Amazon и дает ограниченный контроль над вашими Устройствами - по возможности используя произносимые слова. <br/> <br/> Вам нужно создать учетную запись Bespoken, а затем виртуальное устройство для получить токен Bespoken, как описано на https://read.Bespoken.io/end-to-end/setup/. Затем вы вводите токен ниже, и вы увидите новые объекты для адаптера. <br/> <br/> Обратите внимание: Bespoken создает аудиофайл из вашего текста и отправляет его в Alexa-API. Таким образом, качество понимания Alexa так же хорошо, как и это поколение речи, поэтому это может быть проблематично со специальными словами.",
    "cookie": "Cookie",
    "cookieLoginUrl": "Пользовательский URL-адрес Cookie-Amazon",
    "device_settings": "Настройки устройства",
    "device_settings_info": "Настройки для устройств, которые извле
Download .txt
gitextract_dh1xzp4m/

├── .eslintrc.json
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── auto-merge.yml
│   ├── copilot-instructions.md
│   ├── dependabot.yml
│   ├── stale.yml
│   └── workflows/
│       ├── codeql.yml
│       ├── dependabot-automerge.yml
│       └── test-and-release.yml
├── .gitignore
├── .mocharc.json
├── .npmignore
├── .releaseconfig.json
├── LICENSE
├── README.md
├── admin/
│   ├── i18n/
│   │   ├── de/
│   │   │   └── translations.json
│   │   ├── en/
│   │   │   └── translations.json
│   │   ├── es/
│   │   │   └── translations.json
│   │   ├── fr/
│   │   │   └── translations.json
│   │   ├── hu/
│   │   │   └── translations.json
│   │   ├── it/
│   │   │   └── translations.json
│   │   ├── nl/
│   │   │   └── translations.json
│   │   ├── pl/
│   │   │   └── translations.json
│   │   ├── pt/
│   │   │   └── translations.json
│   │   ├── ru/
│   │   │   └── translations.json
│   │   ├── uk/
│   │   │   └── translations.json
│   │   └── zh-cn/
│   │       └── translations.json
│   ├── index_m.html
│   └── words.js
├── io-package.json
├── lib/
│   ├── smarthomedevices.js
│   └── tools.js
├── main.js
├── package.json
└── test/
    ├── lib/
    │   └── setup.js
    ├── mocha.setup.js
    ├── testAdapter.js
    └── testPackageFiles.js
Download .txt
SYMBOL INDEX (90 symbols across 5 files)

FILE: lib/smarthomedevices.js
  function patchProperties (line 1580) | function patchProperties(props) {
  function configureCapabilityObject (line 1628) | function configureCapabilityObject(cap, obj) {

FILE: lib/tools.js
  function isObject (line 8) | function isObject(it) {
  function isArray (line 21) | function isArray(it) {
  function translateText (line 33) | async function translateText(text, targetLang, yandexApiKey) {
  function translateYandex (line 53) | async function translateYandex(text, targetLang, apiKey) {
  function translateGoogle (line 75) | async function translateGoogle(text, targetLang) {

FILE: main.js
  function setOrUpdateObject (line 279) | function setOrUpdateObject(id, obj, value, stateChangeCallback, createNo...
  function deleteObject (line 374) | function deleteObject(id) {
  function ucFirst (line 418) | function ucFirst(str) {
  function isEquivalent (line 422) | function isEquivalent(a, b) {
  function processObjectQueue (line 465) | function processObjectQueue(callback) {
  function initSentry (line 517) | function initSentry(callback) {
  function startAdapter (line 530) | function startAdapter(options) {
  function checkInstanceObject (line 620) | function checkInstanceObject(callback) {
  function processMessage (line 634) | function processMessage(msg) {
  function getStatusInfo (line 646) | function getStatusInfo(msg) {
  function sendSequenceCommand (line 657) | function sendSequenceCommand(msg) {
  function setRequestResult (line 687) | function setRequestResult(err, res) {
  function sec2HMS (line 698) | function sec2HMS(sec) {
  function scheduleNotificationUpdate (line 719) | function scheduleNotificationUpdate(deviceId, delay, onlyIfNew) {
  function schedulePlayerUpdate (line 730) | function schedulePlayerUpdate(deviceId, delay, onlyIfNew) {
  function scheduleStatesUpdate (line 742) | function scheduleStatesUpdate(delay) {
  function setEqualizer (line 759) | async function setEqualizer(device) {
  function initEqualizerData (line 783) | function initEqualizerData(device) {
  function initDeviceAuxController (line 886) | function initDeviceAuxController(device) {
  function initDisplaySettings (line 961) | function initDisplaySettings(device) {
  function updateDeviceConfigurationStates (line 1068) | function updateDeviceConfigurationStates(callback) {
  function updateStates (line 1107) | function updateStates(callback) {
  function updateMediaProgress (line 1128) | function updateMediaProgress(serialNumber) {
  function generateApplianceQueryArray (line 1177) | function generateApplianceQueryArray(applianceId, queryAllProperties) {
  function queryAllSmartHomeDevices (line 1210) | function queryAllSmartHomeDevices(initial, cloudOnly, callback) {
  function buildSmartHomeControlParameters (line 1283) | function buildSmartHomeControlParameters(entityId, objs, selectorName, c...
  function padding (line 1378) | function padding(num) {
  function hsvToRgb (line 1388) | function hsvToRgb(h, s, v) {
  function updateSmarthomeDeviceStates (line 1439) | function updateSmarthomeDeviceStates(res) {
  function getCachedSmarthomeDevices (line 1603) | function getCachedSmarthomeDevices(callback) {
  function checkSmartHomeControlParameters (line 1648) | function checkSmartHomeControlParameters(parameterId, value) {
  function createSmarthomeStates (line 1681) | function createSmarthomeStates(callback) {
  function scheduleHistoryUpdate (line 2265) | function scheduleHistoryUpdate(delay) {
  function updateHistory (line 2283) | function updateHistory(callback) {
  function updateHistoryStates (line 2333) | function updateHistoryStates(o) {
  function iterateMultiroom (line 2413) | function iterateMultiroom(device, commandCallback, doneCallback, counter) {
  function createStatesForDevice (line 2435) | function createStatesForDevice(device, additionalDeviceData) {
  function createStates (line 2977) | function createStates(callback) {
  function playMusicProvider (line 3059) | function playMusicProvider(device, providerId, value) {
  function createDeviceStates (line 3070) | async function createDeviceStates(serialOrName, additionalDeviceData, ca...
  function updateDeviceStatus (line 3299) | function updateDeviceStatus(serialOrName, callback) {
  function createBluetoothStates (line 3323) | function createBluetoothStates(serialOrName) {
  function updateBluetoothStatus (line 3337) | function updateBluetoothStatus(serialOrName, callback) {
  function createNotificationStates (line 3363) | function createNotificationStates(serialOrName) {
  function updateNotificationStates (line 4025) | function updateNotificationStates(serialOrName, callback) {
  function updatePlayerStatus (line 4049) | function updatePlayerStatus(serialOrName, callback) {
  function getLists (line 4338) | function getLists(listId, callback) {
  function addListItem (line 4401) | function addListItem(list, item) {
  function updateListItem (line 4406) | function updateListItem(list, item) {
  function deleteListItem (line 4411) | function deleteListItem(list, item) {
  function updateListItems (line 4416) | function updateListItems(list, callback) {
  function initRoutines (line 4475) | function initRoutines(callback) {
  function initCommUsers (line 4522) | function initCommUsers(callback) {
  function loadExistingAccessories (line 4597) | function loadExistingAccessories(callback) {
  function main (line 4615) | function main() {

FILE: test/lib/setup.js
  constant JSONLDB (line 12) | let JSONLDB;
  function getAppName (line 18) | function getAppName() {
  function loadJSONLDB (line 23) | function loadJSONLDB() {
  function copyFileSync (line 47) | function copyFileSync(source, target) {
  function copyFolderRecursiveSync (line 66) | function copyFolderRecursiveSync(source, target, ignore) {
  function storeOriginalFiles (line 106) | async function storeOriginalFiles() {
  function restoreOriginalFiles (line 168) | function restoreOriginalFiles() {
  function checkIsAdapterInstalled (line 191) | async function checkIsAdapterInstalled(cb, counter, customName) {
  function checkIsControllerInstalled (line 253) | async function checkIsControllerInstalled(cb, counter) {
  function installAdapter (line 310) | function installAdapter(customName, cb) {
  function waitForEnd (line 346) | function waitForEnd(_pid, cb) {
  function installJsController (line 365) | function installJsController(cb) {
  function copyAdapterToController (line 511) | function copyAdapterToController() {
  function clearControllerLog (line 518) | function clearControllerLog() {
  function clearDB (line 547) | function clearDB() {
  function setupController (line 576) | function setupController(cb) {
  function getSecret (line 624) | async function getSecret() {
  function encrypt (line 662) | function encrypt (key, value) {
  function startAdapter (line 670) | function startAdapter(objects, states, callback) {
  function startController (line 702) | function startController(isStartAdapter, onObjectChange, onStateChange, ...
  function stopAdapter (line 831) | function stopAdapter(cb) {
  function _stopController (line 860) | function _stopController() {
  function stopController (line 871) | function stopController(cb) {
  function setAdapterConfig (line 911) | async function setAdapterConfig(common, native, instance) {
  function getAdapterConfig (line 935) | async function getAdapterConfig(instance) {

FILE: test/testAdapter.js
  function checkConnectionOfAdapter (line 14) | function checkConnectionOfAdapter(cb, counter) {
  function checkValueOfState (line 34) | function checkValueOfState(id, value, cb, counter) {
  function sendTo (line 56) | function sendTo(target, command, message, callback) {
Condensed preview — 41 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (842K chars).
[
  {
    "path": ".eslintrc.json",
    "chars": 767,
    "preview": "{\n    \"root\": true,\n    \"env\": {\n        \"es6\": true,\n        \"node\": true,\n        \"mocha\": true\n    },\n    \"extends\": "
  },
  {
    "path": ".gitattributes",
    "chars": 378,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n\n# St"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 124,
    "preview": "# These are supported funding model platforms\n\ngithub: Apollon77\npatreon: Apollon77\ncustom: ['https://paypal.me/Apollon7"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 1342,
    "preview": "---\nname: Bug report\nabout: Something is not working as it should\ntitle: ''\nlabels: ''\nassignees: ''\n---\n\n**Check if the"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 838,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n**Consider the"
  },
  {
    "path": ".github/auto-merge.yml",
    "chars": 686,
    "preview": "# Configure here which dependency updates should be merged automatically.\n# The recommended configuration is the followi"
  },
  {
    "path": ".github/copilot-instructions.md",
    "chars": 6378,
    "preview": "# ioBroker.alexa2 Adapter\nioBroker.alexa2 is a Node.js adapter for ioBroker that provides remote control for Amazon Alex"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 507,
    "preview": "# Dependabot will run on day 19 of each month at 02:38 (Europe/Berlin timezone)\nversion: 2\nupdates:\n\n  - package-ecosyst"
  },
  {
    "path": ".github/stale.yml",
    "chars": 3151,
    "preview": "# Configuration for probot-stale - https://github.com/probot/stale\n\n# Number of days of inactivity before an Issue or Pu"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 901,
    "preview": "name: \"CodeQL\"\n\non:\n  push:\n    branches: [ \"master\" ]\n  pull_request:\n    # The branches below must be a subset of the "
  },
  {
    "path": ".github/workflows/dependabot-automerge.yml",
    "chars": 669,
    "preview": "# Automatically merge Dependabot PRs when version comparison is within the range\n# that is configured in .github/auto-me"
  },
  {
    "path": ".github/workflows/test-and-release.yml",
    "chars": 5187,
    "preview": "# This is a composition of lint and test scripts\n# Make sure to update this file along with the others\n\nname: Test and R"
  },
  {
    "path": ".gitignore",
    "chars": 1132,
    "preview": "# Created by .ignore support plugin (hsz.mobi)\n### Node template\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-e"
  },
  {
    "path": ".mocharc.json",
    "chars": 59,
    "preview": "{\n    \"require\": [\n        \"./test/mocha.setup.js\"\n    ]\n}\n"
  },
  {
    "path": ".npmignore",
    "chars": 170,
    "preview": "# exclude all dot-files and directories\n.*\n\nadmin/i18n\ntasks\nnode_modules\n.idea\n.git\n/node_modules\ntest\n.travis.yml\nappv"
  },
  {
    "path": ".releaseconfig.json",
    "chars": 43,
    "preview": "{\n    \"plugins\": [\"iobroker\", \"license\"]\n}\n"
  },
  {
    "path": "LICENSE",
    "chars": 1140,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2018-2025 Ingo Fischer <iobroker@fischer-ka.de>, 2017-2018 soef <soef@gmx.net>\n\nPer"
  },
  {
    "path": "README.md",
    "chars": 110290,
    "preview": "![Logo](admin/alexa.png)\n# ioBroker.alexa2\n\n![Number of Installations](http://iobroker.live/badges/alexa2-installed.svg)"
  },
  {
    "path": "admin/i18n/de/translations.json",
    "chars": 7414,
    "preview": "{\n    \"Email\": \"E-Mail\",\n    \"Password\": \"Passwort\",\n    \"Please wait while loading Adapter-Status ...\": \"Der Adapter-St"
  },
  {
    "path": "admin/i18n/en/translations.json",
    "chars": 6536,
    "preview": "{\n    \"Email\": \"E-Mail\",\n    \"Password\": \"Password\",\n    \"Please wait while loading Adapter-Status ...\": \"Please wait wh"
  },
  {
    "path": "admin/i18n/es/translations.json",
    "chars": 7639,
    "preview": "{\n    \"Email\": \"Usuario/Correo electrónico\",\n    \"Password\": \"Contraseña\",\n    \"Please wait while loading Adapter-Status"
  },
  {
    "path": "admin/i18n/fr/translations.json",
    "chars": 7621,
    "preview": "{\n    \"Email\": \"Utilisateur/Email\",\n    \"Password\": \"Mot de passe\",\n    \"Please wait while loading Adapter-Status ...\": "
  },
  {
    "path": "admin/i18n/hu/translations.json",
    "chars": 2252,
    "preview": "{\n    \"Password\": \"Jelszó\",\n    \"Settings\": \"Beállítások\",\n    \"StatusInfo\": \"Az Alexa-sütik naprakészek, utolsó frissít"
  },
  {
    "path": "admin/i18n/it/translations.json",
    "chars": 7498,
    "preview": "{\n    \"Email\": \"Utente/E-mail\",\n    \"Password\": \"Parola d'ordine\",\n    \"Please wait while loading Adapter-Status ...\": \""
  },
  {
    "path": "admin/i18n/nl/translations.json",
    "chars": 6867,
    "preview": "{\n    \"Email\": \"User/E-mail\",\n    \"Password\": \"Wachtwoord\",\n    \"Please wait while loading Adapter-Status ...\": \"Een oge"
  },
  {
    "path": "admin/i18n/pl/translations.json",
    "chars": 6925,
    "preview": "{\n    \"Email\": \"Użytkownik/Email\",\n    \"Password\": \"Hasło\",\n    \"Please wait while loading Adapter-Status ...\": \"Poczeka"
  },
  {
    "path": "admin/i18n/pt/translations.json",
    "chars": 7475,
    "preview": "{\n    \"Email\": \"E-mail\",\n    \"Password\": \"Senha\",\n    \"Please wait while loading Adapter-Status ...\": \"Por favor, aguard"
  },
  {
    "path": "admin/i18n/ru/translations.json",
    "chars": 7275,
    "preview": "{\n    \"Email\": \"Пользователь/Email\",\n    \"Password\": \"Пароль\",\n    \"Please wait while loading Adapter-Status ...\": \"Пожа"
  },
  {
    "path": "admin/i18n/uk/translations.json",
    "chars": 7134,
    "preview": "{\n    \"Email\": \"Електронна пошта\",\n    \"Password\": \"Пароль\",\n    \"Please wait while loading Adapter-Status ...\": \"Зачека"
  },
  {
    "path": "admin/i18n/zh-cn/translations.json",
    "chars": 2744,
    "preview": "{\n    \"Email\": \"电子邮件\",\n    \"Password\": \"密码\",\n    \"Please wait while loading Adapter-Status ...\": \"在等待Adapter-Status时请稍候."
  },
  {
    "path": "admin/index_m.html",
    "chars": 20652,
    "preview": "<html>\n\n<head>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../../css/adapter.css\" />\n    <link rel=\"stylesheet\" typ"
  },
  {
    "path": "admin/words.js",
    "chars": 75350,
    "preview": "/*global systemDictionary:true */\n/*\n+===================== DO NOT MODIFY ======================+\n| This file was genera"
  },
  {
    "path": "io-package.json",
    "chars": 27916,
    "preview": "{\n  \"common\": {\n    \"name\": \"alexa2\",\n    \"version\": \"3.27.4\",\n    \"blockedVersions\": [\n      \"~3.14.0\",\n      \"~3.15.0\""
  },
  {
    "path": "lib/smarthomedevices.js",
    "chars": 56840,
    "preview": "/* jshint -W097 */\n/* jshint -W030 */\n/* jshint strict: false */\n/* jslint node: true */\n/* jslint esversion: 6 */\n\n// h"
  },
  {
    "path": "lib/tools.js",
    "chars": 3366,
    "preview": "const axios = require('axios').default;\n\n/**\n * Tests whether the given variable is a real object and not an Array\n * @p"
  },
  {
    "path": "main.js",
    "chars": 353572,
    "preview": "/* eslint-disable no-unused-vars */\nconst Alexa = require('alexa-remote2');\nconst path = require('path');\nconst fs = re"
  },
  {
    "path": "package.json",
    "chars": 1467,
    "preview": "{\n  \"name\": \"iobroker.alexa2\",\n  \"version\": \"3.27.4\",\n  \"description\": \"Remote control for Alexa (Amazon Echo)\",\n  \"auth"
  },
  {
    "path": "test/lib/setup.js",
    "chars": 33924,
    "preview": "/* jshint -W097 */// jshint strict:false\n/*jslint node: true */\n// check if tmp directory exists\nconst fs            = r"
  },
  {
    "path": "test/mocha.setup.js",
    "chars": 55,
    "preview": "process.on(\"unhandledRejection\", (r) => { throw r; });\n"
  },
  {
    "path": "test/testAdapter.js",
    "chars": 4156,
    "preview": "/* jshint -W097 */// jshint strict:false\n/*jslint node: true */\nvar expect = require('chai').expect;\nvar setup  = requir"
  },
  {
    "path": "test/testPackageFiles.js",
    "chars": 4860,
    "preview": "/* jshint -W097 */\n/* jshint strict:false */\n/* jslint node: true */\n/* jshint expr: true */\n'use strict';\n\nconst expect"
  }
]

About this extraction

This page contains the full source code of the Apollon77/ioBroker.alexa2 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 41 files (774.7 KB), approximately 167.1k tokens, and a symbol index with 90 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!