数据采用json格式,内容全部为字符串
1,服务器请求设备数据
{msgtype:devices,id:51001,action:读总电量,data:""}
说明:
msgtype:消息类型,
devices表示是一个发个具体设备的消息请求;
id,具体设备,对应设置的端口号
action,对设备的请求行为,如:获取总电量,获取当前功率等
data,要发送给设备的数,如:当action为修改总电量时,data为要修改的新数据,data不用时为空,但不能没有,有多个数据时,使用数组data:[abc,wfd]
2,回复服务器数据
{msgtype:devices,id:51001,action:读总电量,data:2396.65}
读设备和服务器请求相同,
写设备data回复OK,或者不回复服务器
错误上报:action为error,data有三种,1,offline,表示和485转wifi设备网络断开;2,failed表示和485转wifi设备连接正常,但不能获取设备数据,可能设备停止运行;3,能读到设备数据,但数据不正常,需要检查线路连接等
3,服务器和中间件的通讯
1,中间件从服务器获取设备列表
{msgtype:serv,:action:devlist,data:“”}
2,服务器回复中间件
{msgtype:serv,:action:devlist,data:[51001,52000,53003]}
由于终端设备没有可配置信息,所有信息直接在服务器配置
注,这条可以添加设备时发给中间件,直接发送新添加的设备id,也可以全部重发所有id,中间件不会删除id,服务器发送过来的id不存在就添加在设备列表里
疑问:
1,每条消息用什么分割,即粘包问题
2,和主服务器断开时,是否要把设备侧的数据暂时保存到中间件侧文件,等和服务器建立连接后,将数据同步到服务器,
网友评论