阿里云在线温湿度-小熊派qpython(综合展示)

需要用到的东西:

小熊派的ec100y开发板,或者ec600S开发板;

i2c的温湿度传感器(我这里用的sht31,其他的也可以,自行修改代码);

阿里云账号;

接线:用到3.3v,GND,i2c的SCL和SDA

阿里云显示展示:

app展示:

代码:

 

# 包引用部分
import log
from aLiYun import aLiYun
import ujson
import utime
from machine import I2C
import pm
# 用户变量区域
# 上传间隔(单位分钟)
interval=5
# 设置日志输出级别
log.basicConfig(level=log.INFO)   
aliYun_log = log.getLogger("ALiYun")
productKey = "a1UMWyl1ee3"       # 产品标识
productSecret = None  # 产品密钥(使用一机一密认证时此参数传入None)
DeviceName = "hO43OC0BX6r3YdQrVhE5"       # 设备名称
DeviceSecret = "73b65a9b59eb95d14b462a257815764a"  # 设备密钥(使用一型一密认证此参数传入None,免预注册暂不支持,需先在云端创建设备)
topic = "/sys/a1UMWyl1ee3/hO43OC0BX6r3YdQrVhE5/thing/event/property/post"  # 云端自定义或自拥有的Topic
clientID = "temp001"  # 自定义字符(不超过64)

pm.autosleep(1)
# 创建aliyun连接对象
ali = aLiYun(productKey, productSecret, DeviceName, DeviceSecret)
ali.setMqtt(clientID, clean_session=False, keepAlive=300)
# 回调函数
def sub_cb(topic, msg):
    aliYun_log.info("Subscribe Recv: Topic={},Msg={}".format(topic.decode(), msg.decode()))    
# 设置回调函数
ali.setCallback(sub_cb)
# 运行
ali.start()
i2c_obj = I2C(I2C.I2C0, I2C.STANDARD_MODE)  # 返回i2c对象
def readSht30():
    I2C_SLAVE_ADDR = 0x44  # i2c 设备地址
    WHO_AM_I = bytearray({0x2C, 0})   # i2c 寄存器地址,以buff的方式传入,取第一个值,计算一个值的长度
    data = bytearray({0x06, 0})   # 输入对应指令
    i2c_obj.write(I2C_SLAVE_ADDR, WHO_AM_I, 1, data, 2)  # 写入data
    r_data = bytearray(6)  # 创建长度为2的字节数组接收
    i2c_obj.read(I2C_SLAVE_ADDR, WHO_AM_I, 1, r_data, 6, 0)   # read
    temperature_raw = r_data[0] << 8 | r_data[1]
    temperatur = (175.0 * float(temperature_raw)/65535.0)-45
    humidity_raw = r_data[3] << 8  | r_data[4]
    humidity = (100.0 * float(humidity_raw) / 65535.0)
    return temperatur,humidity

while 1:
    # 接受一条消息后退出
    temperature,humidity=readSht30()
    send_data={'method':'thing.event.property.post','params':{'temperature':temperature,'humidity':humidity}}
    s = ujson.dumps(send_data)
    ali.publish(topic,s)
    aliYun_log.info("SEND")
    utime.sleep_ms(1000*60*interval)   # 休眠(单位min)
        

目前没做异常检测,都是理想状态,后面等官方更新再完善代码。

目前掉线不能重连,等官方更新后,放出完整教程。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在Visual Studio Code中获取阿里云温湿度数据,需要先通过阿里云提供的API实现数据的获取。首先,你需要在阿里云上创建一个IoT物联网平台实例,并在该实例中创建一个设备,该设备可以用来获取温湿度数据。 接下来,你可以使用Python编写代码,通过阿里云的API获取该设备的温湿度数据。具体步骤如下: 1. 在Visual Studio Code中创建一个Python项目,并安装aliyun-python-sdk-core和aliyun-python-sdk-iot包。 2. 在阿里云IoT物联网平台中创建一个AccessKey,用于API的身份验证。 3. 在Python代码中引入SDK,并使用AccessKey初始化SDK。 4. 调用SDK提供的API获取设备的温湿度数据。 代码示例: ```python from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-shanghai') request = CommonRequest() request.set_domain('iot.cn-shanghai.aliyuncs.com') request.set_version('2018-01-20') request.set_action_name('QueryDevicePropertyData') request.set_protocol_type('https') request.add_query_param('RegionId', 'cn-shanghai') request.add_query_param('ProductKey', '<productKey>') request.add_query_param('DeviceName', '<deviceName>') request.add_query_param('Identifier', 'Temperature,Humidity') request.add_query_param('StartTime', '<startTime>') request.add_query_param('EndTime', '<endTime>') response = client.do_action(request) print(response) ``` 其中,`<accessKeyId>`和`<accessSecret>`是你在阿里云上创建的AccessKey的ID和Secret,`<productKey>`和`<deviceName>`是你在IoT物联网平台上创建的设备的ProductKey和DeviceName,`<startTime>`和`<endTime>`是你要查询的时间范围。 通过上述代码,你就可以在Visual Studio Code中获取阿里云温湿度数据了。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值