วันพุธที่ 21 มิถุนายน พ.ศ. 2560

Arduino IoTs - Google Spreadsheet

Arduino IoTs - Google Spreadsheet

ส่งค่าจาก ESP8266(HDC1080) ไป Google Sheets ผ่าน PushingBox API


ขั้นตอนการทำ
- เปิดหน้าแรก ทำการล็อกอิน Gmail เพื่อเข้าไป >> เลือก เอกสาร




- คลิกตรงแถบ ที่วงกลม แล้วเลือก >>ซีต




- เก็บ URL ที่อยู่ระหว่าง /d/ กับ /edit เสร็จแล้วเลือเครื่องมือ เลือก>>โปรแกรมจัดการสคิป



- ใส่โค้ดดังนี้ แก้ไขตรง ver id = '  ' ; เอามาจาก URL 

function doGet(e) {
  Logger.log( JSON.stringify(e) );  // view parameters
  var result = 'Ok'; // assume success
  if (e.parameter == undefined) {
    result = 'No Parameters';
  }
  else {
    var id = '';//docs.google.com/spreadsheetURL/d
    var sheet = SpreadsheetApp.openById(id).getActiveSheet();
    var newRow = sheet.getLastRow() + 1;
    var rowData = [];
    //var waktu = new Date();
    rowData[0] = new Date(); // Timestamp in column A
 
    for (var param in e.parameter) {
      Logger.log('In for loop, param='+param);
      var value = stripQuotes(e.parameter[param]);
      //Logger.log(param + ':' + e.parameter[param]);
      switch (param) {
        case 'humidityData': //Parameter
          rowData[1] = value; //Value in column B
          break;
        case 'tempData':
          rowData[2] = value;
          break;
        default:
          result = "unsupported parameter";
      }
    }
    Logger.log(JSON.stringify(rowData));
    // Write new row below
    var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
    newRange.setValues([rowData]);
  }
  // Return result of operation
  return ContentService.createTextOutput(result);
}

function stripQuotes( value ) {
  return value.replace(/^["']|['"]$/g, "");
}

- เมื่อเสร็จแล้วทำการบันทึกโค้ดไว้ จากนั้นให้เราเผยแพร่ >> เลือก ใช้งานเป็นแอปพลิเคชั่นเว็บ
- เมื่อเตรียม Google Sheet เสร็จแล้ว เราก็จะไปสมัคร PushingBox account >> PushingBox.com ด้วย Gmail เพื่อทดสอบว่าใช้งานได้จริงหรือไม่



เมื่อเสร็จทุกขั้นตอน เราก็นำโค้ดข้างล่างไปใส่ใน ESP8266 เพื่อเชื่อมต่อกับ PushingBox เพื่อจะให้ส่งข้อมูลไปใน Google Sheet เปลี่ยน devid ตาม Devid ใน My Scenario ของเรา


#include "ESP8266WiFi.h"
#include <SPI.h>
#include <Wire.h>
#include "ClosedCube_HDC1080.h"

ClosedCube_HDC1080 hdc1080;

const char WEBSITE[] = "api.pushingbox.com"; //pushingbox API server
const String devid = "DEVID"; //device ID from Pushingbox

const char* MY_SSID = "YOUR_SSID";
const char* MY_PWD =  "SSIS_PASS";

void setup()
{
  Serial.begin(115200);
  Serial.print("Connecting to "+*MY_SSID);
  WiFi.begin(MY_SSID, MY_PWD);
  Serial.println("going into wl connect");
  while (WiFi.status() != WL_CONNECTED) //not connected,..waiting to connect
    {
      delay(1000);
      Serial.print(".");
    }
  Serial.begin(9600);
  Serial.println("wl connected");
  Serial.println("");
  Serial.println("Credentials accepted! Connected to wifi\n ");
  Serial.println("");
  hdc1080.begin(0x40);
  Serial.print("Manufacturer ID=0x");
  Serial.println(hdc1080.readManufacturerId(), HEX);
  Serial.print("Device ID=0x");
  Serial.println(hdc1080.readDeviceId(), HEX);
}

void loop()
{
  delay(1000);
  float tempData = hdc1080.readTemperature();
  float humidityData = hdc1080.readHumidity();
  Serial.print("Humidity: ");
  Serial.print(humidityData);
  Serial.print(" %\t");
  Serial.print("Temperature in Cel: ");
  Serial.print(tempData);
  Serial.print(" *C ");
  Serial.println("");
  WiFiClient client;  //Instantiate WiFi object
  //Start or API service using our WiFi Client through PushingBox
    if (client.connect(WEBSITE, 80))
      {
         client.print("GET /pushingbox?devid=" + devid
       + "&humidityData=" + (String) humidityData
       + "&tempData="      + (String) tempData
         );
      client.println(" HTTP/1.1");
      client.print("Host: ");
      client.println(WEBSITE);
      client.println("User-Agent: ESP8266/1.0");
      client.println("Connection: close");
      client.println();
      }
}

- จะแสดงดังรูปภาพนี้

3 ความคิดเห็น:

  1. I have tried your code but it does not work. Here I give the details.

    When I deploy the script as web app,

    https://script.google.com/macros/s/AKfycbyXlCLBDNzJGXWNkrEHtWP0jaxnpvX0dPUnXjwilioUd7up-SU/exec

    how can I test it?
    Is it like,

    [1]
    https://script.google.com/macros/s/AKfycbyXlCLBDNzJGXWNkrEHtWP0jaxnpvX0dPUnXjwilioUd7up-SU/exec?BBTTempData=32.56&RTtempData=25.6

    or

    [2]
    https://script.google.com/macros/s/AKfycbyXlCLBDNzJGXWNkrEHtWP0jaxnpvX0dPUnXjwilioUd7up-SU/exec?BBTTempData=32.56/RTtempData=25.6

    Because when I test to deploy it, it came to say "unsupported parameter"
    Can you tell me.
    Hope you can help me.

    ตอบลบ
  2. Maybe you can tell me how you deploy the code.

    Thank you.

    ตอบลบ

NI labview 2014

NI labview 2014 โปรแกรม LabVIEW ย่อมาจาก Laboratory Virtual Instrument Engineering Workbench โปรแกรมที่ พัฒนาขึ้นมาโดยใช้ LABVIEW ...