物模型是云平台为物联网产品定义的数据模型,用于描述产品的功能。将产品抽象成数据的集合,方便云端进行控制。
物模型从 属性 、 服务 和 事件 三个维度,分别描述了该实体是什么、能做什么、可以对外提供哪些信息。定义了物模型的这三个维度,即完成了产品功能的定义。
TSL 格式是一个 JSON 格式的文件,完整的 TSL 格式可以参考: 阿里云物模型 。
嵌入式端开发固件往往只需要关注少数几个参数,可以在产品的 功能定义 页面,单击 物模型TSL , 精简物模型 里面查看。
需要关注的有 "properties","events","services",在 JSON 格式里,这三者都是数组,分别存储了该物模型的数据,事件和服务,在 C-SDK 里也就分别是 IOT_Linkkit_Report() 上报属性, IOT_Linkkit_TriggerEvent() 触发事件和注册为 ITE_SERVICE_REQUEST 的回调函数。
在上报属性时,只需要关注 "identifier" 名称对应的值(字符串),此时表示该属性在产品下的唯一标识。例如一个精简物模型属性为:
则上报的数据只需要为 {"count":10} 即可,需满足 JSON 字符串的格式,字符串内有一个名称/值对,名称为 "count"(物模型里 "identifier" 的值),值对为 10(满足物模型里数据类型为 int 的要求)。
触发事件需要关注 "identifier" 名称对应的值(字符串),表示该事件在产品下的唯一标识;还需要关注 "outputData",表示上报事件的输出值。一个精简物模型例子如下:
"outputData" 数组的使用与属性上报一致,这里就不介绍了。
服务调用需要同时关注 "identifier","inputData" 和 "outputData" 这三个名称,分别表示该服务在产品下的唯一标识,服务的输入参数,服务的输出参数。与函数调用有输入值和输出值类似,服务调用也有这些特征。
物模型数据校验方式目前有两种, 弱校验 和 免校验 。
也就是说,弱校验针对产品设备的上报数据,只要 idetifier 是一致的,且 dataType 字段满足要求,就接收该数据,并且在其他云端产品流转。
为什么云端可以设置和获取接入设备的属性呢?为什么接入设备可以上报事件给云端呢?又为什么云端可以调用接入设备提供的服务呢?这就是这一小节解释的内容。
物模型基于 MQTT 协议,MQTT 协议的介绍不在此处展开。
云端定义了一系列的 Topic,在设备接入云端时,C-SDK 向 MQTT broker 订阅了一些的 Topic,而云端需要与设备交互时,就向 MQTT broker 发布相应的 Topic,这样就完成了交互过程。同理,云端也会订阅一些 Topic,设备可以向这些 Topic 发布消息。
接入设备端订阅发布的 Topic 列表如下:
其中 ${productKey} 会替换为实际的产品名,${deviceName} 会替换为实际的设备名,${tsleventidentifier} 是事件的标识符,${tslserviceidentifier} 是服务的标识符,最大限度地保证了 Topic 的唯一性。
这些 Topic 的作用在后面用时序来描述。
1 物联网(Internet of Things,IoT)
指将传感器、执行器、智能设备、人工智能和云计算等技术融合在一起,通过互联网连接、交互和协同工作来实现智能化和自动化的网络。
2 传感器(Sensor)
指一种可以感知并测量实际物理量的设备或系统,通过将物理信号转换成数字或模拟信号来输出相应的测量结果。
3 执行器(Actuator)
指一种可以根据输入信号转换成机械或电动力的设备或系统,用于控制或驱动实际物理行为。
4 物联网平台(IoT Platform)
指一种用于将各种传感器、执行器和智能设备互联互通的技术平台,提供数据采集、数据分析、数据处理和数据交互等功能。
5 云计算(Cloud Computing)
指一种基于互联网的分布式计算和存储模式,将计算和数据存储分布在多个服务器上,提供虚拟化和动态扩展等功能。
6 数据采集(Data Collection)
指通过传感器和其他设备收集和记录现实世界中的数据,如温度、湿度、压力、位置、声音等。
7 数据处理(Data Processing)
指将采集到的数据进行分类、筛选、转换、分析等处理,以提取有用的信息,比如预警、异常检测、预测分析等。
8 数据交互(Data Interaction)
指通过互联网将数据传输到物联网平台等服务器上,并将处理结果返回到智能设备中,以实现设备之间的互通和协同工作。
9 人工智能(Artificial Intelligence,AI)
指模拟人类智能和行为的计算机系统和算法,用于实现自动化、智能化和自主学习等功能,如图像识别、语音识别、机器人等。
10 区块链(Blockchain)
指一种去中心化的分布式账本技术,用于实现安全性、透明度和信任度的高效交互和协同,如支付、合同管理、安全通信等。
物联网架构中智能公交实例中的四个层次分别是感知层、网络层、数据处理层和应用层。
感知层:感知层是物联网架构的最底层,包括传感器、执行器等各类物联网设备,用于采集各种物理量、环境数据和状态信息等。在智能公交实例中,感知层包括GPS定位、车载摄像头、气象传感器、车载计算机等设备,用于实时采集公交车运行的位置、状态、路况、天气等信息。
网络层:网络层是物联网的中间层,主要负责数据的传输和处理,将感知层采集到的数据传输到数据处理层进行分析和处理。在智能公交实例中,网络层包括无线通信网络和互联网,用于连接各个公交车辆和数据处理中心。
数据处理层:数据处理层是物联网实现数据智能分析和决策的核心层次,主要由数据存储、数据分析、数据挖掘等组成,用于对感知层采集到的海量数据进行处理和分析。在智能公交实例中,数据处理层包括云端服务器、物联网平台等设施,用于对公交车的实时位置、车速、路况等信息进行处理、分析和预测。
应用层:应用层是物联网架构的最高层,主要是由各种智能应用程序组成,用于实现物联网数据的应用和展示。在智能公交实例中,应用层包括公交车调度和管理系统、智能导航系统、乘客安全监控系统等应用程序,用于指导公交车的运行、改善乘客出行体验等。
总之,物联网架构中智能公交实例的四个层次,构成了一个完整的物联网生态系统,涵盖了物联网系统的各个方面,为智慧城市的建设和公共交通业的发展提供了有力的支持。
如今,超过250亿台“物体”连接到互联网上,预计到2025年,这个数字将翻一番。工业物联网(IIoT)以一种爆炸式的方式迅速发展。工业物联网(IIoT)设备、标准和通信协议的激增,使得对IIoT的有效管理变得非常具有挑战性。如何定义工业物联网 (IIoT) 平台?
工业物联网平台 是一种工业物联网软件,它使组织能够安全地管理工业物联网生态系统中所有连接的人、系统和对象。
在界定工业物联网平台时,我们应该认识到,物联网已经创造了一个新的整合水平。随着成千上万的工业物联网设备接入网络,企业需要管理比以往更多的端点。然而,这不是一个简单的设备问题,工业物联网实际上是一个由人、系统和对象组成的数字生态系统。这就需要一个工业物联网平台来安全有效地管理生态系统的每一个元素。
工业物联网平台有哪些不同类型?
虽然工业物联网平台研发的初衷是对工业物联网的设备和数据进行管理和控制,但为了适应不同的用例,已经开发了许多不同类型的平台。事实上,工业物联网平台很难分类,反而工业物联网平台供应商正在改进其平台产品,以满足客户需求和特定的业务需求。
工业物联网平台将提供不同的功能组合,包括工业物联网的端点管理和连接、物联网数据的采集、接收和处理、数据的可视化和分析,以及将物联网数据集成到业务流程和工作流中。在比较不同类型的平台时,应根据组织的业务需求和特定的IT基础设施,并将其与工业物联网的解决方案相匹配。
工业物联网平台应该具备哪些特点?
因此,最好的工业物联网平台因组织而异,单个平台功能集无法为每个用例提供足够的解决方案。但是,任何一个工业物联网平台都应该具备以下特点:
安全
安全性是工业物联网平台的核心,它不仅可以保护所有物联网端点免受外部网络攻击,还可以处理来自组织内部的潜在恶意活动。
连接性
每一个工业物联网设备都必须快速、安全地进行配置,并对其生命周期的所有阶段进行管理,包括在设备配置、注册、激活、挂起、未挂起、删除和按需重置时对其进行跟踪和授权。
集成
集成是工业物联网面临的最大挑战之一。工业物联网平台允许物联网设备与不同的企业应用、云服务、移动应用和传统系统无缝、安全地连接和共享信息。
识别
工业物联网平台可以支持最广泛的物联网设备。无论在工业物联网架构中的任何地方,都能自动感知物联网设备的存在,建立安全连接,并能快速建立设备凭据,或在需要时自动分配。
分析
物联网设备大大增加了组织中的数据量。分析工业物联网应该是工业物联网平台最强大的功能之一。它可以对工业物联网数据进行适当的可视化和分析,为改进数据驱动的决策提供实际的见解。
管理多个工业物联网传感器很简单,但如今,企业拥有数十万台工业物联网设备来执行遍及组织内部的众多任务。工业物联网设备有多种形状和尺寸,没有通用的工业物联网标准或连接方式。管理一个工业物联网网络意味着能够监控一系列异构的工业物联网设备。
如今,工业物联网(IIoT)平台为工业物联网在几乎所有行业的快速发展提供了解决方案。工业物联网平台能够将设备和企业应用软件完美融合,使数据在互联的人、系统和对象之间无缝、安全地流动。
移动便携设备,手机、平板是Android系统,在最底层传感器是检测模块。收集到的数据通过zigbee 发送给协调器,协调器给网关,最后到服务器,然后Android将服务器的数据外部调用(归根结底,还是与服务器的通信)。这时候用到的就是Web Service,而手机端就是客户端。完成这个调用,首先要在服务器端部署Web Service,之后再在客户端书写代码,访问接口,调用数据。把这个思路理清,接下来再去做,而我在这里首先将客户端的代码书写,服务器端在下一篇中给出详细的说明。
一、准备工作
1SDK中并没有Web Service的类库,这就需要第三方类库调用,就是koasp2,简单的说,你得先导入一个jar包。完成之后如下图。
2部署服务器端首先需要Tomcat,这是下一篇中才会用到的,我在这儿只是先把它准备好,客户端的简单调用用不到它。>
二、接下来就是代码的编写过程(注:这是客户端的)
1首先还是Manifest,给它一个网络访问权限
2书写xml布局文件(还是因为自己做得界面太丑,不粘了)
3书写Activity。新建一个类(这只是代码示例,需要写的就是这些,可以传多个参数),
public class CommonWebService {
// 所调用的WebService的终端
public static String endpoint = ">
// 所调用的WebService的地址
public static String ip = "192168121";
// 所调用的WebService的命名空间
public static String namespace = ">
// 所调用的WebService中的方法
public static final String Infusion_METHOD = "MygetInfusion";
public void show_Infusion() {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
// 定义命名空间
String nameSpace = ">
// 定义调用方法名称
String methodName = "query_Infusion";
// endPoint以及soapAction
String endPoint = ">
String soapAction = ">
// 指定WebService的命名空间和调用方法
SoapObject soapObject = new SoapObject(nameSpace, methodName);
// 生成调用WebService方法调用的soap信息,并且指定Soap版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelopeVER11);
envelopebodyOut = soapObject;
//并不是dotnet开发的Web Service
envelopedotNet = false;
// 输出
envelopesetOutputSoapObject(soapObject);
// 定义一个>
>
try {
transportcall(soapAction, envelope);
// transportcall(null, envelope);
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
// 获取返回的数据
SoapObject object = (SoapObject) envelopebodyIn;
// 获取返回的结果
String result = null;
result = objectgetProperty(0)toString();
Message message = handler_shuyeobtainMessage();
messageobj = result;
handler_shuyesendMessage(message);
}
})start();
}
public static String reslut_shuye;
private static Handler handler_shuye = new Handler() {
@Override
public void handleMessage(androidosMessage msg) {
// 将WebService得到的结果返回给TextView
reslut_shuye = msgobjtoString();
};
};
}
4在上述的代码中,需要注意的几点,你调用Web Service,你得先弄明白四个值:命名空间、调用的方法名称、EndPoint、SOAP Action。因为服务器端是自己部署,wsdl就要自己写,自己会部署服务器端了,这四个值也就一幕了然了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)