add iotcloud aliyun

This commit is contained in:
dreamcmi 2022-12-16 22:27:19 +08:00
parent 55502bf27d
commit d29057097c
2 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,53 @@
import hmac
import mqtt
class IOT:
def __init__(self):
self._signMethodTable = ["hmac-md5", "hmac-sha1", "hmac-sha256"]
def aliyun(self, clientId: str, productKey: str, deviceName: str, deviceSecret: str,
signMethod="hmac-md5", regionID="cn-shanghai", ssl=False):
if clientId == None or productKey == None or deviceName == None or deviceSecret == None:
print("[Error]input param is None")
return False
if not signMethod in self._signMethodTable:
print("[Error] not support signMethod")
return False
if ssl:
securemode = "2"
self._mqttPort = int(443)
else:
securemode = "3"
self._mqttPort = int(1883)
hmac_payload = "clientId" + clientId + "deviceName" + \
deviceName + "productKey" + productKey
self._mqttPassword = hmac.new(deviceSecret.encode(
), msg=hmac_payload.encode(), digestmod=signMethod).hexdigest()
self._mqttClientId = clientId + "|securemode=" + securemode + \
",signmethod="+signMethod.replace("-", "")+"|"
self._mqttUsername = deviceName + "&" + productKey
self._mqttUri = productKey + ".iot-as-mqtt." + regionID + ".aliyuncs.com"
def tencent(self): ...
def onenet(self): ...
def connect(self):
self._client = mqtt.MQTT(self._mqttUri, port=self._mqttPort, clinetID=self._mqttClientId,
username=self._mqttUsername, password=self._mqttPassword, keepalive=600)
return self._client.connect()
def disconnect(self):
return self._client.disconnect()
def subsribe(self, topic, qos, cb):
return self._client.subscribe(topic, qos, cb)
def publish(self, topic, qos, payload):
return self._client.publish(qos, topic, payload)
def new():
iot = IOT()
return iot

View File

@ -0,0 +1,32 @@
from PikaStdDevice import Time
import iotcloud
clientId = "pikascript"
productKey = "xxx"
deviceName = "test1"
deviceSecret = "xxxxx"
topic = "/" + productKey + "/" + deviceName + "/user/update"
print("iotcloud aliyun test")
c = iotcloud.new()
c.aliyun(clientId, productKey, deviceName, deviceSecret)
def up_cb():
print("sub topic:", c.recv_topic)
print("sub msg:", c.recv_msg)
e = c.connect()
print("connect:", e)
if e == 0:
print("subcribe status:", c.subsribe(topic, 0, up_cb))
for i in range(10):
print("publish status:", c.publish(topic, 0, '{"id":'+str(i)+'}'))
Time.sleep_s(5)
a = c.disconnect()
print("disconnect status:", a)