基于微信的远程天文台控制软件设计
2022-09-17和寿圣王传军范玉峰余晓光王德清黄永萍王建坤
和寿圣,王传军,范玉峰,余晓光,王德清,黄永萍,王建坤
(1. 中国科学院云南天文台,云南 昆明 650216;2. 中国科学院天体结构与演化重点实验室,云南 昆明 650216)
远程天文台是互联网和自动化技术高度发展的产物,具有观测效率高、运行成本低等优点。远程观测已成为天文观测的主流趋势,在天文研究、天文选址、科普教育等领域发挥了越来越重要的作用[1-3]。
近年来5G网络技术的发展极大提高了移动网络质量,使基于手机等移动终端的远程观测成为可能。昆明理工大学云南省计算机技术应用重点实验室采用(Hyper Text Transfer Protocol, HTTP)协议与微信小程序进行JSON(JavaScript Object Notation)数据交互,实现了RTS2自主控制系统监测和控制[4]。业余天文界常用 “向日葵” 等远程桌面软件进行远程观测。受屏幕尺寸等因素限制,常规电脑远程观测模式在移动设备上使用极不方便,观测数据实时传输及共享等也有一定的局限性。物联网[5]和社交网络[6]技术的发展为远程观测提供了全新的机遇,借助这些技术进一步完善和提高远程观测的数据传输、数据共享以及人性化操作等功能。
为实现云南天文台14英寸望远镜的远程观测,同时验证基于物联网和社交网络的远程天文台技术,我们设计了一套基于微信的远程天文台控制软件,本文主要介绍其设计方法和实测结果。
1 系统结构
远程天文台控制软件系统结构如图1,远程天文台服务器(Remote Observatory Server)为系统核心,与圆顶或平移顶(Dome/Roof)、望远镜(Telescope)、照相机(Camera)、滤光片(Filter)、调焦器(Focuser)、消旋器(Rotator)和台址监测系统(Observation conditions)等天文仪器设备共同组成远程天文台硬件系统。远程天文台控制软件部署于远程观测服务器,一方面负责控制天文仪器设备实现观测功能;另一方面负责与观测终端交互实现远程服务。微信服务器(WeChat Server)为腾讯官方服务器,手机/平板/电脑(Mobile/Pad/PC)等观测终端与远程观测服务器之间通过微信客户端通信。
图1 系统结构图
以微信为载体的远程控制通常采用公众号和小程序两种方案[7-8],公众号具有物联网专用方案即微信硬件平台,具有更多高级设备功能。公众号和小程序均有如下特点:首先,基于超时通信机制,由微信客户端主动访问远程服务器实现,实时性有所欠缺,如照相机曝光等较为耗时的操作需要采用Ajax轮询或者WebSocket技术;其次,远程服务器对网络要求较高,通常需要固定网址(公网IP)或者通过独立服务器中转。针对上述特点,本文采用微信聊天模式开发远程天文台控制软件,相对于公众号和小程序,该模式支持双向通信,实时性较好,网络门槛较低。
2 软件设计
软件在Windows10操作系统下,采用C#语言面向对象编程开发。
2.1 软件结构
软件开发按4层结构展开,如图2,从下往上分别为设备驱动层、基本控制层、高级控制层和界面层,按层编写类如表1。
表1 类
图2 软件层次
设备驱动层是天文仪器设备的驱动控制基础,由圆顶、望远镜、照相机、滤光片、调焦器、消旋器和台址监测系统等设备类构成,分别提供这些仪器设备的基本操作函数。设备驱动层支持天文公共对象模型(Astronomy Common Object Model, ASCOM)协议[9-10],同时支持基于串口和网络的自定义协议。
基本控制层实现观测控制系统的基本功能,OCS类直接调用设备驱动层的设备类基本函数,结合设备操作逻辑关系实现特定观测功能。如圆顶天窗开关操作必须考虑台址观测条件,圆顶随动依赖望远镜指向跟踪参数,照相机操作与圆顶、望远镜、滤光片和调焦器状态之间的相互关系等。
高级控制层实现观测控制系统的高级功能,结合本地观测需求、远程控制接口和自主观测算法等实现本地观测(LO)、远程观测(RO)和自主观测(AO),WeChat类是基于微信的远程观测实现。
界面层是软件系统的顶层框架,包括MainForm等多个窗口界面类,主要用于系统设置和观测控制等高级操作。除此之外,软件系统包含观测图像的生成、存储和显示的FITS(Flexible Image Transport System)图像类等其他功能。
2.2 远程接口
远程观测功能以微信电脑版为载体进行开发,以微信聊天模式收发控制命令,以微信图片格式传输观测图像,以微信群组方式控制用户权限。微信控制接口采用第三方开源代码wechat-bot(https://github.com/cixingguangming55555/wechat-bot)。
远程观测流程如图3。系统首先根据台址监测数据判断观测条件,具备观测条件则轮询读取微信消息;然后判断消息发送者是否为授权用户(即是否具备控制权限),若用户具备控制权限,则处理命令并进行相应的观测控制操作如目标指向、相机曝光及各种设备控制;相机曝光命令完成操作后主动发送观测图片给相应的微信用户。
图3 远程观测流程图
远程控制基本命令如表2。最简单的远程观测步骤:首先用dome open命令打开圆顶天窗(或平移顶),dome track命令设置圆顶随动;然后以goto命令驱动望远镜指向目标;望远镜处于跟踪状态后以expose命令(包含filter参数)曝光获取观测图像,如需调焦则用focuser命令;观测结束用dome close命令关闭圆顶,park命令使望远镜停止。如需查看当前观测条件,以state obsc命令获取台址信息。
表2 基本命令
用户权限控制是远程观测的安全保障,本系统采用微信群组分组控制实现基本用户权限控制,将待观测用户或者群组加入控制用户列表,系统自动过滤非控制用户列表的用户信息。高级权限控制功能可以结合观测时间、操作功能(如观测控制、数据操作等)和用户群组等因素进行精准分配控制用户权限,本文不再讨论。
2.3 实测情况
我们在云南天文台14英寸RC望远镜上,以NGC 6530为观测目标,B波段曝光600 s进行软件测试。图4为远程观测服务器本地观测界面,上方为远程天文台控制软件主界面,左下方为电脑版微信客户端远程观测界面,右下方为远程天文台控制软件的界面。图5为基于手机微信的远程观测界面。系统运行时先用远程天文台管理员微信账号登录电脑版微信客户端,远程天文台控制软件连接微信客户端并选择相应用户或者群组分配控制权限后自动进入远程观测模式。本文以群组观测为例,观测员以命令行方式进行远程观测操作,管理员负责命令处理及设备控制,观测完成后自动发送观测图像至观测群。实测结果表明,该远程天文台控制软件工作正常,满足软件设计的基本要求。
图4 本地观测界面
图5 远程观测界面
3 总 结
与微信公众号和小程序模式相比,微信聊天模式实现远程控制有如下优势:(1)实时性较好,易于实现,无需采用Ajax,WebSocket等技术;(2)网络门槛较低,无需公网IP,微信聊天便可以开展远程控制;(3)数据传输共享更方便,以微信聊天模式传输观测图像,方便观测人员共享数据;(4)远程观测同时在观测群进行正常语音文字沟通交流,可以及时评估和调整观测方案等。但该模式同时也存在以下不足:(1)以命令行模式操作,没有图形操作界面,必须熟悉操作命令,用户门槛相对较高;(2)由于电脑版微信客户端采用扫码登录机制,远程观测服务器开机或者重启时需要借助远程桌面软件或者专门编写代码发送二维码至远程终端才能实现远程登录。
总体来说,本文设计研发了一套基于微信的远程天文台控制软件,并在云南天文台14英寸望远镜上进行相关测试,达到了基于物联网和社交网络的远程天文台技术验证的目的,为远程天文台控制软件设计及社交网络在天文观测中的应用提供了可借鉴的经验和方法。远程天文台控制软件是复杂的系统软件工程,本设计仅实现了部分基本功能和方法,在下一步工作中,仍需不断改进和完善。