由于参与设备多、种类也多,所以端口命名也需要一个整体的规范。由于设备数量多,所以层次性命名方案是显然的,一个控制点的名字应该是如下格式的:
[域名]/智能体名[/[下联设备名/]端口名]
一个智能控制网络中的名字是以“/”开头的,也就是说如果一个名字是以“/”开头,则其一定是和自己属于同一个控制系统,不是以“/”开头,则其属于另外的控制系统,甚至可能是其它组织的。例如,某智能楼宇收到一个”fire.department.gov/xx”发来的信号,就知道是公安消防部门送来了一个信息。
注意:这里不讨论安全性问题,这属于安全防护和管控的领域
这种命名方案的最大好处就是自然兼容了web资源的命名,也就是说:一个控制点也正好就是一个REST的资源访问点!
当然,前提是智能体为其提供了REST访问接口。
本系统的控制点目前包括三个层次:
智能体,可以是运行PythonPi接口的树莓派、服务器、手机/PAD等智能前端
下属设备,如某nodeMCU单片机、modbus网关、网络继电器、485/232转换器等等。如果略去,则代表智能体自身的端口
具体的输入输出端口,gpio、i2c、spi等
下属设备和端口的格式是:
[类型信息_]端口信息
如果没有类型信息则有两种可能:
数字代表gpio端口,如/pi2/1代表2号树莓派上的1号gpio口
设备自身的某些特殊访问点,如/pi2/self代表2号树莓派自身
具体的命名格式要根据端口类型来确定,如i2c,则/pi2/i2c_72_1代表了2号树莓派上1号i2c总线(树莓派就一条i2c总线,所以默认就是1,可以省略)上的72号设备的1号寄存器
下属设备类似,如/pi2/nodeMCU_ceshi1/2代表了2树莓派管理下名为ceshi1的nodeMCU上的2号gpio口
如果将下属设备和端口名全部略去,则代表组名,如/group1代表1号组。组是一组资源的集合,目前主要用于如全关、某区域灯全开这样的动作命令。目前要求同组资源的类型相同。
关注我的公众号及时获取推送的最新文章