alexa-remote2

Remote Control for amazon echo devices

Usage no npm install needed!

<script type="module">
  import alexaRemote2 from 'https://cdn.skypack.dev/alexa-remote2';
</script>

README

alexa-remote2

NPM version Downloads Test and Release

Library to remote control an Alexa (Amazon Echo) device via LAN/WLAN.

Example

see example folder

Thanks:

Partly based on Amazon Alexa Remote Control (PLAIN shell) and alexa-remote-control and OpenHab-Addon Thank you for that work.

Known issues/Todos

Changelog:

4.1.2 (2022-02-20)

  • (TactfulElf) Allow csrf to be updated on cookie refresh and add 401 error handling

4.1.1 (2021-11-13)

  • (Apollon77) Prevent crash case in edge cases when unexpected WSMQTT responses are received

4.1.0 (2021-11-13)

  • (Apollon77) SequenceNodes created for a device are now bound to the "deviceOwnCustomer" - should help in mixed owner groups

4.0.4 (2021-11-06)

  • (Apollon77) Fix crash case

4.0.3 (2021-10-12)

  • (Apollon77) Fix crash case (Sentry IOBROKER-ALEXA2-AT)

4.0.2 (2021-10-12)

  • (Apollon77) Adjust Timing on Push Connection initialization
  • (Apollon77) Adjust timing when matching History entries because sometimes Amazon seems to need a bit longer for new infos become available

4.0.1 (2021-10-11)

  • (Apollon77) Adjust call headers

4.0.0 (2021-10-11)

  • IMPORTANT: Node.js 10 support is dropped, supports LTS versions of Node.js starting with 12.x
  • (Apollon77) Change Push connection to new signed flow
  • (RodolfoSilva) Add TypeScript Type definitions

3.9.0 (2021-07-30)

  • (guilhermelirio) Add skill launch function
  • (guilhermelirio) Add getSkills() function

3.8.1 (2021-06-04)

  • (bbindreiter) Set missing Accept Header

3.8.0 (2021-05-11)

  • (Apollon77) Always recognize "alexa" as wakeword to handle commands via the apps correctly

3.7.2 (2021-04-18)

  • (Apollon77) Adjust automatic Cookie Refresh interval from 7 to 4 days
  • (Apollon77) Add other checks for websocket connection handling (Sentry IOBROKER-ALEXA2-32)

3.7.1 (2021-02-03)

  • (Apollon77) also capture tests from ASR_REPLACEMENT_TEXT and TTS_REPLACEMENT_TEXT into summary and alexaResponse

3.7.0 (2021-02-03)

  • (Apollon77) Implement new method to get History/Activities
    • getActivities Method is still there and still triggers the Amazon route as till now. INo idea ng it still works for some users. I declared it as deprecated now
    • add new method "getCustomerHistoryRecords" which uses another endpoint on Amazon side and delivers different data. The return is returned relative compatible to getActivities, so should be a drop in replacement - beside the fact that some fileds can not be provided any longer and will be simply empty! (e.g. activityStatus, deviceAccountId ...) Also in the amazon data some fields are no longer existing (e.g. domainAttributes ...)
    • the event "ws-device-activity" is migrated to use the new getCustomerHistoryRecords endpoint, and so returns compatible, but not 100% the same data
  • (Apollon77) Make sure to not hammer requests to Amazon in case the activity request returns an error and the received PUSH_ACTIVITY entry was not found
  • (Apollon77) Detect and handle 50x error cases and handle them as if no content was returned
  • (Apollon77) Enhance communication to also support gzip and deflate encoded responses because Amazon sometimes ignore requested Accept-Encoding specs. This also could improve speed

3.6.0 (2021-01-28)

  • (Apollon77) Adjust to new automations (Routines) route
  • (Apollon77) Add getAllDeviceVolumes method
  • (Apollon77) Return relationships in getSmarthomeDevices call

3.5.2 (2021-01-17)

  • (Apollon77) Fix potential crash issue (Sentry IOBROKER-ALEXA2-39)

3.5.0 (2020-12-24)

  • (Apollon77) Fix potential crash issue (Sentry IOBROKER-ALEXA2-2V)
  • (FliegenKLATSCH) add cookie as new event when a new cookie is generated
  • (FliegenKLATSCH) fix error code handling

3.4.0 (2020-12-11)

  • (Apollon77) add support for textCommand - tell an Alexa device a text as you would speak it

3.3.3 (2020-12-03)

  • (Apollon77) fix potential crash case (Sentry IOBROKER-ALEXA2-2K)

3.3.2 (2020-11-23)

  • (Apollon77) handle potential crash case (Sentry IOBROKER-ALEXA2-27)
  • (Apollon77) also ignore PUSH_DEVICE_SETUP_STATE_CHANGE push messages
  • (Apollon77) Optimize WSMQTT Reconnection handling for timeout cases

3.3.1 (2020-07-24)

  • (Apollon77) Update cookie lib to maybe be more backward compatible if login/baseUrl was changed
  • (Apollon77) Increase timeout when reading routines

3.3.0 (2020-07-19)

  • (Apollon77) update amazon-cookie library again to optimize upgrades from earlier versions

3.2.6 (2020-07-16)

  • (Apollon77) update amazon-cookie library: Another try to work around Amazon changes

3.2.5 (2020-07-15)

  • (Apollon77) update amazon-cookie library: Another try to work around Amazon changes

3.2.4 (2020-07-15)

  • (Apollon77) update amazon-cookie library: Another try to work around Amazon changes

3.2.3 (2020-07-13)

  • (Apollon77) update amazon-cookie library to work around amazon security changes
  • (Apollon77) Prevent crash on invalid data in request data (Sentry IOBROKER-ALEXA2-1A)
  • (Apollon77) Make sure to handle invalid list responses correctly (Sentry IOBROKER-ALEXA2-1T)

3.2.2 (2020-06-17)

  • (Apollon77) Optimize Request Handling to also Handle timeouts correctly
  • (Apollon77) Increase timeouts for some Smart Home calls to 30s

3.2.1 (2020-06-17)

  • (Apollon77) update amazon-cookie library: another optimization for Node.js 14

3.2.0 (2020-06-16)

  • (Apollon77) Update Cookie Library to allow Proxy Signup again after Amazon changes
  • (hive) add new commands, jokes/facts/goodnight/cleanup
  • (hive) add new command curatedtts with allowed values ["goodbye", "confirmations", "goodmorning", "compliments", "birthday", "goodnight", "iamhome"] to play random curated sentences

3.1.0 (2019-12-30)

  • (Apollon77) remove device._orig because really big objects happened and got exceptions on deep copy using JSION.stringify

3.0.3 (2019-12-28)

  • (Apollon77) update cookie lib

3.0.2 (2019-12-26)

  • (Apollon77) Prevent some errors

3.0.1 (2019-12-24)

  • (Apollon77) Prevent some errors, dependency update

3.0.0 (2019-12-24)

  • (Apollon77) dependency updates
  • (Zefau) add functionality for handling of lists
  • nodejs 8.x is minimum now!

2.5.5 (2019-08-09)

  • (Apollon77) user different mqtt regex to hopefully support other countries better

2.5.4 (2019-08-08)

  • (Apollon77) make sure amazon domains are used as configured instead of "amazon.de" sometimes

2.5.3 (2019-07-22)

  • (Apollon77) also allow Reminders in Future >+1 day

2.5.0/1 (2019-07-21)

  • (Apollon77) enhance announce/ssml to allow send to multiple devices using one command

2.4.0 (2019-07-21)

  • (Apollon77) Finalize methods and logix to send and read and delete messages and what's needed for this

2.3.7 (2019-07-06)

  • (Apollon77) fix (finally) special case on authentication check

2.3.6 (2019-07-05)

  • (Apollon77) fix (finally) special case on authentication check

2.3.5 (2019-07-01)

  • (Apollon77) fix special case on authentication check

2.3.4 (2019-06-25)

  • (Apollon77) fix potential error on PUSH_MEDIA_PROGRESS_CHANGE push infos

2.3.3 (2019-06-23)

  • (Apollon77) change authentication check to hopefully better handle DNS or other "Network unavailable" errors

2.3.2 (2019-06-21)

  • (Apollon77) fix ssml

2.3.1 (2019-06-21)

  • (Apollon77) optimize handling for missing csrf cases

2.3.0 (2019-06-20)

  • (Apollon77) use alexa-cookie lib 2.1 with latest adoptions to Amazon changes (Cookie CSRF was missing)
  • (Apollon77) fixed default cookie refresh interval
  • (Apollon77) When Speak via SSML is done this is not send as card value
  • (Apollon77) add PUSH_MEDIA_PROGRESS_CHANGE to known WS-MQTT topics
  • (Apollon77) change WS reconnection logic to try once per minute

2.2.0 (2019-01-xx)

  • (Apollon77) add new sequenceCommands "calendarNext", "calendarToday", "calendarTomorrow"
  • (Apollon77) fix wake word handling and history sanitizing

2.1.0 (2019-01-12)

  • (Apollon77) add new sequenceCommands "deviceStop", "notification", "announcement" and finally "ssml"

2.0.0 (2018-12-02)

  • (Apollon77) upgrade amazon-cookie lib to 2.0

1.0.3 (2018-11-17)

  • (Apollon77) upgrade amazon-cookie lib
  • (Apollon77) better handle ws errors and upgrade ws version to still support nodejs 6

1.0.2 (2018-11-17)

  • (Apollon77) upgrade amazon-cookie lib

1.0.1 (2018-11-09)

  • (Apollon77) upgrade amazon-cookie lib
  • (Apollon77) small fix for strange history summary content

1.0.0 (2018-09-06)

  • (Apollon77) polishing and finalization and make it 1.0.0

0.6.1 (2018-08-28)

  • (Apollon77) rework scenes and add option to send Parallel or Sequencial commands
  • (Apollon77) enhance methods for smart home device and group handling

0.6.0 (2018-08-24)

  • (Apollon77) several fixes and optimizations
  • (Apollon77) enhance methods for smart home device and group handling

0.5.2 (2018-08-16)

  • (Apollon77) also allow new reminder on next day :-)

0.5.0 (2018-08-16)

  • (Apollon77) fix an error when getting new cookie
  • (Apollon77) Add Reminder and Alarms support.
  • (Apollon77) Enhance Push Connection
  • (Apollon77) Added some more deviceTypes

0.3.0 (2018-08-13)

  • (Apollon77) Added Websocket/MQTT connection class and also initialize it when requested via alexa-remote class.
  • (Apollon77) Websocet/MQTT class and also Alexa-Remote are now event emitters to be able to notify on push changes
  • (Apollon77) many fixes and optimizations, changed code to be an ES6 class
  • (Apollon77) reworked the "prepare" step and only initialize what's really needed and allow extra "init" methods also to update Devices, Bluetooth and such. Docs will follow
  • (Apollon77) API breaking: executeAutomationRoutine is not expecting a routineId anymore, but the complete routine definition.

0.1.0

  • (Apollon77) added automatic cookie renewal when email and password are provided
  • (Apollon77) added authentication checks by bootstrap call (like alexa-remote-control)
  • (Apollon77) several fixes
  • (Apollon77) added logger option

0.0.x

  • Versions by soef