Files
mixly3/boards/default/micropython/build/lib/onenet.py
2024-07-19 10:16:00 +08:00

35 lines
1.0 KiB
Python

import ujson as json
from umqtt import MQTTClient,str_len
def get_data_dict(d):
result = {"datastreams":[]}
for x in d:
result["datastreams"].append({"id":x,"datapoints":[{"value":d[x]}]})
return result
def pubData(value, state):
value = get_data_dict(value)
jdata = json.dumps(value)
jlen = str_len(jdata)
bdata = bytearray(jlen+3)
bdata[0] = 1 #publish data in type of json
bdata[1] = int(jlen / 256) # data lenght
bdata[2] = jlen % 256 # data lenght
bdata[3:jlen+4] = jdata.encode('ascii') # json data
if state:
print(value)
#print(bdata)
return bdata
def init_MQTT_client(sid, address, cid, api, topic, callback):
client = MQTT_Client(sid, address, 6002, cid, api)
client.set_callback(callback)
client.connect()
client.subscribe(bytes(topic, 'utf-8'))
return client
#inherit
class MQTT_Client(MQTTClient):
def publish(self, msg, is_print=False, topic='$dp', retain=False, qos=0):
super().publish('$dp',pubData(msg, is_print))