Java实现与安成泰A40门禁机的对接与链接操作指南
dome
https://wwtx.lanzout.com/b00l1vyjve
密码:cf7i
接口文档
1.交互原理
1.1门禁机配置
首先需要配置门禁机链接服务器的位置
1.2门禁链接
门禁机链接上网络的时候,会向服务器地址发送请求,服务器需要把MQTT链接请求返回给门禁机
1.3门禁交互
服务器需要把数据发给门禁机MQTT监听的地址
服务器下发示例:
{
"cmd":"F1openDoor",
"token":"xxx",
"sn":"2c62a9e7cd1a5cfc890a0000802908460a"
}
设备返回示例:
{
"cmd" : "F1openDoor",
"errmsg" : "",
"result" : 0,
"sn" : "2c62a9e7cd1a5cfc890a0000802908460a",
"token" : "xxx"
}
2.踩的坑
安成泰有一些接口有问题需要转换
3.查看机器日志
可使用 telnet 连接本设备查看设备日志来便利对接,推荐 Xshell
账号:root
密码:cqz666
4.mqtt服务器
先需要去下载一个mqtt服务器,我使用的是
emqx,我电脑是win10 然后 emqx最新版本不支持win10但是emqx-5.3.1-windows-amd64版本支持win10这个是我提供的
emqx-5.3.1
首先需要Java对接mqtt,这个是只有链接mqtt的dome,完整dome在最上面
https://wwtx.lanzout.com/b00l1vy8zc
密码:8fs6
默认监听:
http://localhost:18083/
默认登录账号:admin
默认登录密码:public
5.交互代码
package com.example.demo.test;
import com.example.demo.mqtt.MqttSendClient;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
@RestController
public class test {
@Autowired
private MqttSendClient mqttSendClient;
//转换工具
private ObjectMapper objectMapper = new ObjectMapper();
//链接命令
//POST http://localhost:8082/login 这个需要和硬件的服务器地址一样
//参数是json格式的
//返回值是json格式的
//需要赋值后返回给门禁机
@PostMapping(value = "/login")
public Object login(@RequestBody Object accessControlGet) {
System.out.println(accessControlGet);
Map<String,Object> Maps = new HashMap<>();
Maps.put("cmd","login");
Maps.put("url","xxx");
Maps.put("user","xxx");
Maps.put("pd","xxx");
Maps.put("host","xxx");
Maps.put("port","xxx");
Maps.put("uploadTopic","xxx");
Maps.put("downTopic","xxx");
Maps.put("clientID","xxx");
Maps.put("keepalive","xxx");
return Maps;
}
//开门门命令
@PostMapping(value = "/F1openDoor")
public void F1openDoor() throws JsonProcessingException, InterruptedException, UnsupportedEncodingException {
Map<String,Object> Maps = new HashMap<>();
Maps.put("cmd","F1openDoor");
Maps.put("token","xxx");
Maps.put("sn","xxx");
//这里发到sn来做区分
//sn是硬件的唯一标识
this.mqttSendClient.publish(false, "sn", objectMapper.writeValueAsString(Maps));
}
}
作者:混吃等死-