Automation with Alexa using nodejs.
Tags: javascript, tutorial, alexa
Published: 2019-12-18 06:12:02

Hi, as we saw how to automate devices with python and Alexa in the [last tutorial](https://dev.to/imdhanush/automation-with-alexa-jo). We'll move forward with nodejs for automating things.

So, again we are using [sinric pro](https://sinric.pro) as Alexa's skill for automation. Which is free and easy to implement.

We'll keep this tutorial short and simple ;).

# 1. Signup
  - Goto [sinric pro website](https://sinric.pro) and signup.
  - Verify your email.

# 2. Create devices
  - Click on the `Devices` button on the sidebar.
  - ![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/rxtaxdy8m495g2zxha7k.jpeg)
  - Then select `Add Device`.
  - Select which device type you need and let the access key be the default for now.
  - ![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/l1blc1sn5i41koz4qezf.jpeg)
  - That's it. 

# 3. Linking sinric pro to Alexa

  - Goto to Alexa's skills & games and search for [sinric pro skill](https://www.amazon.in/HOME-Sinric-Pro/dp/B07ZT5VDT8/ref=sr_1_2?crid=1U4W5ES006ORH&keywords=sinric&qid=1576448010&s=digital-skills&sprefix=s%2Calexa-skills%2C292&sr=1-2).
  - As soon you link the skill you will be redirected to the login page.
  - Login with the credentials which you used signup for [sinric pro website](https://sinric.pro)
  - After successful login just go back to your Alexa app and it'll start discovering the devices which you added in sinric pro account.
  - So linking skill is done.

# 4. Integration with nodejs

  - **Installing nodejs library for [sinricpro](https://sinric.pro)**
       
        npm install sinricpro --save
  
  - You can find the source code for the nodejs library [here](https://github.com/sinricpro/nodejs-sdk).

**Initializing with access key and secret key**

{% gist https://gist.github.com/imdhanush/6fe39bd310187b9cde700428c674fcdf %}

#### Let's see how to get these keys.
  - Login to sinricpro [here](https://portal.sinric.pro) 
  - Click on [credentials](https://portal.sinric.pro/credential/list) button on the sidebar.
  - There you'll find 2 keys. One is `app key` and another is `secret key`
    basically `app key` is used to provide API service. `secret key` is used to provide security for the information exchanged between devices.

#### Getting device ids.
  - Device IDs are the unique ids that are used to differentiate between devices.
  - As you can see there are 2 more fields `fan` and `light` in the code above.
  - Go to the devices page [here](https://portal.sinric.pro/device/list).
  - Copy the device ID as shown below and paste it in the code.
  ![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/nr2a59mfjo3skq8cj37q.jpeg)
  - Done. 

So moving forward, let's see how to connect to sinricpro. Basically there are 2 ways for controlling a device with sinricpro.
 - Action.
 - Event.
 
## Action
  - Action is something that Alexa does for you. Like when say `Alexa, turn on light` or when you control device from website or app.

## Event
  - Event is used to control the device manually. Like when you press a 
button so light should change its state or much more.


**Defining action and event callbacks**

{% gist https://gist.github.com/imdhanush/724fd4ead97b008d90f0705cec7e1e97 %}

**Next step is to initialize the library with callbacks**
{% gist https://gist.github.com/imdhanush/ec84367ae8442eeaca3c49c459cf1a4e %}

**Let's see how a complete code looks like.**
{% gist https://gist.github.com/imdhanush/4c0b9c9802be2fb33c4827b297f6b791 %}

**That's it ;). When you run the code your devices will be online (status turns to green from red) you can control them with Alexa or [website portal](portal.sinric.pro) or [app](https://play.google.com/store/apps/details?id=pro.sinric).**

For more help, click [here](https://sinric.pro).

Feel free to comment if any corrections or any doubts.

Thanks :).