diff --git "a/docs/Advanced_development/zh/HeliosService/Helio_Service\346\214\207\345\215\227(1)_\345\205\245\351\227\250.md" "b/docs/Advanced_development/zh/HeliosService/Helio_Service\346\214\207\345\215\227(1)_\345\205\245\351\227\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..b8100ac394218a7c322e4ece86592fde48da4b65 --- /dev/null +++ "b/docs/Advanced_development/zh/HeliosService/Helio_Service\346\214\207\345\215\227(1)_\345\205\245\351\227\250.md" @@ -0,0 +1,248 @@ +## 文档历史 + +**修订记录** + +| **版本** | **日期** | **作者** | **变更表述** | +| -------- | ---------- | -------- | ------------ | +| 1.0 | 2021-09-17 | Chic | 初始版本 | + + + +# Helios Services指南(1)-入门 + +1.背景 + +2.新框架解决那些问题/特性/优势 + +3.能帮助客户解决那些问题 可举例 + +4.简单说明框架如何使用,目录结构解析,使用教程 + +5.一个简单的例子 举例论证新框架的易用性和为什么要用新框架 + +​ 用新框架连阿里云,设备端喂狗、拉GPIO、组包发数据 + +描述一下开发过程中的痛点 ---> 为解决这些痛点开发了新框架来解决这些问题-->如何解决问题/解决了那些问题 + +(比如支持日志服务、解决线程通信问题、支持看门狗组件、支持腾讯云组件、阿里云组件) + +以下是正文(待补充) + +## 背景 + +QuecPython目前一直没有一个应用层框架来实现统筹的消息注册,消息监听,事件管理, 组件通信,会话等功能, 解决一直存在的重复工作量和安全稳定性问题,为了迎合QuecPython的发展, 简化用户对底层网络, 日志, 移远云服务, 定位, 媒体等复杂的数据处理和数据保护等操作,特此我们专门开发了一套应用编程框架来简化复杂的创建、维护的等操作。 + +我们想通过数据驱动来改善我们目前复杂的编码过程, 顺着这个出发点QuecPython应用编程框架--HeliosService 正式面世! + +## 优势 + +尽管python开发已经相当便捷且功能强大,而QuecPython又在python的基础上极大的拉低了嵌入式开发的门槛,但是仍然会有很多新手开发者在想要开发自己的项目时不知从何入手亦或是在搭建项目框架、编写项目代码时遇到形形色色的问题(以上种种俗称踩坑),为了避免开发者重复踩坑,提升开发者开发效率,于是集结了众多前人的踩坑经验以及官方开发者的满腔心血而开发出的HeliosService顺应天时而生。 + +那么HeliosService新框架给QuecPython带来了哪些变革呢? + +HeliosService将常用的功能整合成服务,并提供统一的API来供客户调用,用户在实现网络、日志、异常、线程通信、队列等功能时更加便捷,另外提供了丰富的第三方组件,例如中断拦截器、GPIO读写拦截器、定时拦截器、看门狗拦截器,极大的减轻了用户的开发难度。 + +**设计的初衷** + +- 将用户和操作一些主动行为变为被动行为的 +- 业务之间的解耦, 所以我们特此讲系统的一些组件设计成发布订阅的模式 +- 开发者订阅相关只需要关注的服务, 即可获取相关的状态 +- 提供消息队列,客户可以通过消息队列来定制自己的组件 +- 提供会话中心, 脱离系统服务外支持客户自定义TOPIC发布订阅的服务 +- 容器化, 我们提供启动器, 所有的服务和组件获取都通过容器来获取,而不再逐个依赖进行加载 +- 简化客户的操作, 和解耦业务之间的依赖使我们的和兴目标 + +而新框架又解决了哪些问题呢?让我们走进下一章。 + +## 解决的问题 + +**携带发布订阅BUS总线** + + - 支持消息和处理的绑定 + - 异步的消息处理机制 + - 用户不需关心对应的处理函数,只管向对应的topic发消息即可 + +**携带消息队列广播机制** + + - 可自定义消息类型,执行异步和同步模式,支持事件派发和事件管理, 支持标准队列和观察者模式) + - 解决了两个线程之间传递消息,以及多个事件广播的问题 + - 给模块进行了标准化的解耦过程, 提供了统一稳定的事件管理中心来保证通信的质量 + +**NET(网络)** + + - 提供网络服务(解决了客户网络的依赖, 客户只需要注册回调接口, 就可以发现注网的状态, 也支持主动查询, 设置APN等操作) + - 支持断网通知, 断网重连通知等,支持订阅消息 + - 支持网络主动查询 + +**LOG(日志)** + + - 提供标准化的日志系统(解决日志标准化的问题, 提供日志标准化的输出并携带时间,同样支持异步和同步的配置, 支持云端发送, 落盘等行为) + - 支持不同uart口输出, 落盘输出等 + - 支持订阅消息发布消息 + +**CLOUD(移远云服务)** + + - 提供基于移远云的OTA升级和日志发送接口(临终遗言日志上报, OTA的升级, OTA组件等 + - 同样支持异步和同步模式) + - 支持自动化固件升级 + - 支持自动化文件升级 + - 支持提交云端日志可配合我们日志系统使用 + +**MEDIA(媒体服务)** + + - 提供媒体功能(支持发布异步的媒体消息, 统一媒体消息管理等等) + - 支持异步tts, audio播报 + - 支持tts,audio消息发布,消息广播,消息订阅 + - 支持tts, audio播报的自动管理,保证消息播报的可靠性 + +**EXCEPTION(异常服务)** + + - 提供异常服务支持 + - 支持同步异步消息 + - 支持异常消息订阅, 异常消息发送 + +**PM(低功耗服务)** + + - 可选的功耗管理 + - 默认低功耗模式 + - 支持高刷唤醒 + +**SYS_BUS(发布订阅总线)** + + - 支持自定义topic实现发布订阅 + - 支持发布订阅, 通过自动化的线程渠道去分配线程处理业务 + - 支持高并发的处理 + +**Queue(标准队列)** + + - 支持不同线程中消息的传递 + - 阻塞实现, 支持多线程的put ,get 原子操作 + +## 使用说明 + +**代码目录结构** + +```python +usr # 用户分区 +├─main.py # 用户代码(程序入口) +├─bin # 脚本和启动器(下面放着一些共有服务和一些公有的组件) +│ ├─cloud_service.py # 云服务组件 +│ ├─exception_service.py # 异常服务组件 +│ ├─guard.py # 全局监控和配置文件的启动容器 +│ ├─log_service.py # 日志服务组件 +│ ├─media_service.py # 媒体服务组件 +│ ├─net_service.py # 网络服务组件 +│ ├─pm_service.py # 低功耗服务组件 +│ └─components # 该目录下存放一些公共组件 +│ │ ├─abstract_service.py # 服务抽象类 +│ │ ├─blinker_min.py +│ │ ├─monitor.py +│ │ ├─OTA.py # OTA升级组件 +│ │ └─service_models.py # 服务模型基类 +│ └─third_party +│ ├─ql_interrupter.py # 第三方服务组件,外部中断/看门狗等 +│ └─ ... +├─etc # 配置文件目录(非必须存在) +│ ├─app_config # app业务服务配置文件目录 +│ └─system_config # 系统服务配置文件目录 +├─log # 日志存储服务(非必须存在,选择日志存储为本地时自动创建) +└─utils # 通用工具目录 + ├─JsonParserUtils.py # josn处理utils + ├─resolver.py # 时间格式化处理器 + └─service_utils.py # 单例模式类实现 +``` + +> +> +> 第三方的组件会持续更新增加新内容 + +### 搭配工具使用说明 + +> 新框架需要搭配QPYcom_V1.7版本使用 + +以上所有目录和文件可通过QPYcom下载到模块中,用户编辑好自己的代码之后下载到模块中即可进行调试,下载方式参考下图 + +第一种方式,下载页面配置项目,优势是一键导入目录结构之后再次下载调试点击下载脚本按钮即可,方便后续调试 + +![t21fkamlv5](http://1.116.208.16/images/wiki/t21fkamlv5.gif) + +第二种方式,文件页面从左侧本地文件树拖拽到右侧模块文件树,等待下载完成即可,优势是直接拖拽操作简单便捷 + +![ZLLVygvK5o](http://1.116.208.16/images/wiki/ZLLVygvK5o.gif) + +> 上述两种方案均可下载框架代码至模块中 + +### api使用说明 + +参见api说明文档 + +## 举个栗子 + +### 读取配置文件示例 + +```python +# 初始化全局的guard环境 +from usr.bin.guard import GuardContext +guard_context = GuardContext() +# 刷新容器并启动的所有服务 +guard_context.refresh() +# 读取配置文件示例 +config = guard_context.service_config["cloud"] # 读取/usr/etc/app_config/cloud/config.json 配置文件内容返回的字典对象 +``` + +网络服务和日志服务示例 + +```python +from usr.bin.guard import GuardContext + +def net(*args, **kwargs): + """网络回调函数""" + app_log.debug("net_callback,args:{},kwargs:{}".format(args, kwargs)) + +if __name__ == '__main__': + # 初始化全局容器 + guard_context = GuardContext() + guard_context.refresh() + # 获取网络服务&日志服务 + net_service = guard_context.get_server('net') + log_service = guard_context.get_server('log') + # 订阅网络服务 + net_service.subscribe(net) + + # 获取app_log + app_log = guard_context.get_logger("app_log") + app_log.debug("net status: {}".format(net_service.get_net_status())) +``` + +### 第三方组件示例 + +GPIO读写拦截器 + +```python +from ql_interrupter import PinInterrupter +from machine import Pin, ExtInt +pin_inter = PinInterrupter(Pin.GPIO1, trige_mode=Pin.OUT, pull_mode=Pin.PULL_DISABLE, mode=0) # 初始化 +pin_inter.write(1) # 设置PIN脚电平输出为高 +``` + +看门狗示例 + +```python +from ql_interrupter import WatchDog +from machine import Pin, ExtInt +import sys_bus +# 初始化watch dog +wd = WatchDog(Pin.GPIO15, 1, 10000) +wd.start() +def topic1_cb(topic, msg): + pass +def topic2_cb(topic, msg): + pass +# 订阅喂狗后,硬件狗拉GPIO 告知模块喂狗成功 +sys_bus.subscribe("WDT_KICK_TOPIC", topic1_cb) +# 订阅喂狗后的回调 +sys_bus.subscribe("WDT_KICK_TOPIC_FEED", topic2_cb) +``` + +> 更多示例代码和演示参考API说明 + diff --git "a/docs/Advanced_development/zh/HeliosService/Helio_Service\346\214\207\345\215\227(2)_\350\277\233\351\230\266.md" "b/docs/Advanced_development/zh/HeliosService/Helio_Service\346\214\207\345\215\227(2)_\350\277\233\351\230\266.md" new file mode 100644 index 0000000000000000000000000000000000000000..271797e268f1708f36af6d993fc27ac122a74e7a --- /dev/null +++ "b/docs/Advanced_development/zh/HeliosService/Helio_Service\346\214\207\345\215\227(2)_\350\277\233\351\230\266.md" @@ -0,0 +1,164 @@ +## 文档历史 + +**修订记录** + +| **版本** | **日期** | **作者** | **变更表述** | +| -------- | ---------- | -------- | ------------ | +| 1.0 | 2021-09-17 | Chic | 初始版本 | + + + +# Helios Services指南(2)-进阶 + +## Helios Services进阶概述 + +进阶篇,我们主要描述各个功能是如何使用的, 从入门篇我们已经帮环境搭好了, 从现在起, 我们将正式开始和使用上述功能, 并展示使用成果 + +## Helio Services使用文档 + +### 容器 + +主要是包裹和集成所有服务和配置的集中化管理的东西, 下面演示起核心使用, 其他功能请查看API文档 + +#### 启动容器 + +- [OK] 为启动成功 +- [FAILED]为服务启动失败 +- sys 和 app 代表服务所属的分区,sys是系统级别的, app是用户级别的 +- 启动成功的服务我们就可以调用了, 我们也可以查看所有启动成功的服务 + +![QPYcom_GniGshUtTV](./media/QPYcom_GniGshUtTV.png) + +#### 网络服务 + +##### 基本使用 + +- 我们可以获取到sim, net, dataCall对象无需导入 +- 我们可以订阅网络状态 + +![image-20210827100748287](media/image-20210827100748287.png) + +##### 检测联网 + +- 开启后可检查网络状态, 返回值请参考`HeliosService API文档` + +![image-20210827101129580](./media/image-20210827101129580.png) + +##### 其他功能 + +请参考AP文档进行调用 + +#### 日志服务 + +##### 基本使用 + +- 获取一个带命名的日志客户端 +- 输出日志 +- 设置日志输出级别 + +![QPYcom_PAk2AjLkiN](./media/QPYcom_PAk2AjLkiN.png) + +- 订阅日志 + +![QPYcom_AZHnngQa4K](./media/QPYcom_AZHnngQa4K.png) + +##### 其他功能 + +请参考AP文档进行调用 + + + +#### 媒体服务 + +##### 基本使用 + +- 获取原生tts,audio +- 订阅消息 +- 设置模式 +- 设置pa `参考API文档` + +![QPYcom_BlN4sYhUOK](./media/QPYcom_BlN4sYhUOK.png) + +##### 其他功能 + +- 请查看API文档 + +#### 低功耗服务 + +##### 基本使用 + +- 默认是开启低功耗模式 +- 存在投票机制 +- 查看偷拍不为0即无法进入休眠 +- 可以取消投票, 每一张投票都需要一次取消 + +![image-20210827131630704](./media/image-20210827131630704.png) + +##### 其他功能 + +请查看API相关文档 + +#### 移远云服务 + +##### 基本使用 + +- 提供日志上传至移远云 +- OTA单文件升级 + +![image-20210827132925708](./media/image-20210827132925708.png) + +创建cloud服务的config.json cloud服务是在app_config下面的 + +![image-20210827134613132](./media/image-20210827134613132.png) + +cloud服务config.json的内容 + +![image-20210827135011406](./media/image-20210827135011406.png) + +由于当时设置的level是3即使这里创建成功也是不能使用的, 所以我们需要, reload服务才会开启自动升级服务, 设计的初衷是让一些服务的启动等级变低, 客户去控制器启动顺序 + +![image-20210827134636763](./media/image-20210827134636763.png) + +![image-20210827141310248](./media/image-20210827141310248.png) + +- 提交日志 + +![image-20210827141503388](./media/image-20210827141503388.png) + +##### 其他功能 + +请查看API文档 + + + +#### 异常服务 + +##### 基本使用 + +- 订阅异常服务 +- 发布异常 + +![image-20210827175123097](./media/image-20210827175123097.png) + +### 三方组件 + +主要有gpio, 中断, 定时器, 看门狗的封装, 还有安全组件, 断传的封装 + + + +请查看相关API文档 + + + +### sys_bus使用 + +- 订阅topic的函数 +- 发布数据 + +![image-20210827152347130](./media/image-20210827152347130.png) + +### 裁剪说明 + +- 圈出来的, 带_service下坠的都是可以裁剪的, 如果不想用此服务, 删除即可 + +![image-20210827175241263](./media/image-20210827175241263.png) diff --git "a/docs/Advanced_development/zh/HeliosService/Helio_Service\346\214\207\345\215\227(3)_\351\253\230\347\272\247.md" "b/docs/Advanced_development/zh/HeliosService/Helio_Service\346\214\207\345\215\227(3)_\351\253\230\347\272\247.md" new file mode 100644 index 0000000000000000000000000000000000000000..f408265ba5ca97bf9b23b2b5a65e18bd4eadaff7 --- /dev/null +++ "b/docs/Advanced_development/zh/HeliosService/Helio_Service\346\214\207\345\215\227(3)_\351\253\230\347\272\247.md" @@ -0,0 +1,144 @@ +## 文档历史 + +**修订记录** + +| **版本** | **日期** | **作者** | **变更表述** | +| -------- | ---------- | -------- | ------------ | +| 1.0 | 2021-09-17 | Chic | 初始版本 | + + + +# Helios Services指南(3)-高级 + +## Helios Services高级概述 + +此篇主要说的是, helios services的软件设计的思考, 和后续将要支持的功能, 以及通过我们软件设计知道内部的通信原理, 了解和理解内部的机制等等... + + + +## Helios Services软件架构设计 + +### 架构设计 + +![image-20210825131423890](./media/image-20210825131423890.png) + +名词解释: + +- `Services`: 服务组件 +- `Config`: 配置存储 + - `app_config`: 存储用户配置文件的目录 + - `system_config`: 系统配置文件的目录 +- `monitos`: 监控器,监控各个服务的状态 +- `sys_bus`: 会话的处理总线主要处理, 生产者和消费者模型, 目前支持异步模式 +- `queue:` 普通队列, 用于线程间通信 +- `event_message`: 异步的带有命名空间的高级消息队列 + +- `GuardContext`: 上下文容器, 统一管理所有的服务和配置, 还有监控等组件, 提供服务, 配置, 监控等获取的接口 +- `third_party`: 三方组件目录, 拥有我们提供和封装的一些组件以便客户敏捷开发和二次开发 + +### 设计原理 + +#### 服务设计原理 + +![image-20210825134134474](media\image-20210825134134474.png) + +1. 我们将写好的一些系统级别的提供了一些服务这些服务的发布者可能来自, 系统底层或者用户发布等 +2. 用户只需要订阅网络服务, 当网络信号不好或者, 断网服务会发起自动重连,并且通知所有订阅的者函数, 通知各种状态 +3. 例如日志服务等是需要用户自己承当发布者的作用的 +4. 发布者和订阅者是毫无关系的, 发布者无需关注订阅者, 只用把发布的数据给用户即可 +5. 发布者发布到服务是, 服务再到订阅者是异步的, 我们同时也提供了同步的配置和支持 +6. 服务的中间本质实现是一个, `带命名空间的高级的消息队列`+其他一些组件来组成的 + +优点: + +- 我们替客户实现好了一些系统级别的服务, 并支持后续迭代, 解决了客户客户还需要维护系统接别的代码问题, 只提供对外的API供客户调用 +- 降低了业务之间的耦合, 订阅者和发布者之间的解耦 +- 订阅者,只需要订阅服务, 或者使用服务, 既能使用我们维护并提供的功能 + +缺点: + +- 我们限定死了服务的类型, 客户无法的到定制, 比如我现在有个需求是, 想自己业务上有两个或者多个业务解耦, 客户无法实现自己的服务, 这些服务都是我们写好的, 解决方案`sys_bus` +- 首先我们是由一个高级消息队列组成, 所以有可能存在服务还在, 但是消息队列崩溃的现象, 所以我们在服务崩溃的时候给他拉起来, 解决方案`monitor` + + + +**示例:** + +订阅服务 + +![QPYcom_vOTKl9QLSz](./media/QPYcom_vOTKl9QLSz.png) + +#### sys_bus实现原理 + +![image-20210826140649441](./media/image-20210826140649441.png) + +上面服务是我们通过服务的形式来给用户体现的, 缺点中我们也明确了, 用户无法定制服务, 反之sys_bus即可实现用户定制服务的需求 + +- 异步的模式, 用户可以订阅和发布,还有解绑服务 +- 将发布和订阅分离, 模块化分离, 支持多个发布者, 和服务的区别是,这里发布者和订阅者都是用户去维护的 +- 用户只需要关注topic而不用关注sys_bus等本身和订阅者本身 +- 优点: + - 客户可以自己定制和发布相关的数据等 + - 我们帮客户维护了sys_bus的稳定性 +- 缺点: + - 过于灵活可能会导致, 用户的一些订阅代码需要用户自己去维护 + +示例: + +![QPYcom_NKUsHGzKV3](./media/QPYcom_NKUsHGzKV3.png) + +#### monitor设计原理 + +- 负责监控每个服务在每隔15秒给服务一个心跳, 如果, 服务, 收到这个心跳包, 会将这个发给的指定的接收人的, monitor接收到心跳包, 即认为, 服务运行正常 +- 可以设置, 当服务几次运行失败后执行什么样的行为, 比如说失败三次后执行, 重启设备或者 + +**示例** + +![QPYcom_T38gWTvOPr](./media/QPYcom_T38gWTvOPr.png) + +#### config设计原理 + +为了方便配置文件的读取和设置等, 特此讲配置文件路径统一到config下面设置按照下列规则的config.json文件 + +- app_config + - 用户层级的配置文件设置, 用户按照一定的文件夹格式, 我们将会自动读取里面的配置文件, 在组织进容器中, 以便用户进行获取, 相关接口参考, 请参考`API文档` +- system_config + - 系统级别的配置我们会按照系统级别的配置文件作为提供对外, 用于区分和读取, 因为后期我们有可能会提供相应的配置文件, 和相关服务 + +**示例:** + +![RtP8rx7WtN](./media/RtP8rx7WtN.png) + +- 我们可以看出上面app_config下面存在 + - lexin + - config.json + - abc + - config.json + - 我们可以看到读取的service_config下面 + - {'abc': {'a': 1}, 'lexin': {'a': 1}} + - abc和lexin就是我们的文件夹名字, 对应的value就是我们config.json中的内容 +- system_config也是通app_config的对应关系一致 +- 注意: 如若想读取必须按照此类调教key是文件夹名,value读取的是config.json中的内容书写 + +#### queue设计原理 + +普通队列用作消息通信, 创建队列后获取数据的时候会阻塞, 当有数据信号的时候将会被唤醒 + +![QPYcom_zcAf9dvHik](./media/QPYcom_zcAf9dvHik.png) + +### 三方组件和容器设计 + + + +#### GuardContext设计原理 + +上面说了那么多组件设计后, 我们说下, 我们说下容器设计 + +- 因为目前存在很多服务, 很多配置, 为了方便客户不用这导入一下那导入一下, 并且做统一化管理, 特此容器化了所有组件 + +- 用户只需要关注容器设计即 + +#### ThirdParty设计 + +请查看第三方组件API文档 + diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_30JfGTTZ1R.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_30JfGTTZ1R.png new file mode 100644 index 0000000000000000000000000000000000000000..0201bf3f11c828bf94e8e8c9686907570dce522f Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_30JfGTTZ1R.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_AZHnngQa4K.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_AZHnngQa4K.png new file mode 100644 index 0000000000000000000000000000000000000000..7f83788c68cc07523f01956d5670f3f5272735a3 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_AZHnngQa4K.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_BlN4sYhUOK.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_BlN4sYhUOK.png new file mode 100644 index 0000000000000000000000000000000000000000..49ca253cd8992159399b5fd63dd4542ca851abd9 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_BlN4sYhUOK.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_DJiXH0NYTb.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_DJiXH0NYTb.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2fa6204968cbfbbb638456b02fdabaa2c80eab Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_DJiXH0NYTb.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_GniGshUtTV.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_GniGshUtTV.png new file mode 100644 index 0000000000000000000000000000000000000000..72f5918487e60ba72f259dd522f39e31dafe74fa Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_GniGshUtTV.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_NKUsHGzKV3.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_NKUsHGzKV3.png new file mode 100644 index 0000000000000000000000000000000000000000..e07bb5fed62ced247608f175dc180e5c1066d7a0 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_NKUsHGzKV3.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_PAk2AjLkiN.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_PAk2AjLkiN.png new file mode 100644 index 0000000000000000000000000000000000000000..6cec4c7257f84029e5faf23b271b8f9bb5f4b7bd Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_PAk2AjLkiN.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_T38gWTvOPr.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_T38gWTvOPr.png new file mode 100644 index 0000000000000000000000000000000000000000..2d6d3b53817b093b29e2ba89d3c1d921e2869271 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_T38gWTvOPr.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_gyUbNjpF97.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_gyUbNjpF97.png new file mode 100644 index 0000000000000000000000000000000000000000..e4def986f47636ad24e787ff37b1f0ebf851e4cc Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_gyUbNjpF97.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_jQgwCtwkWi.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_jQgwCtwkWi.png new file mode 100644 index 0000000000000000000000000000000000000000..43f9e6013af0749e289220b6f96f0049b17aee8b Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_jQgwCtwkWi.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_omadfZslxp.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_omadfZslxp.png new file mode 100644 index 0000000000000000000000000000000000000000..2049299ecd4e074887804f64f14ce9ac4c15606a Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_omadfZslxp.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_tPoPHz2rzP.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_tPoPHz2rzP.png new file mode 100644 index 0000000000000000000000000000000000000000..d02d4c9e88908ebd6059146e3dfae3f4983c6272 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_tPoPHz2rzP.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_vOTKl9QLSz.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_vOTKl9QLSz.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a8b421c6d42780f56b34d5f273cea7184b4d0d Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_vOTKl9QLSz.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/QPYcom_zcAf9dvHik.png b/docs/Advanced_development/zh/HeliosService/media/QPYcom_zcAf9dvHik.png new file mode 100644 index 0000000000000000000000000000000000000000..2d4de99a7e232875280d6e33b4fa1aa4120c55a6 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/QPYcom_zcAf9dvHik.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/RtP8rx7WtN.png b/docs/Advanced_development/zh/HeliosService/media/RtP8rx7WtN.png new file mode 100644 index 0000000000000000000000000000000000000000..c906ab2c87506c6831b41736beed6e67a4ccdfb7 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/RtP8rx7WtN.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/ShareX_0g8w1cWTaA.png b/docs/Advanced_development/zh/HeliosService/media/ShareX_0g8w1cWTaA.png new file mode 100644 index 0000000000000000000000000000000000000000..81dcefd712738b2be352037ccca71ae27a9a7ac3 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/ShareX_0g8w1cWTaA.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/WmOUFWwtRo.png b/docs/Advanced_development/zh/HeliosService/media/WmOUFWwtRo.png new file mode 100644 index 0000000000000000000000000000000000000000..b060397273ab9e121ae7c21b54b3bfeb36ee5fa8 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/WmOUFWwtRo.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210825131355877.png b/docs/Advanced_development/zh/HeliosService/media/image-20210825131355877.png new file mode 100644 index 0000000000000000000000000000000000000000..db3ed80a58c89976fe2dfcaf42b9b388f5c7b379 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210825131355877.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210825131423890.png b/docs/Advanced_development/zh/HeliosService/media/image-20210825131423890.png new file mode 100644 index 0000000000000000000000000000000000000000..0ffd6d4a27a07b292c69ad77a6efc171ce880455 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210825131423890.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210825134134474.png b/docs/Advanced_development/zh/HeliosService/media/image-20210825134134474.png new file mode 100644 index 0000000000000000000000000000000000000000..810be7f78bc431b301d86e1ec14d0af02b9712d1 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210825134134474.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210826140649441.png b/docs/Advanced_development/zh/HeliosService/media/image-20210826140649441.png new file mode 100644 index 0000000000000000000000000000000000000000..3807aa73f7758f2e850070602269e2e798db5887 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210826140649441.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827093115294.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827093115294.png new file mode 100644 index 0000000000000000000000000000000000000000..65a6f8d8363d1ea423cb82021c5925bc75be5d93 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827093115294.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827094450921.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827094450921.png new file mode 100644 index 0000000000000000000000000000000000000000..4d83911b0a85a46c3864295ba8a6075907819c2c Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827094450921.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827100748287.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827100748287.png new file mode 100644 index 0000000000000000000000000000000000000000..af10bb6599fd53d2f61e4016b31b20746a2d0d31 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827100748287.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827101129580.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827101129580.png new file mode 100644 index 0000000000000000000000000000000000000000..3d39e2b99a9cd6d5bec6cbb408094bfa3da57e9c Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827101129580.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827103835637.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827103835637.png new file mode 100644 index 0000000000000000000000000000000000000000..0f7d322c87283e6033ce47c34a00e850105eef17 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827103835637.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827131630704.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827131630704.png new file mode 100644 index 0000000000000000000000000000000000000000..5212a4bac8bb54a850259e3aa74924085f5fb5d6 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827131630704.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827132834775.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827132834775.png new file mode 100644 index 0000000000000000000000000000000000000000..4fbdf17e49fdd02a546c931a319b7afe39f300ce Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827132834775.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827132925708.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827132925708.png new file mode 100644 index 0000000000000000000000000000000000000000..cc38502aba35454291f0b93cdf09d6309e7d0cb6 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827132925708.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827134613132.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827134613132.png new file mode 100644 index 0000000000000000000000000000000000000000..53ab8c0eff1948d947dc9015784069de95e865a6 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827134613132.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827134636763.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827134636763.png new file mode 100644 index 0000000000000000000000000000000000000000..e7690b0ea9cc3a44638d386868dced3e1620e2b2 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827134636763.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827135011406.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827135011406.png new file mode 100644 index 0000000000000000000000000000000000000000..a06d436155706a86ae17b644b6fb1a0539fe0dcc Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827135011406.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827141310248.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827141310248.png new file mode 100644 index 0000000000000000000000000000000000000000..d51714cb5ddd4dbbaf94d94377264d16d6f7fb36 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827141310248.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827141503388.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827141503388.png new file mode 100644 index 0000000000000000000000000000000000000000..56350aa1fdb60f8a7e5984741dc3763374ae57ad Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827141503388.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827152347130.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827152347130.png new file mode 100644 index 0000000000000000000000000000000000000000..2d58a18a032ccfb463444e0bf4da469b9362425e Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827152347130.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827175123097.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827175123097.png new file mode 100644 index 0000000000000000000000000000000000000000..11e227ff9cc797d3dbe68d85a6181696e28e6491 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827175123097.png differ diff --git a/docs/Advanced_development/zh/HeliosService/media/image-20210827175241263.png b/docs/Advanced_development/zh/HeliosService/media/image-20210827175241263.png new file mode 100644 index 0000000000000000000000000000000000000000..870b2081cd748cd2f255869f391bd309b0e65d20 Binary files /dev/null and b/docs/Advanced_development/zh/HeliosService/media/image-20210827175241263.png differ