การประยุกต์ใช้ chat bot ai abdul ของ NECTEC สั่งงานเปิดปิดไฟบน node mcu
จากบทความที่แล้ว ผมเขียนถึงการใช้งาน chat bot ai abdul ของ NECTEC ของอาจารย์โคนัน (ใครยังไม่ได้อ่าน ก็ไปอ่านได้น่ะครับที่ https://havespirit.blogspot.com/2017/08/line-chatbot-as-conversation-ai.html )หลายๆ คน คงได้ทดลองทำตามไปแล้ว บทความนี้ก็เลยจะเขียนถึงการนำมาประยุกต์ใช้งานกับอุปกรณ์ IOT คือ ทดลองสั่งเปิดปิดไฟ ผ่าน chat bot AI ต่อยอดจากบทความที่แล้ว
แนวคิด
เนื่องจาก chat bot AI Aฺbdul เปิดให้เรียกใช้ service XTEXT คือ พูดง่ายๆ คือ ยอมให้เราเรียกใช้งาน url เพื่อเรียกใช้ code php ของเรา และจากประสบการณ์ที่่ผ่านมาในการใช้งาน thinkspeak ซึ่งเป็น cloud IOT ฟรี พบว่า มี API ให้เราเรียกใช้ผ่าน URL ได้ จึงได้ทดลองมาประยุกต์ใช้เปิดปิดไฟบน node MCU
วิธีการทำ
1. สมัครเข้าใช้งาน thingspeak แล้วสร้าง channel จำนวน 1 channel โดยสร้างฟิลด์มา 1 ฟิลด์ จากนั้นให้เรา copy channel id เอามาใช้ครับ
ตัวอย่าง channel id คือ 316634
2. เขียน code บน node mcu ดังนี้ครับ
////////////////////////
#include <ESP8266WiFi.h>
#include <ThingSpeak.h>
//Set Control Pin
//int ledPin = D3;
//Set ThingSpeak Parameters
unsigned long channel = 316634;
unsigned int field = 1;
int trigger;
//Set Wifi parameters
const char* ssid = "wifi_ssid";
const char* password = "wifi_password";
WiFiClient client;
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.mode(WIFI_STA);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
ThingSpeak.begin(client);
} //End of Setup
void loop()
{
trigger = ThingSpeak.readIntField(channel,field);
Serial.println(trigger);
if (trigger == 0)
{
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
else
{
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
}
} //End of Loop
จาก code หลักการทำงาน คือ ในฟังก์ชั่น Loop นั้น node mcu จะเข้าวนเข้าไปอ่านค่าที่ thingspeak หากพบว่า ค่าไม่ได้เป็น 0 ไฟที่บนบอร์ด Node MCU จะติด แต่หากไม่ใช่ 0 ไฟจะดับ
//////////////////////////////
3.สำหรับ url ในการสั่งเปิดปิดไฟ ให้เรา copy จาก thingspeak เลือก data import/export แล้ว copy ตรง Update a Channel Feed
ตัวอย่างน่ะครับ
https://api.thingspeak.com/update?api_key=PCKRBSHW2FLOILS2&field1=0
การทดสอบ ให้เรา copy url นี้ไป วางบน browser แล้วกดเปิด หากไฟบน node MCU ติดอยู่ มันก็จะดับhttps://api.thingspeak.com/update?api_key=PCKRBSHW2FLOILS2&field1=1หากเปลี่ยนค่าตัวสุดท้ายเป็นเลขอะไรก็ได้ที่ไม่ใช่ 0 จะพบว่าเมื่อเปิดด้วย url นี้แล้ว ไฟบน node mcu ที่ดับอยู่ก็จะติด
บางครั้งพบว่าไฟจะเปิด ปิด delay ไปหน่อย ขึ้นอยู่กับการกำหนด delay และความเร็วอินเทอร์เน็ตน่ะคับ เมื่อทดสอบเสร็จเรียบร้อยแล้ว ขั้นตอนต่อไปก็ มากำหนดค่าที่ abdul
4.การกำหนดค่าใน abdul
การกำหนดให้เปิดไฟ
การกำหนดให้ปิดไฟ
5.ทดลองสั่งงานใน chat bot
สั่งเปิดไฟ ด้วยคำสั่ง เปิดไฟ
สั่งปิดไฟ ด้วยคำสั่ง ปิดไฟ
สรุป
อันนี้เป็นการทดลองแบบง่ายๆ น่ะครับ เราอาจสามารถเขียน php แล้วเก็บข้อมุลใน mysql โดยสร้าง database มาแค่ 1 filed ให้ค่าเริ่มต้นเป็น 0 และกำหนดให้ node mcu ใน function loop เรียกใช้ php ของเรา โดยหากเปิดไฟ ก็ให้อัพเดตค่าใน databaseให้เป็น 1 เป็นต้น หากจะปิดไฟ ก็อัพเดตค่าให้เป็น 0 ถ้ายังงั้ยไปลองประยุกต์ต่อยอดดูน่ะครับ
เยี่ยมเลย
ตอบลบ