การประยุกต์ใช้ 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   ถ้ายังงั้ยไปลองประยุกต์ต่อยอดดูน่ะครับ

ความคิดเห็น

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แจ้งเตือนเข้าไลน์กลุ่ม ผ่าน Line notify เมื่อมีคน login เข้า server ของเราผ่าน SSH (linux) หรือ remote desktop เข้ามา (windows server)

การทำ cloud iot ด้วย thingsboard ไว้ใช้เองครับ

การประยุกต์ใช้ line notify ในการแจ้งปัญหาการใช้งาน สำหรับ php