对接说明 =============== # 0. 简介 目前有两种对接方式,即 `TCP/HTTP` 对接,前者需要自行开发 `TCP SERVER`,后者需要自行开发 `HTTP SERVER`,目前前者比较复杂但既可以接收主机事件报告又可以控制主机,后者更简单一点,不过缺点是仅能接收主机事件报告无法控制主机,有需要的朋友可以提需求,我找时间更新 `httprelay` 让它可以逆向控制主机. # 1. 通过TCP协议对接 目前所有主机均为免配置即可上网,可以用APP配置网络参数,将直连接警中心的域名/端口或`IP`/端口配置为你的服务器地址, 即可接收来自主机的`TCP`连接传输的事件报告,可以通过`TCP`对主机进行控制,协议看 [README.md](./README.md) **需要自行开发`TCP SERVER`** ## 1.1 对 `C/C++` 熟悉的同学 参考 `examples/server_demo`,源码在手,天下你有 ## 1.2 其他编程语言 作者对其他语言不熟悉,所以通过 `swig` 生成了其他语言可以使用的库 - 对 `Java` 熟悉的同学,参考 `swig/JavaDemo.java` - 对 `C#` 熟悉的同学,参考 `swig/CSharpDemo.cs` - 对 `javascript` 熟悉的同学,参考 `swig/nodejs-demo.js` 有其他语言对接的需要,可以提 `issue` 或在群里发言. # 2. 通过HTTP协议对接 ## 2.1 说明 `examples/httprelay`是 `C` 编写的简易版 `TCP` 服务器与 `HTTP` 转发器,可以用来接收主机`TCP`连接,并转发主机事件到指定的 `URI`,协议看 [README.md](./README.md) 中的 `data`段,参数是 `acct/ademco_event/zone/gg`,`acct` 用来区分是哪个主机,`ademco_event/zone/gg` 用来判断主机上报了什么事件,所以重点看 `事件码含义`. ## 2.2 网络环境需求 `httprelay` 须运行在能接收主机`TCP`连接的环境: - 插`SIM`卡的主机,需要将`httprelay`运行在公网环境,否则主机无法通过`TCP`连接到服务器 - 网线主机,工程主机+网络模块,`WiFi`主机等可以运行在内网环境的主机,可以将 `httprelay` 运行在该主机可以访问的网段,前提是先在公网环境下通过`APP`配置好直连接警中心信息、配对好探测器等. ## 2.3 启动 `httprelay` 示例 ```bash ./httprelay 12345 http://your-http-server.com:8080/ademco ``` 将监听来自端口`12345`的`TCP`连接,并在收到事件报告后转发至 `http://your-http-server.com:8080/ademco` ## 2.4 事件转发示例 ### 2.4.1 示例1 ``` POST http://your-http-server.com:8080/ademco?acct=861234567890&ademco_event=3400&zone=0&gg=0 ``` 含义是主机账号为 `861234567890`的主机上报了 `3400 布防` 事件 ### 2.4.2 示例2 ``` POST http://your-http-server.com:8080/ademco?acct=861234567891&ademco_event=1130&zone=80&gg=0 ``` 含义是主机账号为 `861234567890`的主机上报了 `80防区触发了1130 盗警` 事件