Firebase และ Arduino ตอนที่ 1

บทความนี้ ตอนที่ 1 จะพูดถึง (แจกโค๊ด) Firebase Realtime Database และ ตอนที่ 2 จะพูดถึง Arduino โดยที่ในตอนที่ 1 จะเป็นโปรแกรมให้เห็นว่า นำข้อมูลใส่เข้าใน Firebase Realtime Database ได้อย่างไร แล้วในตอนที่ 2 เราจะโปรแกรม Arduino ให้เชื่อมต่อเน็ตผ่าน Wi-Fi 802.1x แล้วหลอด LED จะถูกเปิด/ปิด หรือ เปลี่ยนสี เมื่อมีการสั่งจากโปรแกรม JavaScript ในตอนที่ 1 ในขั้นตอนการติดตั้ง Firebase สมัครใช้งาน สร้าง Database ลองหาอ่านกันเอาเองนะครับ มันง่าย ๆ ครับ เรามาเริ่มต้นที่มี Database ชื่อว่า Firstapp-IoT ที่ผมสร้างไว้แล้ว ขั้นตอนมาเราจะโปรแกรม JavaScript โดยการเขียนโปรแกรมไว้ใน local folder เครื่องของผมใช้ Windows 10 ผมก็สร้างไว้ที่ C:\myFirebase และก็ไปดาวน์โหลด firebase-tools-instant-win.exe เพื่อใช้ในการทดสอบแบบ localhost ด้วยคำสั่ง firebase serve แล้วทำการทดสอบโปรแกรมผ่านเว็บเบราว์เซอร์ที่ localhost:5000 และเมื่อโปรแกรมพร้อมใช้ก็นำขึ้นไปไว้ใน Firebase hosting ด้วยคำสั่ง firebase deploy –only hosting แล้วก็สามารถใช้โปรแกรมผ่านทางเว็บเบราว์เซอร์ที่ firstapp-iot.web.app รัน firebase-tools-instant-win.exe ในขั้นตอน setup ครั้งแรก เราสร้างไดเรกทอรีชื่อ nodemcu จะมีคำถามว่าจะสร้าง project ใหม่ หรือ ใช้ที่มีอยู่ ผมมีอยู่แล้ว ดังรูป และถัดไป เราจะเขียนโปรแกรมภาษา JavaScript ไว้ที่เรา setup ไว้ ไฟล์แรกที่เราจะเขียนคือ index.html และเมื่อเสร็จเราก็รัน firebase-tools-instant-win.exe กลับเข้ามา และทดสอบโดยคำสั่ง firebase serve และเมื่อโปรแกรมเริ่มใช้งานได้แล้ว ก็นำไปไว้บน Firebase hosting ด้วยคำสั่ง firebase deploy ดังรูป ผลลัพธ์ของโปรแกรม เมื่อเราใส่ email ที่อนุญาต ก็จะเข้าสู่หน้าต่อไปที่จะทดสอบการอัปเดตค่าข้อมูลใน Firebase Realtime Database ของ project ชื่อ Firstapp-IoT ดังรูป เมื่อคลิกที่ SET LED ON ได้ผลลัพธ์แบบนี้ สำหรับเว็บเพจ setled.html เป็นการทดสอบให้เห็นว่า เราสามารถตั้งค่า Firebase authentication ด้วย email แล้วอนุญาตให้แก้ไขข้อมูลใน Firebase Realtime Database ได้ โดยต้องไปตั้งค่า Rules ให้ดี ถัดไป คลิกที่ Goto NodeMCU ESP8266 Project ผมจะสาธิตการควบคุม Arduino NodeMCU ESP8266 ให้เปิด/ปิด LED ตรงนี้เชื่อมต่อผ่านเน็ต Wi-Fi 802.1x ทดสอบคลิก Set LED On และเลือก GREEN และดูผลลัพธ์ที่อุปกรณ์ ดังรูป ถัดไปลองอีกตัวอย่าง คลิก Set LED Off และเลือก BLUE และดูผลลัพธ์ที่อุปกรณ์ ดังรูป จบการทดสอบ จากรูปเราต่อวงจรตามตำราที่เล่าขานกันในอินเทอร์เน็ต ตรงนี้หาอ่านกันเอาเองนะครับ สังเกตเราจะใช้ก้อนถ่านพร้อมราง แต่เราก็สามารถเลือกใช้สายชาร์ตจ่ายไฟได้ ดังรูป ต่อไปมาดูส่วนโปรแกรมกันบ้าง คลิกเข้าไปในไดเรกทอรี public จะเห็นดังรูป แจกโค๊ดให้ครับ เข้าไปที่ github ตาม link นี้ https://github.com/woonpsu/firstapp-iot ถัดไปเรามาดูส่วนที่เราต้องมีใน

Read More »

A Testing Virtual Data Center with OpenNebula miniONE on KVM

โน้ตบุ๊ค HP รุ่น 6450b มีหน่วยความจำ 4 GB ผมเอามาทำเป็นเซิร์ฟเวอร์สำหรับรัน Virtual Machine (VM) ผมใช้ทดสอบติดตั้ง server หรือ services ต่าง ๆ เช่น Ubuntu server ทำงานเป็น web server เป็นต้น ผมอยากจะเรียกว่า Mobile Virtual Data Center ครับ โดยที่ผมนำซอฟต์แวร์ที่ชื่อว่า OpenNebula มาใช้ ตัวนี้ใช้ทำเป็น Virtual Data Center ขนาดใหญ่ได้เลยหากมี Hardware สเปคสูง ๆ สร้าง VM ให้บริการได้จริง เค้ามีซอฟต์แวร์สำหรับเครื่องเดียว (Test Drive) เรียกว่า OpenNebula miniONE ให้ใช้ น่าจะนำมาลงโน้ตบุ๊คได้ จึงได้ทดลองดู พบว่าใช้ได้จริง สิ่งที่ทำมีดังนี้ เตรียม USB Drive ที่ Boot เป็น Ubuntu Desktop สำหรับติดตั้ง  ดาวน์โหลดรุ่น LTS 20.04  ไฟล์นี้ ubuntu-20.04.1-desktop-amd64.iso นำมาเขียนลง USB Drive ด้วยโปรแกรม Rufus for Windows (สร้าง Bootable USB Drive ด้วยโปรแกรม Rufus for Windows) นำ USB Drive ไป Boot ที่โน้ตบุ๊ค และ ติดตั้ง Ubuntu Desktop  (ติดตั้ง Ubuntu Desktop 20.04) Boot Ubuntu Desktop ที่โน้ตบุ๊ค และเข้าใช้งานติดตั้ง OpenSSH server คำสั่ง sudo apt install openssh-server ติดตั้งเซิร์ฟเวอร์สำหรับสร้าง VM  ติดตั้ง OpenNebula miniONE on KVM แก้ไขเล็กน้อย เตรียมไว้ว่าต่อไปจะใช้ TCP Port 80 สำหรับ web server ที่เป็น VM จึงต้องแก้ไข default port จาก 80 เป็นอย่างอื่น ตั้งค่า :port: 8080 แก้ไขที่ไฟล์ /etc/one/sunstone-server.conf รันคำสั่ง sudo systemctl restart opennebula-sunstone.service หลังจากติดตั้ง miniONE จะมีการจัดการค่าทาง network ใหม่ เราต้องแก้ไขให้ Ubuntu Desktop ได้รับ DHCP IP ดังนี้ ตั้งค่า renderer: networkd ตั้งชื่อ ethernets ที่ใช้ และ dhcp4: yes แก้ไขที่ไฟล์ /etc/netplan/01-network-manager-all.yaml รันคำสั่ง sudo netplan apply รันคำสั่ง ip addr เข้า Browser ไปที่ URL http://NOTEBOOK_IP:8080 และ Login เข้าใช้ด้วย username คือ oneadmin และ password ที่ได้รับ ปรับแต่งให้ Ubuntu Desktop ทำ enable packet forwarding for IPv4 เข้าออก VM ได้ ตั้งค่า

Read More »

ติดตั้ง haproxy บน Ubuntu Desktop

เป็นขั้นตอนที่ทำขึ้น เพื่อทำการ redirect port 80 เข้าไปยัง web server ใน VM (OpenNebula miniONE on KVM) ที่เราติดตั้งไว้ในเครื่อง Ubuntu Desktop ในตัวอย่างนี้ Ubuntu Desktop มี IP 192.168.1.70 และ VM มี IP 172.16.100.3 ขั้นตอน เปิด Terminal และติดตั้ง haproxy ด้วยคำสั่ง sudo apt install haproxy เข้าทำงานสิทธิ root ด้วยคำสั่ง sudo  su  –และไปในไดเรกทอรี cd  /etc/haproxyเก็บสำรองไฟล์ config ไว้ก่อน ด้วย cp  haproxy.cfg  haproxy.cfg.origเข้าไปแก้ไขไฟล์ vi  haproxy.cfg เพิ่มบรรทัดเหล่านี้ ต่อท้ายบรรทัด errorfile 504 /etc/haproxy/errors/504.http frontend www-http    bind *:80    mode http    acl is_cms path -i -m beg /cms/    use_backend be_cms if is_cms backend be_cms    option forwardfor    server cms 172.16.100.3:80 ทำการ restart haproxy และ ดู status ทดสอบการเข้าใช้งานจากเครื่องใน network เดียวกันกับเครื่อง Ubuntu Desktop ของเรา ไปที่ http://REAL-IP/cms/  จบครับ

Read More »

ติดตั้ง CMSimple version 5.3 ใน VM ของ miniONE KVM

เป็น CMS Web Server อย่างง่าย ไม่มี database ติดตั้งลงใน OS ที่เป็น Ubuntu Server 20.04 ที่ได้ติดตั้ง apache2 web server (เปิด port 80) พร้อม php ไว้แล้วด้วยคำสั่ง sudo apt install apache2 php php-xml ขั้นตอน ไปที่เครื่อง Ubuntu Desktop ของเรา เข้าเว็บเบราว์เซอร์ OpenNebula Sunstone และเปิด VM ที่เป็น Ubuntu Server (สมมติว่า VM มี IP 172.16.100.3) เปิดเพจของ CMSimple ดาวน์โหลด CMSimple_5-3.zip ใช้คำสั่ง scp คัดลอกไฟล์ไปไว้ใน VMscp CMSimple_5-3.zip  papa@172.16.100.3เสร็จแล้ว ssh เข้าไปใน VMssh  papa@172.16.100.3 แตกไฟล์ CMSimple_5-3.zip หากยังไม่ได้ติดตั้ง apache2 และ php ให้ใช้คำสั่ง sudo apt install apache2 php และคำสั่ง sudo apt  install  php-xml นำไปไว้ใน /var/www/html/cms/sudo  mv  CMSimple_5-3  /var/www/html/cmssudo  chown  -R  www-data:www-data  /var/www/html/cms ทำ restart apache2sudo su –service apache2 restart ไปที่หน้าเว็บ http://VM_IP/cms/ ศึกษาวิธีตั้ง Password ครั้งแรกได้จากไฟล์ readme.php ทำขั้นตอน setup Password ของ CMSimplesudo su –cd /var/www/html/cms/cp  ./setup/setupControl.php  .chmod 666 setupControl.php ไปที่หน้า login ของเว็บ http://VM_IP/cms/ และใส่ Password  ไปเปลี่ยน Password ที่เมนู Settings > CMS ตั้ง Password และคลิก Save ลอง logout แล้ว login ใหม่ ใส่ Password ที่ตั้งใหม่ ตอนนี้ก็จัดการ Pages ต่าง ๆ ที่ให้มาเป็นตัวอย่าง ศึกษาวิธีทำเพจได้เอง  เมื่อ logout ทุกครั้ง จะมีแจ้งว่า ได้บันทึกเพจไว้ 2 ไฟล์ พร้อมวันที่บันทึกเป็นสำเนา จบ คิดว่า มันง่ายดีในการนำมาใช้ทดสอบ และ ใช้งานได้จริงสำหรับเว็บเพจง่าย ๆ

Read More »

สร้าง VM OpenNebula miniONE on KVM ตอนที่ 2 add one-context

เป็นขั้นตอนติดตั้ง one-context ต่อจากตอนที่แล้ว ขั้นตอน คำสั่ง sudo su – และ คำสั่ง  wget https://github.com/OpenNebula/addon-context-linux/releases/download/v5.12.0.2/one-context_5.12.0.2-1.deb ลบ cloud-init ด้วยคำสั่ง apt-get purge -y cloud-initติดตั้งด้วยคำสั่ง dpkg -i one-context_*deb || apt-get install -fy เมื่อเสร็จ ให้ออกจาก web console และ คลิก Power off hard เอา CD-ROM ออก เมื่อถึงตรงนี้ VM นี้ก็พร้อมใช้เป็นต้นแบบในครั้งต่อไปได้ เราจึง Save as Template สมมติให้ชื่อว่า ubuntu-server-20.04 ปรับแต่ VM Template เพื่อเติมสิ่งที่เกี่ยวกับ Context โดยคลิกปุ่ม Update คลิกที่ Context และ คลิกที่ตัวเลือกทุกอัน ใส่ Custom vars คือ SET_HOSTNAME, USERNAME และ PASSWORD ตอนนี้ VM Template นี้ ก็พร้อมใช้งาน เพื่อสร้าง VM ใหม่อันต่อไป โดยจะคลิกที่คำว่า Instantiate ก็ได้ เลือกได้ว่าจะให้สร้างทีละกี่ instances ส่วนชื่อให้ละไว้ไม่ต้องใส่ก็ได้ จะได้ชื่อจาก ชื่อ VM Template และต่อท้ายด้วย VMID คลิกที่ web console เพื่อเข้าไปใช้งาน VM จะได้หน้านี้ ทดสอบ login ด้วย username ชื่อ papa ตามที่เราตั้งใน Context หน้า Dashboard หลังจากที่เราสร้างเสร็จ 1 ตัว หากเข้าหน้าเว็บ Sunstone ไม่ได้เพราะลืม password ของ username oneadmin ดูที่นี่ ถึงตรงนี้ เราควรจะ ssh จาก ubuntu desktop เข้าไปยัง VM ได้ แต่หากเราไม่สามารถ ssh เข้าไปยัง VM เพราะว่า ssh host key ไม่มีเนื่องจากข้อผิดพลาดในขั้นตอนติดตั้ง Ubuntu server ให้สร้างด้วยคำสั่ง ssh-keygen -A ในเครื่อง VM แล้ววนกลับไปสร้าง VM Template ใหม่  ในตอนต่อไปก็จะเป็นการติดตั้ง CMS Web Site เพื่อใช้ในการทดสอบการให้บริการ TCP port 80 ผ่าน HAPROXY ของเครื่อง ubuntu desktop

Read More »