"Alexa, Turn on the Computer!"
by Chinmay Shalawadi in Circuits > Remote Control
15298 Views, 8 Favorites, 0 Comments
"Alexa, Turn on the Computer!"
After spending time with an Echo Dot for a few days I wanted to be able to turn on my computer using Alexa(don't ask me why xP).
Watch the Video, you'll get a good idea going into this project.
There is a way to do this without writing a dedicated Alexa app, Alexa supports smart lights out of the box. So if we can emulate a smart bulb interface we can use that to forward commands to other things. I'll be using Node-RED to emulate the smart bulb interface.
One of the obvious ways of doing it is by using Wake-on-LAN feature which can be turned on in the BIOS of your computer. But, I wanted to go the "do it like you see it" way . Hence this happened. I'll be explaining both the ways of doing it in this Instructable.
There are two handy diagrams explaining both the methods!
Things and Parts I used for this project
- Node-RED
- ESP 8266, Wemos D1 Mini Module
- Active High, 3.3v Relay
- Spare cables
- Tools(Sodlering Iron, pliers and the standard ensemble of all electronics hobbyists)
Watch the Video and Set-up Node-RED
For either of the methods, you'll need Node-RED running on a server(a Raspberry Pi will be perfect). https://nodered.org/docs/hardware/raspberrypi
You can check the above page for more info on Node-RED. It's a really handy tool with which you can have things up and running in a jiffy.
Install the Alexa and WOL(Wake on LAN) nodes in the palette manager. Also make sure the MQTT module is present for the relay method.
Add the Alexa Module/node to the Flow and Configure It
- Add the Alexa node to the flow
- Add the MQTT output node, configure the MQTT server and the topic to publish the MQTT messages.(Relay Method)
- Add the Wake on LAN node. (Wake on LAN method)
- Configure the WOL node with the IP address and MAC Address of your computer.(I recommend having a static IP for your computer).
- Rename the Alexa node to 'Computer', connect the modules as shown in the picture and deploy the flow.
- Ask Alexa to detect devices and Alexa will find the 'computer' node on Node-RED.
(WOL Method) Turn on Wake-on-LAN in Your Computer's BIOS Settings
- That's it, just turn on the Wake on LAN feature and you're pretty much done as far as the WOL method goes.
Program the Wemos D1 Mini or Any ESP 8266 Module
- Program the ESP module so that it receives the MQTT messages published by Node-RED.
- Program one of the I/O pins to turn on for 200ms every time it receives an 'on' message. Alexa sends 'on' and 'off' as string messages.
- Use that I/O signal to turn on a relay(active-high 3.3v would be best, you'll have to make necessary changes otherwise).
- I made my own 3.3v active high module, because I couldn't buy one.
- You'll need to supply external power for the WiFi and Relay modules
Here's the code I used to program the Wemos D1 Mini.
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char *ssid = "xxx"; const char *pass = "xxxxxxxxxxx";
IPAddress server(xx, xxx, xxx, xx);
WiFiClient wclient; PubSubClient client(wclient, server); void callback(const MQTT::Publish& pub) { if(pub.payload_string()== "on"){ digitalWrite(0,HIGH); delay(200); digitalWrite(0,LOW);
} }
void setup() { pinMode(0,OUTPUT); pinMode(2,OUTPUT); digitalWrite(0,LOW); Serial.begin(115200); delay(10); Serial.println(); Serial.println(); client.set_callback(callback); wif(); client.connect("arduino000Client");
}
void loop() { if(WiFi.status() != WL_CONNECTED) wif();
client.subscribe("helluvaTry");
}
void wif(){ if (WiFi.status() != WL_CONNECTED) { Serial.print("Connecting to "); Serial.print(ssid); Serial.println("..."); WiFi.begin(ssid, pass);
if (WiFi.waitForConnectResult() != WL_CONNECTED) wif(); Serial.println("WiFi connected"); digitalWrite(2,HIGH); client.connect("arduino000Client"); } }
Make a Splitter Cable for Your Power Button Connector
- Yeah, this is basically wires connected parallely to your power button pins on the motherboard.
- The loose ends in the picture goes into the relay, the female connector goes into the motherboard power pins and the male end connects to the power button connector.
That's It
- Test out the configuration and the setup a few times and you're pretty much done.
- Have fun with your voice activated computer(lol).