ส่งค่าจาก ESP8266(HDC1080) ไป Google Sheets ผ่าน PushingBox API
- เปิดหน้าแรก ทำการล็อกอิน Gmail เพื่อเข้าไป >> เลือก เอกสาร
- คลิกตรงแถบ ที่วงกลม แล้วเลือก >>ซีต
- เก็บ URL ที่อยู่ระหว่าง /d/ กับ /edit เสร็จแล้วเลือเครื่องมือ เลือก>>โปรแกรมจัดการสคิป
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();
}
}
- จะแสดงดังรูปภาพนี้
Can I ask something regarding your project?
ตอบลบ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.
Maybe you can tell me how you deploy the code.
ตอบลบThank you.