阿里云在线温湿度-小熊派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)
        

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

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

猜你喜欢

转载自blog.csdn.net/rootuseres/article/details/110228912