Setup Your Environment
- Install the Arduino IDE (Integrated development environment). This is where You can download it for Mac OS X, Windows and Linux here.
Detailed instructions can be found below:
- Installing the Arduino IDE for Windows
- Installing the Arduino IDE for Mac
- Installing the Arduino IDE for Linux
New to the Arduino IDE?
If you are completely unfamiliar with the Arduino IDE, watch this video here to give you a better understanding of how it works.
- Start the Arduino application and open
Preferences
- Enter
http://arduino.esp8266.com/stable/package_esp8266com_index.json
into the Additional Board Manager URLs. If you need more than one, they can be separated with commas
- Go to
Tools > Board > Boards Manager
- Search for
esp8266
. When found, clickInstall
- Select your ESP8266 board type by going to
Tools > Board
, then choosing your type. For this example, you can useNodeMCU 1.0 (ESP-12E Module)
- Check that
Upload Speed
is set to115200
- Select the correct port for the board
When selecting a port
For the ESP 8266, the port names tend to have unusual names, e.g:
- On Mac OS:
/dev/tty.usb.modem8232
or/dev/cu.SLAB_USB_toUART
- On Windows:
Com4
orCom3
- On Linux
/dev/ttyUSB0
or/dev/ttyACM0
USB to UART Drivers Required
If your port is not showing up, you need to install USB to UART Bridge VCP drivers. To do so, go here, then download and install the drivers for your operating system. After installing the drivers, restart the Arduino IDE.
Note for Mac users
You may need to install the driver twice for it to work, as the first install will just remove the existing driver.
Charge-only USB cables
Another cause of the port not showing up could be the USB cable - make sure that the cable you're using is not a charge-only cable, and that it isn't faulty.
Create the Sketch
- Click on
File > New
to create a new Sketch - Copy and paste the publish event example code below. You can also view it on GitHub here. In that directly you will see how to publish both
Events
andLocations
*PublishEvent.ino*
/**
* PublishEvent.ino
*
* Created on: 09.04.2018
*
*/
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#define USE_SERIAL Serial
ESP8266WiFiMulti WiFiMulti;
const char* ssid = "your-ssid";
const char* password = "your-password";
// get this from the wia dashboard. it should start with `d_sk`
const char* device_secret_key = "your-device-secret-key";
void setup() {
USE_SERIAL.begin(115200);
//USE_SERIAL.setDebugOutput(true);
WiFi.mode(WIFI_STA);
WiFiMulti.addAP(ssid, password);
}
void loop() {
// wait for WiFi connection
if((WiFiMulti.run() == WL_CONNECTED)) {
HTTPClient http;
USE_SERIAL.print("[HTTP] begin...\n");
// configure wia rest api
http.begin("http://api.wia.io/v1/events");
USE_SERIAL.print("[HTTP] POST...\n");
// set authorization token
http.addHeader("Authorization", "Bearer " + String(device_secret_key));
// set content-type to json
http.addHeader("Content-Type", "application/json");
// start connection and send HTTP headers. replace name and data values with your own.
int httpCode = http.POST("{\"name\":\"temperature\",\"data\":21.5}");
// httpCode will be negative on error
if(httpCode > 0) {
// HTTP header has been send and Server response header has been handled
USE_SERIAL.printf("[HTTP] POST... code: %d\n", httpCode);
// file found at server
if(httpCode == HTTP_CODE_OK) {
String payload = http.getString();
USE_SERIAL.println(payload);
}
} else {
USE_SERIAL.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
}
delay(10000);
}
Replace the values of the following variables:
-
ssid
- with your WiFi network name -
password
- with your WiFi network password -
device_secret_key
with your device secret key from the Wia Dashboard (the one that begins withd_sk
) - Go to
Sketch > Upload
to send it to your ESP8266 Now go to your device in the Wia dashboard and you should see the data appearing in the debugger
Common errors
If you encounter an error like the one denoted in the image below, check if your board and port are correctly set in the Tools
menu.
Top comments (0)