pdf-icon

UIFlow Guide

UIFlow 1.0 Blockly

Event

Unit

UIFlow 1.0 Project

Ali IoT

创建产品与设备
使用UIFlow Ali IoT功能前请参考 Ali物联网平台文档 完成产品和设备的创建。

案例程序

from m5stack import *
from m5ui import *
from uiflow import *
from IoTcloud.Ali import AliIoT
import json

import time
import unit

setScreenColor(0x222222)
env2_0 = unit.get(unit.ENV2, unit.PORTA)

shadow_msg = None
raw_msg = None
user_msg = None

label0 = M5TextBox(16, 17, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)

def shadow_get_cb(payload):
  global shadow_msg, raw_msg, user_msg
  shadow_msg = payload
  label0.setText(str(shadow_msg))
  pass

def raw_down_cb(payload):
  global shadow_msg, raw_msg, user_msg
  raw_msg = payload
  label0.setText(str(raw_msg))
  pass

def user_get_cb(payload):
  global shadow_msg, raw_msg, user_msg
  user_msg = payload
  label0.setText(str(user_msg))
  pass


ali = AliIoT(device_id='223', product_key='a1kJNBURsxj', device_name='ENV_UNIT', region_id='cn-shanghai', password='CB57870ED7708E24863DF9A7BD8A65BE')
ali.subscribe_shadow_get_msg(shadow_get_cb)
ali.subscribe_raw_down_msg(raw_down_cb)
ali.subscribe_user_get_msg(user_get_cb)
ali.start()
while True:
  ali.publish_user_update_msg(str((json.dumps(({'Pressure':(env2_0.pressure),'Temperature':(env2_0.temperature),'Humidity':(env2_0.humidity)})))))
  ali.publish_shadow_update_msg(desiredStr='DEVICE_STATE')
  ali.publish_raw_up_msg(str('RAW MSG'))
  wait(3)
  wait_ms(2)

功能说明

from IoTcloud.Ali import AliIoT
ali = AliIoT(device_id='', product_key='', device_name='', region_id='cn-qingdao', password='')
  • 初始化客户端信息:
    • device_id, product_key, device_name字段在Aliyun控制台中完成设备创建后生成。
    • region_id:选择服务实例所在的区域,该信息会在阿里云控制台中显示。
    • password:填入到block后将自动计算生成, UIFlow中可切换至代码工作区进行查看。
ali.start()
  • 启用客户端连接
消息发布与订阅
UIFlow Ali IoT目前提供了三种上下行的主题订阅,user、raw、shadow update。
不同的主题订阅在阿里云控制台中的作用和显示方式会有所不同,例如user可以用于一般数据的交互, shadow update主要用于设备状态的同步,raw类型的主题数据,允许用户在阿里云控制台配置自定义的脚本去对数据进行处理。 了解更多详情, 请查看阿里云物联网文档页面
ali.publish_raw_up_msg(str('RAW MSG'))
  • 发布raw类型消息
ali.publish_shadow_update_msg(desiredStr='DEVICE_STATE')
  • 发布shadow设备状态消息
ali.publish_user_update_msg(str((json.dumps(({'Pressure':(env2_0.pressure),'Temperature':(env2_0.temperature),'Humidity':(env2_0.humidity)})))))
  • 发布user常规消息
def raw_down_cb(payload):
  global shadow_msg, raw_msg, user_msg
  raw_msg = payload
  pass

ali.subscribe_raw_down_msg(raw_down_cb)
  • 订阅raw类型消息
def shadow_get_cb(payload):
  global shadow_msg, raw_msg, user_msg
  shadow_msg = payload
  pass

ali.subscribe_shadow_get_msg(shadow_get_cb)
  • 订阅shadow设备状态消息
def user_get_cb(payload):
  global shadow_msg, raw_msg, user_msg
  user_msg = payload
  pass


ali.subscribe_user_get_msg(user_get_cb)
  • 订阅user常规消息
On This Page