利用Python快速体验阿里云物联网

利用Python快速体验阿里云物联网

阿里云物联网平台文档

https://www.alibabacloud.com/help/zh/doc-detail/73705.htm?spm=a2c63.p38356.b99.13.16811fe34FjKlv

阿里物联网平台中定义产品和设备

最近学习TencentOS tiny,顺便体验下物联网平台(百度,阿里,腾讯,华为云都有支持),体验了下百度和阿里,在此对阿里物联网平台做下记录,刚好利用此机会再次了解下MQTT相关内容,本文使用Python语言模拟设备进行数据上报

创建成功效果截图

在这里插入图片描述

Python模拟设备上报

开发环境:Windows 7+ VScode+ python3.7

简单体验,模拟上传温度和湿度
安装阿里SDK

pip install aliyun-iot-linkkit

代码如下:

import configparser , time , hmac , hashlib , logging , os , sys , random
from linkkit import linkkit

lk = linkkit.LinkKit(
    host_name="cn-shanghai",
    product_key="xxxx",
    device_name="Demo",
    device_secret="xxxxx")

def on_device_dynamic_register(rc, value, userdata):
    if rc == 0:
        print("dynamic register device success, rc:%d, value:%s" % (rc, value))
    else:
        print("dynamic register device fail,rc:%d, value:%s" % (rc, value))

def on_connect(session_flag, rc, userdata):
    print("on_connect:%d,rc:%d,userdata:" % (session_flag, rc))
    pass
def on_disconnect(rc, userdata):
    print("on_disconnect:rc:%d,userdata:" % rc)

def on_publish_topic(mid, userdata):
    print("on_publish_topic mid:%d" % mid)


def on_thing_enable(self, userdata):
    print("on_thing_enable")


def on_thing_disable(self, userdata):
    print("on_thing_disable")

def on_thing_prop_post(self, request_id, code, data, message,userdata):
    print("on_thing_prop_post request id:%s, code:%d, data:%s message:%s" %
        (request_id, code, str(data), message))

if __name__ == '__main__':
    print("hello")

    # config_mqtt(self, port=1883, protocol="MQTTv311", transport="TCP",
    #         secure="TLS", keep_alive=60, clean_session=True,
    #         max_inflight_message=20, max_queued_message=0,
    #         auto_reconnect_min_sec=1,
    #         auto_reconnect_max_sec=60,
    #         cadata=None):
    lk.on_device_dynamic_register = on_device_dynamic_register
    lk.on_connect = on_connect
    lk.on_disconnect = on_disconnect
    lk.on_publish_topic = on_publish_topic
    lk.on_thing_enable = on_thing_enable
    lk.on_thing_disable = on_thing_disable
    lk.on_thing_prop_post = on_thing_prop_post

    lk.thing_setup("D:\IOT\\aliiot\model.json")
    lk.connect_async()
    lk.start_worker_loop()
    time.sleep(1)  # 延时
    prop_data = {
        "temperature": 88,
        "humidity": 20
    }
    
    rc, request_id = lk.thing_post_property(prop_data)

上传成功效果截图

温度和湿度已经成功上报至阿里云服务器
在这里插入图片描述

阿里物联网平台的MQTT协议还有各种订阅功能,都可以使用阿里提供的API,这篇文章主要是基础体验,大家可行测试体验

参考链接:

https://blog.csdn.net/wang_hugh/article/details/89308123

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python中实现接入阿里云物联网平台的发布订阅功能,你需要进行以下几个步骤: 1. 创建阿里云账号并开通物联网平台服务。 2. 使用阿里云物联网平台的SDK,安装aliyun-python-sdk-iot模块。 3. 获取阿里云账号的AccessKey ID和AccessKey Secret,并创建IoT客户端。 4. 创建Topic和订阅。 下面是Python代码示例: ```python from aliyunsdkcore.client import AcsClient from aliyunsdkcore.auth.credentials import AccessKeyCredential from aliyunsdkiot.request.v20180120 import * # 阿里云账号的AccessKey ID和AccessKey Secret access_key_id = 'your_access_key_id' access_key_secret = 'your_access_key_secret' # 创建IoT客户端 cred = AccessKeyCredential(access_key_id, access_key_secret) client = AcsClient("", "", "cn-shanghai", credential=cred) # 创建Topic和订阅 product_key = 'your_product_key' topic_short_name = 'test_topic' request = CreateTopicRequest.CreateTopicRequest() request.set_ProductKey(product_key) request.set_TopicShortName(topic_short_name) client.do_action_with_exception(request) request = CreateSubscribeRelationRequest.CreateSubscribeRelationRequest() request.set_ProductKey(product_key) request.set_TopicShortName(topic_short_name) request.set_DeviceName('your_device_name') client.do_action_with_exception(request) # 发布消息 request = PubRequest.PubRequest() request.set_ProductKey(product_key) request.set_TopicFullName('/{}/{}/{}'.format(product_key, topic_short_name, 'user')) request.set_MessageContent('Hello, World!') client.do_action_with_exception(request) # 接收消息 request = RRpcRequest.RRpcRequest() request.set_ProductKey(product_key) request.set_DeviceName('your_device_name') request.set_Topic('/{}/{}/{}'.format(product_key, topic_short_name, 'user/get')) request.set_MessageContent('Hello, World!') response = client.do_action_with_exception(request) print(response) ``` 其中,access_key_id和access_key_secret需要替换为你自己的阿里云账号的AccessKey ID和AccessKey Secret,product_key和topic_short_name可以根据自己的需求自定义,device_name需要替换为你自己的设备名称。在创建订阅时,需要将订阅关系建立在设备和Topic之间,这样设备才能接收到消息。在发布消息时,需要指定消息的Topic全名。在接收消息时,需要指定设备名称和Topic名称,然后发送一个RRpc请求,等待设备返回响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值