#!/usr/bin/env python
# -*- coding:utf-8 -*-
from __future__ import print_function
import paho.mqtt.client a**tt
import struct
import json
# CONNECT 方式:
# client_id: DEV_ID
# username: PRO_ID
# password: AUTHINFO(鉴权信息)
# 可以连接上设备云,CONNECT 和 CONNACK握手成功
# PRO_ID:项目ID
# API_KEY:设备API_KEY
# DEV_ID:设备ID
# temperature:已创建的一个数据流
#
# 我订阅的主题是PRO_ID/API_KEY/DEV_ID/temperature
# 我发布的主题是DEV_ID/temperature
DEV_ID = "24831088"
PRO_ID = "118363"
AUTH_INFO = "**"
API_KEY = "**"
# topic = 'topic1'
TYPE_JSON = 0x01
TYPE_FLOAT = 0x17
body = {
"datastreams":[
{
"id":"temperature",
"datap**":[
{
"at":"2016-08-15T14:47:00",
"value":50
}
]
}
]
}
def build_payload(type, payload):
datatype = type
packet = bytearray()
packet.extend(struct.pack("!B", datatype))
if isinstance(payload, str):
udata = payload.encode('utf-8')
length = len(udata)
packet.extend(struct.pack("!H" + str(length) + "s", length, udata))
return packet
def on_connect(client, userdata, **s, rc):
print("<<<
print("connected with result code " + mqtt.connack_string(rc))
json_body = json.dumps(body)
packet = build_payload(TYPE_JSON, json_body)
print("PUBLISH>>>>")
client.publish("$dp", packet, qos=1)
# client.publish(topic, packet, qos=1)
# def on_message(client, userdata, msg):
# print(msg.topic+" "+str(msg.payload))
def on_publish(client, userdata, mid):
print("<<<
print("mid:" + str(mid))
def main():
client = mqtt.Client(client_id=DEV_ID, protocol=mqtt.MQTTv311)
client.on_connect = on_connect
client.on_publish = on_publish
# client.on_message = on_message
client.username_pw_set(username=PRO_ID, password=AUTH_INFO)
print("CONNECT>>>>")
client.connect('183.230.40.39', port=6002, keepalive=120)
client.loop_forever()
if __name__ == '__main__':
main()