# 消息机制
>[success] 我们的所有插件之间的关系都是基于消息机制的,也就是 **MQ消息队列** (Message Queue,简称MQ),插件和系统、小程序之间直接通过MQ直接通讯。通过消息机制,各个插件和组件之间再无隔阂,每个组件不再成为信息孤岛,且MQ机制的高可靠性和窄带通信能力也非常强大,能在网络不佳的情况下保证了消息的传递性。
<br>
# 消息规范
>[info] 自美智能物联网系统已经对消息机制进行了整合,用户层只感受到发送一个指令到某个系统组件,实际上消息会发送到控制中心,再由控制中心发送到指定接收者(组件)
![](http://qiniucn.16302.com/a8a130bb162a89fcf3b9a67948f346f5)
:-: 用户的感知流程
<br>
![](http://qiniucn.16302.com/851371ef89783f4f5439103dfdb9b2f6)
:-: 消息处理的过程
## 🔥 发送消息
标准的消息发送方法`self.send(MsgType, Receiver, Data)`函数结构为`self.send(数据类型,接收者,发送的数据)`
★ 下面是一段示例代码
```python
from MsgProcess import MsgProcess, MsgType
class helloworld(MsgProcess):
def Text(self, message):
data="你好世界~ 我是智能小美"
self.send(MsgType.Text, Receiver='Screen', Data=data)
```
这段代码的意思是调用`self.send()`函数向接收者(Receiver)`Screen`组件发送`MsgType.Text`类型的数据`你好世界~ 我是智能小美`
<br>
**参数介绍:**
MsgType 消息类型,有以下几种:
```
MsgType.Start # 启动指令
MsgType.Pause # 暂停指令
MsgType.Resume # 继续指令
MsgType.Stop # 停止指令
MsgType.Text # 文本类型
```
例1:发送`MsgType.Start`指令到`plugin1`插件(代码:` self.send(MsgType.Start, Receiver='plugin1', Data="")`),则`plugin1`开始运行(线程开始)
例2:发送`MsgType.Pause`指令到`plugin1`插件(代码:` self.send(MsgType.Pause, Receiver='plugin1', Data="")`),则`plugin1`暂停运行(线程暂停)
例3:发送`MsgType.Resume`指令到`plugin1`插件(代码:` self.send(MsgType.Resume, Receiver='plugin1', Data="")`),则`plugin1`继续运行(继续线程)
<br>
## 重写消息接收
在自美系统中也可以自定义收到发送者信息的处理方法
```
# 导入基类库、消息类型库
from MsgProcess import MsgProcess, MsgType
class helloworld(MsgProcess):
'''你好,世界'''
def __init__(self, msgQueue):
'''如果在插件或功能模块中使用__ini__方法,必须加下面的这方法,先调用基类中的方法'''
super().__init__(msgQueue)
def Start(self, message=None):
'''功能、插件入口,通常被用初始化插件入口使用'''
pass
def Text(self, message):
'''接收来自其他模块发送过来的消息类型为:MsgType.Text(文本)消息,再进行二次开发和业务逻辑实现'''
pass
def Pause(self, message=None):
'''接收消息类型为:MsgType.Pause(暂停)消息,实现暂停功能'''
pass
def Resume(self, message=None):
'''接收消息类型为:MsgType.Resume(继续)消息,实现继续功能'''
pass
def Stop(self, message=None):
'''接收消息类型为:MsgType.Stop(停止)消息,实现停止功能,定义默认为自动停止'''
self.__stop = True
```
如果在插件或功能模块中使用`__ini__`方法,必须在`__ini__ `方法中加入`super().__init__(msgQueue)`,先调用基类中的方法。
- 自美智能物联网系统简介
- 1.系统安装
- 树莓派上安装自美系统
- 香橙派上安装自美系统
- 普通电脑和虚拟机下安装自美系统
- 安装自美智能物联网系统
- 2.系统使用
- 获取设备IP地址
- 自美系统的启动与停止
- 进入控制面板
- 通过控制面板管理插件
- 控制面板系统配置
- 设置唤醒词
- 开启内网穿透服务
- 启用SSH管理设备
- 使用微信小程序
- 3.开发者中心
- [重要必看]插件消息机制
- 配置开发环境
- 开发自美插件
- 开发微信小程序插件
- 开发前端插件
- 系统内置模块说明
- Docker容器的使用方法
- Docker中使用摄像头
- 烧录ESP32单片机
- 4.树莓派相关
- 自美树莓派声卡驱动板使用说明
- 树莓派设备配网
- 树莓派启用VNC远程桌面
- 树莓派官方系统的烧录
- 树莓派启动远程SSH
- 树莓派使用GPIO编程
- 树莓派设备修改文件权限
- 5.香橙派相关
- 香橙派官方系统的烧录
- 香橙派使用SSH服务
- 6.电视盒子相关
- 电视盒子使用自美系统
- 将armbian刷入eMMc
- 卸载自美系统
- 老版本系统说明
- 联系我们