# 消息機制
>[success] 我們的所有插件之間的關系都是基于消息機制的,也就是 **MQ消息隊列** (Message Queue,簡稱MQ),插件和系統、小程序之間直接通過MQ直接通訊。通過消息機制,各個插件和組件之間再無隔閡,每個組件不再成為信息孤島,且MQ機制的高可靠性和窄帶通信能力也非常強大,能在網絡不佳的情況下保證了消息的傳遞性。
<br>
# 消息規范
>[info] 自美智能物聯網系統已經對消息機制進行了整合,用戶層只感受到發送一個指令到某個系統組件,實際上消息會發送到控制中心,再由控制中心發送到指定接收者(組件)

:-: 用戶的感知流程
<br>

:-: 消息處理的過程
## ?? 發送消息
標準的消息發送方法`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
- 卸載自美系統
- 老版本系統說明
- 聯系我們