Before starting with the project, I would like to thank tariq.ahmad for providing me with a free MATRIX Creator and Raspberry Pi 3B boards for the Home Automation Project14 Competition. If you would like to see my other Home Automation projects, check them out here in this link - Home Automation Projects - Consolidation.
Warning
Please do not attempt this project without proper electrical knowledge or guidance.
Table of Contents
Introduction
How do I call it?
It has a been a while I have been playing around with a hacked extension box for the sake of controlling power to my home appliances. But it does not have a name yet. Let us name it SERA. SERA stands for Smart Extension Relay with Alexa voice service.
What can SERA do?
SERA can control the power to all the home appliances connected to it, through voice commands interpreted by Alexa. How it does will be explained below.
Let's see SERA in action before we dive into programming...
In this video, first Alexa in Amazon Echo Dot will interpret the voice commands to the Arduino MKR1000. Then I have muted the Echo Dot and turned Alexa voice services on the MATRIX Creator which will start to interpret the voice commands to Arduino MKR1000 thereby controlling the home appliances.
Working
In this SERA project, the MATRIX Creator will be running the Alexa Voice services to instruct the Arduino MKR1000 wirelessly to control the relay connected to the extension box. So you need two things,
- Alexa voice services installed on the MATRIX Creator
- The Smart Relay
Alexa Voice Services installation on the MATRIX Creator
Follow the steps in this tutorial blog to install Alexa voice services on the MATRIX Creator - https://www.hackster.io/matrix-labs/matrix-voice-and-matrix-creator-running-alexa-c-version-9b9d8d
The Smart Relay
The process goes like this when you instruct Alexa, the instructions are understood by Alexa and it calls out the respective applet in IFTTT. Then IFTTT triggers the respective action for the obtained input from Alexa. The action would be to pass a POST request to thinger.io with JSON body as below. This has the input variable 'state' passed to the Arduino MKR1000 through its API in thinger.io. Based on the state passed Arduino MKR1000 (master) communicates the corresponding relay to be turned ON/ OFF to the Arduino UNO (slave) connected to the Relay module. For instance, 1 - Turns the mobile charger ON and 2 - Turns OFF the mobile charger, 3 & 4 for the next relay ON & OFF and 5 & 6 for the third relay.
Alexa voice services installed on MATRIX Creator will interpret the voice commands to the Arduino MKR1000 which will in turn control the home appliances.
Code
Arduino MKR1000 code
/*Disabling the secure TLS/SSL connection*/ #define _DISABLE_TLS_ #include <WiFi101.h> #include <ThingerWifi101.h> #include "arduino_secrets.h" /*Declaring Variables*/ int relayState = 0; /*Create an account in thinger.io and replace username below with that username. Create a new device and replace deviceId, deviceCredential below with the one you had created.*/ ThingerWifi101 thing(SECRET_USERNAME, SECRET_DEVICEID, SECRET_DEVICECREDENTIAL); void setup() { pinMode(LED_BUILTIN, OUTPUT); /*Serial initialisation*/ Serial1.begin(38400); /*Replace the below accrodingly with your WiFi SSID and password*/ thing.add_wifi(SECRET_SSID, SECRET_PASS); /*The relay state is obtained as an input resource (integer/ number) from thinger.io*/ thing["Test"] << [](pson& in){ relayState = in["state"]; changeRelayState(); }; } void loop() { thing.handle(); } void changeRelayState(){ if(relayState == 1) { digitalWrite(LED_BUILTIN, HIGH); Serial1.print(1); } else if (relayState == 2){ digitalWrite(LED_BUILTIN, LOW); Serial1.print(2); } else if(relayState == 3) { digitalWrite(LED_BUILTIN, HIGH); Serial1.print(3); } else if (relayState == 4){ digitalWrite(LED_BUILTIN, LOW); Serial1.print(4); } else if(relayState == 5) { digitalWrite(LED_BUILTIN, HIGH); Serial1.print(5); } else if (relayState == 6){ digitalWrite(LED_BUILTIN, LOW); Serial1.print(6); } }
"arduino_secrets.h" file
Fill the corresponding data inside double quotes and save this file in the folder where you have the Arduino MKR100 code.
#define SECRET_SSID "" #define SECRET_PASS "" #define SECRET_USERNAME "" #define SECRET_DEVICEID "" #define SECRET_DEVICECREDENTIAL ""
Arduino UNO code
int Relay1 = 10; int Relay2 = 11; int Relay3 = 5; int Relay4 = 6; int serialData = 0; void setup() { // put your setup code here, to run once: pinMode(Relay1, OUTPUT); pinMode(Relay2, OUTPUT); pinMode(Relay3, OUTPUT); pinMode(Relay4, OUTPUT); Serial.begin(38400); digitalWrite(Relay1, HIGH); digitalWrite(Relay2, HIGH); digitalWrite(Relay3, HIGH); digitalWrite(Relay4, HIGH); } void loop() { // put your main code here, to run repeatedly: if(Serial.available()>0){ serialData = Serial.read(); Serial.println(serialData); if (serialData == 49){ digitalWrite(Relay1, LOW); } else if (serialData == 50){ digitalWrite(Relay1, HIGH); } else if (serialData == 51){ digitalWrite(Relay2, LOW); } else if (serialData == 52){ digitalWrite(Relay2, HIGH); } else if (serialData == 53){ digitalWrite(Relay3, LOW); } else if (serialData == 54){ digitalWrite(Relay3, HIGH); } else if (serialData == 55){ digitalWrite(Relay4, LOW); } else if (serialData == 56){ digitalWrite(Relay4, HIGH); } } }
Useful Links
Description | Link |
---|---|
Product Page |
MATRIX Creator - https://www.matrix.one/products/creator Raspberry Pi 3B - https://www.raspberrypi.org/products/raspberry-pi-3-model-b/ Arduino MKR1000 - https://store.arduino.cc/usa/arduino-mkr1000 |
Tutorial |
Installing Alexa voice service in MATRIX Creator - https://www.hackster.io/matrix-labs/matrix-voice-and-matrix-creator-running-alexa-c-version-9b9d8d |
MATRIX Creator Community | https://community.matrix.one/ |
Have you got any suggestion or comment? Let me know in the comments section below.
Top Comments