阿里云IoT Studio遇到“数据格式验证出错”怎么解决?
摘要:初学阿里云IoT Studio时,常遇到“数据格式验证出错”的错误,有很多同学不知道怎么处理,本文向大家介绍一下解决方法。
目录
1.问题描述
2.原因分析
3.解决方法
1.问题描述
我们学习阿里云物联网,一般都是从一个简单的智能灯开始做的。
智能灯涉及到硬件、网络、云平台,甚至是手机APP等多方面的知识。
任何一个环节出问题,都可能导致想实现的功能得不到实现,想看到的结果看不到。
不过别担心,我的文章为大家详细介绍了如何实现一个机遇阿里云物联网平台和arduino d1模块的智能灯。
详细链接是:
从arduino板开始做到阿里云app控制--WeMos D1或ESP8266连接阿里云文章合集及源代码
从arduino入门阿里云物联网平台非常适合,硬件成本低,编程简单,云平台的知识一点都不少学。许多同学已经成功实现了自己的智能灯。
近期给我留言的同学,可以分为2类:
第一类是想学习使用android studio来制作自己的APP,摆脱第三方平台的束缚,代价是需要更多的知识积累才行。
第二类是学习阿里云原生的IoT Studio,使用平台提供的无代码工具生成专业的物联网网络应用和移动应用,代价是需要自己的域名和公网IP。
其中,提出第二类问题的同学,又在入门IoT Studio的时候,遇到了一些基本的问题。这些问题只靠看阿里云官方文档是解决不了的。这些问题中,最多的就是“数据格式验证出错”问题。
我们一般是设计一个按钮(用来控制),一个指示灯(用来显示)。
可是当实际设计的时候,却发现,按钮数据源配置完成,验证数据格式的时候,提示错误。
错误提示如下:“数据格式验证出错”。设备模拟数据的数据格式不满足【组件】的数据格式要求,【组件】要求数据必须为【布尔】格式类型,请参考以下数据结构。
我们反复检查,无论是产品,还是设备,属性中的“主灯开关”的确是布尔型没有错误。
那么发生这个问题的原因是什么呢?
2.原因分析
原因是因为设备没有向云平台报送过属性。
仔细看一下设备数据源配置完之后的界面,就发现按钮上方显示一个红色的提示字符串
“该设备未上报过属性数据,你可以通过“在线模拟”模拟设备数据,并通过“推送”来上报”。
这是为什么呢?
是因为设备没有上报过属性!提示就是答案!
可是我们明明编写了智能灯的响应程序了啊,云平台下发的指令我们已经做出响应了啊,云平台让我们关闭就关闭,让我们打开就打开。
问题还真的在这个地方。
因为根据mqtt通信协议,IoT Studio的控件向外publish一个topic之后,订阅这个topic的物联网设备会收到属性改变的指令,然后做出硬件上的改变。
但这个通信过程还没有结束,因为IoT Studio的控件不知道硬件是否真的已经做出有效的反应了。因此硬件需要向云平台的topic也publish一个当前的状态,告诉平台属性变化成功。
当云平台订阅了这个topic之后,收到这个指令,就明白当前的状态是什么,然后就将按钮控件的状态“显示”为指定的状态。
没错,就是“显示”。也就是说,云平台控件同时兼顾着两个功能:publish和subscribe。
如果没有收到反馈,它就不知道怎么样显示自己的状态了,就会报错。
我们通过日志来观察。
如果没有返回值,那么通过IOT Studio 会导致关不掉,或者开不开。
日志如下图所示,只会显示服务调用的内容。
如果为代码添加返回值,也就是做出响应之后,返回当前的状态的话。
日志是这样子的,除了物模型服务调用,还有物模型和物模型消息两种日志。按钮也能够正常操作了。
知道了问题的症结,那么解决方法也就很容易理解了。
3.解决方法
大家做的硬件可能五花八门,但是问题解决方法大体上是一致的,
解决方法:就是做出硬件响应之后,要向云平台publish当前的状态。
下面以我的文章中提到的硬件和软件为例,具体可以参考文章:
从arduino板开始做到阿里云app控制--WeMos D1或ESP8266连接阿里云文章合集及源代码
硬件使用的是arduino d1模块
源代码用的是文章中的源代码。
如果我们要让设备向云平台publish属性改变,应该做出一定的修改。
void powerCallback(JsonVariant p)
{int PowerSwitch = p["LightSwitch"];if (PowerSwitch == 1){//看是否会响应云平台的内容Serial.println("Switch=1 ");digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage levelAliyunIoTSDK::send("LightSwitch", 1);}else{//是否会响应平台的内容Serial.println("Switch=0");digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGHAliyunIoTSDK::send("LightSwitch", 0);}
}
这样就实现了对硬件操作之后,再向云平台publish的操作。当云平台的topic做出改变之后,就可以显示正确的状态了。
效果如下图,首先在IoT Studio的编辑界面,按钮上方的红色提示文字消失了。其次是实际运行这个页面之后,能够正常控制LED灯的开关了。
阿里云IoT Studio遇到“数据格式验证出错”怎么解决?相关推荐
- 阿里云IOT入门教程(三)阿里云IOT Studio自建手机App控制Wemos D1 Mini( ESP8266 )板载灯亮灭
阿里云IOT入门教程(一)阿里云IOT Studio自建手机App控制Wemos D1 Mini( ESP8266 )板载灯亮灭 概述 所需材料 Mqtt预备知识 hacklab端开发 * 硬件端上报 ...
- 物联网控制APP入门专题(二)---阿里云iot studio移动可视化功能基本操作
微信小程序连接阿里云物联网平台云端API实现物联操控 03-25 其中包含cryptojs.uuid生成模块,还有用于微信小程序连接阿里云物联网平台云端API的专属sdk,已结实现效果demo,只需填 ...
- 更听话的温室大棚系统-阿里云ioT Studio实现动态业务逻辑
需求: 用阿里云物联网平台开发的温室大棚物联网系统,正在建设过程中,目前的系统是后台设置好了温度.湿度,光照度的阀值,达到设置值就动作设备,考虑到交付后,这些值可能要变动,每次叫我去设置,也很麻烦,于 ...
- 基于阿里云IOT Studio和STM32的电机远程监测设计
今天来总结一下用阿里云的IOT Studio做的一个电机远程监控的小系统吧! 说来话长,在去年九月份的时候,我踏入了研究生的行列.我的导师是搞电机方向的,但我本科是测控的,考虑我的基础,导师给我推荐了 ...
- 阿里云--IOT Studio初学
1.初学基于阿里云IOT云平台应用开发 1.1 阿里云的-物联网应用开发-IOT Studio 此次使用阿里云的-物联网应用开发-IOT Studio;物联网应用开发(IoT Studio,阿里云:h ...
- 使用阿里云IoT Studio建立物模型可视化界面
使用阿里云IoT Studio建立物模型可视化界面 上一篇文章介绍了如何使用ESP-01S上报数据到物模型:https://blog.csdn.net/weixin_46251230/article/ ...
- 阿里云IoT Studio升级版新增解决方案引擎,大幅提升方案交付效率
简介:8月25日,阿里云发布IoT Studio升级版,新增了解决方案引擎,让设备方案商复用之前搭建的解决方案模板进行简单的定制化修改,即可交付.使整个物联网解决方案的交付过程由几个月,缩短到几小时, ...
- 阿里云IoT Studio升级版新增解决方案引擎 大幅提升方案交付效率
简介: 8月25日,阿里云发布IoT Studio升级版,新增了解决方案引擎,让设备方案商复用之前搭建的解决方案模板进行简单的定制化修改,即可交付.使整个物联网解决方案的交付过程由几个月,缩短到几小时 ...
- 阿里云 IoT Studio 升级版新增解决方案引擎 大幅提升方案交付效率
8月25日,阿里云发布IoT Studio升级版,新增了解决方案引擎,让设备方案商复用之前搭建的解决方案模板进行简单的定制化修改,即可交付.使整个物联网解决方案的交付过程由几个月,缩短到几小时,用户经 ...
最新文章
- python3 的乐趣进度条
- display:inline-block之用法
- Eclipse 中修改java编译版本
- 飞鸽传书谈哈希表之数学原理
- 构建之法第三章学习小记
- 【微收藏】FourShadows.js – 时间感知的算法驱动的图标阴影JS库
- volatile简记
- 《软件调试》第二版正式发售,看雪给你早鸟价
- 这可能是有史以来最详细的JNI入门教程
- 计算机 行列式,行列式计算器
- 苹果电脑在哪里改计算机id,苹果MAC电脑如何更改ID账号
- matlab FCM算法实现
- 会员直推奖php程序_直推奖+对碰奖+*奖+互助奖+见点奖
- Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) B. Shashlik Cooking
- 计算机如何认硬盘,电脑怎样识别大容量的硬盘?
- [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
- 一米村长讲故事机器人_村长讲故事 | 牛牛特工队番外
- 华为荣耀7i刷linux,奇兔刷机独家支持华为荣耀7i一键刷机 全网首发刷机ROM包
- 使用Factory IO连接TIA Portal 自动化仿真
- 那些35岁的程序员哪里去了?
热门文章
- 【c++师傅领进门,修行靠个人】第七篇:C++模板
- 图像的边缘检测-三种方法
- 七夕送什么礼物好?小众又高级的产品礼物推荐
- 给大家分享一下,免费的云服务器
- 第五十章 SQL命令 HAVING(一)
- Java练习:求圆、正方形面积,显示学生考试的总分和平均分,之后显示大于考试平均分的成绩信息。
- Log4j中conversionPattern的含义
- mysql safe 配置 my.cnf_linux下mysql配置文件my.cnf最详细解释
- (轉貼) 問鼎北市/欣然接受敗選 宋楚瑜告別演說:正式退出政壇 (News)
- 业务重要?还是技术重要?