Commit e4c9168c authored by captainwong's avatar captainwong

update doc

parent 4a3d8d89
...@@ -16,12 +16,7 @@ QQ群:`1093730796` ...@@ -16,12 +16,7 @@ QQ群:`1093730796`
## docs ## docs
[开发文档](docs/README.md) [对接说明](docs/对接说明.md)
[协议文档](docs/README.md)
## 测试及演示工具,已编译的dll等请点击 [releases](https://github.com/captainwong/ademco_hb/releases)下载 ## 测试及演示工具,已编译的dll等请点击 [releases](https://github.com/captainwong/ademco_hb/releases)下载
## ChangeLog
* 2022年7月31日 废弃旧版 `C++` 头文件版本,启用纯 `C` 版本。`C++` 版本可以在 `cpp` 分支查看。
...@@ -65,154 +65,154 @@ ...@@ -65,154 +65,154 @@
### 主机状态 ### 主机状态
|事件码|含义|en| | 事件码 | 含义 | en |
|-----|----|--| | ------ | -------- | ------------- |
|3400|离家布防|ARM_AWAY| | 3400 | 离家布防 | ARM_AWAY |
|1400|撤防|DISARM| | 1400 | 撤防 | DISARM |
|3456|留守布防|ARM_STAY| | 3456 | 留守布防 | ARM_STAY |
|1456|留守布防|ARM_STAY_1456| | 1456 | 留守布防 | ARM_STAY_1456 |
### 防区报警 ### 防区报警
|事件码|含义|en| | 事件码 | 含义 | en |
|-----|----|--| | ------ | -------- | ----------- |
|1120|紧急报警|EMERGENCY| | 1120 | 紧急报警 | EMERGENCY |
|1130|盗警|BURGLAR| | 1130 | 盗警 | BURGLAR |
|1134|门铃|DOOR_RING| | 1134 | 门铃 | DOOR_RING |
|1110|火警|FIRE| | 1110 | 火警 | FIRE |
|1121|胁迫|DURESS| | 1121 | 胁迫 | DURESS |
|1151|煤气|GAS| | 1151 | 煤气 | GAS |
|1113|水警|WATER| | 1113 | 水警 | WATER |
|1137|主机防拆|TAMPER| | 1137 | 主机防拆 | TAMPER |
|1383|防区防拆|ZONE_TAMPER| | 1383 | 防区防拆 | ZONE_TAMPER |
|1570|旁路|BYPASS| | 1570 | 旁路 | BYPASS |
### 防区异常 ### 防区异常
|事件码|含义|en| | 事件码 | 含义 | en |
|-----|----|--| | ------ | ------------ | ----------------------- |
|1301|主机AC掉电|AC_BROKE| | 1301 | 主机AC掉电 | AC_BROKEN |
|1302|低电|LOW_BATTERY| | 1302 | 低电 | LOW_BATTERY |
|1311|坏电|BAD_BATTERY| | 1311 | 坏电 | BAD_BATTERY |
|1387|光扰|SOLAR_DISTURB| | 1387 | 光扰 | SOLAR_DISTURB |
|1381|失效|DISCONNECT| | 1381 | 失效 | DISCONNECT |
|1393|失联|LOST| | 1393 | 失联 | LOST |
|1384|电源故障|BATTERY_EXCEPTION| | 1384 | 电源故障 | POWER_EXCEPTION |
|1380|其他故障|OTHER_EXCEPTION| | 1380 | 其他故障 | OTHER_EXCEPTION |
|3301|主机AC复电|AC_RECOVER| | 3301 | 主机AC复电 | AC_RECOVER |
|3302|低电恢复|LOW_BATTERY_RECOVER| | 3302 | 低电恢复 | LOW_BATTERY_RECOVER |
|3311|坏电恢复|BAD_BATTERY_RECOVER| | 3311 | 坏电恢复 | BAD_BATTERY_RECOVER |
|3387|光扰恢复|SOLAR_DISTURB_RECOVER| | 3387 | 光扰恢复 | SOLAR_DISTURB_RECOVER |
|3381|失效恢复|DISCONNECT_RECOVER| | 3381 | 失效恢复 | DISCONNECT_RECOVER |
|3393|失联恢复|LOST_RECOVER| | 3393 | 失联恢复 | LOST_RECOVER |
|3384|电源故障恢复|BATTERY_EXCEPTION_RECOVER| | 3384 | 电源故障恢复 | POWER_EXCEPTION_RECOVER |
|3380|其他故障恢复|OTHER_EXCEPTION_RECOVER| | 3380 | 其他故障恢复 | OTHER_EXCEPTION_RECOVER |
|3100|清除异常指示|CLEAR_EXCPTION| | 3100 | 清除异常指示 | CLEAR_EXCPTION |
### *恒博私有事件码* ### *恒博私有事件码*
|事件码|含义|en| | 事件码 | 含义 | en |
|-----|----|--| | ------ | ---------------------------- | ---------------------------- |
|1485|485断开|SERIAL_485_DIS| | 1485 | 485断开 | SERIAL_485_DIS |
|3485|485连接|SERIAL_485_RECOVER| | 3485 | 485连接 | SERIAL_485_RECOVER |
|1700|链路挂起|CONN_HANGUP| | 1700 | 链路挂起 | CONN_HANGUP |
|3700|链路恢复|CONN_RECOVER| | 3700 | 链路恢复 | CONN_RECOVER |
|1701|撤防密码错误|DISARM_PWD_ERR| | 1701 | 撤防密码错误 | DISARM_PWD_ERR |
|1702|分机探头异常|SUB_MACHINE_SENSOR_EXCEPTION| | 1702 | 分机探头异常 | SUB_MACHINE_SENSOR_EXCEPTION |
|3702|分机探头恢复|SUB_MACHINE_SENSOR_RECOVER| | 3702 | 分机探头恢复 | SUB_MACHINE_SENSOR_RECOVER |
|1703|分机电源异常|SUB_MACHINE_POWER_EXCEPTION| | 1703 | 分机电源异常 | SUB_MACHINE_POWER_EXCEPTION |
|3703|分机电源恢复|SUB_MACHINE_POWER_RECOVER| | 3703 | 分机电源恢复 | SUB_MACHINE_POWER_RECOVER |
|1704|串口透传|COM_PASSTHROUGH| | 1704 | 串口透传 | COM_PASSTHROUGH |
|2704|进入设置状态|ENTER_SET_MODE| | 2704 | 进入设置状态 | ENTER_SET_MODE |
|3704|退出设置状态|EXIT_SET_MODE| | 3704 | 退出设置状态 | EXIT_SET_MODE |
|1705|查询分机信息|QUERY_SUB_MACHINE| | 1705 | 查询分机信息 | QUERY_SUB_MACHINE |
|1706|写入主机信息|WRITE_TO_MACHINE| | 1706 | 写入主机信息 | WRITE_TO_MACHINE |
|1707|主机类型--网络模块|I_AM_NET_MODULE| | 1707 | 主机类型--网络模块 | I_AM_NET_MODULE |
|1717|主机类型--GPRS主机|I_AM_GPRS| | 1717 | 主机类型--GPRS主机 | I_AM_GPRS |
|1727|主机类型--液晶主机|I_AM_LCD| | 1727 | 主机类型--液晶主机 | I_AM_LCD |
|1737|主机类型--网线主机|I_AM_WIRE| | 1737 | 主机类型--网线主机 | I_AM_WIRE |
|1747|主机类型--WiFi主机(停用)|I_AM_WIFI| | 1747 | 主机类型--WiFi主机(停用) | I_AM_WIFI |
|1757|主机类型--三区段主机|I_AM_3_SECTION| | 1757 | 主机类型--三区段主机 | I_AM_3_SECTION |
|1767|主机类型--物联卡主机|I_AM_IOT| | 1767 | 主机类型--物联卡主机 | I_AM_IOT |
|1777|主机类型--真彩主机|I_AM_TRUE_COLOR| | 1777 | 主机类型--真彩主机 | I_AM_TRUE_COLOR |
|1787|主机类型--物联卡主机|I_AM_GPRS_IOT| | 1787 | 主机类型--物联卡主机 | I_AM_GPRS_IOT |
|1797|主机类型--GRPS主机带电话功能|I_AM_GPRS_PHONE| | 1797 | 主机类型--GRPS主机带电话功能 | I_AM_GPRS_PHONE |
|1807|主机类型--NB报警接收主机|I_AM_NB| | 1807 | 主机类型--NB报警接收主机 | I_AM_NB |
|1817|主机类型--WiFi主机(新版)|I_AM_WIFI2| | 1817 | 主机类型--WiFi主机(新版) | I_AM_WIFI2 |
|1709|手机用户SOS|PHONE_USER_SOS| | 1709 | 手机用户SOS | PHONE_USER_SOS |
|1711|手机用户消警|PHONE_USER_CANCLE_ALARM| | 1711 | 手机用户消警 | PHONE_USER_CANCLE_ALARM |
|1712|主机进入设置状态|ENTER_SETTING_MODE| | 1712 | 主机进入设置状态 | ENTER_SETTING_MODE |
|3712|主机退出设置状态|EXIT_SETTING_MODE| | 3712 | 主机退出设置状态 | EXIT_SETTING_MODE |
|1710|主机恢复出厂设置|RESTORE_FACTORY_SETTINGS_710| | 1710 | 主机恢复出厂设置 | RESTORE_FACTORY_SETTINGS_710 |
|1713|主机恢复出厂设置|RESTORE_FACTORY_SETTINGS| | 1713 | 主机恢复出厂设置 | RESTORE_FACTORY_SETTINGS |
|1756|物联卡|SIM_IS_IOT_CARD| | 1756 | 物联卡 | SIM_IS_IOT_CARD |
|2756|平台物联卡|SIM_IS_IOT_PLATFORM_CARD| | 2756 | 平台物联卡 | SIM_IS_IOT_PLATFORM_CARD |
|3756|非物联卡|SIM_IS_NOT_IOT_CARD| | 3756 | 非物联卡 | SIM_IS_NOT_IOT_CARD |
|1798|索要主机类型|WHAT_IS_YOUR_TYPE| | 1798 | 索要主机类型 | WHAT_IS_YOUR_TYPE |
|1799|信号强度|SIGNAL_STRENGTH_CHANGED| | 1799 | 信号强度 | SIGNAL_STRENGTH_CHANGED |
|1944|主机断线|OFFLINE| | 1944 | 主机断线 | OFFLINE |
|1946|主机上线|ONLINE| | 1946 | 主机上线 | ONLINE |
### *恒博主机类型对照表* ### *恒博主机类型对照表*
*SMS指主机自身是否可以拨打电话、发送短信,不是指通过阿里语音打电话* *SMS指主机自身是否可以拨打电话、发送短信,不是指通过阿里语音打电话*
|事件码|主机类型|布防|撤防|半布防|设置|信号强度|防区|有线防区|SMS|内核|网络|型号| | 事件码 | 主机类型 | 离家布防 | 撤防 | 留守布防 | 设置 | 信号强度 | 防区 | 有线防区 | SMS | 内核 | 网络 | 型号 |
|------|-------|----|----|-----|----|-------|----|-------|---|----|---|----| | --------------------------------- | ----------------- | -------- | ---- | -------- | ---- | -------- | ----- | -------- | --- | ---- | ---- | ------------------------------------------------------ |
|1707 主机类型--网络模块|3 网络模块主机|√|√|√|√| |1~999|1~8| |jjf|qfm|<ul><li>G250</li></ul>| | 1707 主机类型--网络模块 | 3 网络模块主机 | √ | √ | √ | √ | | 1~999 | 1~8 | | jack | jack | <ul><li>G250</li></ul> |
|1717 主机类型--GPRS主机|4 GPRS主机|√|√| |√|√|1~99| |√|wzq|qfm|<ul><li>4040G</li><li>5050G</li><li>5050G-4G</li></ul>| | 1717 主机类型--GPRS主机 | 4 GPRS主机 | √ | √ | | √ | √ | 1~99 | | √ | wzq | qfm | <ul><li>4040G</li><li>5050G</li><li>5050G-4G</li></ul> |
|1727 主机类型--液晶主机|5 液晶主机|√|√|√|√|√|1~249| |√|jjf|qfm|<ul><li>BJQ560</li><li>BJQ560B</li></ul>| | 1727 主机类型--液晶主机 | 5 液晶主机 | √ | √ | √ | √ | √ | 1~249 | | √ | jjf | qfm | <ul><li>BJQ560</li><li>BJQ560B</li></ul> |
|1737 主机类型--网线主机|6 网线主机|√|√| |√| |1~99| | |wzq|qfm|<ul><li>4040R</li><li>5050R</li></ul>| | 1737 主机类型--网线主机 | 6 网线主机 | √ | √ | | √ | | 1~99 | | | jack | jack | <ul><li>4040R</li><li>5050R</li></ul> |
|1757 主机类型--三区段主机|8 三区段主机|√|√| |√|√|1~191|61~68|√|jjf|qfm|<ul><li>G1000</li><li>G1000-4G</li></ul>| | 1757 主机类型--三区段主机 | 8 三区段主机 | √ | √ | | √ | √ | 1~191 | 61~68 | √ | jjf | qfm | <ul><li>G1000</li><li>G1000-4G</li></ul> |
|1767 主机类型--物联卡主机|9 物联卡主机|√|√| |√|√|1~60| | |jjf|qfm|<ul><li>2050-4GW</li></ul>| | 1767 主机类型--物联卡主机 | 9 物联卡主机 | √ | √ | | √ | √ | 1~60 | | | jjf | qfm | <ul><li>2050-4GW</li></ul> |
|1777 主机类型--真彩主机|7 真彩主机|√|√| |√|√|1~68|1~8|√|jjf|qfm|<ul><li>G1000</li><li>G1000-4G</li></ul>| | 1777 主机类型--真彩主机 | 7 真彩主机 | √ | √ | | √ | √ | 1~68 | 1~8 | √ | jjf | qfm | <ul><li>G1000</li><li>G1000-4G</li></ul> |
|1787 主机类型--物联卡主机|2 简化物联卡主机|√|√| |√|√|1~99| | |wzq|qfm|<ul><li>5050G-4GW</li></ul>| | 1787 主机类型--物联卡主机 | 2 简化物联卡主机 | √ | √ | | √ | √ | 1~99 | | | wzq | qfm | <ul><li>5050G-4GW</li></ul> |
|1797 主机类型--GRPS主机带电话功能|10 GPRS主机可电话|√|√| |√|√|1~60| |√|jjf|qfm|<ul><li>2050</li></ul>| | 1797 主机类型--GRPS主机带电话功能 | 10 GPRS主机可电话 | √ | √ | | √ | √ | 1~60 | | √ | jjf | qfm | <ul><li>2050</li></ul> |
|1807 主机类型--NB报警接收主机|11 NB报警接收主机| | | |√|√|1~999| | |||<ul></ul>| | 1807 主机类型--NB报警接收主机 | 11 NB报警接收主机 | | | | √ | √ | 1~999 | | | | | <ul></ul> |
|1817 主机类型--WiFi主机(新版)|12 WiFi主机新版|√|√| |√|√|1~99| | |wzq|qfm|<ul></ul>| | 1817 主机类型--WiFi主机(新版) | 12 WiFi主机新版 | √ | √ | | √ | √ | 1~99 | | | wzq | qfm | <ul></ul> |
### *恒博主机型号示例图片* ### *恒博主机型号示例图片*
|型号|示例图片| | 型号 | 示例图片 |
|---|--------| | --------- | ------------------------------------------------------------------------- |
|2050|<img alt="2050" src="./主机类型/smartresize/HB-2050-web.png" />| | 2050 | <img alt="2050" src="./主机类型/smartresize/HB-2050-web.png" /> |
|2050-4GW|<img alt="2050-4GW" src="./主机类型/smartresize/HB-2050-4GW-web.png" />| | 2050-4GW | <img alt="2050-4GW" src="./主机类型/smartresize/HB-2050-4GW-web.png" /> |
|4040G|<img alt="4040G" src="./主机类型/smartresize/HB-4040G-web.png" />| | 4040G | <img alt="4040G" src="./主机类型/smartresize/HB-4040G-web.png" /> |
|4040R|<img alt="4040R" src="./主机类型/smartresize/HB-4040R-web.png" />| | 4040R | <img alt="4040R" src="./主机类型/smartresize/HB-4040R-web.png" /> |
|5050G|<img alt="5050G" src="./主机类型/smartresize/HB-5050G-web.png" />| | 5050G | <img alt="5050G" src="./主机类型/smartresize/HB-5050G-web.png" /> |
|5050G-4G|<img alt="5050G-4G" src="./主机类型/smartresize/HB-5050G-4G-web.png" />| | 5050G-4G | <img alt="5050G-4G" src="./主机类型/smartresize/HB-5050G-4G-web.png" /> |
|5050G-4GW|<img alt="5050G-4GW" src="./主机类型/smartresize/HB-5050G-4GW-web.png" />| | 5050G-4GW | <img alt="5050G-4GW" src="./主机类型/smartresize/HB-5050G-4GW-web.png" /> |
|5050R|<img alt="5050R" src="./主机类型/smartresize/HB-5050R-web.png" />| | 5050R | <img alt="5050R" src="./主机类型/smartresize/HB-5050R-web.png" /> |
|BJQ560|<img alt="BJQ560" src="./主机类型/smartresize/HB-BJQ560-web.png" />| | BJQ560 | <img alt="BJQ560" src="./主机类型/smartresize/HB-BJQ560-web.png" /> |
|BJQ560B|<img alt="BJQ560B" src="./主机类型/smartresize/HB-BJQ560B-web.png" />| | BJQ560B | <img alt="BJQ560B" src="./主机类型/smartresize/HB-BJQ560B-web.png" /> |
|G1000|<img alt="G1000" src="./主机类型/smartresize/HB-G1000-web.png" />| | G1000 | <img alt="G1000" src="./主机类型/smartresize/HB-G1000-web.png" /> |
|G1000-4G|<img alt="G1000-4G" src="./主机类型/smartresize/HB-G1000-4G-web.png" />| | G1000-4G | <img alt="G1000-4G" src="./主机类型/smartresize/HB-G1000-4G-web.png" /> |
|G250|<img alt="G250" src="./主机类型/smartresize/HB-G250-web.png" />| | G250 | <img alt="G250" src="./主机类型/smartresize/HB-G250-web.png" /> |
### *恒博主机类型与支持的防区属性对照表* ### *恒博主机类型与支持的防区属性对照表*
* 防区属性是否支持失联报告 * 防区属性是否支持失联报告
||00 匪警全局|01 匪警紧急|02 火警防区|03 胁迫防区|04 燃气防区|05 淹水防区|06 分机|07 遥控器|08 匪警半局|09 屏蔽防区|0A 门铃防区|0F 旁路防区| | | 00 匪警全局 | 01 匪警紧急 | 02 火警防区 | 03 胁迫防区 | 04 燃气防区 | 05 淹水防区 | 06 分机 | 07 遥控器 | 08 匪警半局 | 09 旁路防区 | 0A 门铃防区 |
|----|----|----|----|----|----|----|----|----|----|----|----|----| | -------- | ----------- | ----------- | ----------- | ----------- | ----------- | ----------- | ------- | --------- | ----------- | ----------- | ----------- |
|失联支持|√|√| |√| | |√| |√| | |√| | 失联支持 | √ | √ | | √ | | | √ | | √ | √ | |
* 主机类型与支持的防区属性对照表 * 主机类型与支持的防区属性对照表
|事件码|类型|型号|00|01|02|03|04|05|06|07|08|09|0A|0F| | 事件码 | 类型 | 型号 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A |
|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----| | ------ | ---- | ------------------------------------------------------ | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|1707|3|<ul><li>G250</li></ul>|√|√|√|√|√|√|√|√|√|√|√| | | 1707 | 3 | <ul><li>G250</li></ul> | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
|1717|4|<ul><li>4040G</li><li>5050G</li><li>5050G-4G</li></ul>|√|√|√|√|√|√| |√| | | | | | 1717 | 4 | <ul><li>4040G</li><li>5050G</li><li>5050G-4G</li></ul> | √ | √ | √ | √ | √ | √ | | √ | | | |
|1727|5|<ul><li>BJQ560</li><li>BJQ560B</li></ul>|√|√|√|√|√|√|√|√|√|√|√|√| | 1727 | 5 | <ul><li>BJQ560</li><li>BJQ560B</li></ul> | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
|1737|6|<ul><li>4040R</li><li>5050R</li></ul>|√|√|√|√|√|√| |√| | | | | | 1737 | 6 | <ul><li>4040R</li><li>5050R</li></ul> | √ | √ | √ | √ | √ | √ | | √ | | | |
|1757|8|<ul><li>G1000</li><li>G1000-4G</li></ul>|√|√|√|√|√|√| |√| |√|√|√| | 1757 | 8 | <ul><li>G1000</li><li>G1000-4G</li></ul> | √ | √ | √ | √ | √ | √ | | √ | | √ | √ |
|1767|9|<ul><li>2050-4GW</li></ul>|√|√|√|√|√|√| |√| |√|√|√| | 1767 | 9 | <ul><li>2050-4GW</li></ul> | √ | √ | √ | √ | √ | √ | | √ | | √ | √ |
|1777|7|<ul><li>G1000</li><li>G1000-4G</li></ul>|√|√|√|√|√|√| |√| |√|√|√| | 1777 | 7 | <ul><li>G1000</li><li>G1000-4G</li></ul> | √ | √ | √ | √ | √ | √ | | √ | | √ | √ |
|1787|2|<ul><li>5050G-4GW</li></ul>|√|√|√|√|√|√| |√| | | | | | 1787 | 2 | <ul><li>5050G-4GW</li></ul> | √ | √ | √ | √ | √ | √ | | √ | | | |
|1797|10|<ul><li>2050</li></ul>|√|√|√|√|√|√| |√| | | | | | 1797 | 10 | <ul><li>2050</li></ul> | √ | √ | √ | √ | √ | √ | | √ | | | |
|1807|11|<ul></ul>|√|√|√|√|√|√| | | | |√| | | 1807 | 11 | <ul></ul> | √ | √ | √ | √ | √ | √ | | | | | √ |
|1817|12|<ul></ul>|√|√|√|√|√|√| |√| | | | | | 1817 | 12 | <ul></ul> | √ | √ | √ | √ | √ | √ | | √ | | | |
## 四、恒博扩展 ## 四、恒博扩展
...@@ -220,12 +220,12 @@ ...@@ -220,12 +220,12 @@
`data``gg` 值含义: `data``gg` 值含义:
|发送方|接收方|gg值(ascii字符)|含义| | 发送方 | 接收方 | gg值(ascii字符) | 含义 |
|-----|------|--------------|----| | -------- | -------- | --------------- | -------------------------------- |
|主机| 接警中心 |00| 主机事件| | 主机 | 接警中心 | 00 | 主机事件 |
|主机| 接警中心 |01~03| 三区段主机的状态事件,区段号为gg| | 主机 | 接警中心 | 01~03 | 三区段主机的状态事件,区段号为gg |
|接警中心| 主机 |00| 对主机操作| | 接警中心 | 主机 | 00 | 对主机操作 |
|接警中心| 主机 |01~03| 对三区段主机操作,区段号为gg| | 接警中心 | 主机 | 01~03 | 对三区段主机操作,区段号为gg |
说明:三区段主机有三个防区段,每个区段有一定数量的防区,区段可以各自布撤防。 说明:三区段主机有三个防区段,每个区段有一定数量的防区,区段可以各自布撤防。
...@@ -291,51 +291,54 @@ ...@@ -291,51 +291,54 @@
当事件码如下内容且(`gg``00`、或`gg``01`/`02`/`03`(三区段主机))时,使用 `zone` 标识操作源: 当事件码如下内容且(`gg``00`、或`gg``01`/`02`/`03`(三区段主机))时,使用 `zone` 标识操作源:
|事件码| 含义| | 事件码 | 含义 |
|-----|--------| | ------ | ------------ |
|400| 布撤防| | 400 | 布撤防 |
|456| 留守布防| | 456 | 留守布防 |
|120| 紧急报警| | 120 | 紧急报警 |
|121| 胁迫| | 121 | 胁迫 |
|711| 手机用户消警| | 711 | 手机用户消警 |
防区号与操作源对照表: 防区号与操作源对照表:
```c ```C
/* control source defs /* control source defs
* 范围 0~255 * 范围 0-255
* 0: 主机 * 0: 主机(布撤防来源目前只有键盘,紧急报警可以是键盘,也可以是遥控器)
* 1~50: 遥控器 * 1-10: 遥控器
* 51~97: 智能家居 * 11-50: 保留
* 51-96: 智能家居
* 97: 定时器自动控制
* 98: 中转接警中心 * 98: 中转接警中心
* 99: 直连接警中心 * 99: 直连接警中心
* 100~199: 手机APP,末二位为手机尾号 * 100-199: 手机APP,末二位为手机尾号
* 200: web用户,web端包括 网页,H5, 公众号,小程序等 * 200: web用户,web端包括 网页,H5, 公众号,小程序等
* 201~255: web分享用户 * 201-255: web分享用户
* 特别注意:三区段主机,0 代表主机,1~255 都是遥控器 * 特别注意:三区段主机,0 代表主机,1-255 都是遥控器
*/ */
``` ```
|zone|name|source| | zone | name | source |
|----|----|------| | ---- | -------------------- | ------------------- |
|0|MACHINE|主机| | 0 | MACHINE | 主机 |
|1|REMOTE|遥控器| | 1 | REMOTE | 遥控器 |
|50|REMOTE_MAX|遥控器MAX| | 10 | REMOTE_MAX | 遥控器MAX |
|51|SMART_HOME_ALEXA|Amazon Alexa| | 51 | SMART_HOME_ALEXA | Amazon Alexa |
|52|SMART_HOME_GOOGLE|Google Home| | 52 | SMART_HOME_GOOGLE | Google Home |
|54|SMART_HOME_APPLE|Apple Homekit| | 54 | SMART_HOME_APPLE | Apple Homekit |
|55|SMART_HOME_SAMSUNG|Samsung Smartthings| | 55 | SMART_HOME_SAMSUNG | Samsung Smartthings |
|56|SMART_HOME_ALI_GENIE|阿里天猫精灵| | 56 | SMART_HOME_ALI_GENIE | 阿里天猫精灵 |
|57|SMART_HOME_MI_AI|小米小爱同学| | 57 | SMART_HOME_MI_AI | 小米小爱同学 |
|58|SMART_HOME_BAIDU|百度小度| | 58 | SMART_HOME_BAIDU | 百度小度 |
|97|SMART_HOME_MAX|智能家居MAX| | 96 | SMART_HOME_MAX | 智能家居MAX |
|98|CENTER_TRANSMIT|中转接警中心| | 97 | TIMER | 定时器 |
|99|CENTER_DIRECT|直连接警中心| | 98 | CENTER_TRANSMIT | 中转接警中心 |
|100|PHONE_APP|手机APP| | 99 | CENTER_DIRECT | 直连接警中心 |
|199|PHONE_APP_MAX|手机APP_MAX| | 100 | PHONE_APP | 手机APP |
|200|OWNER|web用户| | 199 | PHONE_APP_MAX | 手机APP_MAX |
|201|SHAREE|web分享用户| | 200 | OWNER | web用户 |
|255|SHAREE_MAX|web分享用户MAX| | 201 | SHAREE | web分享用户 |
| 255 | SHAREE_MAX | web分享用户MAX |
### 示例 ### 示例
......
对接说明
===============
# 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 盗警` 事件
...@@ -64,83 +64,81 @@ hb_zone_property_t allZoneProperties[] = { ...@@ -64,83 +64,81 @@ hb_zone_property_t allZoneProperties[] = {
#undef XX #undef XX
}; };
void printEvents(const ademco_event_t* events, size_t len) void printEvents(const ademco_event_t* events, size_t len) {
{
printf("|事件码|含义|en|\n|-----|----|--|\n"); printf("|事件码|含义|en|\n|-----|----|--|\n");
for (size_t i = 0; i < len; i++) { for (size_t i = 0; i < len; i++) {
auto e = events[i]; auto e = events[i];
printf("|%04d|%s|%s|\n", e, printf("|%04d|%s|%s|\n", e,
ademco_event_to_string_chinese(e), ademco_event_to_string_chinese(e),
ademco_event_to_string(e)); ademco_event_to_string(e));
} }
printf("\n"); printf("\n");
} }
const char* get_core_author(hb_machine_type_t t) const char* get_core_author(hb_machine_type_t t) {
{
switch (t) { switch (t) {
case HMT_WIFI: case HMT_GPRS:
case HMT_GPRS_IOT: case HMT_WIFI:
case HMT_GPRS: case HMT_GPRS_IOT:
case HMT_WIRED: case HMT_WIFI2:
case HMT_WIFI2: return "wzq";
return "wzq";
case HMT_LCD:
case HMT_NETMOD: case HMT_TRUE_COLOR:
case HMT_LCD: case HMT_THREE_SECTION:
case HMT_TRUE_COLOR: case HMT_IOT:
case HMT_THREE_SECTION: case HMT_GPRS_PHONE:
case HMT_IOT: return "jjf";
case HMT_GPRS_PHONE:
return "jjf"; case HMT_NETMOD:
case HMT_WIRED:
return "jack";
} }
return ""; return "";
} }
const char* get_net_author(hb_machine_type_t t) const char* get_net_author(hb_machine_type_t t) {
{
switch (t) { switch (t) {
case HMT_WIFI: case HMT_WIFI:
case HMT_WIRED: case HMT_GPRS_IOT:
case HMT_NETMOD: case HMT_GPRS:
case HMT_GPRS_IOT: case HMT_LCD:
case HMT_GPRS: case HMT_TRUE_COLOR:
case HMT_LCD: case HMT_THREE_SECTION:
case HMT_TRUE_COLOR: case HMT_IOT:
case HMT_THREE_SECTION: case HMT_GPRS_PHONE:
case HMT_IOT: case HMT_WIFI2:
case HMT_GPRS_PHONE: return "qfm";
case HMT_WIFI2:
return "qfm"; case HMT_WIRED:
case HMT_NETMOD:
return "jack";
} }
return ""; return "";
} }
std::vector<std::string> get_machine_brands(hb_machine_type_t t) std::vector<std::string> get_machine_brands(hb_machine_type_t t) {
{
switch (t) { switch (t) {
case HMT_WIFI: case HMT_WIFI:
case HMT_CAMERA: return {}; case HMT_CAMERA: return {};
case HMT_GPRS_IOT: return { "5050G-4GW", }; case HMT_GPRS_IOT: return { "5050G-4GW", };
case HMT_NETMOD: return { "G250" }; case HMT_NETMOD: return { "G250" };
case HMT_GPRS: return { "4040G", "5050G", "5050G-4G", }; case HMT_GPRS: return { "4040G", "5050G", "5050G-4G", };
case HMT_LCD: return { "BJQ560", "BJQ560B" }; case HMT_LCD: return { "BJQ560", "BJQ560B" };
case HMT_WIRED: return { "4040R", "5050R" }; case HMT_WIRED: return { "4040R", "5050R" };
case HMT_TRUE_COLOR:return { "G1000", "G1000-4G" }; case HMT_TRUE_COLOR:return { "G1000", "G1000-4G" };
case HMT_THREE_SECTION:return { "G1000", "G1000-4G" }; case HMT_THREE_SECTION:return { "G1000", "G1000-4G" };
case HMT_IOT: return { "2050-4GW" }; case HMT_IOT: return { "2050-4GW" };
case HMT_GPRS_PHONE: return { "2050" }; case HMT_GPRS_PHONE: return { "2050" };
//case hb::common::Nb: return { "" }; default: return {};
default: return {}; break;
break;
} }
} }
std::string brand_to_path(const std::string& brand) std::string brand_to_path(const std::string& brand) {
{
std::vector<std::string> exts = { "png", "jpg" }; std::vector<std::string> exts = { "png", "jpg" };
std::string path = jlib::win32::utf16_to_mbcs(L"..\\..\\docs\\主机类型\\smartresize\\HB-") + brand; std::string path = jlib::win32::utf16_to_mbcs(L"..\\..\\docs\\主机类型\\smartresize\\HB-") + brand;
for (auto ext : exts) { for (auto ext : exts) {
...@@ -151,21 +149,18 @@ std::string brand_to_path(const std::string& brand) ...@@ -151,21 +149,18 @@ std::string brand_to_path(const std::string& brand)
return {}; return {};
} }
void print_machine_brands(hb_machine_type_t t) void print_machine_brands(hb_machine_type_t t) {
{
printf("|<ul>"); printf("|<ul>");
for (auto brand : get_machine_brands(t)) { for (auto brand : get_machine_brands(t)) {
auto path = brand_to_path(brand); auto path = brand_to_path(brand);
if (!path.empty()) { if (!path.empty()) {
printf(jlib::win32::utf16_to_mbcs(LR"(<li>%s</li>)").data(), brand.data());// , brand.data(), path.data()); printf(jlib::win32::utf16_to_mbcs(LR"(<li>%s</li>)").data(), brand.data());
} }
} }
printf("</ul>"); printf("</ul>");
} }
void print_machineTypes() void print_machineTypes() {
{
printf("### *恒博主机类型对照表*\n\n"); printf("### *恒博主机类型对照表*\n\n");
printf("*SMS指主机自身是否可以拨打电话、发送短信,不是指通过阿里语音打电话*\n"); printf("*SMS指主机自身是否可以拨打电话、发送短信,不是指通过阿里语音打电话*\n");
...@@ -174,9 +169,9 @@ void print_machineTypes() ...@@ -174,9 +169,9 @@ void print_machineTypes()
"|------|-------|----|----|-----|----|-------|----|-------|---|----|---|----|\n"); "|------|-------|----|----|-----|----|-------|----|-------|---|----|---|----|\n");
for (auto e : allEvents) { for (auto e : allEvents) {
if (ademco_is_machine_type_event(e)) { if (ademco_is_machine_type_event(e)) {
auto t = hb_machine_type_from_ademco_event(e); auto t = hb_machine_type_from_ademco_event(e);
if(!hb_is_machine_on_sale(t)) continue; if (!hb_is_machine_on_sale(t)) continue;
printf("|%04d %s", (int)e, ademco_event_to_string_chinese(e)); printf("|%04d %s", (int)e, ademco_event_to_string_chinese(e));
printf("|%d %s", (int)t, hb_machine_type_to_string_chinese(t)); printf("|%d %s", (int)t, hb_machine_type_to_string_chinese(t));
...@@ -198,11 +193,9 @@ void print_machineTypes() ...@@ -198,11 +193,9 @@ void print_machineTypes()
printf("|\n"); printf("|\n");
} }
} }
} }
void print_imgs() void print_imgs() {
{
printf("\n\n### *恒博主机型号示例图片*\n\n"); printf("\n\n### *恒博主机型号示例图片*\n\n");
printf("|型号|示例图片|\n" printf("|型号|示例图片|\n"
...@@ -236,20 +229,13 @@ bool zprop_is_contain(hb_zone_property_t* props, int count, hb_zone_property_t p ...@@ -236,20 +229,13 @@ bool zprop_is_contain(hb_zone_property_t* props, int count, hb_zone_property_t p
return false; return false;
} }
void print_available_zone_props() void print_available_zone_props() {
{
printf("### *恒博主机类型与支持的防区属性对照表*\n\n"); printf("### *恒博主机类型与支持的防区属性对照表*\n\n");
//auto all_props = getAvailableZoneProperties();
auto print_prop = [](hb_zone_property_t zp) { auto print_prop = [](hb_zone_property_t zp) {
printf("%02X %s", zp, hb_zone_property_to_string_chinese(zp)); printf("%02X %s", zp, hb_zone_property_to_string_chinese(zp));
}; };
printf("* 防区属性是否支持失联报告\n\n"); printf("* 防区属性是否支持失联报告\n\n");
printf("|"); printf("|");
for (auto zp : allZoneProperties) { for (auto zp : allZoneProperties) {
...@@ -269,7 +255,6 @@ void print_available_zone_props() ...@@ -269,7 +255,6 @@ void print_available_zone_props()
} }
printf("|\n\n"); printf("|\n\n");
printf("* 主机类型与支持的防区属性对照表\n\n"); printf("* 主机类型与支持的防区属性对照表\n\n");
printf("|事件码|类型|型号"); printf("|事件码|类型|型号");
for (auto zp : allZoneProperties) { for (auto zp : allZoneProperties) {
...@@ -299,13 +284,9 @@ void print_available_zone_props() ...@@ -299,13 +284,9 @@ void print_available_zone_props()
printf("|\n"); printf("|\n");
} }
} }
} }
void print_g250_alarm_codes() {
void print_g250_alarm_codes()
{
//printf("# 工程主机串口通信协议\n\n"); //printf("# 工程主机串口通信协议\n\n");
//printf("9600, N, 8, 1\n\n"); //printf("9600, N, 8, 1\n\n");
//printf("SUM = DATA(N) = DATA(0) + DATA(1) + ... + DATA(N-1)\n\n"); //printf("SUM = DATA(N) = DATA(0) + DATA(1) + ... + DATA(N-1)\n\n");
...@@ -375,16 +356,18 @@ void gen_sources() { ...@@ -375,16 +356,18 @@ void gen_sources() {
const char* comment = R"( const char* comment = R"(
```c ```c
/* control source defs /* control source defs
* 范围 0~255 * 范围 0-255
* 0: 主机 * 0: 主机(布撤防来源目前只有键盘,紧急报警可以是键盘,也可以是遥控器)
* 1~50: 遥控器 * 1-10: 遥控器
* 51~97: 智能家居 * 11-50: 保留
* 51-96: 智能家居
* 97: 定时器自动控制
* 98: 中转接警中心 * 98: 中转接警中心
* 99: 直连接警中心 * 99: 直连接警中心
* 100~199: 手机APP,末二位为手机尾号 * 100-199: 手机APP,末二位为手机尾号
* 200: web用户,web端包括 网页,H5, 公众号,小程序等 * 200: web用户,web端包括 网页,H5, 公众号,小程序等
* 201~255: web分享用户 * 201-255: web分享用户
* 特别注意:三区段主机,0 代表主机,1~255 都是遥控器 * 特别注意:三区段主机,0 代表主机,1-255 都是遥控器
*/ */
``` ```
)"; )";
...@@ -397,8 +380,7 @@ void gen_sources() { ...@@ -397,8 +380,7 @@ void gen_sources() {
#undef XX #undef XX
} }
int main() int main() {
{
#define GEN_EVENTS 1 #define GEN_EVENTS 1
#define GEN_G250_CODES 2 #define GEN_G250_CODES 2
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment