การทดลองใช้งาน
Thingspeak.com สำหรับบริการด้าน IoT
บทความนี้กล่าวถึง
การทดลองใช้งาน Thingspeak.com ซึ่งระบบ
Cloud Service ที่ให้บริการด้าน IoT (Internet of
Things) หรือ "อินเทอร์เน็ตของสิ่งต่างๆ" สามารถเก็บ
แบ่งปัน และแสดงผลข้อมูล (Save, Share, Visualize Data) ตามรูปแบบหรือสถาปัตยกรรมทางซอฟต์แวร์ที่เรียกว่า
RESTful Web Services ผ่านโปรโตคอลแบบ HTTP และสะดวกต่อการนำไปพัฒนา Web Apps
IoT
IoT: Internet of Things (บางทีเรียก IoE : Internet of Everything) หรือ “อินเตอร์เน็ตในทุกสิ่ง”หมายถึงการที่สิ่งต่างๆถูกเชื่อมโยงทุกสิ่งทุกอย่างสู่โลกอินเตอร์เน็ตทำให้มนุษย์สามารถสั่งการควบคุมการใช้งานอุปกรณ์ต่างๆ ผ่านทางเครือข่ายอินเตอร์เน็ต เช่น การเปิด-ปิด อุปกรณ์เครื่องใช้ไฟฟ้า รถยนต์ โทรศัพท์มือถือ เครื่องมือสื่อสาร เครื่องมือทางการเกษตร อาคาร บ้านเรือน เครื่องใช้ในชีวิตประจำวันต่างๆ ผ่านเครือข่ายอินเตอร์เน็ต เป็นต้น
ควบคุมหลอดไฟ LED ผ่าน Internet
Create Thing & Channels
Thing
ก็คือ อุปกรณ์ที่เชื่อมต่อกับ Anto เช่น NodeMCU
, ESP8266 เป็นต้น
Channel
ก็คือ ช่องเก็บข้อมูลต่างๆ เช่น ข้อมูลของเซนเซอร์วัดอากาศ
ข้อมูลการกดปุ่ม เป็นต้น
ตัวอย่างเช่น ในโปรเจคนี้
เราใช้
NodeMCU หนึ่งตัวในการควบคุม LED 3 หลอด
สรุปที่เราต้องสร้างก็คือ
เรามี NodeMCU (1 Thing) ที่ต้องการเก็บค่าในการควบคุม LED
(3 Channel)
ขั้นตอนการสร้าง
กดเข้าไปที่ Thing จากเมนูทางด้านซ้าย
กด + Add new thing ในการสร้าง Thing กรอกรายละเอียด
สร้าง Channel
เข้ามาที่แถบเมนู Key ทางด้านซ้ายมือเพื่อเข้ามาสร้าง key ในการเชื่อมต่อฮาร์ดแวร์
สร้าง Key
แล้วกดเลือก Permission ให้กับ Chanal
ทั้ง 3 เป็น Read และ Update
ดังรูป
แล้วกด
Add new
เขียนโปรแกรม
เปิดเข้าโปรแกรม
Arduino IDE เลือกบอร์ดที่ใช้เป็น WeMos D1 mini
เลือก
Port ในการลงโปรแกรม
Add
Anto Lib
เปิดโปรแกรม
File à
Example à
Anto à
DigitalOutputGPIO
แก้ไขส่วน
Anto
-
USER Name :
-
Key :
-
Thing Name :
-
Name ของแต่ละ Channel :
แก้ไขส่วน
Wifi for WeMos
-
SSID :
-
Password :
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <WiFiClientSecure.h>
#include <Wire.h>
#include "ClosedCube_HDC1080.h"
ClosedCube_HDC1080 hdc1080;
#include "ClosedCube_HDC1080.h"
ClosedCube_HDC1080 hdc1080;
int StepCount = 1;
String thinkKey = "UGH983OMQO0YURAJ";
const char* ssid = "Dream";
const char* password = "dream1234";
String thinkKey = "UGH983OMQO0YURAJ";
const char* ssid = "Dream";
const char* password = "dream1234";
const char* host = "api.thingspeak.com";
const int httpsPort = 443;
const int httpsPort = 443;
// Use web browser to view and copy
// SHA1 fingerprint of the certificate
const char* fingerprint = "CF 05 98 89 CA FF 8E D8 5E 5C E0 C2 E4 F7 E6 C3 C7 50 DD 5C";
// SHA1 fingerprint of the certificate
const char* fingerprint = "CF 05 98 89 CA FF 8E D8 5E 5C E0 C2 E4 F7 E6 C3 C7 50 DD 5C";
void setup() {
Serial.begin(115200);
Serial.println();
Serial.print("connecting to ");
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());
Serial.begin(115200);
Serial.println();
Serial.print("connecting to ");
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());
// Use WiFiClientSecure class to create TLS
connection
hdc1080.begin(0x40);
}
void loop() {
//https://api.thingspeak.com/update…
if (StepCount % 30 == 0) {
WiFiClientSecure client;
Serial.print("connecting to ");
Serial.println(host);
if (!client.connect(host, httpsPort)) {
Serial.println("connection failed");
return;
}
//https://api.thingspeak.com/update…
if (StepCount % 30 == 0) {
WiFiClientSecure client;
Serial.print("connecting to ");
Serial.println(host);
if (!client.connect(host, httpsPort)) {
Serial.println("connection failed");
return;
}
if (client.verify(fingerprint, host)) {
Serial.println("certificate matches");
} else {
Serial.println("certificate doesn't match");
}
Serial.println("certificate matches");
} else {
Serial.println("certificate doesn't match");
}
String url = "/update?api_key=" + thinkKey
+ "&field1=";
Serial.print("requesting URL: ");
Serial.println(url);
Serial.print("requesting URL: ");
Serial.println(url);
client.print(String("GET ") + url +
hdc1080.readTemperature() + "&field2=" + hdc1080.readHumidity() +
" HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
Serial.println("request sent");
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
Serial.println("headers received");
break;
}
}
String line = client.readStringUntil('\n');
if (line.toInt()>0) {
Serial.println("Push Sucess !!");
} else {
Serial.println("Fail!!!");
}
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
Serial.println("headers received");
break;
}
}
String line = client.readStringUntil('\n');
if (line.toInt()>0) {
Serial.println("Push Sucess !!");
} else {
Serial.println("Fail!!!");
}
Serial.println("reply was:");
Serial.println("==========");
Serial.println(line);
}
delay(1000);
Serial.print("Time: ");
Serial.println(StepCount++);
}
Serial.println("==========");
Serial.println(line);
}
delay(1000);
Serial.print("Time: ");
Serial.println(StepCount++);
}
เมื่อแก้ไขโค้ดเสร็จแล้วก็ Upload โปรแกรมเป็นอันเสร็จสิ้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น