Mosquitto Ile Mqtt

Mosquitto (open source) açık kaynak MQTT Broker yazılımıdır. Eclipse tarafından EPL/EDL lisansı ile geliştirilmektedir. MQTT de asenkron haberleşme protokolü kullanılmaktadır.  Mesaj yayıncıları ve mesaj alıcılar arasında eşzamansız olarak veri taşınmaktadır. 
Diğer haberleşme yapılarına göre basit oluşu ve minimum kaynak tüketmesi sebebiyle “machine-to-machine” (M2M)  makineden makineye veri iletiminde ve (IOT) “Internet of Things” İnternete bağlı nesnelerin mesajlaşmasında tercih edilmektedir.   Daha fazla bilgi 
için  iot.eclipse.org adresine bakılmalıdır. 


Kurulum:
Mosquitto kurulumu için kaynak kod veya kullanılan işletim sistemi için paket dosyası kullanılabilir.
Paho-mqtt:
Paho mqtt Python programlama dili için Mosquitto tarafından oluşturulmuş kütüphanedir.
Paho kütüphanesini pip ile kurmak için:
  • pip install paho-mqtt
veya
  • virtualenv paho-mqtt
  • source paho-mqtt/bin/activate
  • pip install paho-mqtt
kaynak koddan kurulum için; 
Örnek:
Mqtt publisher ve subscribe örneği;
iot-dashboard/dinle.py
import paho.mqtt.client as mqtt
count=0
# Define Variables
# MQTT_HOST = "iot.eclipse.org"
MQTT_HOST = "localhost"
MQTT_PORT = 1883
MQTT_KEEPALIVE_INTERVAL = 45
MQTT_TOPIC = "/45/sahin/"
MQTT_MSG = ""
# Define on connect event function
# We shall subscribe to our Topic in this function
def on_connect(mosq, obj, rc):
mqttc.subscribe(MQTT_TOPIC, 0)
# Define on_message event function.
# This function will be invoked every time,
# a new message arrives for the subscribed topic
def on_message(mosq, obj, msg):
global count
print count
count += 1
print "Topic: " + str(msg.topic)
print "QoS: " + str(msg.qos)
print "Payload: " + str(msg.payload)
print "------------------"
def on_subscribe(mosq, obj, mid, granted_qos):
print("Subscribed to Topic: " +
MQTT_MSG + " with QoS: " + str(granted_qos))
def on_log(mqttc, obj, level, string):
   print(string)
# Initiate MQTT Client
mqttc = mqtt.Client()
# Assign event callbacks
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
# Connect with MQTT Broker
mqttc.on_log = on_log
mqttc.username_pw_set(username="mese", password="mese")
mqttc.connect(MQTT_HOST, MQTT_PORT, MQTT_KEEPALIVE_INTERVAL)
# Continue monitoring the incoming messages for subscribed topic
mqttc.loop_forever()

iot-dashboard/gonder.py

# Import package
import paho.mqtt.client as mqtt
import time
# Define Variables
# MQTT_HOST = "iot.eclipse.org" 
MQTT_HOST = "localhost" 
MQTT_PORT = 1883
MQTT_KEEPALIVE_INTERVAL = 45
MQTT_TOPIC = "/45/sahin/"
MQTT_MSG = "/gonder/kalorifer/33/"
def on_connect(client, userdata, flags, rc):
print("Connected flags ",str(flags),"result code ",str(rc))
print(userdata)
print("Baglanti saglandi...")
# Define on_publish event function
def on_publish(client, userdata, mid):
print(userdata)
print "Mesaj gonderildi..."
def on_log(mqttc, obj, level, string):
    print(string)
# Initiate MQTT Client
mqttc = mqtt.Client()
# Register publish callback function
mqttc.on_publish = on_publish
# Connect with MQTT Broker
mqttc.on_log = on_log
mqttc.username_pw_set(username="mese", password="mese")
mqttc.connect(MQTT_HOST, MQTT_PORT, MQTT_KEEPALIVE_INTERVAL) 
while True:
# Publish message to MQTT Broker 
mqttc.publish(MQTT_TOPIC, MQTT_MSG)
# mqttc.publish(MQTT_TOPIC,MQTT_MSG, qos=2) # mesaj alma protokolu
time.sleep(3)
# Disconnect from MQTT_Broker
mqttc.disconnect()

MQTT ve IOT projeleri geliştiren Meşe bilişim IOT makaleleri ile yayınlarına devam edecek. İyi çalışmalar.