| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- # -*- coding: utf-8 -*-
- # pip install paho-mqtt
- import paho.mqtt.client as mqtt
- import time
- from urllib.parse import quote
- from mylib import cal_token, payload_data
- import random
- SERVER = 'mqtts.heclouds.com'
- PRO_ID = "522417" #产品ID
- DEV_NAME='local_python'
- accesskey="dgEP7iOL2/1kVNc1ykDvIhXSVqhb0tLnKinjU2RYpDs="
- # DEV_ID = "950698937" # 设备ID
- username = PRO_ID
- password = "version=2018-10-31&res=products%2F522417&et=1685551369&method=sha1&sign=9l9gkFQx7A%2B7B3fu8uU%2F089azps%3D"
- # 当客户端收到来自服务器的CONNACK响应时的回调。也就是申请连接,服务器返回结果是否成功等
- def on_connect(client, userdata, flags, rc):
- print("连接结果:" + mqtt.connack_string(rc))
- # 从服务器接收发布消息时的回调。
- def on_message(client, userdata, msg):
- print("on_message:" ,str(msg.payload,'utf-8'))
- #当消息已经被发送给中间人,on_publish()回调将会被触发
- def on_publish(client, userdata, mid):
- print(str(mid))
- def main():
- # password = cal_token(PRO_ID, accesskey)
- # passw = password
- print(password)
- username = PRO_ID
- client = mqtt.Client(DEV_NAME, protocol=mqtt.MQTTv311)
- #client.tls_set(certfile='/Users/mryu/PycharmProjects/MyProject/onenet/MQTTS-certificate.pem') #鉴权证书
- client.on_connect = on_connect
- client.on_publish = on_publish
- client.on_message = on_message
- client.connect(SERVER, port=1883, keepalive=300)
- client.username_pw_set(PRO_ID, password)
- # 按照OneENT要求的格式,配置数据发布和订阅的主题
- topic_dp = '$sys/%s/%s/dp/post/json/+' % (username, DEV_NAME) # 设备上报数据主题
- topic_cmd = '$sys/%s/%s/cmd/#' % (username, DEV_NAME) # 设备接受命令主题
- topic_cmds = '$sys/%s/%s/cmd/request/' % (username, DEV_NAME) # 设备接受命令主题
- topic_publish = '$sys/%s/%s/dp/post/json' %(username,DEV_NAME)
- "$sys/{}/{}/dp/post/json/accepted".format(username,DEV_NAME)
- client.loop_start()
- count = 0
- while True:
- count += 1
- dat = {
- "temperatrue": [{
- "v": random.randint(0, 100),
- }],
- "power": [{
- "v": random.randint(33, 55)/10,
- "t": time.time()
- }],
- "status": [{
- "v": {
- "color": "blue",
- "led1": "on",
- "led2": "off",
- }
- },
- {
- "v": {
- "color": "red"
- },
- "t": time.time()
- }
- ]
- }
-
- payload = payload_data(count, dat)
- client.publish(topic=topic_publish, payload=payload, qos=1)
- print("topic_publish: ", topic_publish)
- print("payload: ", payload)
- print("-------------------------------------------------------------------------------")
- time.sleep(3)
- if __name__ == '__main__':
- main()
|