前两篇使用到日常生活中使用率最高的通讯软件LINE Notify功能,不知道各位小夥伴是否学完後对於即将接近尾声的"Maker making IoT"系列文章再次燃起兴趣了呢?!精彩的还在後头也请各位小夥伴别错过喔~ 今天使用的程序写法与Esp32s连接到Line有所出入,因为Esp32s连接Line是直接透过Line Notify这个服务,而Esp32s连接IFTTT在透过IFTTT传到Line Notify,所以多了IFTTT这个转寄站。
※本章节需使用IFTTT、LINE帐跟Facecbook或Apple或Google帐号
IFTTT是个服务平台,且得名此口号if this then that,IFTTT整合许多社交网路的网站帐户,有人认为这可以改变整个网际网路,则有些人则担心会有巨大风险,因为需要给予社交网路网站帐户极大的权限。
1. 创建一个事件(IFTTT + Line Notify)
可选择Login或Get started登入,如果有IFTTT帐号选择Login就好,如果没有IFTTT帐号可选择Get start登入,Get started登入可以使用其他平台帐号登入(Apple、Google、Facebook)
图片取自:IFTTT
点选Create(创建)
图片取自:IFTTT
如果第一次使用IFTTT(没创过任何事件),点击Create後就会是这个画面,那点击if this後则输入搜寻中打入webhook
图片取自:IFTTT
点击webhook的图案
图片取自:IFTTT
点击左方Receive a web requset
图片取自:IFTTT
在Event Name(事件名称)中输入名称,例如:Esp32sAHT10或Esp32sAHT10Line(最好是之後自己看得懂这事件是做甚麽的),命名完後就点选下方Create trigger(建立触发器)就可以罗
图片取自:IFTTT
设定完触发器後,接下来换设置如果触发器被触发後,所需要执行的程序,所以点击Then Taht进行设定
图片取自:IFTTT
接着照样在搜寻栏位找LINE
图片取自:IFTTT
点进来後只有它可选,所以就选它吧
图片取自:IFTTT
这边需要连接Line帐号,所以点击Connect会跳出登入画面
图片取自:IFTTT
登入後,这边会询问你说要不要跟IFTTT做连动,那因为我们此行目的就是为了使用IFTTT,所以需要点同意并连动
图片取自:IFTTT
这边就是做传输设定,设定完成後就可Create action。
图片取自:IFTTT
我设定的样式,提供各位参考,不一定都要照我一样设定
※因为温湿度只有温度及湿度,所以不会有第3个数值,故没使用Value3
图片取自:IFTTT
如果都设置完毕会长这样,在点Continue就会设置好罗
图片取自:IFTTT
这边点Finish就好罗
图片取自:IFTTT
点击Webhook图示,进行後续测试
※切记这边不要点击Archive,此选项是删除此事件
图片取自:IFTTT
点击Documentation
图片取自:IFTTT
接下来会看见这个画面,那以下有4个区块
图片取自:IFTTT
这边除了第1点的key,剩下的2、3、4都是拿来测试刚刚的事件的,那下方是我测试的画面,如果测试没问题Line Notify会传输讯息。
图片取自:IFTTT
如果测试成功代表设定就都没问题罗~
图片取自:使用者绘制
Esp32s
GND
-> St01(C)-
Esp32sVcc(5V)
-> St01(C)+
Esp32s22
-> St01(C)SCL
Esp32s21
-> St01(C)SDA
请记得更改10、11行(ssid、password),80行 /trigger/(填写Webhook事件名称)/key/(IFTTT给的key)
80行更改范例:/trigger/Esp32sAHT10Line/with/key/cEf5MJB
#include <WiFi.h>
#include <WiFiClient.h>
#include <AHT10.h>
#include <Wire.h>
uint8_t readStatus = 0;
AHT10 myAHT10(AHT10_ADDRESS_0X38);
// Replace with your SSID and Password
const char* ssid = "xxxx";
const char* password = "xxxxxxxx";
float humidity, temp; // 从 myAHT10 读取的值
String tempe1=""; // 显示温度的字串
String humid1=""; // 显示湿度的字串
unsigned long previousMillis = 0; // will store last temp was read
const long interval = 2000; // interval at which to read sensor
const char* host = "maker.ifttt.com";
const int httpPort = 80;
void setup(void)
{
Serial.begin(115200); // 设定速率 感测器
myAHT10.begin(); // 初始化
WiFi.mode(WIFI_STA);
// 连接无线基地台
WiFi.begin(ssid, password);
Serial.print("\n\r \n\rWorking to connect");
// 等待连线,并从 Console显示 IP
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("myAHT10 Weather Reading Server");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop(void)
{
// 量测间等待至少 2 秒
unsigned long currentMillis = millis();
if(currentMillis - previousMillis >= interval) {
// 将最後读取感测值的时间纪录下来
previousMillis = currentMillis;
// 读取温度大约 250 微秒!
humidity = myAHT10.readHumidity(); // 读取湿度(百分比)
temp = myAHT10.readTemperature(); // 读取温度(华氏)
// 检查两个值是否为空值
if (isnan(humidity) || isnan(temp)) {
Serial.println("Failed to read from myAHT10 sensor!");
return;
}
}
// 除错用
tempe1="Temperature:"+String(temp)+"C";
humid1="Humidity:"+String(humidity)+"%";
Serial.println(tempe1);
Serial.println(humid1);
WiFiClient client;
Serial.print("connecting to ");
Serial.println(host);
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
String getStr_line = "GET /trigger/Esp32sAHT10Line/with/key/cEf5MJB?value1="+tempe1+"&value2="+humid1+" HTTP/1.1\r\n"
+ "Host: " + host + "\r\n" + "User-Agent: BuildFailureDetectorESP32\r\n" + "Connection: close\r\n\r\n";
Serial.println(getStr_line);
client.print(getStr_line);
delay(100);
client.stop();
delay(60000); //每1分钟送一次到Line Notify
}
完成以上步骤且成功执行就会显示下方画面,如果觉得传输格式不好看,可以在试着自己修改看看,不管是改IFTTT那方,或者直接修改烧录程序码都可以
图片取自:使用者拍摄
那如果讯息过很久都没传输可以试着更改第85行的延迟时间,因为网路不好的话会受到影响。
好了,今天主要教各位IFTTT这款平台,因为它如上方介绍一样支援许多服务,算是个中继站点,那下次主要教储存资料的部分,那下篇依旧是介绍程序码,那明天再见罗~
<<: LeetCode 双刀流:700. Search in a Binary Search Tree
>>: Day13 | Dart 中的 Functional Programming
记得在第十五天的时候我有提过,目前 NOJ 有其中一个问题是我们会把一些机敏资料,像是 JWT 使用...
JavaScript 除了原始资料型别例如数字、字串、布林等等以外,所有的资料类型都是物件。日期与时...
原文 Given an integer x, return true if x is palindr...
D1-第零周:心态培养 这周是通知录取课程到课程正式开始之前的准备时间,这时间点只能看到第五期课...
觉得你的机器人只有对话觉得太单调?想要跟他来场贴图战?那就可以来看看 Sticker message...