ThingsBoard教程(十六):制作RPC部件

前言

各位读者好,截止目前,ThingsBoard系列文章已经做了十篇,分别是 ThingsBoard教程(一):ThingBoard介绍及安装 ThingsBoard教程(二):租户,租户配置,部件组模块的使用 ThingsBoard教程(三):系统设置模块的使用 ThingsBoard教程(四):规则链简介与操作 ThingsBoard教程(五):客户,资产管理 ThingsBoard教程(六):设备管理 ThingsBoard教程(七):模拟设备遥测 ThingsBoard教程(八):自定义UI ThingsBoard教程(九):前端架构分析 ThingsBoard教程(十):前端初级定制化 ThingsBoard教程(十一):部件库的入门知识 ThingsBoard教程(十二):部件库中使用echarts ThingsBoard教程(十三):部件的基本API解释 ThingsBoard教程(十四):部件库基本JS函数API解释,及变量的使用,显示 ThingsBoard教程(十五):部件库的点击事件

上一篇我们讲解了tb的静态组件的开发, 有关事件的控制,本篇文章我们来聊聊 在tb部件库中使用 RPC

RPC部件效果展示

先来看下效果图

部件展示效果ThingsBoard教程(十六):制作RPC部件

通讯结果

ThingsBoard教程(十六):制作RPC部件

ThingsBoard教程(十六):制作RPC部件
ThingsBoard教程(十六):制作RPC部件

RPC部件库开发

创建部件 选择 Control widget 部件类型。 这个很关键。ThingsBoard教程(十六):制作RPC部件 然后进入到编辑页面 html 代码

将使用以下内容替换html页面的内容 <form #rpcForm=”ngForm” (submit)=”sendCommand()”> <div class=”mat-content mat-padding” fxLayout=”column”> <mat-form-field class=”mat-block”> <mat-label>RPC method</mat-label> <input matInput required name=”rpcMethod” #rpcMethodField=”ngModel” [(ngModel)]=”rpcMethod”/> <mat-error *ngIf=”rpcMethodField.hasError(required)”> RPC method name is required. </mat-error> </mat-form-field> <mat-form-field class=”mat-block”> <mat-label>RPC params</mat-label> <input matInput required name=”rpcParams” #rpcParamsField=”ngModel” [(ngModel)]=”rpcParams”/> <mat-error *ngIf=”rpcParamsField.hasError(required)”> RPC params is required. </mat-error> </mat-form-field> <button [disabled]=”rpcForm.invalid || !rpcForm.dirty” mat-raised-button color=”primary” type=”submit” > Send RPC command </button> <div> <label>RPC command response</label> <div style=”width: 100%; height: 100px; border: solid 2px gray” [innerHTML]=”rpcCommandResponse”> </div> </div> </div> </form>

<

这里使用的angular的语法 配合material组件 来布局一个表单。 javascript 代码

将以下内容写入javascript的面板中 self.onInit = function() { self.ctx.$scope.sendCommand = function() { var rpcMethod = self.ctx.$scope.rpcMethod; var rpcParams = self.ctx.$scope.rpcParams; var timeout = self.ctx.settings.requestTimeout; var oneWayElseTwoWay = self.ctx.settings.oneWayElseTwoWay ? true : false; var commandObservable; if (oneWayElseTwoWay) { commandObservable = self.ctx.controlApi.sendOneWayCommand(rpcMethod, rpcParams, timeout); } else { commandObservable = self.ctx.controlApi.sendTwoWayCommand(rpcMethod, rpcParams, timeout); } commandObservable.subscribe( function (response) { if (oneWayElseTwoWay) { self.ctx.$scope.rpcCommandResponse = “Command was successfully received by device.<br> No response body because of one way command mode.”; } else { self.ctx.$scope.rpcCommandResponse = “Response from device:<br>”; self.ctx.$scope.rpcCommandResponse += JSON.stringify(response, undefined, 2); } self.ctx.detectChanges(); }, function (rejection) { self.ctx.$scope.rpcCommandResponse = “Failed to send command to the device:<br>” self.ctx.$scope.rpcCommandResponse += “Status: ” + rejection.status + “<br>”; self.ctx.$scope.rpcCommandResponse += “Status text: ” + rejection.statusText + “”; self.ctx.detectChanges(); } ); } }

<

Settings schema 配置 { “schema”: { “type”: “object”, “title”: “Settings”, “properties”: { “oneWayElseTwoWay”: { “title”: “Is One Way Command”, “type”: “boolean”, “default”: true }, “requestTimeout”: { “title”: “RPC request timeout”, “type”: “number”, “default”: 500 } }, “required”: [] }, “form”: [ “oneWayElseTwoWay”, “requestTimeout” ] }

<

Data key settings schema { “schema”: { “type”: “object”, “title”: “Settings”, “properties”: { “oneWayElseTwoWay”: { “title”: “Is One Way Command”, “type”: “boolean”, “default”: true }, “requestTimeout”: { “title”: “RPC request timeout”, “type”: “number”, “default”: 500 } }, “required”: [] }, “form”: [ “oneWayElseTwoWay”, “requestTimeout” ] }

<

做完这些后就能看到部件的效果了ThingsBoard教程(十六):制作RPC部件

这里显示的太小了。我们点击右上角的 全屏图标就能放大,显示正常。ThingsBoard教程(十六):制作RPC部件

京云律所-娄底站 京云律所-朔州站 京云律所-枣庄站 京云律所-仁怀站 京云律所-罗定站 京云律所-扬中站 京云律所-甘南站 京云律所-荣成站 京云律所-原平站 京云律所-和龙站 京云律所-江门站 京云律所-会理站 京云律所-涟源站 京云律所-临汾站 京云律所-界首站 京云律所-阿里站 京云律所-中卫站 京云律所-个旧站 京云律所-奎屯站 京云律所-北安站 京云律所-漳州站 京云律所-银川站 京云律所-鞍山站 京云律所-阜新站 京云律所-北京站 京云律所-庐山站 京云律所-吐鲁番站 京云律所-弥勒站 京云律所-霍尔果斯站 京云律所-洮南站 京云律所-北海站 京云律所-宁安站 京云律所-柳州站 京云律所-万源站 京云律所-昆山站 京云律所-昌都站 京云律所-阿拉善站 京云律所-武冈站 京云律所-瓦房店站 京云律所-怀化站 京云律所-三亚站 京云律所-瑞安站 京云律所-枝江站 京云律所-湘潭站 京云律所-滕州站 京云律所-钦州站 京云律所-华阴站 京云律所-巴彦淖尔站 京云律所-嫩江站 京云律所-侯马站 京云律所-河池站 京云律所-绥化站 京云律所-乳山站 京云律所-南京站 京云律所-介休站 京云律所-绵竹站 京云律所-萍乡站 京云律所-海北站 京云律所-京山站 京云律所-四会站 京云律所-巩义站 京云律所-韩城站 京云律所-通化站 京云律所-兴义站 京云律所-六安站 京云律所-日喀则站 京云律所-额尔古纳站 京云律所-武安站 京云律所-邹城站 京云律所-肇庆站 京云律所-慈溪站 京云律所-兰溪站 京云律所-喀什站 京云律所-齐齐哈尔站 京云律所-玉林站 京云律所-焦作站 京云律所-讷河站 京云律所-茂名站 京云律所-安庆站 京云律所-禄丰站 京云律所-宜宾站 京云律所-张掖站 京云律所-霍林郭勒站 京云律所-昌邑站 京云律所-老河口站 京云律所-张家界站 京云律所-荔浦站 京云律所-黄南站 京云律所-利川站 京云律所-林州站 京云律所-巴中站 京云律所-信阳站 京云律所-周口站 京云律所-梅州站 京云律所-库车站 京云律所-宣威站 京云律所-自贡站 京云律所-遵义站 京云律所-泸水站 京云律所-宁波站

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:ThingsBoard教程(十六):制作RPC部件 https://www.yhzz.com.cn/a/11670.html

【深度学习】基于Pytorch进行深度神经网络计算(一)
上一篇 2023-04-26 13:11:20
使用TPS63900延长传感器锂电池的使用寿命
下一篇 2023-04-26 14:32:42

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。