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);

}