diff --git a/haas_lib_bundles/python/libraries/zzio606/README.md b/haas_lib_bundles/python/libraries/zzio606/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..7602d0a87109d9de8e03cbbd7f0749cc72f2fb84
--- /dev/null
+++ b/haas_lib_bundles/python/libraries/zzio606/README.md
@@ -0,0 +1,128 @@
+# 郎汉德6路继电器 - ZZIO606
+
+## 一、产品简介
+
+
+郎汉德6路继电器支持Modbus-RTU协议,是工农业场景选用最多的传感器之一。详细参数如下:
+
+
![](../../docs/images/485环境监测/zzio606.jpg)
+
+
+
+## 二、技术参数
+
+
![](../../docs/images/485环境监测/ZZIO详细参数.jpg)
+
+
+
+## 三、软件接口
+
+### ZZIO606(...) - 创建 ZZIO606 驱动对象
+* 函数原型:
+> zzioObj = ZZIO606(mbObj, mbAddr)
+
+* 参数说明:
+
+|参数|类型|必选参数?|说明|
+|-----|----|:---:|----|
+|mbObj|modbus|是|调用此函数前需确保 modbus 对象已初始化|
+|mbAddr|int|是|默认值是1|
+
+* 返回值:
+成功返回ZZIO606对象,失败抛出 Exception
+
+* 示例代码:
+
+```python
+import modbus as mb
+import zzio606
+
+mb.init('modbus_485_4800')
+zzioObj = zzio606.ZZIO606(mb, 1)
+```
+
+### openChannel() - 关闭指定通道
+
+* 函数原型:
+> zzioObj.openChannel(channelID)
+
+* 参数说明:
+
+|参数|类型|必选参数?|说明|
+|-----|----|:---:|----|
+|channelID|int|是|通道id|
+
+
+* 返回值:
+打开指定通道,失败抛出异常,参考[modbus错误码表](https://haas.iot.aliyun.com/haasapi/index.html?spm=a2cpu.b16145223.0.0.595660b1KQYjx1#/Python/docs/zh-CN/haas_extended_api/modbus)
+
+
+### closeChannel() - 关闭指定通道
+
+* 函数原型:
+> zzioObj.closeChannel(channelID)
+
+* 参数说明:
+
+|参数|类型|必选参数?|说明|
+|-----|----|:---:|----|
+|channelID|int|是|通道id|
+
+* 返回值:
+关闭指定通道,失败抛出异常,参考[modbus错误码表](https://haas.iot.aliyun.com/haasapi/index.html?spm=a2cpu.b16145223.0.0.595660b1KQYjx1#/Python/docs/zh-CN/haas_extended_api/modbus)
+
+
+* 参考代码
+```python
+import modbus as mb
+import zzio606
+
+mb.init('modbus_485_4800')
+zzioObj = zzio606.ZZIO606(mb, 1)
+
+zzio606.openChannel(1)
+zzio606.closeChannel(1)
+
+```
+
+
+## 四、接口案例
+控制第一个通道开闭
+
+* 代码:
+```python
+# board.json配置:
+{
+ "name": "board-name",
+ "version": "1.0.0",
+ "io": {
+ "modbus_485_4800": {
+ "type": "MODBUS",
+ "mode": 0,
+ "port": 2,
+ "baudrate": 4800,
+ "priority": 0,
+ "timeout": 200
+ },
+ },
+ "debugLevel": "ERROR",
+ "repl": "disable"
+}
+
+```
+```python
+import modbus as mb
+import zzio606
+
+mb.init('modbus_485_4800')
+zzioObj = zzio606.ZZIO606(mb, 1)
+
+zzio606.openChannel(1)
+zzio606.closeChannel(1)
+
+```
+
+## 参考文献及购买链接
+[1] [郎汉德官网](https://www.lonhand.com/index/io/22.html?hmsr=tb)
+
+[3] [商品链接](https://item.taobao.com/item.htm?spm=a230r.1.14.12.68c03096UXtt9a&id=566347546505&ns=1&abbucket=18#detail)
diff --git a/haas_lib_bundles/python/libraries/zzio606/zzio606.py b/haas_lib_bundles/python/libraries/zzio606/zzio606.py
new file mode 100644
index 0000000000000000000000000000000000000000..0ba3ba149d55ce99a37a65d242a767b6a4bc35a9
--- /dev/null
+++ b/haas_lib_bundles/python/libraries/zzio606/zzio606.py
@@ -0,0 +1,26 @@
+class ZZIO606(object):
+
+ def __init__(self, mbObj, devAddr):
+ self.mbObj = mbObj
+ self.devAddr = devAddr
+
+ def openChannel(self, chid):
+ if self.mbObj is None:
+ raise ValueError("invalid modbus object.")
+ ret = self.mbObj.writeCoil(self.devAddr, chid, 0xff00, 200)
+ return ret[0]
+
+ def closeChannel(self, chid):
+ if self.mbObj is None:
+ raise ValueError("invalid modbus object.")
+ ret = self.mbObj.writeCoil(self.devAddr, chid, 0, 200)
+ return ret[0]
+
+ def getChannelStatus(self):
+ if self.mbObj is None:
+ raise ValueError("invalid modbus object.")
+ status = bytearray(1)
+ ret = self.mbObj.readCoils(self.devAddr, 0, 6, status, 200)
+ if ret[0] < 0:
+ raise ValueError("modbus readCoils failed, errno:", ret[0])
+ return status