มาทดลองติดตั้งและใช้งาน ESP RainMaker บน ESP32-S2 กันเถอะ #ตอนที่ 3 ทดลองสร้าง Node และใช้งาน Mobile App

สวัสดีครับ จากในเนื้อหาส่วนที่ผ่านมาทั้ง 2 บท เป็นเรื่องการแนะนำให้เข้าใจแนวคิด และเตรียมความพร้อมเพื่อที่เราจะได้ลงมือสร้างโหนดของ ESP RainMaker กันได้ในบทนี้ ดังนั้นในขั้นตอนแรกของบทนี้ก่อนที่เราจะลงมือสร้างโหนด เราจะมาเรียนรู้ประเภทของอุปกรณ์ที่ ESP RainMaker ได้เตรียมไว้ให้เราสามารถสร้างได้กันก่อนดีกว่า โดยจะมีเตรียมไว้ทั้งหมด 4 ประเภทด้วยกันคือ

แสดงประเภทของอุปกรณ์ที่สามารถสร้างได้บน ESP RainMaker

– Switch เป็นสวิตช์เปิดปิด มีค่าพารามิเตอร์ที่จำเป็นต้องกำหนดค่าคือ Name และ Power  
– Lightbulb เป็นหลอดไฟ มีค่าพารามิเตอร์ที่จำเป็นต้องกำหนดค่าคือ Name และ Power และมีค่าที่สามารถเพิ่มเพื่อการปรับค่าได้คือ Brightness , Color , Temperature , Hue , Saturation และ Intensity
– Fan เป็นพัดลม มีค่าพารามิเตอร์ที่จำเป็นต้องกำหนดค่าคือ Name และ Power  และมีค่าที่สามารถเพิ่มเพื่อการปรับค่าได้คือ Speed และ Direction
– Temperature Sensor มีค่าพารามิเตอร์ที่จำเป็นต้องกำหนดค่าคือ Name และ Temperature

โดยใน ESP RainMaker จะมีพารามิเตอร์ให้เราใช้ได้ทั้งหมดดังนี้

แสดงค่าพารามิเตอร์ทั้งหมดที่ใช้ได้

ซึ่งเราจะเห็นได้ว่าในแต่ละประเภทของพารามิเตอร์ที่จะเรียกใช้นั้นจะมีชนิดของข้อมูลที่ต่างกันทำให้เราต้องจัดการประเภทของตัวแปรให้ตรงตามที่ระบุไว้ด้วย และในส่วนของประเภทของ UI นั้นคือการแสดงผลบนสมาร์ทโฟนแอพที่จะทำการแสดงผลหน้าจอโดยเปลี่ยนแปลง UI ต่างๆไปตามประเภทของอุปกรณ์และพารามิเตอร์ที่ส่งมา ถัดมาคือค่าคุณสมบัติของพารามิเตอร์ว่าจะเป็นแบบอ่านอย่างเดียวหรืออ่านและเขียนค่าได้ ในส่วนสุดท้ายคือค่าขอบเขตของพารามิเตอร์นั้นๆ

จากนั้นเราจะลองมาดูโค้ดตัวอย่างที่ให้มากับ ESP RainMaker Agent SDK ในส่วนของ Switch กันซึ่งจะอยู่ใน ~/esp/esp-rainmaker/examples/switch/main โดยจะอยู่ในไฟล์ app_main.c

เราจะพิจารณาโค้ดการทำงานในบรรทัดที่ 80-83 ซึ่งเป็นส่วนของการเพิ่มอุปกรณ์และเพิ่มค่าพารามิเตอร์ต่าง ๆ

esp_rmaker_create_device("ESPSwitch", ESP_RMAKER_DEVICE_SWITCH, switch_callback, NULL);

จะเป็นการเรียกใช้คำสั่งเพื่อสร้างอุปกรณ์ขึ้นมาใหม่ให้ชื่อประเภทว่า “ESPSwitch” (เปลี่ยนเป็นชื่อที่ต้องการได้) โดยมีประเภทเป็น esp.device.switch และเมื่อมีการส่งค่ามาจากคลาวด์จะถูกส่งให้ ฟังก์ชั่นที่ชื่อว่า  switch_callback และไม่มีการส่งค่าข้อมูลแบบไพรเวทไปให้ฟังก์ชั่น switch_callback

 

esp_rmaker_device_add_name_param("ESPSwitch", "name");

ทำการเพิ่มพารามิเตอร์ที่ชื่อ “name” โดยมีค่าเป็นคำว่า “Switch” เพื่อให้สามารถเปลี่ยนชื่อของอุปกรณ์ได้จากในแอพ ESP RainMaker ในส่วนนี้เป็นชื่อเล่นที่ใช้อ้างถึงอุปกรณ์ไม่ใช่ชื่อประเภทของอุปกรณ์ หรือหากเราอยากเขียนในรูปแบบมาตรฐานของการเพิ่มพารามิเตอร์ก็สามารถทำได้ดังนี้

esp_rmaker_device_add_param("ESPSwitch", "name", esp_rmaker_str("Switch"), PROP_FLAG_READ | PROP_FLAG_WRITE);
esp_rmaker_device_add_power_param("ESPSwitch", "power", DEFAULT_POWER);

ทำการเพิ่มพารามิเตอร์ชื่อ “Power” ให้ค่าเป็น DEFAULT_POWER ซึ่งเรากำหนดไว้ใน main/app_priv.h ให้เป็น true

esp_rmaker_device_assign_primary_param("Switch", "power");

ทำการเพิ่มค่าพารามิเตอร์หลัก โดยต้องเป็นพารามิเตอร์ที่เราทำการเพิ่มลงไปแล้วด้วยคำสั่งเพิ่มก่อนหน้านี้ เพื่อให้ค่านี้เป็นค่าที่แสดงในหน้าหลักของแอพและตอบสนองกับการสั่งงานของผู้ใช้งานได้

ติดตั้ง สมาร์ทโฟนแอพ

การติดตั้งแอพสามารถทำได้ทั้งบนระบบปฎิบัติการแอนดรอยด์และ iOS โดยค้นคำว่า ESP Rainmaker ได้เลยหรือสำหรับ Android จะเข้าไปดาวร์โหลดไฟล์ APK มาเพื่อติดตั้งเองก็ได้ทำได้จาก https://github.com/espressif/esp-rainmaker/wiki

หลังจากติดตั้งแล้วเราจะต้องทำการสมัครสมาชิกใหม่สำหรับใช้ login หรือเลือก login ด้วย oAuth ผ่าน github หรือ gmail หลักจากเข้าสู่ระบบได้แล้วเราจะพบกับหน้าแสดงอุปกรณ์ที่จะว่างเปล่าอยู่ รอการเพิ่มผ่านการ  Scan QR code จากหน้าคอนโซลเมื่อเรียกคำสั่ง  idf.py monitor หรือ ทำการ copy URL  ที่ได้จากหน้าคอนโซลของคำสั่ง idf.py monitor ให้ generate QR code ให้ใหม่ หรือสุดท้ายผ่านขั้นตอนการเชื่อมต่อไปยังอุปกรณ์เพื่อทำการใส่ค่า PIN ด้วยตัวเอง








ทดลองใช้งาน

เมื่อเราทำการ Scan QR code ได้สำเร็จ หากสังเกตจะพบว่าโทรศัพท์ของเราได้ทำการเชื่อมต่อเข้ากับ ESP32 ที่ทำงานเป็น SoftAP โดยอัตโนมัติ จากนั้นจะเป็นขั้นตอนของการทำ WiFi provisioning โดยจะให้เราเลือก Access Point ที่จะทำการเชื่อมต่อ ให้ทำการใส่ค่ารหัสผ่านในการเชื่อมต่อ และแอพจะแสดงสถานะความคืบหน้าในการทำงานทั้ง 4 ขั้นตอนคือ
– การส่งค่า WiFi credential เพื่อให้บอร์ดเชื่อมต่อเข้ากับ Access Point
– ยืนยันสถานะการเชื่อมต่อว่าสำเร็จหรือไม่
– ทำการเชื่อมโยงค่าผู้ใช้เข้ากับโหนดที่เพิ่มใหม่
– ทำยืนยันผลการเชื่อมโยงค่าผู้ใช้เข้ากับโหนดที่เพิ่มใหม่





หลังจากนั้นเราเข้าไปยังหน้าแสดงรายการอุปกรณ์ทั้งหมดที่ทำการผูกค่าเข้ากับผู้ใช้ของเราแล้ว ซึ่งเราจะพบอุปกรณ์ประเภท ESPSwitch ตามทีเราตั้งค่าไว้ในโปรแกรม และจะมีรูปปุ่มเพื่อกดเปิดปิดได้ซึ่งเป็นผลมาจาก

esp_rmaker_device_assign_primary_param("Switch", "power");

ที่เราทำการตั้งค่าไว้ในโปรแกรมที่เขียนขึ้นว่าให้พารามิเตอร์หลักคือค่า power และเมื่อเรากลับไปที่หน้าคอนโซลของเราจะพบว่า มีการแสดงค่าสถานะการทำงานต่าง ๆ ออกมาเช่น
หมายเลข IP Address ที่ได้จากการเชื่อมต่อ การพยายามเชื่อมต่อไปยัง MQTT broker ที่ aws และเมื่อเราทำการกดเปิดหรือปิดสวิตช์นั้นจะมีการได้รับค่ากลับมาใน esp_rmaker_param_ops จะมีแจ้งว่ารับค่า {“power”} เข้ามาทุกครั้งที่มีการกดเปิดหรือปิดจากในแอพ

และจากเนื้อหาในส่วนแรก ที่บอกว่าในโหนด 1 โหนดเราสามารถที่จะสร้างอุปกรณ์เสมือนได้มากกว่า 1 ตัวนั้นเราจะมาทดลองสร้างกันดูด้วยการคัดลอกบรรทัดที่ 80-83 เพื่อสร้างเป็นอุปกรณ์ใหม่ในชื่อ Switch2  และทดลองสร้างอุปกรณ์เป็นเครื่องให้อาหารสุนัขขึ้นมาโดยทำการเพิ่มพารามิเตอร์และ ui เพิ่มเป็นปุ่มเปิดปิดอีกสองชุด เพื่อจะดูว่าบนแอพ ESP RainMaker จะแสดงผลให้ใช้งานได้อย่างไร





ก็จะพบว่าเมื่อเราเปลี่ยนแปลงโค้ดใน ESP RainMaker SDK ของเรา ในแอพมือถือก็จะเปลี่ยนแปลงตามไปด้วยโดยอัตโนมัติ ทำให้เรามีความคล่องตัวและยืดหยุ่นในการพัฒนางานได้มาก ซึ่งในเนื้อหาในส่วนต่อไปเราจะทดลองสร้างชิ้นงานขึ้นมาจริง ๆ เพื่อดูว่าเราจะจัดการกับการรับค่าจากแอพผ่าน callback ฟังก์ชั่นกลับมาควบคุม IO บนบอร์ดหลายๆตัวได้อย่างไร ในเนื้อหาส่วนนี้ก็อยากให้เพื่อนได้ลองทดลองทำตามกันดูนะครับ สำหรับ API เพิ่มเติมเราสามารถเข้าไปศึกษาได้ยัง https://docs.espressif.com/projects/esp-rainmaker/en/latest/c-api-reference/index.html

และสำหรับบอร์ดที่ใช้ชิป ESP32-S2 นั้นอีกไม่นานเราจะมีวางจำหน่ายในเว็บ https://www.aiiotshop.com/ แล้วครับกับบอร์ดล่าสุดจาก TTGO เป็น TTGO T8-S2 ก็ขอฝากร้านไว้ด้วยนะครับถ้าอยากได้ผลิตภัณฑ์จาก TTGO ขอให้นึกถึง aiiotshop.com ครับ

[เนื้อหาตอนที่ 1 : อธิบายแนวคิดและองค์ประกอบ ESP RainMaker]
[เนื้อหาตอนที่ 2 : การติดตั้ง ESP-IDF และ ESP RainMaker Agent SDK]

2 thoughts on “มาทดลองติดตั้งและใช้งาน ESP RainMaker บน ESP32-S2 กันเถอะ #ตอนที่ 3 ทดลองสร้าง Node และใช้งาน Mobile App”

  1. Pingback: มาทดลองติดตั้งและใช้งาน ESP RainMaker บน ESP32-S2 กันเถอะ #ตอนที่ 2 ติดตั้ง ESP-IDF และ ESP RainMaker Agent SDK - Maker Asia

  2. Pingback: มาทดลองติดตั้งและใช้งาน ESP RainMaker บน ESP32-S2 กันเถอะ #ตอนที่ 1 ทำความรู้จักกับ ESP RainMaker - Maker Asia

Leave a Comment

มาทดลองติดตั้งและใช้งาน ESP RainMaker บน ESP32-S2 กันเถอะ #ตอนที่ 2 ติดตั้ง ESP-IDF และ ESP RainMaker Agent SDK

ในเนื้อหาตอน 1 ที่ผ่านมาเราได้ทำความรู้จักกับแนวคิดและการทำงานของแพลตฟอร์ม ESP Rain Maker กันไปแล้วซึ่งในตอนที่ 2 นี้เราจะมาเตรียมความพร้อมในการพัฒนาเฟิร์มแวร์บน ESp32-S2 กันโดยเราจะต้องทำการติดตั้ง ESP-IDF และตามด้วย ESP RainMaker Agent SDK กัน โดยทางผมจะทำการสาธิตการติดตั้งบน Unbuntu ซึ่งทำงานอยู่บน VirtualBox นะครับ โดยเริ่มแรกสำหรับใครที่ยังไม่มี Virtualbox ติดตั้งในเครื่อง เราก็ไปทำการดาวน์โหลด Virtualbox กันก่อนได้ ที่นี่
และจากนั้นก็ทำการสร้าง Virtual Machine ใหม่กันโดยเข้าไปที่เมนูไอคอน NEW ทางด้านบน. ทำการตั้งค่าเพื่อติดตั้ง Ubuntu 64bit โดยเลือก Type: Linux และ Version Ubuntu(64-bit)ดังรูป

ทำการเลือกปรเภทของ OS ที่จะสร้างการติดตั้ง

หน้าถัดไปจะเป็นการเลือก RAM ให้กับ Virtual image ที่เราจะสร้างขึ้นใคร RAM เยอะก็แบ่งมาซักให้ VM ซัก 4GB ก็จะเร็วพอที่จะใช้งานได้ในระดับที่ไม่ขัดใจแล้วครับ จากนั้นหน้าถัดไปเป็นการเลือกฮาร์ดไดรฟ์สำหรับติดตั้ง ในขั้นตอนนี้ผมแนะนำให้ไปดาวน์โหลด VM Image ที่ติดตั้งเรียบร้อยแล้วจากทางเว็บไซต์ [osboxes] โดยปัจจุบัน Ubuntu จะอัพเดตถึงเวอร์ชั่น 20 แล้ว เราจะได้ไฟล์ .vdi มาก็สามารถเลือกไฟล์นี้ได้เลยดังรูป

เลือกติดตั้งโดยใช้ VM Image

เมื่อการติดตั้งเสร็จเรียบร้อยแล้ว เมื่อเริ่มการทำงานหากดาวน์โหลด VMI จากทาง osboxes.org มา password ในการใช้ loginเข้าสู่ระบบคือ  “osboxes.org” เมื่อ login เข้ามายังหน้าเดสก์ทอปได้แล้วก็แนะนำให้เปลี่ยนรหัสผ่านให้เรียบร้อยด้วยคำสั่ง “sudo passwd” บน terminal จะเป็นวิธีที่เร็วที่สุด ถึงตอนนี้เราก็พร้อมที่จะติดตั้ง ESP-IDF กันแล้วครับ

 

การติดตั้ง ESP-IDF

ก่อนที่จะเราจะติดตั้ง ESP-IDF ได้นั้นเราจะต้องทำการติดตั้ง package ที่จำเป็นต้องมีให้เรียบร้อยก่อนโดยเปิดหน้า terminal ขึ้นมาทำการติดตั้งดังนี้

sudo apt-get install git wget libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev

 

แสดงการตรวจสอบแพคเกจที่จะติดตั้ง

ขั้นตอนต่อไปคือการดาวน์โหลดไฟล์ของ ESP-IDF ลงมายังเครื่องคอมพิวเตอร์ของเรา โดยก่อนที่จะทำการเตรียม git clone นั้นเราจะทำการสร้าง directory ที่ชื่อ esp ให้อยู่ภายใต้ home directory ของเราก่อนเพื่อใช้ในการเก็บไฟล์ที่ดาวน์โหลดลงมาด้วยคำสั่ง

mkdir ~/esp

หรือหากเราจะทำการเก็บไว้ที่อื่นก็สามารถเลือกที่อื่นได้เพียงตั้งค่า PATH ชี้ไปให้ถูกก็พอแต่เนื่องจากตัวอย่างการติดตั้งของ espressif แนะนำให้ใช้เป็น ~/esp เราก็ปฎิบัติตามคำแนะนำตอนที่คัดลอกคำสั่งจะได้ไม่ต้องมาคอยแก้ค่า PATH ทุกครั้ง จากนั้นทำการ git clone ไฟล์จาก repository ของ espressif

cd ~/esp
git clone -b v4.0 –recursive https://github.com/espressif/esp-idf.git

ขั้นตอนถัดมาคือการติดตั้งเครื่องมือต่างๆที่จำเป็นต้องใช้ ซึ่งทำได้ผ่านการเรียก bash file มาติดตั้งดังนี้

cd ~/esp/esp-idf
./install.sh

ในขั้นตอนการติดตั้งที่ผ่านมานั้นเป็นเพียงการติดตั้งเครื่องมือที่จำเป็นต้องใช้ แต่ยังไม่ได้มีการตั้งค่าตัวแปร PATH environment ที่จะให้สามารถเรียกใช้งานชุดเครื่องมือที่ติดตั้งลงไปได้โดยไม่ต้องคอยระบุ path ทุกครั้ง เราจะสามารถทำการตั้งค่าตัวแปร PATH environment ได้ดังนี้ 

. $HOME/esp/esp-idf/export.sh

โดยค่านี้ต้องทำการตั้งใหม่ทุกครั้งที่เปิดหน้าต่าง Terminal ใหม่ขึ้นมาโดยเราสามารถเข้าไปเพิ่มบรรทัดในไฟล์ .profile ได้ดังรูป โดยเมื่อตั้งค่าในไฟล์แล้วขอให้ logout แล้ว login เข้ามาใหม่ก็จะสามารถใช้งานได้

การเพิ่มบรรทัดการตั้งค่า PATH environment
การตรวจสอบค่า PATH ของเครื่องมือที่ถูกเพิ่มเข้าไปของ ESP-IDF

การติดตั้ง ESP RainMaker  Agent SDK

 

หลังจากเราได้ติดตั้ง ESP-IDF เสร็จสิ้นแล้วเราจะทำการติดตั้ง ESP RainMaker Agent SDK กันด้วยการ git clone มาจาก repository ของ Espressif ดังนี้

cd ~/esp
git clone https://github.com/espressif/esp-rainmaker.git

  เสร็จแล้วครับการติดตั้ง ESP RainMaker Agent SDK มีแค่นี้แหละ เพราะตัว ESP RainMaker นั้นทำงานอยูบน ESP-IDF อยู่แล้วส่วนที่เพิ่มมามีแค่ส่วนของโค้ดในส่วนของ RainMaker Agent , ตัวอย่าง และ CLI ของ RainMaker เท่านั้น ดังนั้นขึ้นตอนต่อไปคือเราจะทดลอง build และ flash firmware กันดูครับ

Build และ Flash firmware

 

ซอร์สโค้ดตัวอย่างของ ESP RainMaker จะอยู่ใน esp-rainmaker/examples เราจะทดลองกับตัวอย่างที่ชื่อว่า switch ดังนี้

cd /esp/esp-rainmaker/examples/switch/
idf.py set-target esp32s2
idf.py build

แสดงสถานะการทำงานจากคำสั่ง idf.py build

หากพบว่าการ build สำเร็จโดยไม่มีการแจ้ง error ใดๆ เราก็สามารถที่จะทดลองทำการ flash เฟิร์มแวร์ลงไปยังบอร์ดทดลองที่ใช้ชิป ESp32-S2 ของเราได้ แต่เรื่องจากเราใช้ Virtualbox ดังนั้นเราต้องทำการตั้งค่าในส่วนของโปรแกรม Virtualbox และทำการติดตั้ง driver ของ USB2Serial บนตัวระบบปฎิบัติการที่เป็นโฮสต์ของเราให้เรียบร้อยด้วย ในบทความนี้ผู้เขียนได้ใช้บอร์ด gravitech cucumberRS ที่ใช้ชิป USB2Serial ของ FTDI เราจะต้องไปทำการติดตั้ง VCP driver จากเว็บไซต์ของFTDI เอง  https://www.ftdichip.com/Drivers/VCP.htm หลังจากติดตั้งสำเร็จแล้วเราจะทำการตั้งค่า USB Devices Filter โดยเข้าไปที่เมนู Devices -> USB -> USB Settings… ดังรูป

การเข้าไปยัง USB Setting
ทำการเลือก Add USB Filter

หลังจากทำการตั้งค่าเรียบร้อยแล้ว เราจะตรวจสอบได้ว่า Ubuntu เจออุปกรณ์ของเราแล้วหรือไม่ด้วยการพิมพ์คำสั่ง 

 lsusb

จะพบผลลัพธ์ว่ามีอุปกรณ์ดังกล่าวเพิ่มขึ้นมา

คำสั่ง lsusb ให้ผลลัพธ์ว่าพบอุปกรณ์ USB2Serial

จากนั้นเราจะทดลองใช้คำสั่ง 

idf.py flash_erase

จะพบ error แจ้งเรื่อง. permission ให้เราทำการ add user ตัวเองเข้าไปอยู่ยังกลุ่ม dialout ด้วยคำสั่ง

sudo usermod -a -G dialout $USER

ทำการ logout แล้ว login มาทดสอบอีกครั้งจะพบว่าสามารถสั่งลบข้อมูลในแฟลชของ ESP ได้ จากนั้นเราจะทดลอง upload เฟิร์มแวร์ขึ้นไปยังชิป ESP32-S2. ด้วยคำสั่ง

idf.py flash
idf.py monitor
ผลลัพธ์การทำงานด้วยคำสั่ง idf.py flash
แสดง QR Code สำหรับการ provisioning

เมื่อเราสั่ง idf.py monitor ที่หน้าต่าง Terminal จะกลายเป็น console สำหรับมอนิเตอร์ค่าจาก ESP32-S2 โดยจะแสดง QR Code เพื่อให้เราใช้แอพที่ชื่อว่า Rainmaker ในสมาร์ทโฟนสแกนเพื่อทำการตั้งค่าให้อุปกรณ์ของเราเชื่อมต่อกับเครือข่าย WiFi ของเรา (provisioning) ซึ่งเราจะพูดถึงส่วนการทดลองใช้งาน ESP Rainmaker ทั้งแพลตฟอร์มในเนื้อหาตอนที่ 3 ครับ. อดใจรอกันซักนิดนะครับ

[เนื้อหาตอนที่ 1 : อธิบายแนวคิดและองค์ประกอบ ESP RainMaker]
[เนื้อหาตอนที่ 3 : ทดลองสร้างโหนดและใช้งานแอพ ESP Rainmaker]

มาทดลองติดตั้งและใช้งาน ESP RainMaker บน ESP32-S2 กันเถอะ #ตอนที่ 1 ทำความรู้จักกับ ESP RainMaker

ESP RainMaker คืออะไร

สวัสดีครับวันนี้ทาง Maker[LAB] ของทางบริษัทเมกเกอร์ เอเซีย จะมาแนะนำการทดลองใช้งาน ESP RainMaker โดยเราจะมาเริ่มจากการทำความเข้าใจแนวคิดในการพัฒนากันก่อนเป็นอันดับแรก 

ESP Rainmaker นั้นเป็นแพลตฟอร์มแบบครบวงจรจากทางบริษัท Espressif ที่ได้พัฒนาขึ้นมา(ขณะนี้ยังอยู่ในสถานะเบต้า) ให้ชาวเมกเกอร์ได้ทดลองใช้งานเพื่อให้สามารถสร้างงาน IoT ได้รวดเร็วขึ้นด้วย ESP32-S2 SoC ของ Espressif โดยไม่ต้องยุ่งยากในการจัดการโครงสร้างพื้นฐานใด ๆ โดยมี SDK ในการพัฒนาเฟิร์มแวร์ ,ตัวแอพลิเคชั่นบนสมาร์ทโฟน , บริการบนคลาวด์และยูทิลิตี้การโฮสต์เพื่อลดความซับซ้อนในการพัฒนา โดยปัจจุบันบอร์ดทดลองจะมีให้เลือกหาซื้อได้คือ ESP32-S2-Saola-1 และ Gravitech cucumber 




ภาพรวมการทำงานของระบบ

ESP RainMaker ประกอบด้วยการทำงานหลัก 3. ส่วนคือ

Node

ส่วนตัวฮาร์ดแวร์ที่ติดตั้งเฟิร์มแวร์ที่พัฒนาขึ้นบน SDK ของ ESP RainMaker โดยเราจะมองฮาร์ดแวร์นี้เป็นโหนด 1 โหนดซึ่งในโหนดนั้นจะมี node id  และข้อมูลประจำตัวที่ได้มาจากกระบวนการอ้างสิทธิ์ ทั้งนี้ผู้ใช้สามารถที่จะตั้งชื่อให้กับโหนดด้วยตัวเองได้ และในโหนด 1 โหนดนั้นสามารถที่จะมีอุปกรณ์เสมือนหลาย ๆ ตัวทำงานอยู่ภายในตัวได้

เราสามารถที่จะควบคุมและตรวจสอบค่าของพารามิเตอร์ของอุปกรณ์ได้ เช่น สถานะการปิด/ปิดไฟ , ค่าความสว่าง , ค่าอุณหภูมิ เป็นต้น

โดย ESP RainMaker นั้นจะในส่วนของเฟิร์มแวร์ที่พัฒนาจะพัฒนาภายใต้เฟรมเวิร์ค ES-IDE โดยจะมีส่วนของ ESP RainMaker agent ที่ทำหน้าที่ให้บริการในส่วนของ API เพื่อให้การพัฒนาเป็นไปตามข้อกำหนดของ ESP Rainmaker เช่นการทำ WiFi Provisioning , MQTT client ที่จะทำการเชื่อมต่อไปยังคลาวด์ของ RainMaker

คลาวด์

 คลาวด์ของ ESP RainMaker จะทำหน้าที่ในสองส่วนคือ1) Node – Cloud communication การสื่อสารทั้งหมดระหว่างโหนดและคลาวด์เกิดขึ้นบน MQTT นั้นใช้เข้ารหัสข้อมูลด้วย TLS  โดยใช้ X.509 certificate ในการรับรองความถูกต้องซึ่งกันและกัน โดยเมื่อโหนดเชื่อมต่ออินเตอร์เน็ตแล้วพบว่าตัวเองยังไม่มี credentials จะทำกระบวนการอ้างสิทธิ์ด้วยต้นเอง (Self Claiming) หลังจากนั้นจะใช้ client key และ certificate ที่ได้ใช้ในการเชื่อมต่อไปยัง MQTT broker โดยมี MQTT Policies กำกับอีกขั้นโดย client id ที่เชื่อมต่อเข้าไปต้องตรงกันกับ node id เท่านั้นถึงจะสามารถ publish/subscribe ได้ และสามารถทำได้ใน topic ที่ขึ้นต้นด้วย node/<node_id>/ เท่านั้น 

 2) Client – Cloud communication การสื่อสารทั้งหมดระหว่างไคลเอนต์ (สมาร์ทโฟนแอพลิเคชั่น CLI ฯลฯ ) และ ESP Cloud RainMaker นั้นเกิดขึ้นผ่าน HTTP REST API ซึ่งแบ่งเป็นประเภทได้ดังนี้

– การจัดการผู้ใช้ ลงทะเบียน, ล็อคอิน , เปลี่ยนรหัสผ่าน และลืมรหัสผ่าน
– การจัดการโหนด เพิ่มผู้ใช้ , ตรวจสอบสถานะผู้ใช้ , รายการของโหนดที่แมปแล้ว , รับ / ตั้งค่าพารามิเตอร์ของโหนด , ค่าคอนฟิคของโหนด และสถานะการเชื่อมต่อของโหนด
– อื่น ๆ อ่านค่ารายละเอียดของ MQTT Broker  , ทำกระบวนการอ้างสิทธิ์ของโหนด

สมาร์ทโฟนแอพลิเคชั่น

แอพลิเคชั่นในสมาร์ทโฟนนั้นจะทำหน้าที่ 3 ส่วนหลักคือ

– WiFi provisioning จัดการการเชื่อมต่อเครือข่ายผ่าน WiFi ของโหนดที่ต้องการตั้งค่า
– ทำการแมปค่าระหว่างผู้ใช้และโหนด
– ควบคุม/ตรวจสอบค่าพารามิเตอร์จากโหนดที่ทำการแมปแล้ว  โดยทำเมื่อทำการส่งคำร้องขอไปยังคลาวด์แล้วจะได้ค่าพารามิเตอร์จากโหนดกลับมา แอพพลิเคชั่นจะทำการวาดคอมโพเนนต์หน้าจอให้สอดคล้องกับค่าที่ได้รับกลับมา ดังตัวอย่างด้านล่าง

ตัวอย่างโค้ดแสดงการสร้างอุปกรณ์เป็นประเภท Switch
แสดงหน้าจอของแอพที่แสดงผลได้ตรงกันกับค่าพารามิเตอร์ของโหนด
ตัวอย่างโค้ดแสดงการสร้างอุปกรณ์เป็นประเภท Lightbulb พร้อมแอตทริบิวต์
แสดงหน้าจอของแอพที่แสดงผลได้ตรงกันกับค่าพารามิเตอร์และแอตทริบิวต์ของโหนด

สรุปใน 8 บรรทัด

https://youtu.be/Heo18HLgh9g

ESP RainMaker เป็นแพลตฟอร์มแบบครบวงจรที่ทำให้เราสามารถพัฒนา IoT โซลูชั่นได้อย่างรวดเร็ว โดยเพื่อให้ง่ายต่อความเข้าใจเราจะแบ่งส่วนของการทำงานเป็น 3 ส่วนคือ

– Node ตอนนี้ต้องใช้ hardware เป็น ESP32-S2 เนื่องจากรองรับการเข้ารหัสที่มีมากกว่า ESP32 พัฒนาด้วย RainMaker  Agent SDK ที่ทำงานบน ESP-IDF อีกทีโดยเราสามารถเลือก expose parameter ที่ต้องควบคุม/ตรวจสอบได้ และ sync ขึ้นคลาวด์ ผ่าน MQTT
– Cloud ทำหน้าที่เป็นตัวกลางระหว่าง Node และ Client โดยผู้ใช้ไม่ต้องเข้าไปตั้งค่าใดๆ
– Client มีทั้งเป็นสมาร์ทโฟนแอพ , CLI และ Python library ถ้าเป็นแอพจัดการเรื่องจะทำการดึงค่าต่างๆผ่าน REST API และแสดงผล UI เปลี่ยนไปตามพารามิเตอร์ที่ดึงมาโดยอัตโนมัติ และเรื่องการตั้งค่า WiFi ของโหนดและการแมปผู้ใช้เข้ากับโหนดที่ต้องการ

 

เนื่องจากเนื้อหาค่อนข้างเยอะ เพื่อความสะดวกของผู้อ่านเลยจะขอแบ่งเป็น 3 ส่วนคือ
1)  บทนำ
2) การติดตั้ง ESP-IDF และ RainMaker Agent
3) ทดลองเขียนโค้ดและใช้งานแอพ ESP RainMaker