MQTT


1. MQTT Broker Server .

 

ขั้นตอนการทำ

– ไปที่ https://chrome.google.com/webstore/detail/mqttlens/hemojaaeigabkbcookmlgmdigohjobjm?hl=th


– เปิด MQTTlens ขึ้นมาจากนั้นป้อนรายละเอียด Subscribe  และ Publish  ให้ครบ แล้วให้คลิกที่ CREATE CONNECTION

– เมื่อทำการ Publish ข้อความ “Hello 10logic” ผ่าน MyMQTT แสดงผลตามรูป

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



2. แสดงอุณหภูมิบน MQTTlens.


 

 

วัตถุประสงค์

แสดงอุณหภูมิ ผ่าน MQTTlens โดยมีการเชื่อมต่อจาก Raspberry Pi อีกที

อุปกรณ์

1. Raspberry Pi Model B

2. สายไฟจัมเปอร์

3. Waterproof Temperature Sensor (DS18B20)

     4. Application MQTTlens จาก google chrome

5. Micro USB Cable

     6. LAN Cable

     7. ตัวต้านทาน 10k โอห์ม

ขั้นตอนการทำ

1. ต่อ Raspberry Pi เข้ากับ PC หรือ Notebook แล้วทำการรีโมท

2. ต่อ DS18B20 และตัวต้านทาน เข้ากับ Raspberry Pi

3. สร้างไฟล์ใน  Raspberry Pi  โดยใช้คำสั่ง

$ sudo nano temp1.py  (ตรง temp1 ใช้ชื่ออะไรก็ได้)

4. ใช้ Code ดังต่อไปนี้

 

 

 

# test1_MQTT.py

 

import paho.mqtt.client as mqtt

 

import time

 

import urllib

 

import httplib

 

BROKER_PORT = 1883

 

BROKER_HOST = “test.mosquitto.org” # Test host from mosquitto.org

 

KEEPALIVE = 60 #maximum period in seconds allowed between communication

 

TOPIC=’sexy/sut’  //ใส่ชื่อห้องเพื่อนำไป Publish ใน MQTTlens

 

 

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:

 

    tempfile = open(“/sys/bus/w1/devices/28-0000031d715c/w1_slave”)   // แก้ส่วนนี้เป็นของเครื่องเรา

 

    thetext = tempfile.read()

 

    tempfile.close()

 

    tempdata = thetext.split(“\n”)[1].split(” “)[9]

 

    temperature = float(tempdata[2:])

 

    temperature = temperature/1000

 

    try :

 

        time.sleep(5)

 

        client.publish(TOPIC,”B5620708 Suppharang Temp = %f”% temperature )  //ใส่ข้อความที่จะแสดง

 

    except KeyboardInterrupt :

 

        client.unsubscribe(TOPIC)

 

        client.disconnect()

 

        break

 

 

5. จากกนั้นทำการ Run  โดยใช้คำสั่ง $ sudo python temp1.py 6. เปิด MQTTlens – ทำการใส่ชื่อห้องดังที่เราตั้งไว้ Subscribe และ Publish – สังเกตผลลัพธ์ที่ได้

 

 

วิดีโอแสดงผลการทำงาน

 

 


 

 

 

3. สั่งปิด – เปิดไฟ LED โดยผ่าน MQTTlens.

 

 

 

 

วัตถุประสงค์

สั่งเปิด – ปิด ไฟ LED ด้วย MQTTlens.

อุปกรณ์

1. Raspberry Pi Model B 2. สายไฟจัมเปอร์      3. Application MQTTlens จาก google chrome 4. Micro USB Cable       5. LAN Cable       6. ไฟ LED

ขั้นตอนการทำ

1.ต่อ Raspberry Pi เข้ากับ PC หรือ Notebook แล้วทำการรีโมท 2. ต่อ LED เข้ากับ Raspberry Pi 3. สร้างไฟล์ใน  Raspberry Pi  โดยใช้คำสั่ง $ sudo nano led.py  (ตรง led ใช้ชื่ออะไรก็ได้) 4. ใช้ Code ดังต่อไปนี้


# test1_MQTT.py

 

import paho.mqtt.client as mqtt

 

import time

 

from time import sleep

 

from ds18b20 import DS18B20

 

import RPi.GPIO as GPIO

 

 

GPIO.setmode(GPIO.BOARD)

 

GPIO.setup(8, GPIO.OUT)

 

 

BROKER_PORT = 1883

 

BROKER_HOST = “test.mosquitto.org” # Test host from mosquitto.org

 

KEEPALIVE = 60 #maximum period in seconds allowed between communication

 

#TOPIC=’ThangLED/sut’

 

TOPIC=’sexy/sut’

 

 

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

 

    if(msg.payload.find(“Ploy on”)==0):

 

        GPIO.output(8,GPIO.LOW)

 

    if(msg.payload.find(“Ploy off”)==0):

 

        GPIO.output(8,GPIO.HIGH)

 

    if(msg.payload.find(“Ploy blink”)==0):

 

        GPIO.output(8,GPIO.HIGH)

 

        time.sleep(0.2)

 

        GPIO.output(8,GPIO.LOW)

 

        time.sleep(0.2)

 

        GPIO.output(8,GPIO.HIGH)

 

        time.sleep(0.2)

 

        GPIO.output(8,GPIO.LOW)

 

        time.sleep(0.2)

 

        GPIO.output(8,GPIO.HIGH)

 

        time.sleep(0.2)

 

        GPIO.output(8,GPIO.LOW)

 

        time.sleep(0.2)

 

 

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()

 

 

#sensor = DS18B20()

 

#temperatures = sensor.get_temperatures([DS18B20.DEGREES_C, DS18B20.DEGREES_F, DS18B20.KELVIN])

 

        #print(“Kelvin: %f” % temperatures[2])

 

        #print(“Degrees Celsius: %f” % temperatures[0])

 

 

while True:

 

    try :

 

      time.sleep(5) #option, do not need

 

 

 

 

      #client.publish(TOPIC,”Hello 10logic” )

 

 

 

      except KeyboardInterrupt :

 

          client.unsubscribe(TOPIC)

 

          client.disconnect()

 

          break

5. ทำการ Run  โดยใช้คำสั่ง

$ sudo python led.py

6. เปิด MQTTlens

– ทำการใส่ชื่อห้องดังที่เราตั้งไว้ Subscribe และ Publish

– เมื่อพิมพ์ Ploy on แล้วคลิก Publish ไฟ LED จะติด

– เมื่อพิมพ์ Ploy off แล้วคลิก Publish ไฟ LED จะดับ

– เมื่อพิมพ์ Ploy blink แล้วคลิก Publish ไฟ LED จะ blink

 


วิดีโอแสดงผลการทำงาน

 


Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s