[](https://badge.fury.io/py/pyncos-module)
## NCOS-Module
NCOS子设备基类。
通过继承该类快速构建NCOS下的子设备模块,并与NCOS进行数据交换
## 类
### ModuleBase
#### <span style="color:#4CAF50">| RUN </span>
运行模块, 并开始管理主事件循环
```python
def run(self)
```
##### 返回
None
#### <span style="color:#4CAF50">| BIND_NCOS_BROKER </span>
绑定NCOS的主题网关
```python
def bind_ncos_broker(self, host:str, port:int)
```
##### 参数
| 参数 | 类型 | 说明 |
|:---- |:---- |:--- |
| host | str | 网关主机地址 |
| port | int | 网关端口 |
##### 返回
None
#### <span style="color:#4CAF50">| ADD_TOPIC </span>
添加模块订阅
```python
def add_topic(self, topic:str, accessor)
```
##### 参数
| 参数 | 类型 | 说明 |
|:---- |:---- |:--- |
| topic | str | 订阅的主题 |
| accessor | func | 接收到订阅消息时的处理函数 |
##### 返回
None
#### <span style="color:#4CAF50">| SET_WILL </span>
设置模块遗愿,当模块与NCOS网关断开时向NCOS发送指定内容
```python
def set_will(self, content:str)
```
##### 参数
| 参数 | 类型 | 说明 |
|:---- |:---- |:--- |
| content | str | 向NCOS发送的指定内容 |
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_CONNECT </span>
当与MCU或其他设备建立好连接后执行本函数
```python
@abstractmethod
def handle_connect(self)
```
##### 参数
None
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_DISCONNECT </span>
当与MCU或其他设备断开连接后执行本函数
```python
@abstractmethod
def handle_disconnect(self)
```
##### 参数
None
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_STARTUP </span>
当模块run函数被调用时执行本函数
```python
@abstractmethod
def handle_startup(self)
```
##### 参数
None
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_EXIT </span>
当模块run函数退出时执行本函数
```python
@abstractmethod
def handle_exit(self)
```
##### 参数
None
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_POST_INSTALL </span>
主动向NCOS安装本模块时执行本函数
```python
@abstractmethod
def handle_post_install(self)
```
##### 参数
None
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_BROKER_CONNECTED </span>
与NCOS主题网关建立连接时执行本函数
```python
@abstractmethod
def handle_broker_connected(self, client, userdata, flags, rc)
```
##### 参数
| 参数 | 类型 | 说明 |
|:---- |:---- |:--- |
| client | object | the client instance for this callback |
| userdata | object | 用户自定义数据 |
| flags | dict | response flags sent by the broker |
| rc | int | the connection result |
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_NCOS_READY </span>
当收到NCOS广播已准备好时执行本函数
```python
@abstractmethod
def handle_NCOS_ready(self, data)
```
##### 参数
| 参数 | 类型 | 说明 |
|:---- |:---- |:--- |
| data | dict | 参见[NCOS_Ready](#ncos_ready) |
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_DATA_PULL </span>
当NCOS发起拉取数据指令执行本函数
```python
@abstractmethod
def handle_data_pull(self, data)
```
##### 参数
| 参数 | 类型 | 说明 |
|:---- |:---- |:--- |
| data | dict | |
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_CONFIG </span>
当NCOS向模块下发配置指令时执行本函数
```python
@abstractmethod
def handle_config(self, data)
```
##### 参数
| 参数 | 类型 | 说明 |
|:---- |:---- |:--- |
| data | dict | |
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_ACTION </span>
当NCOS向模块下发操作指令时执行本函数
```python
@abstractmethod
def handle_action(self, data)
```
##### 参数
| 参数 | 类型 | 说明 |
|:---- |:---- |:--- |
| data | dict | |
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_INSTALLED </span>
当收到NCOS对模块安装请求的响应时执行本函数
```python
@abstractmethod
def handle_installed(self, result:bool, reason:str)
```
##### 参数
| 参数 | 类型 | 说明 |
|:---- |:---- |:--- |
| result | bool | 安装结果的标识, true = 安装成功 |
| reason | str | 安装失败的原因 |
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_UNINSTALLED </span>
当模块主动卸载时执行本函数
```python
@abstractmethod
def handle_uninstalled(self, reason:str)
```
##### 参数
| 参数 | 类型 | 说明 |
|:---- |:---- |:--- |
| reason | str | 卸载原因 |
##### 返回
None
#### <span style="color:#4CAF50">| HANDLE_ERROR </span>
当模块发生异常时的处理函数
```python
@abstractmethod
def handle_error(self, error)
```
##### 参数
| 参数 | 类型 | 说明 |
|:---- |:---- |:--- |
| error | str | 异常信息 |
##### 返回
None
### 数据结构
#### NCOS_Ready
```JSON
{
"slots": []
}
Raw data
{
"_id": null,
"home_page": "https://gitee.com/zwsjz/carbot-module-lib",
"name": "pyncos-module",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "",
"keywords": "",
"author": "xuwh",
"author_email": "xuwhdev@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/2d/54/56df3719fe2632da55327468bf835b0f71a84246ef42bf0f528dc0d2e830/pyncos-module-0.0.15.tar.gz",
"platform": null,
"description": "[](https://badge.fury.io/py/pyncos-module)\r\n\r\n## NCOS-Module\r\n\r\nNCOS\u5b50\u8bbe\u5907\u57fa\u7c7b\u3002\r\n\r\n\u901a\u8fc7\u7ee7\u627f\u8be5\u7c7b\u5feb\u901f\u6784\u5efaNCOS\u4e0b\u7684\u5b50\u8bbe\u5907\u6a21\u5757\uff0c\u5e76\u4e0eNCOS\u8fdb\u884c\u6570\u636e\u4ea4\u6362\r\n\r\n## \u7c7b\r\n\r\n### ModuleBase\r\n\r\n#### <span style=\"color:#4CAF50\">| RUN </span>\r\n\r\n\u8fd0\u884c\u6a21\u5757\uff0c \u5e76\u5f00\u59cb\u7ba1\u7406\u4e3b\u4e8b\u4ef6\u5faa\u73af\r\n\r\n```python\r\ndef run(self)\r\n```\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| BIND_NCOS_BROKER </span> \r\n\r\n\u7ed1\u5b9aNCOS\u7684\u4e3b\u9898\u7f51\u5173\r\n\r\n```python\r\ndef bind_ncos_broker(self, host:str, port:int)\r\n```\r\n##### \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\r\n|:---- |:---- |:--- |\r\n| host | str | \u7f51\u5173\u4e3b\u673a\u5730\u5740 |\r\n| port | int | \u7f51\u5173\u7aef\u53e3 |\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| ADD_TOPIC </span> \r\n\r\n\u6dfb\u52a0\u6a21\u5757\u8ba2\u9605\r\n\r\n```python\r\ndef add_topic(self, topic:str, accessor)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\r\n|:---- |:---- |:--- |\r\n| topic | str | \u8ba2\u9605\u7684\u4e3b\u9898 |\r\n| accessor | func | \u63a5\u6536\u5230\u8ba2\u9605\u6d88\u606f\u65f6\u7684\u5904\u7406\u51fd\u6570 |\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| SET_WILL </span> \r\n\r\n\u8bbe\u7f6e\u6a21\u5757\u9057\u613f\uff0c\u5f53\u6a21\u5757\u4e0eNCOS\u7f51\u5173\u65ad\u5f00\u65f6\u5411NCOS\u53d1\u9001\u6307\u5b9a\u5185\u5bb9\r\n\r\n```python\r\ndef set_will(self, content:str)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\r\n|:---- |:---- |:--- |\r\n| content | str | \u5411NCOS\u53d1\u9001\u7684\u6307\u5b9a\u5185\u5bb9 |\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_CONNECT </span> \r\n\r\n\u5f53\u4e0eMCU\u6216\u5176\u4ed6\u8bbe\u5907\u5efa\u7acb\u597d\u8fde\u63a5\u540e\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_connect(self)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\nNone\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_DISCONNECT </span> \r\n\r\n\u5f53\u4e0eMCU\u6216\u5176\u4ed6\u8bbe\u5907\u65ad\u5f00\u8fde\u63a5\u540e\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_disconnect(self)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\nNone\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_STARTUP </span> \r\n\r\n\u5f53\u6a21\u5757run\u51fd\u6570\u88ab\u8c03\u7528\u65f6\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_startup(self)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\nNone\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_EXIT </span> \r\n\r\n\u5f53\u6a21\u5757run\u51fd\u6570\u9000\u51fa\u65f6\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_exit(self)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\nNone\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_POST_INSTALL </span> \r\n\r\n\u4e3b\u52a8\u5411NCOS\u5b89\u88c5\u672c\u6a21\u5757\u65f6\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_post_install(self)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\nNone\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_BROKER_CONNECTED </span> \r\n\r\n\u4e0eNCOS\u4e3b\u9898\u7f51\u5173\u5efa\u7acb\u8fde\u63a5\u65f6\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_broker_connected(self, client, userdata, flags, rc)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\r\n|:---- |:---- |:--- |\r\n| client | object | the client instance for this callback |\r\n| userdata | object | \u7528\u6237\u81ea\u5b9a\u4e49\u6570\u636e |\r\n| flags | dict | response flags sent by the broker |\r\n| rc | int | the connection result |\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_NCOS_READY </span> \r\n\r\n\u5f53\u6536\u5230NCOS\u5e7f\u64ad\u5df2\u51c6\u5907\u597d\u65f6\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_NCOS_ready(self, data)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\r\n|:---- |:---- |:--- |\r\n| data | dict | \u53c2\u89c1[NCOS_Ready](#ncos_ready) |\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_DATA_PULL </span> \r\n\r\n\u5f53NCOS\u53d1\u8d77\u62c9\u53d6\u6570\u636e\u6307\u4ee4\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_data_pull(self, data)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\r\n|:---- |:---- |:--- |\r\n| data | dict | |\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_CONFIG </span> \r\n\r\n\u5f53NCOS\u5411\u6a21\u5757\u4e0b\u53d1\u914d\u7f6e\u6307\u4ee4\u65f6\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_config(self, data)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\r\n|:---- |:---- |:--- |\r\n| data | dict | |\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_ACTION </span> \r\n\r\n\u5f53NCOS\u5411\u6a21\u5757\u4e0b\u53d1\u64cd\u4f5c\u6307\u4ee4\u65f6\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_action(self, data)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\r\n|:---- |:---- |:--- |\r\n| data | dict | |\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_INSTALLED </span> \r\n\r\n\u5f53\u6536\u5230NCOS\u5bf9\u6a21\u5757\u5b89\u88c5\u8bf7\u6c42\u7684\u54cd\u5e94\u65f6\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_installed(self, result:bool, reason:str)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\r\n|:---- |:---- |:--- |\r\n| result | bool | \u5b89\u88c5\u7ed3\u679c\u7684\u6807\u8bc6, true = \u5b89\u88c5\u6210\u529f |\r\n| reason | str | \u5b89\u88c5\u5931\u8d25\u7684\u539f\u56e0 |\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_UNINSTALLED </span> \r\n\r\n\u5f53\u6a21\u5757\u4e3b\u52a8\u5378\u8f7d\u65f6\u6267\u884c\u672c\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_uninstalled(self, reason:str)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\r\n|:---- |:---- |:--- |\r\n| reason | str | \u5378\u8f7d\u539f\u56e0 |\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n#### <span style=\"color:#4CAF50\">| HANDLE_ERROR </span> \r\n\r\n\u5f53\u6a21\u5757\u53d1\u751f\u5f02\u5e38\u65f6\u7684\u5904\u7406\u51fd\u6570\r\n\r\n```python\r\n@abstractmethod\r\ndef handle_error(self, error)\r\n```\r\n\r\n##### \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\r\n|:---- |:---- |:--- |\r\n| error | str | \u5f02\u5e38\u4fe1\u606f |\r\n\r\n##### \u8fd4\u56de\r\n\r\nNone\r\n\r\n### \u6570\u636e\u7ed3\u6784\r\n\r\n#### NCOS_Ready\r\n\r\n```JSON\r\n{\r\n \"slots\": []\r\n}\r\n",
"bugtrack_url": null,
"license": "",
"summary": "",
"version": "0.0.15",
"project_urls": {
"Homepage": "https://gitee.com/zwsjz/carbot-module-lib"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "8dbf06a5cfaec8b974edc9cd615074e88d759102f50b1703cef63accfbbbcfad",
"md5": "bb801a1c6f62395d7242050c63c33596",
"sha256": "c436d87a868e5f88758dd7bdf31ff092d2f66c912708792a7fbcc6517c46c1fe"
},
"downloads": -1,
"filename": "pyncos_module-0.0.15-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bb801a1c6f62395d7242050c63c33596",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 8284,
"upload_time": "2023-08-27T04:11:54",
"upload_time_iso_8601": "2023-08-27T04:11:54.420688Z",
"url": "https://files.pythonhosted.org/packages/8d/bf/06a5cfaec8b974edc9cd615074e88d759102f50b1703cef63accfbbbcfad/pyncos_module-0.0.15-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2d5456df3719fe2632da55327468bf835b0f71a84246ef42bf0f528dc0d2e830",
"md5": "9bde645bc7b71e0aa17a19f98f7a8ce8",
"sha256": "70d823d995edbcd9750afd2c0a7cfccf44426be8967ccdb1377b3f2fee498d7c"
},
"downloads": -1,
"filename": "pyncos-module-0.0.15.tar.gz",
"has_sig": false,
"md5_digest": "9bde645bc7b71e0aa17a19f98f7a8ce8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 8424,
"upload_time": "2023-08-27T04:11:56",
"upload_time_iso_8601": "2023-08-27T04:11:56.016647Z",
"url": "https://files.pythonhosted.org/packages/2d/54/56df3719fe2632da55327468bf835b0f71a84246ef42bf0f528dc0d2e830/pyncos-module-0.0.15.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-27 04:11:56",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "pyncos-module"
}