DEV Community

Cover image for Automation with Alexa using python.
Dhanush
Dhanush

Posted on • Edited on

Automation with Alexa using python.

Hi, Being an electronics and programming enthusiastic, I always wondered how can I automate my room appliances (not with smart bulbs). There were many different ways to come up with like Bluetooth, LAN, MQTT, etc. Then I thought of automating with Alexa for existing devices. There are 2 ways of doing it. The easy way and the hard way. So, for now, let's talk about the easy way.

There are a lot of automation skills in the Alexa skill store but most of them support smart devices. After doing some research I found a really good skill called sinric which let's me control existing appliances with some extra circuitry. Thanks to Aruna Tennakoon for providing this feature. Setting up this skill is straight forward.

  • Signup
  • Get API key
  • Add skill to your Alexa
  • Use these examples
  • That's It.

Sinric is the 1st version with many kinds of device supported. Recently 2nd version of sinric is up which is called sinric pro. We'll discuss the latest version.

let's see how to set up the skill.

1. Signup

2. Create devices

  • Click on the Devices button on the sidebar.
  • Alt Text
  • Then select Add Device.
  • Select which device type you need and let the access key be the default for now.
  • Alt Text
  • That's it.

3. Linking sinric pro to Alexa

  • Goto to Alexa's skills & games and search for sinric pro skill.
  • 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
  • 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. Controlling devices with Alexa

  • Here's where the coding part begins.
  • Sinric Pro has supporting libraries for python, c++(nodemcu), nodejs.
  • Let's start with python.

5. Integration with python

  • Installing python library for sinricpro

    pip install sinricpro
    
  • You can find the source code for the python library here.

  • Just a reminder. This library is only supported for python versions 3.7+.

Initializing with access key and secret key

Let's see how to get these keys.

  • Login to sinricpro here
  • Click on credentials 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.
  • Copy the device ID as shown below and paste it in the code. Alt Text
  • 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

Next step is to initialize the library with callbacks

Let's see how a complete code looks like.

That's it ;). When you run the code your devices will be online you can control with Alexa or website portal or app.

For more examples, click here.
For more help, click here.

Thank you :).

Top comments (13)

Collapse
 
developererror profile image
Developer-error

Something is missing.. what to do with that code ..?

Collapse
 
goliathgeek profile image
Dhanush

You can use this code to automate things using raspberryPi or other controllers. :)

Collapse
 
developererror profile image
Developer-error

How to upload this code on ESP32 ?

Thread Thread
 
goliathgeek profile image
Dhanush

github.com/sinricpro/esp8266-esp32...

You can use the above library for both esp8266(NodeMCU) and ESP32

Thread Thread
 
developererror profile image
Developer-error

If i want to use python?

Thread Thread
 
goliathgeek profile image
Dhanush

Do you want to use python for NodeMcu and Esp32. (Micropython) ?

Thread Thread
 
developererror profile image
Developer-error

Yes bro.. exactly microPython

Thread Thread
 
goliathgeek profile image
Dhanush

Hmmm! Even I thought of this long back to integrate with micro python. But MicroPython didn't have WebSocket library which is a basic requirement for this skill. I need to check out once again.

Thread Thread
 
developererror profile image
Developer-error

If u found..kindly inform me please.

Thread Thread
 
goliathgeek profile image
Dhanush

Sure i'll do it :).

Thread Thread
 
jekxdevil profile image
Jef

I'm also looking for a method to comunicate through micropython on ESP32 with Alexa

Collapse
 
developererror profile image
Developer-error

How to upload these codes on NodeMCU?

Collapse
 
goliathgeek profile image
Dhanush

github.com/sinricpro/esp8266-esp32...

You can use above nodemcu library for this automation. :)