23
Page 1 of 23 Week11 Raspberry Pi Check 4 of 5: MQTT Test0: Concept IoT via MQTT http://www.10logic.com/technology/iot- technology.html Broker, Publisher and Subscriber Test1: Publisher from Raspberry Pi http://tosakunmeeting.blogspot.com/2015/05/ raspberry-pi-mqtt-1.html Send Temperature DS1820 from Raspberry Pi to MQTT Broker Test2: Subscriber from Raspberry Pi Subscribe to “test.mosquitto.org” read some data from dashboard Set Condition from data to control Output Test3: Set Broker on Raspberry Pi ลลลลลล Raspberry Pi ลลลลลลลลล MQTT Broker (Mosquitto) { http://www.sathittham.com/raspberry-pi/rpi- mqtt-broker/ } ID__________ Name

WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 1 of 22

Week11 Raspberry Pi Check 4 of 5: MQTT

Test0: Concept IoT via MQTT http://www.10logic.com/technology/iot-

technology.html Broker, Publisher and Subscriber

Test1: Publisher from Raspberry Pi http://tosakunmeeting.blogspot.com/2015/05/

raspberry-pi-mqtt-1.html Send Temperature DS1820 from Raspberry Pi to

MQTT Broker

Test2: Subscriber from Raspberry Pi Subscribe to “test.mosquitto.org” read some

data from dashboard Set Condition from data to control Output

Test3: Set Broker on Raspberry Pi ลองเอา Raspberry Pi มาทำาเปน MQTT Broker (Mosquitto) {

http://www.sathittham.com/raspberry-pi/rpi-mqtt-broker/ }

Read This : http://thaiopensource.org/ ตดตงและใชงาน - mqtt-broker- กน /

ID__________ Name ___________________Date

Page 2: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 2 of 22

Read This : http://raspberry-pi-th.blogspot.com/2015/11/how-to-install-mosquitto-mqtt-broker-on.html

Page 3: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 3 of 22

Test0: Concept IoT via MQTThttp://www.10logic.com/technology/iot-

technology.htmlปจจบนเทคโนโลยทกำาลงมาแรงสำาหรบนกพฒนาดาน Embedded (ไม

ไดแคเฉพาะ Embedded อยางเดยวครบ) เปนเทคโนโลยทกลาวกนมากคงจะหนไมพน IoT ซงเปนเทคโนโลยใหมในยคนเลยกวาได แรงขนาดทวา Microsoft เอง กยงพอรต Windows 10 มาวงเลนบน Raspberry Pi แถมยงใจดตด IoT มาใหดวย ซงผมยงไมไดตามลงไปดวาใช Broker ตวไหน และม Library ใหใชงานมาดวยหรอไม? หรอไมผมกเขาใจผดเกยวกบมนครบถาผดพลาดกขออภยมานะทนดวยครบ.

IoT มนคออะไร พอคนดมหลายลงคอธบายไวมากมาย เชน Internet of Things เมอคอมพวเตอรเรมคยกนเองได  , โลกแหง IoT มาถงแลว   , IoT เทคโนโลยทธรกจตองร. ลองนกภาพดครบวาถาหากอปกรณสามารถสงงานไปมาหากนไดผาน www ไมวาจะเปน PC, Smart Phone หรอแมแตอปกรณขนาดเลกพวก Micro-Controller, PLC, HUB, Switch หรออะไรกแลวแตทมนสามารถตอระบบ Network ไมวามนจะอยทบาน ทโรงงาน ไร นา ฟารมโรงเรอน โรงงานอตสาหกรรมหรอทอนๆทมระบบเนตเวอรทเขาถง www ไดเราจะสามารถควบคมมนไดทงหมดทไหนกไดในโลกใบน

IoT ทำามวธการทำางานอยางไร องคประกอบหลกของ IoT จะม 3 สวนคอ Broker, Publisher และ Subscriber. ซงการรบและสงขอมลนนมนจะสงขอมลไปมาหากนนนจะสงผานตวกลางนนกคอ Broker Server โดยตวสงนจะเรยกวา Publisher  สงขอมลขนไปยง Broker พรอมระบหวขอ(Topic) ทตองการสงขอออกไป จากนนตวรบซงเรยกวา Subscriber ถาหากตวรบตองการรบขอมลจากตวสงจะตองทำาการ Subscribe หวขอ Topic ของ Publisher นนๆ ผาน Broker เชนกน

Page 4: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 4 of 22

IoTจากรปภาพดานบนจะมตว Publisher ทำาการ Public ขอความ “Hello”

ใน Topic Device1 เมอและถาหากมคอมพวเตอร หรออปกรณอนๆทำาการ Subscribe หวขอ Topic Device1 เมอ Publisher ทำาการสงขอมลไปยง Topic อปกรณ Subscribe จะไดขอความ “Hello” เชนเดยวกน. กคลายๆกบทใชงานไลนทคยกนเปนกลมนนเลยครบ. ซงจะเหนขอความ “Hello” ในเวลาเดยวกนนนหมายความวาอปกรณใดๆททำาการ Subscribe Topic เดยวกนกจะไดขอความเดยวกนครบ

โปรโตคอลทใชสำาหรบรบและสงขอมลนนคอ MQTT ปจจบนถง Version 3. 1 ในทนจะมาทำาการทดลองสงขอมลกนตว Server จะมอยดวยกนหลายคายครบสำาหรบทลสมาดานลางนครบ

Open Source MQTT Broker Server Mosquitto RSMB ActiveMQ Apollo Moquette Mosca RabbitMQ

Client Paho Xenqtt mqtt.js

Page 5: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 5 of 22

node_mqtt_client Ascoltatori Arduino MQTT Client

สำาหรบ MQTT Broker Server ฟรทผมพอคนไดกมดงนครบ test.mosquitto.org broker.mqttdashboard.com

Step1a/3 กำ�หนดตว Subscribe สำาหรบเครองมสำาหรบทดสอบทจะทำาการสงขอมล(pub) และรบ

ขอมล(sub) กมอยดวยกนหลายตวครบเชน แตละเลอกมาใชงานสกตวหนง ในทนผมเลอกเปน plugin สำาหรบ chrome คอ MQTTLens

Page 6: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 6 of 22

Mqttlens

mqttlensเปด MQTTLens ขนมาจากนนปอนรายละเอยด เมอปอนรายละเอยดครบ

ใหคลกท CREATE CONNECTION Connection Name: test_MQTT อะไรกได

Hostname: test.mosquitto.org Port: 1883 default = 1883 Client ID: RXL77Nb ตามท MQTTLens ให

มา

mqttlens Subscribe: android@10logic

ในทนผมจะทำาการ Subscriber ท Topic ชอวา android@10logic

Page 7: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 7 of 22

Step2a/3: กำ�หนดตว Publisher Publisher ซงเปน App

สำาหรบ Android ทำาการ Public ขอความ Hello 10logic ไปยง Topic android@10logic  เขาไปใน play store และคนคำาวา MyMQTT แลวตดตงลงบน Smart Phone ของเราครบ

MyMQTTเปด MyMQTT และเขาไปยงเมน Settings

Page 9: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 9 of 22

Step3a/3: ทดสอบก�รทำ�ง�น MyMQTT

เมอผมใช Smart Phone ทมอยทำาการ Public ขอความ “Hello 10logic” ผาน MyMQTT แสดงผลตามรป

mqttlensจะเหนวาสามารถรบขอความ Hello 10logic ไดตามตวอยางดงภาพ เหน

ภาพกนแลวใชไหมครบ ทนเมอนกพฒนาตองการสงขอมลจากอปกรณ embedded สามารถสงขอมลขนมาไดเชนกน

Page 10: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 10 of 22

Test1: Publisher from Raspberry Pihttp://tosakunmeeting.blogspot.com/2015/05/raspberry-pi-

mqtt-1.htmlMQTT (http://mqtt.org/) ยอมาจาก Message Queue

Telemetry Transport เปน protocol การสอสารแบบหนง ทออกแบบมาเพอใชงานกบอปกรณอเลกทรอนกสขนาดเลก เชน  Arduino Raspberry PI  เปนตน  ใชหลกการแบบ publisher / subscriber (pub/sub paradigm)  ดงภาพ 

คลายกบหลกการทใชใน Web Service ทตองใช Web Server เปนตวกลางระหวางคอมพวเตอรของผใช แต MQTT จะใชตวกลางทเรยกวา Broker เพอทำาหนาท จดการคว รบ - สง ขอมลระหวางอปกรณ และทงในสวนทเปน Publisher และ Subscriber 

ขอมลใน MQTT จะใช Topic (นาจะเรยกวาหวขอ นะ) เปนตวอางองหลก ดงนนขอมลท Publisher จะสงออกไปยง  Broker ตองม Topic กำากบไวเสมอ ทางฝาย Subscriber กจะอางถง Topic เพอใหไดขอมลทตองการ

วาไปแลวระบบจะเหมอนกบเราไปสมครเปนสมาชก (subscribe) นตยสารฉบบหนง ชอของนตยสารกเปรยบไดกบ topic และผผลตนตยสารกเปรยบไดกบ publisher เมอถงเวลาทนตยสารเสรจ ผผลตกใหตวกลาง (broker) นำานตยสารมาสงใหเราทบาน

รจกกบ MOSQUITTO

Page 11: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 11 of 22

MQTT เปนเพยง Protocol สอสาร ในการใชงานจรง จำาเปนตองม Software และ Hardware มารองรบ MOSQUITTO (http://mosquitto.org/) เปน Open source Message Broker ทสนบสนน MQTT การตดตง MOSQUITTO ไมใชเรองยาก แตในบทความนจะใช Broker ททาง MOSQUITTO เตรยมไวใหเพอในการเรยนรและทดสอบโดยไมเสยคาใชจายซงม URL คอ test.mosquitto.org   (ศกษาขอมลการใหบรการเพมเตมไดท URL ดงกลาว)

MQTT Application ดวย PythonPaho project (http://www.eclipse.org/paho/) เปนโครงการ

พฒนา MQTT Library ซงมใหใชงานในหลายภาษารวมทง Python มชอเรยกวา paho-mqtt

Page 12: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 12 of 22

ตดตง paho-mqtt บน Raspberry PI (หรอ Linux )ทำาไดสองวธวธท 1. ในกรณทตดตง python setuptools (https://pypi.python.org/pypi/setuptools) ไวแลว  ใชการตดตงผานคำาสง pip$ sudo pip install paho-mqtt

วธท 2. ตดตงจาก source code (https://www.eclipse.org/paho/clients/python/)git clone http://git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.python.gitcd org.eclipse.paho.mqtt.python.gitsudo python setup.py install

เรมสร�งโปรแกรมอย�งง�ยเพอใหเขาใจหลกการทำางานเบองตน ผมจะใช Raspberry PI ทำาหนาท

เปนทง อปกรณฝง Publisher และ Subscriber บนเครองเดยวกน และใช test.mosquitto.org เปน Broker กจะมระบบครบตามสถาปตยกรรมทกลาวถงกอนหนา

Page 13: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 13 of 22

ตวอย�ง Code – test1_MQTT.py# test1_MQTT.pyimport paho.mqtt.client as mqttimport time

BROKER_PORT = 1883BROKER_HOST = "test.mosquitto.org" # Test host from mosquitto.orgKEEPALIVE = 60 #maximum period in seconds allowed between communicationTOPIC='tk/demo'

def on_connect(client,userdata,results): print "Connected with result "+str(results) client.subscribe(TOPIC,0) # subscribe to broker with topic def on_publish(client,userdata,mid): print "Message has been published with id = "+str(mid)

def on_message(client,userdata,msg): print "Incomming message is "+msg.topic +":"+msg.payload client = mqtt.Client() # Be generated when client receives CONNACK message from broker.client.on_connect = on_connect

# Be generated after client has published message to broker.client.on_publish = on_publish

# Be generated after message from broker arrived.client.on_message = on_message

client.connect(BROKER_HOST,BROKER_PORT,KEEPALIVE)client.loop_start()

while True: try : time.sleep(5) #option, do not need client.publish(TOPIC,"Hello") except KeyboardInterrupt : client.unsubscribe(TOPIC)

Page 14: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 14 of 22

client.disconnect() break

Page 15: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 15 of 22

คำ�อธบ�ย1. เรมตนดวยการนำาเอา mqtt library เขามาในโปรแกรมimport paho.mqtt.client as mqtt

2. กำาหนดคาตวแปรทสำาคญBROKER_PORT = 1883 #standard MQTT broker portBROKER_HOST = "test.mosquitto.org" # Test host from mosquitto.orgKEEPALIVE = 60 #maximum period in seconds allowed between communicationTOPIC='tk/demo' #any String could be used.

3. สรางตวแปรทเปนตวแทนของอปกรณของเราเพอใชสอสารกบ  Broker ในโปรแกรมclient = mqtt.Client()

4. สราง Call back functions ซงเปนสวนของโปรแกรมทจะทำางานเม อม 3 เหตการณเกดขน ไดแก4.1 client.on_connect  จะเกดขนหลงจาก client หรออปกรณของเราไดตดตอกบ Broker สำาเรจ 4.2 client.on_publish จะเกดขนหลงจาก client หรออปกรณของเราไดทำาการสงขอมล (publish) ไปยง Broker4.3 client.on_message จะเกดขนหลงจาก client หรออปกรณของเราไดรบขอมล (notify) จาก Broker

5. สรางการเชอมโยงไปยง Brokerclient.connect(BROKER_HOST,BROKER_PORT,KEEPALIVE)

6. ทำาการสงขอมลไปยง Brokerclient.loop_start()  while True:    try :        time.sleep(5) #option, do not need.        client.publish(TOPIC,"Hello") #send message "Hello" to broker    except KeyboardInterrupt :        client.unsubscribe(TOPIC)        client.disconnect()        break

กำาหนดใหอปกรณทำางานวนลปไปเรอย ๆ

ผลการเรยกใชงานบน Raspberry PI แสดงดงภาพขางลางน 

Page 16: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 16 of 22

ดจาก Lens

Subscribe : tk/demo

อะไรททำ�ให MQTT น�สนใจในสงคมมนษยเราตองการการสอสารตลอดเวลา เรมจากระหวางมนษย

ดวยกน มนษยกบอปกรณอเลกทรอนกส และในยคนกำาลงจะมการสอสารระหวางอปกรณกบอปกรณ (Machine to Machine) ซง MQTT เปนสวนหนงททำาใหเกดขน

จดหลกท MQTT ตางจาก Web Service ถงแมจะใช TCP/IP เหมอนกน คอ MQTT สามารถนำามาใชกบอปกรณขนาดเลกหรอ embeded system ไดเพราะใชทรพยากรและพลงงานนอยกวา สามารถใชงานไดกบระบบโทรมาตร (telesensing) หรอระบบทไมตองการคนดแล (unattended) เชน ระบบการ

Page 17: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 17 of 22

แพทยฉกเฉนททมแพทยสามารถรบรขอมลผปวยในขณะทผปวย ยงอยระหวางการเดนทาง ระบบการดแลผปวยทางไกลหรอผสงอายทไมมคนดแลตลอดเวลา ระบบการจดสงสนคาทผรบสามารถรบรการเดนทางของสนคาทสงซอ ได ระบบจดการคลงสนคาทเรารวาสนคาเขา-ออก inventory อยางไร ระบบการปองกนภยพบตรทประชาชนทราบขอมลจรงจากการวดจรงไมใชจาก ขาวลอ ฯลฯ  

Raspberry PI เปนอปกรณคอมพวเตอรทไดรบการพฒนามาจนมศกยภาพทดแทนการใชงานคอมพวเตอรตงโตะไดแลวในบางเรอง การนำาเอา Raspberry PI มาสรางเปนตวกลางหรอศนยกลางการควบคมอปกรณยอย ๆ จงเปนเรองทเปนไปไดและใชตนทนตำา บทความนมวตถประสงคเพอจะชประเดนตรงนครบ

Page 18: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 18 of 22

Test2: Subscriber from Raspberry Pi

จากการทดลองของโปรแกรม test1_MQTT.py def on_message(client,userdata,msg): print "Incomming message is "+msg.topic +":"+msg.payload

ขอมลทอานจาก Broker จะเกบท msg.payload เราจะ publish ขอความบางอยางและให Raspberry Pi subscribe และอานขอความจากนนใชฟงกชน find string คนหาขอความ

คาทไดจาก find String คอ ตำาแหนงทพบขอความ (ในการทดสอบ คอ 0)

เมอพบขอความเรากจะทำางานตามทตองการdef on_message(client,userdata,msg): print "Incomming message is "+msg.topic +":"+msg.payload if (msg.payload.find("Pk007_On")==0): print "Digital Output On" if (msg.payload.find("Pk007_Off")==0): print "Digital Output Off"

เมอสงขอความจาก MQTTLens

ผลการทำางาน

Page 19: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 19 of 22

Page 20: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 20 of 22

ปรบแกใหตอวงจรภายนอกกบ LED จำานวน 2 ตว

On LED_1 ดวยขอความ _________

Off LED_1 ดวยขอความ _________

On LED_2ดวยขอความ _________

Off LED_2 ดวยขอความ _________

โปรแกรมททำาการทดสอบในการควลคม LED ทงสองตว

< เตมใหผมดวย Font = TH Krub 14>

Page 21: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 21 of 22

Test3: Set Broker on Raspberry Pi

< เตมใหผมดวย Font = TH Krub 14>

Page 22: WordPress.com · Web viewWeek11 Raspberry Pi Check 4 of 5: MQTT. Test0: Concept IoT via MQTT. . Broker, Publisher and Subscriber

Page 22 of 22

Read This

1. http://tosakunmeeting.blogspot.com/2015/05/ raspberry-pi-mqtt-1.html

2. https://www.eclipse.org/paho/clients/python/ 3. http://thaiopensource.org/

%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87%E0%B9%81%E0%B8%A5%E0%B8%B0%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-mqtt-broker-%E0%B8%81%E0%B8%B1%E0%B8%99/

4. http://docs.gadgetkeeper.com/display/docs/ Realtime+temperature+monitoring+with+Raspberry+Pi+and+MQTT+protocol

5. http://www.sathittham.com/raspberry-pi/rpi-mqtt- broker/

6. http://lelylan.github.io/lab-projects/raspberry-pi-light/ 7. http://www.switchdoc.com/2016/02/tutorial-installing-

and-testing-mosquitto-mqtt-on-raspberry-pi/8. http://blog.thingstud.io/recipes/how-to-make-your-

raspberry-pi-the-ultimate-iot-hub/9. https://rasspberrypi.wordpress.com/2012/09/16/

mosquitto-mqtt-on-raspberry-pi-broker-publish-and-subscribe-client/

10. http://docs.gadgetkeeper.com/display/docs/ Getting+Started