cxlwill 2018-11-29 5199浏览量
使用个人淘宝账号或手机号,开通阿里云账号,并通过__实名认证(可以用支付宝认证)__
产品官网 https://www.aliyun.com/product/iot
__python2__安装:https://www.python.org/downloads/
编辑器 sublimeText/nodepad++/vscode
添加产品属性定义
属性名 | 标识符 | 数据类型 | 范围 |
---|---|---|---|
温度 | temperature | float | -50~100 |
湿度 | humidity | float | 0~100 |
物模型对应属性上报topic
/sys/替换为productKey/替换为deviceName/thing/event/property/post
物模型对应的属性上报payload
{
id: 123452452,
params: {
temperature: 26.2,
humidity: 60.4
},
method: "thing.event.property.post"
}
我们以python2程序来模拟设备,建立连接,上报数据。
1. 创建文件夹 aliyun-iot-demo-python
2. pip install aliyun-python-sdk-iot-client
3. 创建thermometer.py文件,添加内容
在aliyun-iot-demo-python文件夹下,执行命令
$ pip install aliyun-python-sdk-iot-client
# -*- coding: utf-8 -*-
import aliyunsdkiotclient.AliyunIotMqttClient as iot
import json
import multiprocessing
import time
import random
options = {
'productKey':'你的productKey',
'deviceName':'你的deviceName',
'deviceSecret':'你的deviceSecret',
'port':1883,
'host':'iot-as-mqtt.cn-shanghai.aliyuncs.com'
}
host = options['productKey'] + '.' + options['host']
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
#topic = '/' + productKey + '/' + deviceName + '/update'
print(msg.payload)
def on_connect(client, userdata, flags_dict, rc):
print("Connected with result code " + str(rc))
def on_disconnect(client, userdata, flags_dict, rc):
print("Disconnected.")
def worker(client):
topic = '/sys/'+options['productKey']+'/'+options['deviceName']+'/thing/event/property/post'
while True:
time.sleep(5)
payload_json = {
'id': int(time.time()),
'params': {
'temperature': random.randint(20, 30),
'humidity': random.randint(40, 50)
},
'method': "thing.event.property.post"
}
print('send data to iot server: ' + str(payload_json))
client.publish(topic, payload=str(payload_json))
if __name__ == '__main__':
client = iot.getAliyunIotMqttClient(options['productKey'], options['deviceName'], options['deviceSecret'], secure_mode=3)
client.on_connect = on_connect
client.connect(host=host, port=options['port'], keepalive=60)
p = multiprocessing.Process(target=worker, args=(client,))
p.start()
client.loop_forever()
$ python thermometer.py
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
致力于实现万物互联的美好世界,为生态合作伙伴提供基于云计算、大数据、人工智能、云端一体化、安全的物联网基础平台和内容服务平台。