-
Notifications
You must be signed in to change notification settings - Fork 179
旧版固件_通信协议
此文本适用于版本v0.x.x(即v1.0.0之前的旧版本固件)
使用MQTT服务器时,zTC1接收数据监听的topic为device/ztc1/set
,zTC1发送出的数据的topic为device/ztc1/MAC/state
(MAC为小写mac地址字符串,如1234567890ab)
使用UDP时,zTC1接收数据监听的端口为10182,发送数据的端口为10181,发送的目标IP为255.255.255.255,即局域网内全网广播.
通信通过Json格式进行通信,无论是否使用MQTT服务器,通信协议内容相同.
如:
{
"name":"zTC1_1234"
}
当手机app/其他服务器(后面简称为app)通过MQTT或UDP给zTC1设备(后面简称为zTC1或设备)后,zTC1会返回相似的命令.
{
"name":"zTC1_1234", //当前设备名称,设备依靠此判断此条命令是否应该执行后面的命令
"mac":"1234567890ab", //当前设备mac地址,设备依靠此判断此条命令是否应该执行后面的命令
"power":"1.0", //当前功率,每秒检测一次,如果不同则发送
"setting":
{
"name":"zTC1", //设置zTC1的新名称,最长32个字节
"mqtt_uri":"www.mqtt.com", //设置mqtt服务器
"mqtt_port":1883, //设置mqtt服务器端口
"mqtt_user":"z", //设置mqtt服务器登录用户名
"mqtt_password":"123456" //设置mqtt服务器登录密码
},
"plug_0": //0-5表示第1-6个插口, 后面的1-5省略
{
"name":"插口1", //当前插口当前名称
"on":1, //当前插口开关
"setting":
{
"name":"新名称", //设置当前插口名称
"task_0": //设置当前插口定时任务,总共0-4 5组,1-4省略
{ //注意 设置task时,task中所有字段都必须存在而且数据有效
"hour":12 //设置定时任务时间为12:59
"minute":59 //同上
"repeat":10 //重复,bit0-bit6分别表示周一-周日,全部为0时表示一次
"action":1 //动作,0表示关闭插口 1表示开启插口
"on":1 //当前任务是否有效 0表示无效,1表示有效
}
}
}
}
- 以上命令中,"mac"字段为必须有,当有多个zTC1设备时,设备会依靠此字段来判断此条命令是否应该由自己执行.
- 除此之外,设备也会根据
name
和idx
来判断,所以当有name
字段时,相同名称的设备都会执行动作.所以请不要将多个设备设置成相同的名称. -
idx
除了设置时,其他情况都是为了配合domoticz服务器来使用,所以当使用app来控制时,请不要在命令中增加idx
及nvalue
字段,除非你是为了设置idx值. - 如果仅仅为了查询某个字段的结果可以将字段冒号后的参数写为
null
(不带引号,在json中表示空),此时设备不会做任何修改,只会返回当前值 - 请注意以上字段冒号后面携带的参数,有些如
1
,无引号,表示类型为数字,有些为"名称"
表示类型字符.如果类型与要求不同,则与参数写为null效果相同,即为查询. -
mac
字段为最根本的识别符,所以无论app发送给设备还是设备发送给app,mac
字段都不能省略且不能为null
或其他无意义的内容. - 当执行命令和其他功能无关时,其他功能的字段可以省略.
- 设备返回app命令的字符串长度不能超过1023,所以如果发现返回的命令长度可能超过1023,请将命令拆解为多条分别发送.否则可能会引起设备重启的问题.
- 定时任务重复值说明:bit0-bit6分别表示周一-周日,
- 当全部为0时,即值为0,表示仅一次有效,定时任务执行后,任务会自动变为无效
- 当全部为1时,即值为127(二进制1111111->十进制127),表每天都有效
- 当其他情况时,bit0-bit6中哪一位为1,表示每周当天定时任务有效,如值为41时(十进制41->二进制0101001),则bit0 3 5为1,则每周一周四周六定时任务有效.
{"cmd":"device report"}
,此命令为当app设备列表中无此设备时,发送此命令,设备会返回名称,设备类型编号,mac地址及设备类型名称,
如
{
"name":"zTC1_1234", //当前设备名称
"type":1, //设备类型编号,1表示zTC1排插
"type_name":"zTC1", //设备类型名称
"mac":"1234567890ab" //当前设备的mac地址
}
app接收到此命令后,会将此设备加入到列表中.
v0.2版本开始,支持ota在线升级.
查询当前版本:
{
"mac" : "1234567890ab",
"version":null
}
zTC1返回数据:
{
"mac" : "1234567890ab",
"version":"v0.2"
}
v0.2即为当前版本,app可与服务器判断当前最新版本.若当前版本与最新版本不同,则可以发送一下ota升级命令进行升级.
ota升级:
{
"mac" : "1234567890ab",
"setting":
{
"ota":"http://192.168.43.119/TC1_MK3031_moc.ota.bin"
}
}
其中,"http://192.168.43.119/TC1_MK3031_moc.ota.bin"为固件下载地址.需要保证用浏览器打开此链接,可以直接下载bin文件即可
注意链接中不可含有@符号.
链接不可为重定向地址
zTC1返回数据:
{
"mac" : "1234567890ab",
"setting":
{
"ota":"http://192.168.43.119/TC1_MK3031_moc.ota.bin"
}
}
升级完成后,zTC1通过UDP返回数据,并自动重启:
{
"mac":"1234567890ab",
"ota_progress":100
}
app发给设备或设备返回的数据中,字段的顺序没有影响.
app发送zTC1命令(注意插口1-6编号为plug_0-5):
{
"mac":"1234567890ab",
"plug_0":
{
"on":1
},
"plug_1":
{
"on":0
}
"plug_2":
{
"on":1
}
}
zTC1返回数据:
{
"mac":"1234567890ab",
"plug_0":
{
"on":1
},
"plug_1":
{
"on":0
}
"plug_2":
{
"on":1
}
}
app发送
{
"mac":"1234567890ab",
setting:
{
"name":"ztc1"
}
}
zTC1返回:
{
"mac":"1234567890ab",
"name":"ztc1",
setting:
{
"name":"ztc1"
}
}
app发送:
{
"mac":"1234567890ab",
setting:
{
"mqtt_uri":null
}
}
zTC1返回:
{
"mac":"1234567890ab",
"name":"ztc1",
setting:
{
"mqtt_uri":"www.mqtt.com"
}
}
以下homeassistant缩写为hass
以下字符中,大写表示使用对应字符替换,如 MAC
为设备mac地址, X
为数字0
-5,
,NAME
为实际名称
主题:
homeassistant/switch/MAC/plug_X/config
内容:
{
"name" : "NAME",
"state_topic":"homeassistant/switch/MAC/state",
"command_topic":"device/ztc1/MAC/set",
"payload_on" :"{\"mac\":\"MAC\",\"plug_X\":{\"on\":1}}",
"payload_off":"{\"mac\":\"MAC\",\"plug_X\":{\"on\":0}}"
}
homeassistant接收到以上数据后,会自动在页面中增加一个开关. 设备为发送6次,分别增加插口1-插口6
主题:
homeassistant/switch/MAC/state
内容:
{"mac":"MAC","plug_X":{"on":X}} //X为0(关)或1(开)
设备发送以上数据后,hass会立刻更新界面的开关显示状态.
每次设备开关有改变时,发送一次以上数据
主题:
device/ztc1/MAC/set
内容:
{"mac":"MAC","plug_X":{"on":X}} //X为0(关)或1(开)
hass发送此数据后,设备将对应开关设置为对应状态,并返回开关状态