Commit e4c9168c authored by captainwong's avatar captainwong

update doc

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