10.丟訊息給LINE(家用微型防盜器)
本程式套用新的函式HTTPSRedirect ,讓esp8266 不須透過第三方服務轉址直接寫入Google Apps Script
函式庫下載 HTTPSRedirect
Google Apps Script 端
function doGet(e) {
var CHANNEL_ACCESS_TOKEN = '你的CHANNEL_ACCESS_TOKEN';
var USERID ='你的USERID';
var params = e.parameter;
var data = params.data;
var url = "https://api.line.me/v2/bot/message/push";
var payload= { "to": USERID ,"messages": [{ "type": "text", "text": data }] };
var options = {
"method": "post",
"headers": {"content-Type": "application/json","Authorization": "Bearer "+ CHANNEL_ACCESS_TOKEN },
"payload" : JSON.stringify(payload),
"muteHttpExceptions": true};
var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
return ContentService.createTextOutput(1); //接收成功以後回傳"1"(類似Tingspeak)
}
ESP8266端
#include "ESP8266WiFi.h"
#include "HTTPSRedirect.h"
const char* ssid = "你的SSID";
const char* password = "你的密碼";
const char* host = "script.google.com";
const char *GScriptId = "你的Google script ID"; // Google script ID*(請見後方註解)
const int httpsPort = 443;
int i = 0;
HTTPSRedirect* client ;
void setup() {
Serial.begin(115200);
Serial.print("Connecting to wifi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
client = new HTTPSRedirect(httpsPort);
client->setPrintResponseBody(true);
client->setContentTypeHeader("application/json");
client->connect(host, httpsPort);
Serial.print("Connecting to ");
Serial.println(host);
}
void loop() {
i++;
String url3 = String("/macros/s/") + GScriptId + "/exec?data=";
url3 += i; //你要傳送的第一筆資料
url3 += ",";
url3 += 2*i; //你要傳送的第二筆資料
Serial.println("GET Data");
if (client->GET(url3, host)){
Serial.println("GET SUCCESS");
}
delay(4000);
}