MQTT (Message Queue Telemetry Transport) เป็นโปรโตคอลสำหรับ Internet of Things โปรโตคอลนี้ใช้วิธีการเหมือนกับ Message Queue ปกติแต่พัฒนาให้รองรับงานด้าน Internet of Things นอกจากจะรอรับและอ่านค่าแล้ว ยังสามารถสั่งงานอุปกรณ์ที่ใช้ MQTT ได้ด้วย การใช้งานโปรโตคอลนี้ต้องจะต้องมีอุปกรณ์ที่ฝัง MQTT Broker มาเพื่อทำหน้าที่รับส่งข้อมูลไปยังอุปกรณ์อื่นที่ใช้ MQTT เหมือนกัน เนื่องจากไม่มีอุปกรณ์ที่เล่นกับ MQTT ได้ก็ต้องจำลองกันสักหน่อย

MQTT Broker มีหลายค่ายให้ใช้งาน เราเลือกใช้ของง่ายๆ กันก่อน คือ Mosquitto เจ้ายุงนี้เป็น OpenSource MQTT Broker สนับสนุน MQTT Broker v3.1/3.1.1 วิธีการติดตั้งก็ง่ายมาก ติดตั้งผ่าน PPA ได้เลยดังนี้

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa

sudo apt-get update

sudo apt-get install mosquitto python-software-properties

เท่านี้ก็ใช้งานได้แล้ว อ้อเกือบลืม mosquitto ทำงานบน port 1883 ครับ ได้ Broker แล้วจะทดลองเล่นยังไง มี 2 ทางเลือกคือ ใช้ MQTT Client หรือเขียนโปรแกรมเชื่อมต่อ ทางเลือกที่ดีที่สุดคือใช้ Client ครับ :) ผมเลือก Client ที่คิดว่าน่าจะใช้ง่ายที่สุดคือ MQTT Spy ครับ ดาวน์โหลดมาแล้วเรียกใช้งาน เราจะได้หน้าตาแบบนี้
Continue reading

ครั้งที่แล้วพาเล่น Node-RED โดยดึงข้อมูลจาก Twitter แล้วสั่ง ReTweet ผ่าน Node-RED กันไปบ้างแล้ว ครั้งนี้จะมาลองเขียน REST API ง่ายๆ ผ่าน Node-RED กันบ้าง หากคุณยังไม่มี Node-RED ก็สามารถติดตั้งได้ตามวิธีการในครั้งที่แล้ว หรือใช้ Boilerplates Node-RED Starter ใน Bluemix ก็ได้ครับ เข้าไปที่ Node-RED กันได้เลย วาง block http input และ output debug เชื่อม block ให้เรียบร้อย เราจะรับค่าจาก http request แล้วส่งไปแสดงผลใน debug ที่หน้า web console ตั้งค่า http input ดังนี้

จากนั้นเปิด rest client มาลองทดสอบกัน เริ่มจากทดสอบ POST request ก่อน เราจะพบว่า Node-RED สร้าง REST Server ให้เราพร้อมสั่งให้รับค่าแบบ json ผ่าน POST request เท่านั้น


Continue reading

Ardublock เป็น Block Code ตัวนึงใช้งานเหมือนกับ Block Code ใน LEGO การเขียนโปรแกรมก็ง่ายมากๆ เพียงแค่ลาก block มาวางต่อกัน แล้วสั่งอัพโหลดโปรแกรมไปที่ Arduino ได้เลย Ardublock ยังสนับสนุนชุด break out ของค่ายต่างๆ ด้วย เช่น DFRobot, Adafruit, SeedStudio เป็นต้น ทำให้การเขียนโปรแกรมร่วมกับชุด break out เท่านั้นทำได้ง่ายมากขึ้น และที่สำคัญไม่ต้องกังวลว่า library ของอุปกรณ์จะไม่ครบ Ardublock ยังบอกลิงค์สำหรับดาวน์โหลด library เพิ่มเติมให้เราอีกด้วย มาลองเล่นกัน

ดาวน์โหลด Ardublock ได้ที่ http://sourceforge.net/projects/ardublock/ เมื่อได้ไฟล์ jar มาแล้ว ก็คัดลอกลงใน ไดเรทอรี tool ของ Arduino Sketch ส่วนใหญ่อยู่ในไดเรคทอรี document ตัวอย่าง

  • Mac, /Users/YOUR-USERNAME/Documents/Arduino/tools/ArduBlockTool/tool/ardublock-all.jar
  • Linux, /home/YOUR-USERNAME/sketchbook/tools/ArduBlockTool/tool/ardublock-all.jar
  • Windows, C:\Users\YOUR-USERNAME\Documents\Arduino\tools\ArduBlockTool\tool\ardublock-all.jar

การใช้งานก็เปิด Arduino Sketch ขึ้นมาปกติ แล้วเปิด Ardublock จากเมนู Tools > Ardublock ลองเขียนแบบ Block ดูบ้าง

กด Upload to Arduino ก็จะได้โค้ดมาพร้อม compile และ upload ไปยัง board ให้เลย

Ubuntu 14.04 มี Java 7 ติดตั้งมาให้ ซึ่งเป็น Open JDK 1.7 แต่หากต้องการติดตั้ง Java 8 จาก Oracle ต้องทำยังไง หลายท่านถามคำถามนี้เข้ามา ก็เลยถือโอกาสแนะนำวิธีการติดตั้ง Java 8 บน Ubuntu 14.04 วิธีการติดตั้งแบบง่ายที่สุด คือใช้ PPA ดังนี้

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java8-installer oracle-java8-set-default

เพื่อความแน่ใจ ตรวจสอบสักนิดว่าเป็น Java 8 หรือยังด้วยคำสั่ง

java -version

เนื่องจากติดลมจาก Internet of Things Foundation ของ IBM Bluemix ที่มี BoilerPlate ให้บริการ โดยจับเอา Node.js และ Node-RED ซึ่งเป็นโครงการ OpenSource อยู่แล้วมาให้บริการ ถ้าจะไปใช้ใน Bluemix เลยก็ง่าย สะดวก และรวดเร็วมาก แต่ต้องรู้พื้นฐานของ Node-RED กันก่อน ไม่อย่างนั้นไปใช้บน Bluemix มีหวังได้ งมจนหมดเวลาใช้งานแน่นอน กลับมา Back to Basic กันก่อนครับ Bluemix และ Cloud Service ต่างๆ ปล่อยมันไปก่อน Node-RED เป็นโครงการ OpenSource ช่วยให้คนที่พัฒนา Internet of Things ไม่ต้องเขียน API ฝั่ง server เอง เอาง่ายๆ ไม่ต้องรู้เรื่องเยอะก็ได้ ขอให้ใช้เครื่องมือแบบลางวางและตั้งค่าผ่าน Node-RED ให้ได้ก็พอ ซึ่ง Node-RED จะมีบริการหลังบ้านให้คุณได้ออกแบบ API ว่าจะรับค่ามาอย่างไร คำนวณ แปลงข้อมูล เก็บข้อมูล หรือสื่อสารกับบริการอื่น ได้อย่างไร เรียกได้ว่าสะดวกมากๆ

ขึ้นชื่อว่า Node การใช้งานก็ต้องมี Node.js ก่อน แล้วค่อยติดตั้ง node module เข้าไปเพิ่มแล้วจึงจะเริ่มใช้งานกันได้ สำหรับการติดตั้ง Node.js บน Ubuntu 14.04 LTS ก็ง่ายๆ แค่นี้

sudo apt-get update

sudo apt-get install nodejs npm

จากนั้นก็ ใช้ git สั่ง clone repository ของโครงการ Node-RED มาดังนี้

git clone https://github.com/node-red/node-red.git


Continue reading

เนื่องจากมีสมาชิกเพจ ThaiOpenSource ถามเรื่องดูอุณหภูมิของ CPU ว่ามีอุณหภูมิเท่าไร ผมก็เกือบตอบไปว่าเอา DS1820 ไปจับ ล้อเล่นน่ะครับ :P จริงๆ แล้ว CPU มี sensors มากับตัวมันเองอยู่แล้วซึ่งโดยปกติเอาไว้ควบคุมการทำงานของ Main Board เพืิ่อปรับความเร็วรอบของการหมุนของพัดลม และใช้งานอย่างอื่นที่เราอยากเอาไปใช้ โดยส่วนใหญ่จะต่อตรงกับระบบ Monitoring ต่างๆ กลับมาเรื่อง sensors กันต่อ วิธีการดูสามรถดูได้หลายวิธี วิธีง่ายที่สุดคือผ่าน lm_sensors ครับ ให้ลองดูใน cpuinfo ว่ารองรับ lm sensors หรือเปล่า ด้วยคำสั่ง

grep lm /proc/cpuinfo

หากมี flags ว่า lm ถือว่าใช้ได้ ติดตั้ง lm_sensors ต่อได้เลย ถ้าใช้ Debian/Ubuntu ติดตั้ง package lm_sensors ดังนี้

apt-get install lm-sensors

ถ้าใช้ RedHat/CentOS ติดตั้ง package lm_sensors ดังนี้

yum install lm_sensors

เมื่อติดตั้งได้แล้วก็มาลองดูกัน ใช้คำสั่ง

sensors

เราก็จะได้ค่าอุณหภูมิของ CPU ออกมาแล้ว :)

Bluemix เป็นบริการ Cloud Computing ของ IBM ซึ่งเน้นในด้าน Platform as a Service (PaaS) โดยใช้ Cloud Foundry ซึ่งเป็น OpenSource มาพัฒนาต่อและให้บริการ สำหรับท่านที่ใช้ Cloud Foundry มาก่อนก็ใช้งานเหมือนๆ กัน แต่ Bluemix สามารถใช้งานได้ทั้งในรูปแบบ cli ผ่าน Cloud Foundry Cli ปกติ และการทำงานผ่านหน้าเว็บไซต์ Bluemix โดยตรง platform ที่ให้บริการใน Bluemix มี 4 platform หลักคือ java, node.js, ruby on rails และ ruby sinatra นอกจากนี้จะเป็น service, add-on ซึ่งสามารถเพิ่มเข้ามาได้ในภายหลังได้ นอกจากนี้ยังมี boilerplates ที่รวมเอา runtime และ service เข้ามาให้บริการร่วมกันสร้างเป็นบริการเฉพาะทาง เช่น Internet of Things platform, Mobile Cloud, Node Cached Starter, Big Data และอื่นๆ อีกมากมาย

สำหรับการใช้งาน Bluemix ต้องสมัครสมาชิกก่อน สมัครได้ฟรีโดยไม่ต้องใช้บัตรเครดิต แต่ใช้งานได้ฟรี 30 วัน หากติดใจอยากให้งานต่อแนะนำให้ติดต่อเซล เพื่อขอเปิด Pay Account ครับ หากไม่คิดจะใช้งานต่อ แนะนำให้รีบเอาข้อมูลออกมาก่อนหมดระยะเวลาใช้งานฟรี 30 วัน ไม่อย่างนั้นจะไม่มีโอกาสเอาข้อมูลกลับมานะครับ อันนี้ประสบการณ์ตรง :P เอาล่ะ เมื่อสมัครสมาชิกกันแล้วก็เริ่มใช้งานกันได้ อย่างที่บอกคือ ถ้าเคยใช้ Cloud Foundry มาก่อนไม่ยากเลยครับ ขั้นแรกไปดาวน์โหลด Cloud Foundry CLI กันก่อน เลือก Binary หรือ Installer ก็ได้ เลือกให้ตรงกับระบบปฏิบัติการที่คุณใช้นะครับ
Continue reading

หลังจากที่ใช้ Web Interface ของ Cacti กันคล่องแล้วจาก How-To 3 ครั้งที่ผ่านมาใน How-To ครั้งนี้มาเอาใจใครหลายคนที่ไม่ชอบ คลิกเม้าส์ อย่างน้อยก็ Writer ท่านหนึ่งใน thaiopensource.org นี่แหละครับ ใน How-To ครั้งนี้จะเป็นหัวข้อเกี่ยวกับ Cacti Scripts ซึ่งเป็น Scripts ที่ Cacti สร้างขึ้นมาในรูปแบบ ของ cli โดยใช้ภาษา php มาเริ่มกันเลย
เข้าไปที่ไดเรกทอรี่ /usr/share/cacti/cli เพื่อเข้าไปใช้งานไฟล์ .php ด้วยคำสั่ง

cd /usr/share/cacti/cli


Continue reading

Cacti เป็นหนึ่งในเครื่องมือการดูแลอุปกรณ์บนระบบเครือข่ายโดยที่จะแสดงผลเป็นลักษณะของกราฟที่สามารถเข้าใจได้ง่ายและสามารถจัดการกราฟของแต่ละอุปกรณ์ให้เป็นหมวดหมู่รวมถึงเลือกดูกราฟย้อนหลังได้ โดยมีการส่งผ่านข้อมูลจากเครื่องในระบบเครือข่ายมายังเครื่องที่ติดตั้ง Cacti ด้วยโปรโตคอล SNMP วิธีการติดตั้งก็ไม่ยากสามารถติดตั้งตามได้ใน How-To นี้ถ้าพร้อมแล้วก็ติดตั้งกันเลย….
Continue reading

การกำหนด machine constraints บน juju คือการเลือก hardware ที่จะใช้ในการ deploy service ต่างๆ เช่น ต้องการกำหนดสเปคของ hardware (machine) ที่จะใช้รัน mysql (service) ว่าต้องมี cpu อย่างต่ำ 4 cores และ RAM อย่างน้อย 8GB เป็นต้น

การกำหนด constraint บน juju นั้น จะช่วยให้เราได้ประสิทธิภาพที่เหมาะสม ถ้าลองเปรียบเทียบก็จะเหมือนกันสมัยก่อน ที่เราจะซื้อเซิร์ฟเวอร์มาลงอะไรสักอย่างหนึ่ง เราก็ต้องกำหนดสเปคของ hardware ว่า minimum spec ที่จะสามารถรันระบบที่เราจะติดตั้งได้นั้น ควรเป็นยังไง

การกำหนด constraints ก็ทำนองเดียวกัน แต่ตัวอย่างข้างบนที่ออกจะโบราณไปหน่อยนั้น ถ้าเทียบกับการกำหนด constraints บน juju แล้ว ผมว่ามันลดความลำบากของเราลงไปเยอะครับ
Continue reading