ครั้งที่แล้วแนะนำ High Availability MQTT Cluster แบบ Back to Basic ไว้เนื่องจากจะได้เข้าใจว่าหลักการเป็นอย่างไร ได้ลองติดตั้ง Ponte ตั้งค่า HA Proxy ฯลฯ ครั้งนี้เราจะใช้ Docker Compose ในการสร้าง Container ในส่วน MQTT Broker, HAProxy และ MongoDB สั่งงานครั้งเดียวจบ ตัวอย่างนี้เหมาะสำหรับศึกษาเท่านั้น หากต้องการเอาไปใช้งานควรแยก data volume ของ mongodb ออกมาด้วยครับ

จากภาพเดิมเราจะใช้ Docker Compose สร้าง Container ทั้งหมดขึ้นมาซึ่งประกอบไปด้วย

  • HA Proxy
  • MQTT Broker 1
  • MQTT Broker 2
  • MongoDB


Continue reading

ครั้งที่แล้วพาเล่น MQTT Cluster กันไปบ้างแล้ว ครั้งนี้เรามาลองวิธีง่ายๆ โดยใช้บริการของ AWS กันบ้าง AWS เครื่องมือพร้อมสำหรับการทำ Load Balance และการทำ Auto Scaling มาให้ด้วย เพราะฉนั้นการทำ Horizontal Scaling จะทำได้ง่ายมากๆ เพียงแค่คลิกเท่านั้นเอง จากภาพเดิมเราจะ Scale MQTT Broker โดยใช้ Elastic Scaling ของ AWS กัน

เนื้อหาไม่รวม Authentication, Secure Connection สำหรับ Persistance Storage คุณอาจเลือกใช้ DynamoDB หรือ RDS ได้ หากต้องการใช้ MongoDB Cluster อ่าน Reference Guide เพิ่มเติมได้ที่ MongoDB บน AWS Cloud

ขั้นตอนมีดังนี้

  • สร้าง instance พร้อม private network 2 เครื่อง
  • ติดตั้ง MongoDB ไปยังเครื่องที่ 1 เพื่อใช้เป็น Persistent Storage
  • ติดตั้ง Ponte ไปยังเครื่องที่ 2 ตั้งค่าเก็บข้อมูลมายังเครื่องที่ 1
  • สร้าง Snapshot ของเครื่องที่ 2
  • สร้าง Scaling Groups กำหนดขนาดของและเงื่อนไขในการ Scale
  • สร้าง Load Balancer และเพิ่ม instance ที่ Scaling Groups สร้างมาให้
  • กำหนด Load Balancer ให้ Scaling Groups ใช้เป็น Elastic Scaling


Continue reading

เนื่องจากจำไม่ได้ว่าใครถามเรื่อง High Availability MQTT Cluster แต่ที่จำได้ผมบอกไปว่า Mosca + Haproxy น่าจะจบก็ไม่ได้ทำอะไรต่อเพราะน่าจะเข้าใจแล้ว แต่ก็คิดไปคิดมาก็เลยลองดูสักหน่อยว่าใช้ได้หรือเปล่า T_T จาก Blog ของ Lelylan อธิบายเรื่อง High Availability MQTT Cluster ไว้ได้ดีในเรื่องของการประยุกต์ใช้ Docker และ MQTT Broker ซึ่งถือว่าเป็น Micro Service ถ้าสนใจก็ลองไปอ่านได้ครับ

กลับมา Back to Basic เราจะไม่ใช้ Docker เพื่อให้เกิดความเข้าใจเรื่อง HA กับ MQTT Broker ในเบื้องต้นก่อนครั้งหน้า (ถ้าไม่ลืม) เราจะมาเล่น Docker Machine + Swarm + Compose ทำ High Availability MQTT Cluster กันอีกรอบ

Continue reading

เมื่อวานได้ลองเล่น DW.miniESP กับจอ OLED กันไปแล้ว ครั้งนี้ขอมัดรวมพ่วงกับ DHT22 เพื่อวัดอุณหภูมิและความชื้นด้วย ยังไม่ได้ส่งข้อมูลไปไหนนะครับ แค่ใช้อ่านและแสดงผลผ่านจอเท่านั้น เราสามารถใช้ library DHT22 ของ Adafruit ได้ เพียงแก้ไขตอน init dht เท่านั้นเอง


Continue reading

ESP8266 สามารถใช้งาน I2C ได้และสามารถเชื่อมต่อกับจอ OLED แบบ I2C ได้ ซึ่งทาง Chiang Mai Maker Club ได้แก้ไข library จอ OLED ชื่อ Adafruit_SSD1306 ซึ่งเดิมใช้งานร่วมกับ Arduino ให้สามารถใช้งานกับ ESP8266 ได้ และทำตัวอย่างออกมาให้ดูกัน ผมมีจอ OLED 128×64 สีฟ้ากับ DW.miniESP ของ อ.เดียว อยู่ก็เลยมาลองเล่นบ้าง

วิธีการก็ง่ายมากๆ ติดตั้ง library Adafruit_SSD1306 และ Adafruit_GFX เอาไฟล์ตัวอย่างเฉยๆ T_T


Continue reading

ผมได้ DW.miniESP เป็น IoT Dev Kit ขนาดเล็กพร้อม ESP8266 (ESP-07) พัฒนาโดย Deaware สามารถเสียบลง Bread Board ใช้งานได้ทันที ตัวบอร์ดมี regurator 5.0v มาให้ด้วย สามารถเสียบ battery หรือใช้ไฟจาก usb-to-ttl ก็ได้ สำหรับท่านที่เป็นห่วงเรื่องสัญญาณ Wifi ตัว ESP-07 มีจุดเชื่อมต่อเสาอากาศเพิ่มได้ด้วย ตัวบอร์ด DW.miniESP มีหน้าตาแบบนี้

สำหรับการใช้งาน DW.miniESP มาพร้อมกับ NodeMCU คุณสามารถเขียนภาษา lua ใส่เข้าไปได้เลย หรือหากต้องการเขียนแบบ native โดยใช้ Arduino ESP ก็สามารถทำได้เช่นกัน


Continue reading

Sparkfun เปิดโครงการโอเพนซอร์ส data.sparkfun.com ชื่อ phant.io เป็นบริการจัดเก็บข้อมูลสำหรับอุปกรณ์ IoT เหมาะสำหรับท่านที่อยากมีระบบจัดเก็บข้อมูลอย่างง่าย phant.io ใช้ node.js เป็นหลักทำให้ง่ายต่อการ deploy และใช้งาน การส่งข้อมูลจาก IoT ไปยัง phant ใช้ HTTP Request ปกติ มาลองเล่นกัน

ติดตั้ง Node.js ให้เรียบร้อย จากนั้นสั่งติดตั้ง phant ดังนี้

sudo npm install -g phant

จากนั้นเรียก phant ขึ้นมาทำงานดังนี้

phant


Continue reading

ชุมชน ESP8266 มีการพัฒนา Arduino IDE เพื่อรองรับการพัฒนาโปรแกรมใส่ลงใน ESP8266 โดยไม่ต้องพึ่ง NodeMCU ไม่ต้องหัดเขียนภาษาใหม่ IDE ชุดนี้เพิ่ม esptool ใช้เป็นเครื่องมือในการอัพโหลด firmware ที่ได้จากการคอมไพล์ สำหรับท่านที่อยากลอง ดาวน์โหลดได้ที่หน้าโครงการใน GitHub ครับ ซึ่งมีให้ดาวน์โหลดทั้ง Windows, Linux และ OSX วิธีการใช้งานคุณสามารถใช้คู่กับ FTDI หรือบอร์ด Arduino ก็ได้

ผมใช้บอร์ด Arduino ละกัน เมื่อได้ IDE มาแล้วให้เปิดตัวอย่าง WebServer ขึ้นมา


Continue reading

Ubuntu Core รองรับ CPU ตระกูล ARMv7 ซึ่งสามารถใช้งานร่วมกับ Raspberry Pi 2 ใช้กับ Raspberry Pi 1 ไม่ได้เพราะใช้ ARM คนละเวอร์ชั่น นอกจากนี้ยังใช้งานร่วมกับ Odroid และ BeagleBone Black ได้อีกด้วย มาดู Ubuntu Core สำหรับ Raspberry Pi 2 กันก่อน ดาวน์โหลด Snappy Ubuntu Core ได้ที่หน้าดาวน์โหลด

จากนั้นสร้าง boot sdcard บน Linux ดังนี้

unzip 2015-02-03-pi-snappy.zip


Continue reading

มาเล่น Ubuntu Core บน Google Compute Engine กันบ้าง ตามที่ Canonical ประกาศว่า Ubuntu Core ทำงานบน Cloud ได้ บน IoT Devices ก็ได้ แต่ Snappy เหมือนจะไม่มีอะไรให้เล่นเลย ครั้งนี้มาลองใช้งาน Ubuntu Core บน Google Compute Engine และติดตั้ง MQTT Broker เพื่อรองรับงาน Internet of Thing กันดูบ้าง จะได้รู้กันไปเลยว่า Ubuntu Core ทำได้ ตัวอย่างอาจจะแปลกไปสักหน่อย ครั้งหน้าจะแนะนำบน Raspberry Pi 2 B+ ก็แล้วกันครับ ครั้งนี้มาลองเล่นบน GCE กันก่อน สร้าง project บน Google Developer Console ให้เรียบร้อย

สำหรับท่านที่ยังไม่มี command line tools แนะนำให้ติดตั้งให้เรียบร้อย สำหรับ Ubuntu 14.04 ติดตั้งตามนี้ได้เลย


Continue reading