3 Star 3 Fork 3

yansongda / aliyun-iot-device-python

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 5.12 KB
一键复制 编辑 原始数据 按行查看 历史
yansongda 提交于 2018-06-22 10:24 . update docs

aliyun-iot-device-python

非官方,阿里云 IOT 套件设备端 Python 开发 SDK

支持的协议

  • MQTT
  • HTTP
  • CoAP

环境

  • Python3

安装

pip3 install yansongda-aliyun-iot-device

使用

MQTT

from aliyun_iot_device.mqtt import Client as IOT
import time


def on_connect(client, userdata, flags, rc):
    print('subscribe')
    client.subscribe(qos=1)


def on_message(client, userdata, msg):
    print('receive message')
    print(str(msg.payload))


PRODUCE_KEY = "b1VzFx30hEm"
DEVICE_NAME = "iot_device_01"
DEVICE_SECRET = "3TSqd6sfzjSkSwEmLmcAdZnI0oGlmRZ8"

iot = IOT((PRODUCE_KEY, DEVICE_NAME, DEVICE_SECRET))

iot.on_connect = on_connect
iot.on_message = on_message

iot.connect()

iot.loop_start()
while True:
    iot.publish(payload="success", qos=1)
    time.sleep(5)

回调

  • on_connect

    定义连接成功后的回调函数

    回调函数格式:

    connect_callback(client, userdata, flags, rc)

    client: the client instance for this callback

    userdata: the private user data as set in Client() or userdata_set()

    flags: response flags sent by the broker

    rc: the connection result

  • on_subscribe

    定义订阅成功后的回调函数

    回调函数格式:

    subscribe_callback(client, userdata, mid, granted_qos)

    client: the client instance for this callback

    userdata: the private user data as set in Client() or userdata_set()

    mid: matches the mid variable returned from the corresponding subscribe() call.

    granted_qos: list of integers that give the QoS level the broker has granted for each of the different subscription requests.

  • on_message

    定义收到消息时的回调函数.

    回调函数格式:

    on_message_callback(client, userdata, message)

    client: the client instance for this callback

    userdata: the private user data as set in Client() or userdata_set()

    message: an instance of MQTTMessage.This is a class with members topic, payload, qos, retain.

  • on_publish

    定义 publish() 方法成功发送消息时的回调函数.

    格式:

    on_publish_callback(client, userdata, mid)

    client: the client instance for this callback

    userdata: the private user data as set in Client() or userdata_set()

    mid: matches the mid variable returned from the corresponding publish() call, to allow outgoing messages to be tracked.

  • on_unsubscribe

    定义取消订阅某条 topic 时的回调函数.

    格式:

    unsubscribe_callback(client, userdata, mid)

    client: the client instance for this callback

    userdata: the private user data as set in Client() or userdata_set()

    mid: matches the mid variable returned from the corresponding unsubscribe() call.

  • on_disconnect

    定义连接断开时的回调函数.

    格式:

    disconnect_callback(client, userdata, self)

    client: the client instance for this callback

    userdata: the private user data as set in Client() or userdata_set()

    rc: the disconnection result.

说明

  • 域名直连与 HTTPS 认证

    SDK 默认使用域名直连同时启用 TLS 加密。

    如果您不想使用 TLS 加密,可在初始化时传入 tls=False 参数;

    如果您想使用 HTTPS 认证,可在初始化时传入 domain_direct=False 参数,HTTPS 认证将强制使用 TLS 认证加密

  • TLS 认证 CA 证书

    SDK 默认使用了阿里云 IOT 根证书,一般情况无需修改。

    如一定要修改,请传入 ca_certs="/path/to/cert/root.cer"

  • websocket 通道

    SDK 默认使用 TCP 通道。

    如果需要使用 websocket,请传入 transport="websockets"

    当使用 websocket 时,默认启用 TLS,即使用的是 wss 协议,如果不想使用 wss,请同时传入 tls=False

HTTP

from aliyun_iot_device.http import Client as IOT
import time

PRODUCE_KEY = "b1VzFx30hEm"
DEVICE_NAME = "iot_device_01"
DEVICE_SECRET = "3TSqd6sfzjSkSwEmLmcAdZnI0oGlmRZ8"

iot = IOT((PRODUCE_KEY, DEVICE_NAME, DEVICE_SECRET))

while True:
    iot.publish('success')
    time.sleep(5)

注意

  • 使用 http 协议进行通讯时,需要 token 进行认证,SDK 默认使用内存型缓存(cachetools 方案)进行 token 的保存。

  • 如果您需要自行进行其他方案进行保存(file/memcached/redis),可以 iot.get_token(cache=False) 获取 token,再 publish 消息时,请 iot.publish(payload=payload, token=token)

设备影子系统

# 设备主动上报状态
iot.publish(payload={"method": "update",
                     "version": i,
                     "reported": {"online": True}},
            topic="shadow",
            qos=1)

# 设备主动获取设备影子内容
iot.publish(payload={"method": "get"},
            topic="shadow",
            qos=1)

# 设备端删除影子属性
iot.publish(payload={"method": "delete", "reported": "null"},
            topic="shadow",
            qos=1)
Python
1
https://gitee.com/yansongda/aliyun-iot-device-python.git
git@gitee.com:yansongda/aliyun-iot-device-python.git
yansongda
aliyun-iot-device-python
aliyun-iot-device-python
master

搜索帮助