Using Intel Edison with MODE
In Creating a MODE Project, we simulated a virtual device from the Developer Console. Now we will use a real hardware device from Intel and build a “smart” light – an LED light that can be turned on and off via MODE, from anywhere in the world.
Step 1: Boot up an Intel Edison
Connect two USB cables to an Intel Edison hardware and boot the Edison. Please access its serial console. On a Mac, you can connect with following steps:
First, find usb serial devices on Mac’s file system:
$ ls /dev/tty.usb*
/dev/tty.usbmodem1411 /dev/tty.usbserial-AJ035JTA
/dev/tty.usbmodem1413
tty.usbserial-AJ035JTA
is the USB-serial interface that you can access your Edison’s console.
$ screen /dev/tty.usbserial-AJ035JTA 115200
<press enter>
Poky (Yocto Project Reference Distro) 1.7.2 edison2 ttyMFD2
edison login:
You can use screen
command to access to Edison’s console. The command line specifies that you are connecting to /dev/tty.usbserial-AJ035JTA
at 115,200 bits per second(bps).
115,200 is the default speed. You will see a blank screen and you want to press enter key a few times and you should see a login prompt.
You can login as user root
with no password.
Step 2: Configure Edison’s WiFi
Wifi settings of Intel Edisons can be done with configure_edison
command.
edison# configure_edison --wifi
Follow the instruction on the screen and you should be able to connect to your local WiFi.
edison# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 78:4b:87:9f:79:10
inet addr:192.168.1.222 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3310 (3.2 KiB) TX bytes:9972 (9.7 KiB)
Note that older versions of Edison firmware don’t persist wifi settings. Please update Edison’s firmware in this case.
Step 3: Download LED Controller Code
Download two files – app.js and package.json – to your home directory. You can download them with the following commands:
edison$ wget http://dev.tinkermode.com/docs/edison/app.js
edison$ wget http://dev.tinkermode.com/docs/edison/package.json
Once you’ve downloaded the files, run the following command to install the mode-device library. mode-device
takes care of MODE Could API connection.
edison$ npm install
If you don’t see any error messages, the mode-device
library has been correctly installed.
Step 4: Configure Device Information and API Key
For a device to communicate to MODE, we need two pieces of information. One is Device ID
and the other is API Key
.
Since you’ve already created a project for smart_light device class in Getting Started with MODE guide, we will use that project for this tutorial too.
Launch Developer Console and select Devices section.
From DEVICE CLASSES, choose smart_light
.
By clicking the previously created device from the DEVICE LIST,
you can find the Device ID
and API Key
in the details page of the device. These are the information you need to copy to your Edison.
Also make sure the device is attached to a home (you see an id in Home ID field).
Please open the app.js
file with your favorite editor (vim
or nano
) and find the following lines:
var DEVICE_ID = 1;
var API_KEY = 'v1.cccc.bbbbbbbbbbbbbbbbbb.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
Please replace your DEVICE_ID
number and API_KEY
according to your device information. Once you’ve filled in the information, your device program is ready to run.
As you are starting a real device, make sure you close Device Simulator window if you previously used.
Step 5: Test the Device Connection
To make sure your configuration is correct, go to the Developer Console, locate the app you created in the Creating a MODE Project tutorial, and launch its App Simulator. On the simulator, select the home you have previously created. The simulator is now listening to events coming from devices of this home.
Once the app simulator is ready, run the following command from your Edison terminal:
edison$ node app.js
If your setup is correct, You should see the following output on your Edison:
Reconnect websocket in 0 seconds
Reconnecting websocket
Connecting to wss://api.tinkermode.com:443/devices/1/command
Event is triggered
WebSocket client is Cconnected
This means your Edison has succeeded in connecting to MODE, and is waiting for commands from MODE.
Also, in the INCOMING: EVENTS panel of the App Simulator, you should see something similar to the following because the program will send an event right after it has connected to MODE:
The event Origin may vary according to your device ID. This means Edison succeeded in sending an event to MODE.
Now the application settings are ready, we can start the hardware assembly.
Step 6: Send Commands from App Simulator to Edison
Sending a Command to Edison
Let’s send a command from the App Simulator to turn on your light. Go to the OUTGOING: COMMANDS panel, select the device from the Target drop-down list and provide the command details.
The sample program implements the light
command. So enter light
for action and for parameters, use on
for key, and 1
for value:
Once you’ve entered all the data, click the Send Command button. The command is then sent from the App Simulator to the MODE cloud, and delivered to the Edison.
Now you should see the LED switching on.
If you want to turn it off, simply re-enter a value of 0
for the on
parameter:
And click the Send Command button again. The LED is now turned off.
Congratulations! Your Edison is now controllable via MODE. You can send command from anywhere from your office, your home, or even from your mobile phone.
In the next tutorial, you will build an iOS app to control the smart light you just created.