一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种适用于移动网络设备的远程控制方法与流程

2021-12-17 20:01:00 来源:中国专利 TAG:


1.本发明涉及网络技术领域,具体是涉及一种适用于移动网络设备的远程控制方法。


背景技术:

2.在智能化设备日益普及的情况下,利用工控一体机提供用户界面,并通过移动网络接入互联网提供和app或微信对接的场景越来越多,比如:广告机、快递柜、智能存储柜等。同时现有的物联网设备中,通过移动网络联网的场景非常常见,对于研发人员来说,登录到一台在线设备查看问题及升级系统是一个常见的需求。
3.已有的远程控制方案基本都是基于远程桌面的方式,在移动网络的情况下,尤其是室内信号不好的情况下,非常容易断连,桌面操作卡顿、可用性不强。利用移动网络接入互联网避免了有线网络的施工问题,但存在着网络带宽较低、稳定性相对较差、流量资费较高的问题。在设备发生故障后,售后工程师如需远程定位问题,需要提供一个远程工具来接入设备,但目前的接入方案并没有针对移动网络场景优化,虽然远程桌面简单易用,但由于移动网络环境下的特点,导致远程桌面卡顿,经常不能正常使用。


技术实现要素:

4.为解决上述技术问题,提供一种适用于移动网络设备的远程控制方法,本技术方案解决了上述背景技术中提出的已有的远程控制方案基本都是基于远程桌面的方式,在移动网络的情况下,尤其是室内信号不好的情况下,非常容易断连,桌面操作卡顿、可用性不强。利用移动网络接入互联网避免了有线网络的施工问题,但存在着网络带宽较低、稳定性相对较差、流量资费较高的问题。在设备发生故障后,售后工程师如需远程定位问题,需要提供一个远程工具来接入设备,但目前的接入方案并没有针对移动网络场景优化,虽然远程桌面简单易用,但由于移动网络环境下的特点,导致远程桌面卡顿,经常不能正常使用问题。
5.为达到以上目的,本发明采用的技术方案为:
6.一种适用于移动网络设备的远程控制方法,包括控制主机、云端的mqtt broker和受控主机,所述受控主机接入移动网络,所述远程控制方法的控制步骤如下:
7.控制主机生成控制主题信息,并向云端的mqtt broker发送控制主题信息;
8.受控主机从云端的mqtt broker端订阅控制主题信息,进行解析处理后生成回复主题信息,并受控主机向云端的mqtt broker发送回复主题信息;
9.控制主机从云端的mqtt broker端收到回复主题信息后,解析内容,并将输出显示在屏幕上。
10.优选的,所述控制主机操作步骤如下:
11.通过配置文件中获取当前需要连接的受控主机id,定义为ci;
12.随机生成控制主机id,这里定义为mi,利用控制主机id 时间戳计算控制主机
token,以控制主机id 时间戳拼接作为用户名,控制主机token作为密码,发到mqtt登录信息服务器端验证登录;
13.从云端的mqtt broker订阅所有发向本设备的消息,服务等级定为qos1;
14.登录成功后,进入循环,从标准输入中获取输入;
15.解析输入参数,判断是否是内置命令,若是内置命令,则进入内置命令处理,若不是内置命令,则进入下一步;
16.获取到输入后,用protobuf序列化,并封装在消息体,生成控制主题信息,将生成的控制主题信息发送至云端的mqtt broker;
17.从云端的mqtt broker端收到回复主题信息后,用protobuf反序列化解析内容,并将输出显示在屏幕上;
18.返回循环起始步骤,等待用户输入。
19.优选的,所述内置命令包括非字符类的命令功能。
20.优选的,所述受控主机操作步骤如下:
21.从配置文件中获取受控主机id(生产时由生产工具自动生成并写入配置),这里定义为ci,利用受控主机id 时间戳计算受控主机token,以受控主机id 时间戳拼接作为用户名,受控主机token作为密码,发到mqtt登录信息到服务器端验证登录;
22.从云端的mqtt broker端订阅所有发送到该设备的单播消息,服务等级设为qos1;
23.从云端的mqtt broker端订阅控制主题信息;
24.根据控制主题订阅情况转发给受控主机,受控主机收到控制主题信息,解析主题,获得控制方的身份mi;
25.查找mi对应的控制台和命令管道,如果未发现,则创建新控制台和命令管道,否则跳过创建新控制台和命令管道步骤,其中所述创建新控制台和命令管道的具体步骤为:新建一个子进程,在windows上执行cmd.exe,在linux/安卓上执行/bin/sh,将新进程的标准输入、标准输出和错误输出重定向到和父进程通信的句柄上,这里定义为pa,父进程新建输出采集线程,获取句柄的输出,并缓存起来,等待读取,这里定义为ba;
26.解析消息体,获取命令和参数,并将命令写入到pa,然后监控ba的缓存是否变化,当超过预定时间未发生变化时,取出缓存结果br;
27.发送回复主题信息,消息体内容是br,发送到mqtt broker中。
28.优选的,所述预定时间为1秒

3秒。
29.优选的,所述控制主题的形式为single/rshell/<ci>/<mi>,所述控制主题订阅主题是四段式的,用/分隔, 为通配符。第一段表示是接收单播消息,第二段是功能名称,在这里是固定的rshell,第三段是变量ci,即受控主机的mqtt_id,是mqtt服务器上全局唯一的,第四段是mi,即控制主机的mqtt_id,是mqtt服务器上全局唯一的。
30.优选的,所述回复主题的形式为single/rshell/<mi>/reply,其中reply为固定字符。
31.优选的,所述控制主题的形式为group/rshell/<group_id>/<mi>,所述控制主题订阅主题是四段式的,用/分隔, 为通配符。第一段表示是接收组播消息,第二段是功能名称,在这里是固定的rshell,第三段是变量group_id,表示的是接收此消息的受控主机组,第四段是mi,即控制主机的mqtt_id,是mqtt服务器上全局唯一的。
32.优选的,所述回复主题的形式为group/rshell/<mi>/<ci>reply,其中reply为固定字符。
33.优选的,所述控制主机包括控制存储器、控制处理器及存储在所述控制存储器上并可在所述处理器上运行的控制计算机程序,所述控制处理器执行所述控制计算机程序时实现如权利要求2至3任一项所述的操作步骤,所述受控主机包括受控存储器、受控处理器及存储在所述受控存储器上并可在所述处理器上运行的受控计算机程序,所述受控处理器执行所述受控计算机程序时实现如权利要求4至5任一项所述的操作步骤。
34.与现有技术相比,本发明的优点在于:
35.1)本发明利用mqtt协议,在被控在线设备中创建命令管道,接收控制主机的命令并通过管道返回命令的返回结果,可复用所有原先设备的命令工具(比如:windows命令行或powershell工具、linux及安卓设备的shell工具),并可扩展自己的命令。命令输入、输出仅各需一个消息即可完成,对系统资源的损耗非常小,可用性高,并且由于命令行只是字符串的传输,而非图形界面,利用序列化及压缩算法,极大减少了网络带宽的损耗;
36.2)本发明为受控主机单独创建专属控制台和命令通道,当控制主机连接到受控主机时,受控主机打开控制台(windows是cmd.exe,类linux及android系统为/bin/sh)和专属的命令管道,控制主机输入命令后,命令通过mqtt传输到受控主机,受控主机专属的命令管道输入到控制台并接收命令返回结果,再将结果通过mqtt送回到控制主机。此时其专属的控制台和命令管道并不会立即退出,当控制主机再次发送命令时,控制台的上下文依旧存在。当控制主机主动要求退出或命令管道空闲超时后,控制台和专属管道退出,以节省资源。
附图说明
37.图1为本发明的信息传输流程示意图;
38.图2为本发明的信息交互示意图;
39.图3为本发明中的实施例一的信息传输流程示意图;
40.图4为本发明中的实施例二的信息传输流程示意图。
具体实施方式
41.以下描述用于揭露本发明以使本领域技术人员能够实现本发明。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。
42.实施例一
43.多主机登录
44.远程控制方法的控制步骤如下:
45.控制主机生成控制主题信息,并向云端的mqtt broker发送控制主题信息;
46.受控主机从云端的mqtt broker端订阅控制主题信息,进行解析处理后生成回复主题信息,并受控主机向云端的mqtt broker发送回复主题信息;
47.控制主机从云端的mqtt broker端收到回复主题信息后,解析内容,并将输出显示在屏幕上。
48.控制主机操作步骤如下:
49.通过配置文件中获取当前需要连接的受控主机id,这里定义为ci;
50.随机生成控制主机id,这里定义为mi,利用控制主机id 时间戳计算控制主机token,以控制主机id 时间戳拼接作为用户名,控制主机token作为密码,发到mqtt登录信息服务器端验证登录;
51.从云端的mqtt broker订阅single/rshell/<mi>/ 主题, 为通配符,即所有发向本设备的消息,服务等级定为qos1;
52.登录成功后,进入循环,从标准输入中获取输入;
53.解析输入参数,判断是否是内置命令,若是内置命令,则进入内置命令处理,内置命令包括非字符类的命令功能,比如:文件传输,或者多个命令组合成的快捷命令,若不是内置命令,则进入下一步;
54.获取到输入后,获取到输入后,用protobuf序列化,并封装在消息体,生成控制主题信息,将生成的控制主题信息发送至云端的mqtt broker,控制主题的形式为single/rshell/<ci>/<mi>,所述控制主题订阅主题是四段式的,用/分隔, 为通配符。第一段表示是接收单播消息,第二段是功能名称,在这里是固定的rshell,第三段是变量ci,即受控主机的mqtt_id,是mqtt服务器上全局唯一的,第四段是mi,即控制主机的mqtt_id,是mqtt服务器上全局唯一的;
55.从云端的mqtt broker端收到回复主题信息后,解析内容,并将输出显示在屏幕上;
56.返回循环起始步骤,等待用户输入。
57.受控主机操作步骤如下:
58.从配置文件中获取受控主机id(生产时由生产工具自动生成并写入配置),这里定义为ci,利用受控主机id 时间戳计算受控主机token,以受控主机id 时间戳拼接作为用户名,受控主机token作为密码,发到mqtt登录信息到服务器端验证登录;
59.从云端的mqtt broker端订阅single/rshell/<ci>/ 主题信息, 为通配符,即所有发向本设备的消息,服务等级定为qos1;
60.从云端的mqtt broker端订阅控制主题信息,既single/rshell/<ci>/<mi>主题信息;
61.根据控制主题订阅情况转发给受控主机,受控主机收到控制主题信息,解析主题,获得控制方的身份mi;
62.利用mi到哈希表中寻找专属mi的管道,如果没有就创建管道及其关联的控制台进程,并在哈希表中用mi创建到管道的映射,如果未发现,则创建新控制台的命令管道,否则跳过创建新控制台的命令管道步骤,其中所述创建新控制台和命令管道的具体步骤为:新建一个子进程,在windows上执行cmd.exe,在linux/安卓上执行/bin/sh,将新进程的标准输入、标准输出和错误输出重定向到和父进程通信的句柄上,这里定义为pa,父进程新建输出采集线程,获取句柄的输出,并缓存起来,等待读取,这里定义为ba;
63.解析消息体,获取命令和参数,并将命令写入到pa,然后监控ba的缓存是否变化,当超过预定时间(1

3秒)未发生变化时,取出缓存结果br;
64.发送回复主题信息,消息体内容是br,发送到mqtt broker中,回复主题信息的定义为single/rshell/<mi>/reply,其中reply为固定字符;
65.受控主机收到控制主机发过来的exit命令后,主动退出控制台,并删除管道,或者等待管道空闲超时(一般定义为10分钟)后自动退出。
66.控制主机包括控制存储器、控制处理器及存储在控制存储器上并可在处理器上运行的控制计算机程序,控制处理器执行控制计算机程序时实现控制主机操作步骤。
67.受控主机包括受控存储器、受控处理器及存储在受控存储器上并可在处理器上运行的受控计算机程序,受控处理器执行受控计算机程序时实现受控主机操作步骤。
68.实施例二
69.受控主机组控制
70.远程控制方法的控制步骤如下:
71.控制主机生成控制主题信息,并向云端的mqtt broker发送控制主题信息;
72.受控主机从云端的mqtt broker端订阅控制主题信息,进行解析处理后生成回复主题信息,并受控主机向云端的mqtt broker发送回复主题信息;
73.控制主机从云端的mqtt broker端收到回复主题信息后,解析内容,并将输出显示在屏幕上。
74.控制主机操作步骤如下:
75.通过配置文件中获取当前需要连接的受控主机id,这里定义为ci;
76.随机生成控制主机id,这里定义为mi,利用控制主机id 时间戳计算控制主机token,以控制主机id 时间戳拼接作为用户名,控制主机token作为密码,发到mqtt登录信息服务器端验证登录;
77.从云端的mqtt broker订阅所有发向本设备的消息,服务等级定为qos1;
78.登录成功后,进入循环,从标准输入中获取输入;
79.解析输入参数,判断是否是内置命令,若是内置命令,则进入内置命令处理,内置命令包括非字符类的命令功能,比如:文件传输,或者多个命令组合成的快捷命令,若不是内置命令,则进入下一步;
80.获取到输入后,获取到输入后,用protobuf序列化,并封装在消息体,生成控制主题信息,将生成的控制主题信息发送至云端的mqtt broker,所述控制主题的形式为group/rshell/<group_id>/<mi>,所述控制主题订阅主题是四段式的,用/分隔, 为通配符。第一段表示是接收组播消息,第二段是功能名称,在这里是固定的rshell,第三段是变量group_id,表示的是接收此消息的受控主机组,其中group_id既可以是静态配置,也可以是动态分配的,两者也可以同时并存。比如:静态group_id可以按照产品类别或销售区域,在受控主机启动时就加入订阅。动态group_id可以由控制主机通过单播消息创建,受控主机动态订阅,然后控制主机使用组播消息的主题即可达到动态组播的效果,第四段是mi,即控制主机的mqtt_id,是mqtt服务器上全局唯一的;
81.从云端的mqtt broker端收到回复主题信息后,根据主题里面解析出来的ci,在专属的子窗口里面显示结果;
82.返回循环起始步骤,等待用户输入。
83.受控主机操作步骤如下:
84.从配置文件中获取受控主机id(生产时由生产工具自动生成并写入配置),这里定义为ci,利用受控主机id 时间戳计算受控主机token,以受控主机id 时间戳拼接作为用户
名,受控主机token作为密码,发到mqtt登录信息到服务器端验证登录;
85.从云端的mqtt broker端订阅所有发向本设备的消息,服务等级定为qos1;
86.从云端的mqtt broker端订阅控制主题信息,既group/rshell/<group_id>/<mi>主题信息;
87.根据控制主题订阅情况转发给受控主机,受控主机收到控制主题信息,解析主题,获得控制方的身份mi;
88.利用mi创建新控制台的命令管道的具体步骤为:新建一个子进程,在windows上执行cmd.exe,在linux/安卓上执行/bin/sh,将新进程的标准输入、标准输出和错误输出重定向到和父进程通信的句柄上,这里定义为pa,父进程新建输出采集线程,获取句柄的输出,并缓存起来,等待读取,这里定义为ba;
89.解析消息体,获取命令和参数,并将命令写入到pa,然后监控ba的缓存是否变化,当超过预定时间(1

3秒)未发生变化时,取出缓存结果br;
90.发送回复主题信息,消息体内容是br,发送到mqtt broker中,回复主题信息的定义为group/rshell/<mi>/<ci>reply,其中reply为固定字符,回复给控制主机的是一个单播消息,组播的回复消息需要带上受控主机的id,以此来区分是哪个受控设备的返回结果。
91.控制主机包括控制存储器、控制处理器及存储在控制存储器上并可在处理器上运行的控制计算机程序,控制处理器执行控制计算机程序时实现控制主机操作步骤。
92.受控主机包括受控存储器、受控处理器及存储在受控存储器上并可在处理器上运行的受控计算机程序,受控处理器执行受控计算机程序时实现受控主机操作步骤。
93.综上所述,本发明的优点在于:基于命令通道和mqtt协议,极大程度减少了通信的频率和数据量,在极端的网络环境下,依旧有良好的使用效果。
94.以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明的范围内。本发明要求的保护范围由所附的权利要求书及其等同物界定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献