Day 3 – Logging the nodeMCU Arduino sensor data to google Drive and having insights analyze it

Its been a great day to day! lots of problems solved…

Target is to log the sensor data form the nodemcu esp8622 / arduino into google drive on a sheet for visualization.

it consisted of 3 steps:

  1. creating the google form
  2. creating the Arduino Sketch to get the sensor data and send it using wifi to the internet
  3. create a php middleware to handle the https connection to google

Create a form in google drive to log the data ur sensors provide, in my case i created humidty and temperature, what is delivered by the DHT11 sensor. heres a link to my form https://docs.google.com/forms/d/1rv-vuoiAbHI8I9nkGXjb3nMB8LFn7-jh20fYDdm9Kcg/,  the nice thing here is that google will create a sheet to store the data, give them a timestamp and provides “insights” to analyze the data. AND you can publish them on the internet, share them…

  1. in the form, make sure the answers are text
  2. note ur form id 1rv-vuoiAbHI8I9nkGXjb3nMB8LFn7-jh20fYDdm9Kcg
  3. open the form page source and look for the field names : in my case its “entry.2067116456” every field has unique number after “entry.”, you’ll need these to fill the form
  4. test a GET URL like this to fill the form (replace the form id and the field id with urs), mine looks like this https://docs.google.com/forms/d/1rv-vuoiAbHI8I9nkGXjb3nMB8LFn7-jh20fYDdm9Kcg/formResponse?ifq&entry.997762564=33&entry.2067156456=66 -> here you see that i have changed the field numbers to avoid abuse.

Now you see, its easy to get the nodemcu to call this URL and transmit the variables humidity and temperature to googleforms, google will do the rest. The bigger problem is that google changes the forms every now and then and doesnt support http… and i want to keep node as small as possible…. so i opted for a PHP middleware that gets the http request from the node and forwards it in https to google.


 

Heres the php code:

<?php
// create a new cURL resource
$ch = curl_init();

$url = “https://docs.google.com/forms/d/1rv-vuoiAbHI8I9nkGXjb3nMB8LFn7-jh20fYDdm9Kcg/formResponse?ifq&entry.XXX=”;
$url .= $_GET [‘h’];
$url .= “&entry.YYY=”;
$url .= $_GET [‘t’];

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
?>


 

and the Sketch for the arduino / nodemcu 8266

/*
Programm tp send the data from the sensor DHT11 to a php page and from there to google forms
*/

#include <DHT.h>
#include <ESP8266WiFi.h>

#define CYCLE 600000 //10 minutes, change as desired
#define DHTPIN 2
#define DHTTYPE DHT11 // DHT 11

const char* ssid = “XXX”; // “ur SSID”;
const char* password = “XXX”; //”ur wifi pswd”;
const char* host = “beedata.yazbek.com”;
unsigned long value = 0;

unsigned int lastcall = CYCLE;
int conn_time;

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
delay(10);

dht.begin();

// We start by connecting to a WiFi network

Serial.println();
Serial.println();
Serial.print(“Connecting to “);
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
conn_time++;
if (conn_time > 20) {
break;
}
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println(“”);
Serial.println(“WiFi connected”);
Serial.println(“IP address: “);
Serial.println(WiFi.localIP());
}
else {
Serial.println(“”);
Serial.println(“no WiFi connection”);
ESP.deepSleep(100000);
Serial.println(“gone to sleep”);
}
}

void loop() {
while (millis() – lastcall < CYCLE) {
delay(1);
}
lastcall = millis();
++value;

Serial.print(“connecting to “);
Serial.println(host);

// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println(“connection failed”);
return;
}

float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();

Serial.println(h);
Serial.println(t);

// We now create a URI for the request
String url = “http://beedata.yazbek.com/data/XXX.php?”;
url += “h=”;
url += h;
url += “&t=22”;
url += t;
//url += value;

Serial.print(“Requesting URL: “);
Serial.println(url);

// This will send the request to the server
client.print(String(“GET “) + url + ” HTTP/1.1rn” +
“Host: ” + host + “rn” +
“Connection: closernrn”);
delay(1000);

// Read all the lines of the reply from server and print them to Serial
while (client.available()) {
String line = client.readStringUntil(‘r’);
Serial.print(line);
}

Serial.println();
Serial.println(“closing connection”);
}


 

Here you can see the logged data as google prepares it, i have set the sheet to public

https://docs.google.com/spreadsheets/d/1-CJAlEKUblTtkPXD9mYxuZGMb-Wri7wWm1Z8-baxjy4/edit#gid=123450854

 

 

Day 2, Skip Lua, lets try Arduino IDE and some sensors on nodemcu

After reading about lua programming language and its downturn in mcu (bugs and lack of space and code libraries) and after a clear sign from Benrnhard, i decided to switch to the Arduino IDE and its C libraries.

So let me try to setup a temperature/humidity sensor today….

 

so far so good,

  1. installed the arduino ide here https://www.arduino.cc/en/Main/Software
  2. Went to File -> Preferences -> Additional Boards Manager URLS, added the link http://arduino.esp8266.com/stable/package_esp8266com_index.json now search for it and waaaaaaiiiit (5-10 min) for it to download and install, now u can choose it from the Board menu.
  3. installed the DHT11 sensor and used the File-> examples -> DHT sensor library -> DHTtester

 

adjusted some lines with the sensor type and now its working.

Next step-> using an android APP to read the data

 

 

 

 

 

NodeMCU is here…and its flashing!

Starting to get the hardware form aliexpress, the first to arrive is the nodemcu with some solar panels 🙂

Thanks to this tube https://www.youtube.com/watch?v=-a2-p0GKIdw i was able to udate firmware,  test some lua scripts and get it up and running!

Downloaded the ESPlorer here http://esp8266.ru/esplorer/

Download the latest bin here https://github.com/nodemcu/nodemcu-firmware/releases/download/0.9.6-dev_20150704/nodemcu_float_0.9.6-dev_20150704.bin

Flash the Node as mentioned in the video, and the paste the code below…

while 1 do
gpio.write(0, gpio.HIGH)
tmr.delay(100000) — wait 1,000,000 us = 1 second
gpio.write(0, gpio.LOW)
tmr.delay(1000000) — wait 1,000,000 us = 1 second
end

voilà… its flashing.

 
now I had to reset the node to get it back to normal 🙂

 

next -> WiFi setup

A 3 Days trip along the Danube, Vienna – Bratislava – Györ – Bratislava – Vienna

Our yearly bicycle trip 2015 edition… having crossed the alps in the past 2 years, we decided to keep it flat this year and try a river, the Danube, on the Euro 6 route that goes from the Atlantic in France to the black sea in Bulgaria.

Tour map, Danube track, Vienna to Bratislava to Györ
Tour map, Danube track, Vienna to Bratislava to Györ on the Slovak side and back on the Hungarian side.

Day 1 – Vienna to Bratislava – 70 Kms

InstagramCapture_e3e5538a-7272-4650-905c-15d1a509da50Friday August 21st, after an early flight we reached the bicycle rental shop is close to Vienna Prater stern station, so it was easy taking the the S7 from the airport directly there… The prater seems to be Vienna’s amusement park… and also the melting pot of drug dealers there. Vienna must be quite interesting but we didn’t get to see much, just the “Donau Insel” with the markings on the street.

First Picking up the bikes from Pedal Power,. I have to say i was impressed by the friendliness of the owner, the bikes were decent, KTM trekking bikes with 27 gears, the seats were WP_20150821_12_38_07_Proreasonably comfortable and the prices OK, just make sure u have new puncture proof tyres 🙂 its actually more convenient then bringing your own bike by plane. They also gave us repair sets, 3 extra tubes! which we needed right after leaving…

WP_20150821_16_44_46_ProWP_20150821_17_39_46_Pro WP_20150821_17_39_33_Pro

the austrian Slovak border

WP_20150823_15_02_33_Pro

Arriving to Bratislava, with the bridges and the castle, but the old town is really nice to see, street art and architecture.

WP_20150821_19_53_25_Pro

WP_20150821_20_44_18_Pro

Traditional Slovak plate, an interesting mix of meat, kraut, some pierogi… at the Bratislava Flagship Restaurant, some old church turned restaurant/artist corner, a must see there…

WP_20150822_10_38_48_Pro

The industrial side of Bratislava.

WP_20150822_09_29_36_Pro

In Bratislava we stayed at Hotel Perugia in an allay in the old town… An excellent way to enjoy 1st hand the very vibrant and loud nightlife! But if need to rest, look for a hotel outside of the old town 🙂

Day 2 – Bratislava to Györ, on the Slovak Side – 100 Kms

Saturday august 22nd, leaving Bratislava in the morning and heading south was nit easy. So we had some bagles ina square and watched the hordes of tourist groups roaming around.

WP_20150823_14_10_19_ProBuffet: a typical resting place on the Slovak side, it also offers shelter in stormy days and an excellent chill-out zone in sunny days and yes, the chicks are Hot!

WP_20150822_14_47_27_Pro WP_20150822_12_03_44_Pro

The Slovak side of the Danube is quite new and straight forward, after passing towns with interesting names like Horny Pub and Sap, we crossed the border to Hungary and headed to györ, a town on the other side of the river.

WP_20150822_15_18_58_Pro

WP_20150822_21_31_18_Pro

WP_20150822_19_46_14_Pro

In Györ, we stayed at Hotel Baross its a 5min walk to downtown. A town with lots of dentists, famous for dental tourism, but also for the old town.

Day 3 – Györ – Bratislava – Vienna – 155 Kms

Sunday august 23rd, after a decent breakfast, we hit the road north, on the Hungarian side of the Danube this time.

WP_20150823_08_26_59_Pro WP_20150823_08_54_10_Pro

InstagramCapture_f70a57fd-0069-40f4-99f4-59c134e175f9WP_20150823_11_40_06_Pro

WP_20150823_09_24_22_ProWP_20150823_10_01_39_ProWP_20150823_12_53_45_ProHungarian Food, Deep fried or Gulash

WP_20150823_13_27_29_ProThe border between Hungary and Slovakia. I am sure that it has changed now with the refugee influx.

WP_20150822_10_46_22_Pro

And finally arriving to Vienna in the evening, time went so fast, barely had time to catch a bite and sleep.. until 4 AM and then catch a plane back to Work. The trip was too short. Next time definitely take 2 more days and continue to Budapest at least! But now it’s time to plan the 2016 trip, maybe on the Atlantic to Bordeaux to visit some wineries…. any suggestions?

WP_20150823_19_23_43_Pro