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));
    }
}

作者:混吃等死-

物联沃分享整理
物联沃-IOTWORD物联网 » Java实现与安成泰A40门禁机的对接与链接操作指南

发表回复