The WEMOS D1 Mini ESP8266 is a development board similar to Arduino and developed especially for cost effective Internet of Things applications and solutions. Also compatible with Espressif's ESP32, the WEMOS series is perfect for educational and hobby IoT projects. With a 32 bit architecture (more powerful than the Arduino Due) and Wi-Fi connectivity, you can choose between the Arduino and Lua languages for your application's development.
By following this guide you will be able to POST and GET data to/from Ubidots using the WEMOS D1 mini in just a couple of minutes!
Requirements
1. Setting up Arduino IDE
1. To begin working with the Wemos D1 mini ESP8266 platform in the Arduino IDE, you will need to install the ESP8266 board using the preconfigured Arduino Board Manager. If you are not familiar with adding a board with the Arduino IDE, refer to this article for additional guidance.
2. With the ESP8266 platform installed, select the ESP8266 device you are working with. In the case, we are working with a “WEMOS D1 min”. To select your board from the Arduino IDE, select Tools > Board “WEMOS D1 min”.
3. Download and install the Ubidots library. For a detailed explanation of how to install libraries using the Arduino IDE, refer to this guide.
2. Sending (POST) Data to Ubidots
With the following example, you will be able to simulate random readings taken from the WEMOS to Ubidots
1. To begin posting values to Ubidots, open the Arduino IDE and paste the sample code below. Once you have pasted the code, be sure to assign the following parameters:
SSID (WiFi Name) & Password of the available network connection.
/****************************************
* Include Libraries
****************************************/
#include "Ubidots.h"
/****************************************
* Define Instances and Constants
****************************************/
const char* UBIDOTS_TOKEN = "..."; // Put here your Ubidots TOKEN
const char* WIFI_SSID = "..."; // Put here your Wi-Fi SSID
const char* WIFI_PASS = "..."; // Put here your Wi-Fi password
Ubidots ubidots(UBIDOTS_TOKEN, UBI_HTTP);
/****************************************
* Auxiliar Functions
****************************************/
// Put here your auxiliar functions
/****************************************
* Main Functions
****************************************/
void setup() {
Serial.begin(115200);
ubidots.wifiConnect(WIFI_SSID, WIFI_PASS);
// ubidots.setDebug(true); // Uncomment this line for printing debug messages
}
void loop() {
float value1 = random(0, 9) * 10;
float value2 = random(0, 9) * 100;
float value3 = random(0, 9) * 1000;
ubidots.add("Variable_Name_One", value1); // Change for your variable name
ubidots.add("Variable_Name_Two", value2);
ubidots.add("Variable_Name_Three", value3);
bool bufferSent = false;
bufferSent = ubidots.send(); // Will send data to a device label that matches the device Id
if (bufferSent) {
// Do something if values were sent properly
Serial.println("Values sent by the device");
}
delay(5000);
}
2. Verify your code within the Arduino IDE. To do this, in the top left corner of our Arduino IDE you will see the "Check Mark" icon; press it to verify your code.
3. Upload the code into your “WEMOS D1 mini”. To do this, choose the "right-arrow" icon beside the "check mark" icon.
4. To verify the connectivity of the device and the data sent, open the serial monitor by selecting the "magnifying glass" icon in the top right corner of the Arduino IDE to see the connectivity logs.
NOTE: If no response is seen, try unplugging the WEMOS D1 mini device and then plugging it again. Make sure the baud rate of the Serial monitor is set to the same one specified in your code 115200
.
5. Confirm your data in Ubidots. Now you should see the posted data in your Ubidots account.
3. Receiving (GET) Data from Ubidots
With the following sample code you will be able to get a value from Ubidots to start controlling any asset you desire.
1. To begin getting values from Ubidots, open the Arduino IDE and paste the sample code below. Once you have pasted the code, be sure to assign the following parameters:
SSID (WiFi Name) & Password of the available network connection.
Device Label of the device which contains the variable to want to GET.
Variable Label of the variable you want to GET
NOTE: The device and variable label should be defined in the following line of code:
ubidots.get("a020a6133e21", "variable_name_one")
Where the first argument defines the device's label, and the second argument the variable's label.
get(const char* device_label, const char* variable_label)
Sample code:
/****************************************
* Include Libraries
****************************************/
#include "Ubidots.h"
/****************************************
* Define Constants
****************************************/
const char* UBIDOTS_TOKEN = "..."; // Put here your Ubidots TOKEN
const char* WIFI_SSID = "..."; // Put here your Wi-Fi SSID
const char* WIFI_PASS = "..."; // Put here your Wi-Fi password
Ubidots ubidots(UBIDOTS_TOKEN, UBI_HTTP);
/****************************************
* Auxiliar Functions
****************************************/
// Put here your auxiliar functions
/****************************************
* Main Functions
****************************************/
void setup() {
Serial.begin(115200);
ubidots.wifiConnect(WIFI_SSID, WIFI_PASS);
// ubidots.setDebug(true); //Uncomment this line for printing debug messages
}
void loop() {
/* Obtain last value from a variable as float using HTTP */
float value = ubidots.get("a020a6133e21", "variable_name_one");
// Evaluates the results obtained
if (value != ERROR_VALUE) {
Serial.print("Value:");
Serial.println(value);
}
delay(5000);
}
2. Verify & Upload the code into the board following the same steps provided in the POST step above.
3. To verify the connectivity of the device and the data which is being received, open the serial monitor by selecting the "magnifying glass" icon in the top right corner of the Arduino IDE to see the connectivity logs.
NOTE: If no response is seen, try unplugging the NodeMCU and then plugging it again. Make sure the baud rate of the Serial monitor is set to the same one specified in your code 115200.
4. In the serial monitor, you will be able to see the last value received in Ubidots of the variable specified in the firmware.
4. Summary
With this simple tutorial you are able to POST and GET data to/from Ubidots with the ease of the Arduino IDE and an WEMOS D1 mini.
Now its time to create Ubidots Dashboards to visualize your data and deploy your IoT solution! Happy Hacking! :)
Other readers have also found useful...