您现在的位置是:首页 > 正文

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

2024-02-01 03:20:31阅读 1

需要用到的东西:

小熊派的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)
        

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

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

网站文章

  • 模拟post发送,收到的数据乱码 且已设置utf-8标准编码

    模拟post发送,收到的数据乱码 且已设置utf-8标准编码

    模拟Post发送乱码

    2024-02-01 03:19:59
  • Spring知识篇2:Spring Frame框架的基本知识

    Spring知识篇2:Spring Frame框架的基本知识

    本文主要介绍Spring Frame需要掌握的知识

    2024-02-01 03:19:53
  • 微服务之间调用(consul)

    1.首先确定是不是在同一注册中心。 2.确实微服务名唯一,不然可能会调到其他微服务中,导致错误。 3.引入二个包 RestTemplate 和 DiscoveryClient 。 4.通过获取注册提供...

    2024-02-01 03:19:47
  • 【UnityShader】光线追踪体积光

    【UnityShader】光线追踪体积光

    最近尝试实现了一下光线追踪体积光,效果如下: 光线追踪(Ray tracing)是三维计算机图形学中的特殊渲染算法,跟踪从眼睛发出的光线而不是光源发出的光线,通过这样一项技术生成编排好的场景的数学模型显现出来。(摘自维基百科) 实现步骤: 一、在灯光区域生成体积光的载体mesh,即我们的体积光实际上是渲染在mesh上的,因此光线追踪的起点是每个顶点的位

    2024-02-01 03:19:39
  • MongoDB图形化工具下载和使用

    MongoDB图形化工具下载和使用

    MongoDB图形化工具下载和使用。

    2024-02-01 03:19:09
  • RabbitMQ:RabbitMQ + Spring配置文件rabbit标签

    RabbitMQ:RabbitMQ + Spring配置文件rabbit标签1.消费者配置文件和启动类: 【Consumer.xml】:&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi...

    2024-02-01 03:19:04
  • 3.1 TensorFlow计算模型 --- 计算图

      TensorFlow程序一般可以分为两个阶段。在第一个阶段需要定义计算图中的所有的计算。第二个阶段为执行计算。   在TensorFlow程序中,系统会自动维护一个默认的计算图,通过tf.get_default_graph函数可以获取当前默认的计算图。   除去使用默认的计算图,TensorFlow支持通过tf.Graph函数生成新的计算图。不同计算图上的张量和运算都不...

    2024-02-01 03:18:47
  • 阿里云数据库白名单导致的数据库链接不上问题

    百度搜索 IP 获取外网IP。修改白名单

    2024-02-01 03:18:17
  • MyEclipse设置代码提示功能 热门推荐

    MyEclipse设置代码提示功能 热门推荐

    写代码的时候为什么能给我们提示?你知道提示分为手动提示和自动提示么?今天我们就以MyEclipse为例讲一下MyEclipse手动提示和自动提示如何设置。在开始这篇博客之前,我们先来说一下代码的手动提...

    2024-02-01 03:18:11
  • 互联网随想(二): 带宽与拥塞控制

    由于北方在冬季蔬菜资源紧缺,所以在过冬前需要储存大量蔬菜,在整个冬天就吃这些蔬菜,这就好比是下载,其过程非常贪婪,大多数人家整个屋子里堆满了大白菜,大葱,土豆,如果不精打细算,相当大一部分要损耗掉,很...

    2024-02-01 03:18:04