物联网开发实战
郭朝斌
小米生态链企业秒秒测 IoT 事业部总监,前诺基亚高级工程师
17380 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 36 讲
物联网开发实战
15
15
1.0x
00:00/00:00
登录|注册

06 | 物模型:如何定义智能电灯?

你好,我是郭朝斌。
在基础篇最后一讲的智能家居项目里,我们设计了几个小场景,其中就包括智能电灯。如果你只是想自娱自乐,做一个可以用手机 App 控制的电灯,那么只要通过代码实现控制功能就足够了。至于是怎么控制的,电灯有什么状态上报,你自己知道就行了。
但是,如果你想让智能电灯真正成为物联网系统的一部分,那就不仅仅是在封闭的、确定的场景下写几行代码的事儿了。在物联网平台上,可能有其他人开发的应用需要显示你的智能电灯的状态;也可能有别的设备,比如光照传感器、智能音箱,在场景联动中要控制灯的状态。
所以,你需要把控制电灯打开和关闭的方法,告诉这些应用和产品的开发人员。同时,这些开发人员也需要了解,智能电灯的状态信息如何获取和解析。那么,你面临的第一个问题就是,用什么方式提供这些接口信息呢?
另外,市面上不止一款智能电灯,如果要一一适配,那工作量肯定很大,而且扩展起来会很困难。那么,你面临的第二个问题就是,平台应用如何避免针对每款智能灯进行定制开发呢?
计算机领域的软件体系结构采用的是一种的结构,所以有人说过这么一句名言:“计算机科学领域的任何问题,都可以通过增加一个间接的中间层来解决。”
按照这个思路,我们就可以在智能电灯实体和平台之间,增加一层标准规范来解决这些问题。就像,你使用不同的浏览器访问极客时间的网站,都可以看到课程的文本、音频、视频等内容,因为这些内容都是基于 HTML (HyperText Markup Language,超文本标记语言)等规范组织的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

物模型是数字化描述物理实体的模型,用于数字世界的数字模型。它通过属性、事件和动作来定义智能设备的特征和功能。物模型的定义采用JSON格式,包括布尔型、整数型、字符串型、浮点型、枚举型和时间型等数据类型。物模型的使用可以让应用程序不再针对单个产品设备,而是对同一类设备采用相同的处理逻辑,实现了应用开发的基础。物模型的规范化设计也方便了设备的功能定义和实现场景联动。在创建模型时,可以采用拷贝和继承两种模式,简化了模型的定义过程。此外,物模型的拓展应用包括设备影子和数字孪生的概念,以及它们在物联网和工业物联网领域的应用。设备影子用于缓存设备状态,实现应用程序和设备的解耦,解决了设备网络稳定性和多次请求的问题。数字孪生则是物理实体的数字化模型,集成了物理实体的各类数据,促进物理实体的优化,已在工业物联网领域得到广泛应用。物模型在物联网系统开发中发挥着重要作用,为应用开发提供了统一的数据模板,方便了场景联动的实现,同时为平台上实现设备影子提供了基础。类似地,数字孪生也是建立在物理实体的数字模型之上的重要技术方向。文章还提出了一个思考题,要求读者定义一个环境温湿度传感器的物模型,以加强学习效果。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《物联网开发实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(26)

  • 最新
  • 精选
  • Nior
    结合厂商实际文档加深理解: 华为IoT物模型文档:https://support.huaweicloud.com/usermanual-iothub/iot_01_0017.html 小米IoT物模型文档:https://iot.mi.com/new/doc/standard/miot-spec/spec

    作者回复: ������

    2020-11-25
    5
    22
  • doulefi123
    物模型给我启发太大了,因为我是半路出家,现在我们的设备用mqtt订阅了多条消息(开、关等各种动作),如果改成物模型,订阅一条消息就可以了,相对经济些。再加上场景控制联动,能实现自由形式的功能。

    作者回复: 谢谢你的留言,多交流!

    2020-11-20
    12
  • Socrakit
    //环境温湿度传感器 { "version": "1.0", "properties": [ { "id": "temperature", "name": "温度", "desc": "环境温度", "mode": "rw", "define": { "type": "float", "unit": "℃", "step": "0.5", "min": "-40.0", "max": "120.0", "start": "0" } }, { "id": "humidity", "name": "湿度", "desc": "环境湿度", "mode": "rw", "define": { "type": "float", "unit": "%", "step": "1", "min": "0", "max": "100", "start": "0" } }, { "id": "temperature_limit", "name": "温度上下限", "desc": "温度上下限", "mode": "rw", "define": { "type": "float", "max": "80", "min": "-10" } , { "id": "humidity_limit", "name": "湿度上下限", "desc": "湿度上下限", "mode": "rw", "define": { "type": "float", "max": "60", "min": "20" } } ], "events": [ ...... { "id": "low_humidity", "name": "LowHumidity", "desc": "Alert for humidity is low", "type": "alert", "required": false, "params": [ { "id": "humidity", "name": "Humidity", "desc": "Current Humidity", "define": { ..... } } ] }, { "id": "excess_temperature", "name": "ExcessTemperature", "desc": "Alert for excess temperature", "type": "alert", "required": false, "params": [ { "id": "temperature", "name": "Temperature", "desc": "Current temperature", "define": { ..... } } ] }, ...... ], ...... }

    作者回复: ������赞 温度、湿度的mode可以改为只读r

    2020-11-22
    5
  • 胡黎红
    tsl是标准么?

    作者回复: 还没有统一的标准,各家平台都有自己的定义。

    2020-11-23
    4
  • marquis
    // 温湿度传感器的物模型设计 { "version": "1.0", //模型版本 "properties": [ //属性列表 { "id": "temp", //检测环境温度的属性 "name": "温度检测", "desc": "检测设备周围环境的温度", "required": true, "mode": "rw", //write是为了厂测模式进行校准。正常使用下不允许w,只能r "define": { "type": "float", "unit": "℃"||"℉", "step": "1", "min": "0.0", //根据产品实际测试能力修改 "max": "80.0", //根据产品实际测试能力修改 "start": "1" } }, { "id": "humidity", //检测环境相对湿度的属性 …… }, { "id": "Hightemp_threshold", //高温阈值 "name": "高温阈值", "desc": "高温报警阈值", "required": false, "mode": "rw", "define": { "type": "float", "unit": "℃"||"℉", "step": "1", "min": "-10.0", "max": "80.0", "start": "1" } }, { "id": "Lowtemp_threshold", //低温阈值 …… }, { "id": "HowHumidity_threshold",//高湿阈值 …… }, { "id": "LowHumidity_threshold",//低湿阈值 …… }, ], "events": [ //事件列表 { "id": "high_temp", //高温告警 "name": "Hightemp", "desc": "Alert for temp is high than threshold", "type": "alert", "required": false, "params": [ { "id": "temp", "name": "Hightemp", "desc": "Current temp", "define": { "type": "float", "unit": "V", "step": "1", "min": "0.0", "max": "24.0", "start": "1" } } ] }, { "id": "low_temp", //低温告警 …… }, { "id": "high_humidity", //高湿告警 …… }, "id": "low_humidity", //低湿告警 …… }, { "id": "low_voltage", //供电电压不足告警 …… }, ], "actions": [], //动作列表 …… }

    作者回复: ������大赞

    2020-11-27
    3
  • marquis
    谢谢郭老师。在TSL物模型中,我主要学习到三个关键参数“属性,事件和动作”之间的关系。 用自己的话总结:属性,是产品能到达的某种状态。而有了属性,使用者才能通过应用去控制产品到达某种属性状态,这就是动作。事件就是产品在遇到主动完成属性切换或者被动检测到属性变换事件,上报给应用的信息。

    作者回复: ������

    2020-11-26
    2
  • 贤伟
    Lwm2m 协议中把物理实体都看作资源(resource),可以使用 XML 格式定义资源集合(标准和扩展的 )。使用路径Object/ObjectInstance/Resource/ResourceInstance 来操作资源(读、写、执行、订阅)。我理解和文中的属性相似,只是已经集成进了协议里,作为M2M沟通的通用语言。

    作者回复: ������ 是的,LwM2M是基于IPSO定义的这些,相比来说,它要比MQTT和CoAP这些应用层更进一步。

    2020-11-20
    3
    2
  • lgtao
    郭老师能否讲讲物模型在实际物联平台开发过程中具体怎么落地实现?有什么最佳实践案例?

    作者回复: 可以借鉴腾讯、阿里等平台的功能实现,在这个过程中结合自己的需求做调整。

    2021-01-23
    1
  • FreeMason
    工业物联网(本人互联网,因知识局限性,可能有误差) 动作(服务)这块好实现吗?感觉工业级对低延时、稳定要求应该很高。进行动作操作时,感觉像是请示-响应模式,如何知道设备接收指令成功并且正常执行了(类似Qos),但对于工业级出现较高延时与异常(执行未成功)或指令重复应该是比较严重的事情,延时可以使用 5G 来解决,但在可靠性稳定性与指令重复上现有可靠的方案吗?

    作者回复: 👍思考很深入 要看场景,比如自动驾驶,也对实时要求很高。所以需要边缘计算。 我们在这里讨论物联网,但是一些场景还是需要一体的系统,加上实时操作系统,并不一定所有数据要联网处理

    2020-12-08
    2
    1
  • 钦开
    老师,您觉得边缘计算和物联网是一种什么关系呢?

    作者回复: 这个在网关那节我会讲到。简单说物联网需要边缘计算。

    2020-11-20
    2
    1
收起评论
显示
设置
留言
26
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部