物业管理一体机

张小喜
  • 收获赞:54
  • 擅长领域:IoT技术专家,涉及领域包括DSP音视频编解码,手机多媒体系统,IoT物联网擅长领域:IoT, 音视频,嵌入式

物业管理一体机能够方便对地产小区和科技园区的门禁、停车、视频监控等智能设备进行管理。通过统一的南向设备接入标准,不同品牌的设备厂商都可以将本地设备通过物业管理一体机接入阿里云IoT云端平台。

概述

方案介绍

物业管理一体机是阿里云IoT事业部的一款产品。地产和园区的门禁、停车、梯控、智能楼宇、智能安防等设备可以通过物业管理一体机接入IoT云端,同时该产品开放云端API给客户使用,用于客户构建自己的统一智慧社区管理平台。

物业管理一体机产品,定义了统一的南向设备接入标准,产品的核心价值在于通过软硬分离方案和统一数据标准解决客户被硬件厂家绑定,数据不互通问题,降低了客户和ISV项目交付成本,提升了地产和园区的物业管理效率。

目标读者

本文主要面向门禁设备、梯控设备、智能楼宇设备和智能安防设备等厂商的软件开发人员。这些技术人员应该具备设备端应用开发能力。

适用场景

物业管理一体机产品主要用于地产小区和科技园区,能够方便的对门禁设备、梯控设备、智能安防等设备进行智能化管理。

相关概念

IoT(Internet of Things):物联网。

LP(Link Platform):阿里云物联网平台的基础平台,提供设备接入和设备管理等基础服务。

LV(Link Visual):阿里云物联网平台针对视频产品推出的相关服务,提供视频数据上云、存储、转发、AI计算等能力。

DOP(Data Object Platform):阿里云物联网平台提供的DOP数据模型,供上层应用订阅获取设备消息。

OMP(Open Management Platform):阿里云物联网平台提供的应用管理平台,上层应用可以通过OMP访问应用提供的服务。

物模型:阿里云物联网平台为产品定义的数据模型,具体包括属性、事件、服务。

EBA(Easy Building Automization):楼宇自动化。

方案架构

方案架构图

方案优势

物业管理一体机方案上有非常大的优势:

设备生态丰富

物业管理一体机定义了统一的南向设备接入标准,该产品经过几年的发展,能够支持各类常见的门禁设备、车行设备、EBA设备和安防设备的厂家品牌。尤其是门禁设备,可以支持市面上90%以上的厂家品牌。丰富的设备生态,可以避免客户被设备厂商绑架。

软硬分离

物业管理一体机支持通过docker形式运行本地复杂逻辑的业务应用,这样可以降低项目整体成本,提高适应复杂业务场景的能力。例如对于停车业务场景,一般都有本地停车系统和车行设备。依托我们提供的软硬分离技术,本地可以只保留车行设备,将停车系统应用搬到物业管理一体机里运行。

产品功能齐全,型号多样

如上面介绍,物业管理一体机产品支持地产和园区的各类智能设备。根据不同使用场景对设备接入类型的要求,物业管理一体机有多款型号,有人行版、停车版、通行版,以及功能完备的综合版。

下面将分别介绍架构图里的每一层模块:

云端应用

客户可基于阿里云物联网云平台的开放接口,定制开发各类应用,例如人行应用、车行应用、安防应用等,形成自己的智慧社区管理平台。

物联网云平台

物业管理一体机产品对外提供的物联网云平台功能模块包括:

  • LP:云端应用可以通过LP管理和访问通过物业一体机接入的门禁、车行、安防等设备。

  • 门禁服务:云端应用可以通过门禁服务,下发人脸、卡、二维码等权限信息到物业一体机。

  • LV:云端应用可以通过LV视频服务,拉取查看本地安防设备的视频流。

  • DOP:本地设备的一些事件,例如门禁设备的通行事件,安防设备的告警事件,可上传到云端DOP,由上层应用订阅获取这些设备事件信息。

  • OMP:上层应用通过OMP,可以访问客户开发的运行在物业一体机的应用所提供的服务。

物业管理一体机

物业管理一体机主要由下面的功能模块组成:

  • 驱动:包括人行驱动、安防驱动、梯控驱动、EBA驱动等。物业管理一体机的驱动向下通过南向设备接口,对接各类智能设备,向上通过设备的物模型,为云端应用提供设备访问接口。

  • 通行服务:人行的通行事件,可以通过通行服务,上报到云端DOP,供上层应用订阅访问。

  • 人脸识别服务:支持人脸特征值提取和人脸比对服务。

  • 适配器应用:客户自己开发的,可以支持复杂业务逻辑的应用。例如停车场适配器应用。

本地设备/系统

即地产小区和科技园区里的各类本地设备,例如门禁设备,车辆道闸设备,摄像头设备,EBA设备等。

物业管理一体机南向标准协议接口

门禁、车辆道闸、智能安防等设备,可通过物业管理一体机的南向标准协议接口,接入到物业一体机。

详细接口定义,请参见边缘接入

示例代码

下面以门禁设备为例,提供参考代码,说明如何将端侧设备通过物业管理一体机门禁驱动接入IoT云端

建立连接

门禁机设备向物业管理一体机发起连接请求

URL:http://[边缘服务器IP 或门禁机IP]:[端口]/connect

设备端建立连接参考代码如下:

import requests
import hashlib

field_time = str(time.time())
device_mac = '12:34:56:56:34:12'
device_sn = '1234567890'
#设备IP地址
device_ip = '192.168.1.200'
keepalive = 30

#物业一体机IP地址和端口
hostUrl = '192.168.1.77:10000'

session = requests.Session()

req_data = {
    'sn': device_sn,
    'time': field_time,
    'ip': device_ip,
    'mac': device_mac,
    'version': '1.0.0',
    'keepalive': keepalive,
    'signMethod': 'md5',
    'sign': hashlib.md5.update('md5', field_mac, field_sn, field_ip, field_time)
}

url = hostUrl + '/connect'
headers = {'Content-Type': 'application/json'}
response = session.post(url, headers, req_data, None)

心跳保活

门禁设备与物业管理一体机之间定期发送心跳消息,以确保消息通道的连通性,维持对方的在线状态。

URL:http://[边缘服务器IP 或门禁机IP]:[端口]/keepalive。

设备端发起心跳保活参考代码如下:

import requests
session = requests.Session()

req_data = {}
hostUrl = '192.168.1.77:10000'
url = hostUrl + '/keepalive'
headers = {'Content-Type': 'application/json'}
response = session.post(url, headers, req_data, None)

人脸识别

门禁设备抓拍通行人员的人脸照片,向物业管理一体机发起人脸识别请求。

URL:http://[边缘服务器IP]:[端口]/recognize。

设备端发起人脸识别参考代码如下:

import requests

session = requests.Session()

#token: got token from server response during connection 
token = get_connect_token()

#photo: full file name of photo caputured by device
photo = photo_full_name

req_data = {
  'disableEdgeDetectFace':'1',
  'deviceId' : '1234567890', 
  'temperature' : '36.5',
  'token': token,
  'photo': photo
}

hostUrl = '192.168.1.77:10000'
url = hostUrl + '/recognize'
headers = {'Content-Type': 'application/json'}
response = session.post(url, headers, req_data, None)

同步门禁卡权限

物业管理一体机同步卡权限信息到门禁设备。

URL:http://[门禁机IP]:[端口]/cardAC/syncPermissions。

设备端接收物业管理一体机卡权限参考代码如下:

#device port
device_port = '8080'

def run_service():
    http_server_handle = http_server.HttpServer(simulator.port)
    http_server_handle.add_http_post_rule('/cardAC/syncPermissions', service_card_sync_permissions)
    http_server_app.http_run()

def def service_card_sync_permissions(handle, **kwargs):
    
    #verify device_id
    device_id = kwargs.get('deviceId', None)
    device_id_list = get_all_device_list()
        if device_id not in device_id_list: 
            return build_response(WEB_ERR_DEVICE_INVALID, 'device is invalid')
    #verify token
    arg_token = kwargs['token']
    if token != arg_token:
        return build_response(WEB_ERR_TOKEN_INVALID, 'token is invalid')
    
    #save card permission to device
    save_card_permission()

    return build_response(WEB_SUCCESS_CODE, 'success')

刷卡通行事件

门禁设备上报刷卡通行事件给物业管理一体机。

URL:http://[边缘服务器IP]:[端口]/cardAC/passEvent

门禁设备上报刷卡通行事件示例代码:

import requests

session = requests.Session()

#got token from server response during connection 
token = get_connect_token()
#got cardId which is found there is card pass event 
cardId = get_card_id()

req_data = {
  'token': token,
  'cardId': cardId
}

hostUrl = '192.168.1.77:10000'
url = hostUrl + '/cardAC/passEvent'
headers = {'Content-Type': 'application/json'}
response = session.post(url, headers, req_data, None)

方案实施

下面以门禁设备为例,具体介绍如何将本地设备通过物业管理一体机接入阿里云物联网平台。

前提条件

门禁设备在项目上部署实施前,需要满足下面的前提条件:

  1. 已注册阿里云账号。

  2. 门禁设备根据门禁一体机标准协议接口定义,完成了开发对接。

  3. 门禁设备厂商参照Ride测试case使用指导,通过了准入测试。

步骤一:登录应用服务平台

点击登录应用服务平台,依次点击边缘一体机 > 网关管理 > 设备集成,可进入物业一体机的协议添加和设备添加界面,如下图所示:

image.png

步骤二:门禁设备集成

添加门禁协议

第一次添加协议,可以点击新建协议按钮,如下图所示:

image.png

如果已经添加过协议,鼠标移动到对应网关右侧的设置图标,点击添加协议

image.png

在弹出的对话框里,选择门禁设备官方协议,版本可以选择最新版本,如下图所示:

image.png

添加门禁设备

如下图所示,鼠标移动到刚添加的门禁设备官方协议,点击新建设备,进行人行设备的添加。

人脸门禁设备及配置

如图所示,在官方协议下新增人脸门禁设备。其中:

设备名称:人脸门禁配置示例为:HJSB-000205.1。其中"HJSB-000205"是该设备的IoT编码,".1"标识人脸门禁设备。

设备别名:即设备名称。配置示例为:人脸门禁设备000028。

功能定义:选择已有模型,对应设备名称选择 "智慧社区-人员通行-人脸门禁"。

image.png

门禁类型:选择“人脸门禁

IP: 参照<设备信息表>中的该门禁设备IP。输入示例为10.249.32.40。

端口号:根据门禁设备型号,输入对外提供的网络访问端口号,输入示例为10000

人脸匹配相似度:输入55%

人脸比对方式:根据门禁设备型号,选择人脸比对方式,输入示例为边侧比对

人脸测温开关:根据门禁设备型号,选择是否支持人脸测温,输入示例为关。

image.png

步骤三:部署设备配置

在完成设备的配置后,点击部署,将设备配置的协议下发到边缘服务器。如下图所示:

重要

驱动部署时,网关侧对应驱动将重启,该驱动下的所有设备将出现离线后在线。这期间设备不可用,请部署人员提前与项目方沟通部署时间

image.png

点击部署后可以查看设备配置下发的状态和部署进度:

image.png

说明:如果某个设备有新更新的配置信息,重新点击部署后,只会下发有改动的设备配置协议,其余未修改的配置信息不会再次下发到边缘服务器,部署的时间根据修改的设备数量有关。

方案验证

可以通过物联网平台的设备在线调试,验证设备对接的功能,下面具体说明。

点击设备管理>设备,找到上面创建的门禁设备,点击右侧的查看

image.png

点击在线调试 > 前往查看:

image.png

通过在线调试的服务调用,属性调试进行测试所有的服务,如下图所示:

image.png

常见问题排查

设备未激活在线

排查总体流程如下:

设备激活问题

排查详细步骤如下:

步骤一:查看物业一体机设备IP地址和端口是否正常

登录到物业一体机:

  1. 检查设备是否可以ping通:输入下面命令:

ping 设备IP

  1. 检查设备的端口是否可以正常访问:输入下面命令:

curl 设备IP:设备端口号

  1. 如果设备IP地址和端口出现异常:

如果设备无法ping通,请联系项目相关人员检测网络环境。

如果设备端口不能正常访问,请联系设备厂商沟通解决。

  1. 如果设备端口能正常访问,请继续按照下面流程进行排查。

步骤二:查看IoT云端平台设备配置是否正确

登录物联网应用服务平台,在对应项目的网关管理里,在对应的协议下找到有问题的设备,点击该设备右侧的编辑,查看设备的配置信息,确认是否与项目方提供的《设备信息表》该设备的信息一致

image.png

如果发现设备配置有问题,修改配置后重新部署。

如果上面检查都没有问题,请继续按照下面流程进行排查。

步骤三:查看IoT云端平台配置信息是否已部署

如果设备信息配置没有问题,请确认协议和设备添加完,是否进行了部署,如下图所示:

image.png

如果发现没有部署,完成部署后再检查。

如果上面检查都没有问题,请继续按照下面流程进行排查。

步骤四:查看门禁驱动是否收到设备连接请求

设备激活,需要向物业一体机发出连接请求。可以登录物业一体机,查看具体的日志,是否有连接请求的关键字connect

  • 如果收到了关键字connect, 查看日志里连接请求的设备IP地址,是否与设备配置信息里的IP地址一致

如果不一致,请退回到步骤二查看设备配置。

如果一致,请从日志查看具体错误原因,或者联系边缘端技术人员支持。

  • 如果没有收到关键字connect, 请继续按照下面流程进行排查。

步骤五:查看设备配置是否正常

如果物业一体机没有收到设备发起的connect请求,这时一般是设备本身的问题。

请设备厂商,检查下面内容:

  1. 查看设备型号,是否与阿里提供的对应品牌的设备接入手册里记录的型号一致。

  2. 查看设备的配置,是否正确的配置了物业一体机的IP地址和端口号:

通过设备对接方式接入物业一体机,端口号是10000。

通过服务器对接方式接入物业一体机,端口号是10020。

  1. 如果检测设备配置有问题,请更改配置后重新验证。

  2. 如果设备配置没有问题,请联系设备厂家技术人员进行排查,为什么没有按照对接要求发起connect请求:

URL:http://[边缘服务器IP 或 门禁机IP]:[端口]/connect
Method:POST
Content-Type:application/json

人脸门禁无法通行

排查总体流程如下:

边侧识别问题

步骤一:查看SaaS应用人脸权限是否已成功下发

​请与云端SaaS应用(一般是ISV提供)确认,对应的人脸权限是否已经下发成功:

  1. 如果SaaS应用分析发现人脸权限下发失败:

如果发现人脸门禁设备曾经不在线,重新上线后后,请SaaS重新下发人脸权限。

如果人脸门禁设备在线,请SaaS应用提供失败原因,并联系阿里技术人员进行排查。

  1. 果SaaS应用分析发现人脸权限下发成功:

请继续按照下面流程进行排查。

查看边缘端是否保存了对应的人脸权限。

步骤二:查看门禁驱动是否收到人脸识别请求

登录物业一体机,查看日志里是否收到人脸识别请求

人脸门禁设备发起人脸识别请求,边缘端日志里有接口关键字:recognize

URL:http://[边缘服务器IP]:[端口]/recognize
Method:POST
Content-Type:multipart/form-data

  1. 如果日志里没有找到关键字recognize,请门禁设备厂商查看原因,为什么没有发起recognize请求。

  2. 果日志里有关键字recognize,请继续按照下面流程进行排查

步骤三:查看门禁驱动是否启动人脸比对

继续查看分析驱动日志是否启动了人脸比对,搜索日志关键字:start face match

日志示例:

image.png
  1. 如果没有找到关键字start face match,人脸算法可能启动失败,请联系阿里技术人员排查

  2. 果找到了关键字,请继续按照下面流程进行排查

步骤四:查看门禁驱动是否有人脸匹配度过低错误

继续分析查看驱动日志是否有low similarity错误,​日志关键字:low similarity

日志示例:

low similarity (0.5072152948603607).

说明:low similarity 后面括号里显示的是计算出的匹配度。

  1. 如果没有找到该错误关键字low similarity,查看人脸识别请求结果是否成功,日志关键字:recognize

如果人脸识别请求返还结果成功,请联系设备端技术人员分析为什么没有开门。

如果人脸识别请求返还结果失败,请联系阿里边缘端技术人员分析失败原因。

  1. 如果找到该错误关键字 low similarity:请继续按照下面流程进行排查。

步骤五:查看门禁驱动人脸匹配度是否为0.1左右

继续分析查看驱动日志。如步骤四介绍,low similarity 后面括号里显示的是计算出的匹配度。

  1. 如果发现匹配度为0.1~0.55,可以尝试下面两种处理方案:

联系SaaS应用,重新下发清晰的人脸底库照片。

联系设备厂商,优化设备抓拍人脸质量参数,提高抓拍的人脸照片质量。

  1. 果发现匹配度为0.1左右时,说明人脸底库照片不存在。而2.1排查已经人脸下发成功,这时可能是下发的底库照片与本人不同,或者一个人有多个底库照片。请联系SaaS应用检查底库照片。