应用项目

对应自己的PMS接口,本接口还没完成。

简介

酒店管理软件PMS有不同品牌
不同厂家的通信接口是完全不同
抽象成统一的数据请求接口
注册接口,退房接口,查询和控制各类设备
本文的接口均由PMS或获得受权的app/小程序发起请求

接口基本说明

  1. app 采用http通信方式,端口3000
  2. http请求URL是hotekey.cn:3000/文中方法
  3. 一般从服务器读取数据方式为GET
  4. GET请求由URL携带参数
  5. 更新数据到服务器方法为PUT
  6. 新建一个对象或数据方法为POST
  7. POST请求由body携带参数,Content-Typeapplication/json
  8. 返回数据都是JSON(除登录页)

(一) PMS系统入住退房管理接口

注:只能通过管理员登录网页操作
管理员编辑与PMS相关的信息

1.3 查看厂家web配置好的PMS信息

1655108283166.png

1.4 PMS主动发来的客人的CheckIn接口

方法
post(‘/api/pms/checkin’)

请求参数

字段 类型 描述 必填
apptag string app标识id,厂家给定的
pc/yangjiangyagepms
必须,固定
pms_name string pms标识符,厂家给定
YANGJIANGYAGE
必须,固定
area_name string 房间号码/名称 必须
begin string 入住时间,格式
2022-06-01 20:00:00
必须
end string 退房时间,格式
2022-06-01 20:00:00
必须
guests object 住客信息,此为集合 至少有1个
guests.mobile string 手机 必须
guests.identity string 身份证号 不必须
guests.name string 姓名 不必须

成功

  1. {
  2. "checkin":true,
  3. "area_name":"name"
  4. }

失败

  1. {
  2. "checkin":false,
  3. "area_name":"name",
  4. "err":"string err message"
  5. }

1.4.2 PMS查询某房间的入住情况

方法
get(‘/api/pms/checkin’)

请求参数

字段 类型 描述 必填
apptag string app标识id,厂家给定的
pc/yangjiangyagepms
必须,固定
pms_name string pms标识符,厂家给定
YANGJIANGYAGE
必须,固定
area_name string 房间号码/名称 必须

成功

字段 类型 描述 必填
area_name string 房间号码/名称 必须
begin string 入住时间,格式
2022-06-01 20:00:00
必须
end string 退房时间,格式
2022-06-01 20:00:00
必须
guests.mobile string 手机 必须
guests.identity string 身份证号 不必须
guests.name string 姓名 不必须
  1. [
  2. {
  3. "area_name": "888",
  4. "begin": "2022-06-16 21:28:55",
  5. "end": "2022-06-19 14:06:02",
  6. "mobile": "18612345678",
  7. "name": "张三",
  8. "identity": "123456789ab"
  9. },
  10. {
  11. //第2个宾客
  12. },
  13. {
  14. //第n个宾客
  15. }
  16. ]

失败

  1. {
  2. "checkin":false,
  3. "area_name":"name",
  4. "err":"string err message"
  5. }

1.5 PMS主动发来的客人CheckOut接口

方法
post(‘/api/pms/checkout’)

请求参数

字段 类型 描述 必填
apptag string app标识id,厂家给定的
pc/yangjiangyagepms
必须,固定
pms_name string pms标识符,厂家给定
YANGJIANGYAGE
必须,固定
area_name string 房间号码/名称 必须

成功

  1. {
  2. "checkout":true,
  3. "area_name":"name"
  4. }

失败

  1. {
  2. "checkout":false,
  3. "area_name":"name",
  4. "err":"string err message"
  5. }

1.6 PMS发送房间续住

方法
post(‘/api/pms/extendstay’)

请求参数

字段 类型 描述 必填
apptag string app标识id,厂家给定的
pc/yangjiangyagepms
必须,固定
pms_name string pms标识符,厂家给定
YANGJIANGYAGE
必须,固定
area_name string 房间号码/名称 必须
end string 退房时间,格式
2022-06-01 20:00:00
必须

成功

  1. {
  2. "extendstay":true,
  3. "area_name":"name",
  4. "end":"newDateTime"
  5. }

失败

  1. {
  2. "extendstay":false,
  3. "area_name":"name",
  4. "err":"string err message"
  5. }

1.7 PMS发送更换房间

方法
post(‘/api/pms/roomchange’)

请求参数

字段 类型 描述 必填
apptag string app标识id,厂家给定的
pc/yangjiangyagepms
必须,固定
pms_name string pms标识符,厂家给定
YANGJIANGYAGE
必须,固定
area_name string 原房间号码/名称 必须
newroom string 新房间号码/名称 必须

成功

  1. {
  2. "roomchange":true,
  3. "area_name":"name",
  4. "newroom":"new room"
  5. }

失败

  1. {
  2. "roomchange":false,
  3. "area_name":"name",
  4. "err":"string err message"
  5. }

(二) 操作有授权房间的设备

说明:
请求方可以是PMS,也可以是CheckIn的宾客。
凭手机号获得具体房间的操作权限

  1. 用户登录有操作授权的区域
  2. 操作区域内的网关
  3. 操作区域内的继电器类开关,窗帘,灯光relay
  4. 操作区域内的调光类灯光dim
  5. 操作区域内的场景联动
  6. 操作区域内的弱电IO状态信息

注意:

新建post不启用
删除delete不启用
只对接get,put

2.1.1 获得对app开放的区域列表

方法:get(‘/api/pms/auth_areas’)
固定请求参数: apptag=pc/yangjiangyagepms

返回:数组

  1. [
  2. {
  3. "area_id" : "区域id (number)",
  4. "area_name" : "名字 (string)"
  5. },
  6. {
  7. "..." : "其它信息 (任意类型)"
  8. }
  9. ]

2.1.2 登录并获得开放区域的授权

方法:post(‘/api/pms/auth_login’)
数据:

  1. {
  2. "apptag" : "app标识符,如小程序wx/wechatid,apk/id,ios/id,pc/id (string)",
  3. "area_id": "区域id (number)",
  4. "mobile" : "用户手机号 (string)"
  5. }

返回:成功

  1. {
  2. "success" : true
  3. }

返回:失败

  1. {
  2. "err" : "error message ..."
  3. }

返回后的cookie 多了一个pms

  1. {
  2. "pms" : {
  3. "area_id":"区域id (number)",
  4. "mobile" : "用户手机号 (string)",
  5. "..." : "其它信息 (任意类型)"
  6. },
  7. "..." : "cookie 其它信息"
  8. }

2.2 获得已登录授权区域的详细信息

通过获得的pms的cookie,获得授权区域的详细信息
获得授权区域的详细信息

方法:get(‘/api/pms/auth_areas/:area_id’)
数据:无
返回:

  1. {
  2. "area_id" : "(number)",
  3. "area_name" : "(string)",
  4. "area_type" : "(string)",
  5. "projeck_id" : "(number)",
  6. "area_floor" : "(string)",
  7. "..." : "(其它)"
  8. }

2.3 操作区域内的网关

通过已获得俱有pms的cookie
查询该区域内的网关信息

2.3.1 获取已登录区域内所有网关netways

方法:get(‘/api/pms/auth_netways’)
数据:无
返回:数组

  1. [
  2. {
  3. "net_id": 0,
  4. "net_name": "",
  5. "area_id": "",
  6. "net_type": "",
  7. "net_timestamp": 0,
  8. "..." : "(其它)"
  9. },
  10. {
  11. "..." : "其它信息 (任意类型)"
  12. }
  13. ]

2.3.2 获取已登录区域内指定id的网关netways

方法:get(‘/api/pms/auth_netways/:net_id’)
数据:无
返回:

  1. {
  2. "net_id": 0,
  3. "net_name": "",
  4. "area_id": "",
  5. "net_type": "",
  6. "net_timestamp": 0,
  7. "..." : "(其它)"
  8. }

2.4 操作区域内的继电器类relays

通过已获得俱有pms的cookie
操作该区域内的继电器类relay设备
开关,窗帘,灯光,排气扇

2.4.1 获得指定网关的继电器relays列表

方法:get(‘/api/pms/:net_id/auth_relays’)
数据:无
返回:数组

  1. [
  2. {
  3. "relay_id": 0,
  4. "net_id": 0,
  5. "relay_name": "",
  6. "relay_value": "UNKNOW",
  7. "relay_flow": 0,
  8. "..." : "(其它)"
  9. },
  10. {
  11. "..." : "其它信息 (任意类型)"
  12. }
  13. ]

2.4.2 获取指定id的继电器relay的信息

方法:get(‘/api/pms/auth_relays/:relay_id’)
数据:无
返回:

  1. {
  2. "relay_id": 0,
  3. "net_id": 0,
  4. "relay_name": "",
  5. "relay_value": "UNKNOW",
  6. "relay_flow": 0,
  7. "..." : "(其它)"
  8. }

2.4.3 修改指定id的继电器relay的信息

方法:put(‘/api/pms/auth_relays/:relay_id’)
数据:

  1. {
  2. "relay_value": "new_value"
  3. }

注:pms 授权不修改其它字段

返回:

  1. {
  2. "relay_id": 0,
  3. "relay_value": "new_value"
  4. }

2.5 操作区域内的调光类dims

通过已获得俱有pms的cookie
操作该区域内的调光类dim设备
调光灯,灯带,阅读灯

2.5.1 获得指定网关的调光类dims列表

方法:get(‘/api/pms/:net_id/auth_dims’)
数据:无
返回:数组

  1. [
  2. {
  3. "dim_id": 0,
  4. "net_id": 0,
  5. "dim_name": "",
  6. "dim_value": 0,
  7. "..." : "(其它)"
  8. },
  9. {
  10. "..." : "其它信息 (任意类型)"
  11. }
  12. ]

2.5.2 获取指定id的调光器dim的信息

方法:get(‘/api/pms/auth_dims/:dim_id’)
数据:无
返回:

  1. {
  2. "dim_id": 0,
  3. "net_id": 0,
  4. "dim_name": "",
  5. "dim_value": 0,
  6. "..." : "(其它)"
  7. }

2.5.3 修改指定id的调光器dim的信息

方法:put(‘/api/pms/auth_dims/:dim_id’)
数据:

  1. {
  2. "dim_value": "new_value (number)"
  3. }

注:pms 授权不修改其它字段

返回:

  1. {
  2. "dim_id": 0,
  3. "dim_value": "new_value (number)"
  4. }

2.6 操作区域内的空调类air

通过已获得俱有pms的cookie
操作该区域内的空调air类设备
开关空调,调节风速,切换制冷制热
设置温度

2.6.1 获取当前网关下所有空调 airs

方法:get(‘/api/pms/:net_id/auth_airs’)
数据:无
返回:数组

  1. [
  2. {
  3. "air_id": 0,
  4. "net_id": 0,
  5. "POWER": "开/关机 (string)",
  6. "SPEED": "风速 (string)",
  7. "MODE": "制冷/制热 (string)",
  8. "STMP": "16-32度 (number)",
  9. "..." : "(其它)"
  10. },
  11. {
  12. "..." : "其它信息 (任意类型)"
  13. }
  14. ]

2.6.2 获取指定id的空调air的信息

方法:get(‘/api/pms/auth_airs/:air_id’)
数据:无
返回:

  1. {
  2. "air_id": 0,
  3. "net_id": 0,
  4. "POWER": "开/关机 (string)",
  5. "SPEED": "风速 (string)",
  6. "MODE": "制冷/制热 (string)",
  7. "STMP": "16-32度 (number)",
  8. "..." : "(其它)"
  9. }

2.6.3 修改指定id的空调air的信息

方法:put(‘/api/pms/auth_airs/:air_id’)
数据:

  1. {
  2. "POWER": "开/关机 (string)",
  3. "SPEED": "风速 (string)",
  4. "MODE": "制冷/制热 (string)",
  5. "STMP": "16-32度 (number)"
  6. }

注:以上字段可单项设置、多项设置

返回:

  1. {
  2. "POWER": "开/关机 (string)",
  3. "SPEED": "风速 (string)",
  4. "MODE": "制冷/制热 (string)",
  5. "STMP": "16-32度 (number)"
  6. }

2.7 操作区域内的弱电IO状态信息

通过已获得俱有pms的cookie
操作该区域内的IO类lso
清理,勿扰,门磁,窗磁,插卡

2.7.1 获得指定网关的传感器lsos列表

方法:get(‘/api/pms/:net_id/auth_lsos’)
数据:无
返回:数组

  1. [
  2. {
  3. "lso_id": 0,
  4. "net_id": 0,
  5. "lso_name": "",
  6. "lso_value": "UNKNOW",
  7. "lso_type": "",
  8. "lso_devID": 0,
  9. "lso_order": 0,
  10. "..." : "(其它)"
  11. },
  12. {
  13. "..." : "其它信息 (任意类型)"
  14. }
  15. ]

2.7.2 获取指定id的传感器lsos的信息

方法:get(‘/api/pms/auth_lsos/:lsos_id’)
数据:无
返回:

  1. {
  2. "lso_id": 0,
  3. "net_id": 0,
  4. "lso_name": "",
  5. "lso_value": "UNKNOW",
  6. "lso_type": "",
  7. "lso_devID": 0,
  8. "lso_order": 0,
  9. "..." : "(其它)"
  10. }

2.7.3 修改指定id的传感器lsos的信息

方法:put(‘/api/pms/auth_lsos/:lsos_id’)
数据:

  1. {
  2. "lso_value": "new_value"
  3. }

注:pms 授权不修改其它字段

返回:

  1. {
  2. "lso_id": 0,
  3. "lso_value": "new_value"
  4. }

2.8 操作区域内的场景联动

通过已获得俱有pms的cookie
操作该区域内的场景类scne
查询场景

2.8.1 获取当前区域内所有场景 scnes

方法:get(‘/api/pms/auth_scnes’)
数据:无
返回:数组

  1. [
  2. {
  3. "scn_id": 0,
  4. "area_id": 0,
  5. "scn_name": "",
  6. "scn_type": "",
  7. "scn_num": 0,
  8. "scn_json": "json",
  9. "scn_ico": "",
  10. "..." : "(其它)"
  11. }
  12. ]

2.8.2 获取区域内指定scn_id的场景scne

方法:get(‘/api/pms/auth_scnes/:scn_id’)
数据:无
返回:

  1. {
  2. "scn_id": 0,
  3. "area_id": 0,
  4. "scn_name": "",
  5. "scn_type": "",
  6. "scn_num": 0,
  7. "scn_json": "json",
  8. "scn_ico": "",
  9. "..." : "(其它)"
  10. }