1. 获取热成像总能力

1.1 命令

GET /ISAPI/Thermal/capabilities

1.2 输入参数

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 热成像总能力, attr:version{req, string, 协议版本, range:[,]}-->
  <isSupportFireDetection>
    <!--ro, opt, bool, 是否支持火点检测, desc:接口:/ISAPI/Thermal/channels/<ID>/fireDetection/capabilities-->true
  </isSupportFireDetection>
  <isFireFocusZoomSupport>
    <!--ro, opt, bool, 是否支持火点可见光镜头聚焦变倍, desc:接口:/ISAPI/Thermal/channels/<ID>/fireFocusZoom-->true
  </isFireFocusZoomSupport>
  <isSupportThermometry>
    <!--ro, opt, bool, 是否支持测温, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/<SID>/capabilities-->true
  </isSupportThermometry>
  <isSupportRealtimeThermometry>
    <!--ro, opt, bool, 是否支持实时测温数据上传-->true
  </isSupportRealtimeThermometry>
  <isSupportThermIntell>
    <!--ro, opt, bool, 是否支持热成像智能互斥配置, desc:接口:/ISAPI/Thermal/channels/<ID>/thermIntell/capabilities-->true
  </isSupportThermIntell>
  <isSupportNVR>
    <!--ro, opt, bool, 用于客户端判断-->true
  </isSupportNVR>
  <isSupportThermometrySchedule>
    <!--ro, opt, bool, 是否支持测温布防时间, desc:接口:/ISAPI/Event/schedules/thermometry-->true
  </isSupportThermometrySchedule>
  <isSupportTemperatureSchedule>
    <!--ro, opt, bool, 是否支持温差布防时间, desc:接口:/ISAPI/Event/schedules/temperature-->true
  </isSupportTemperatureSchedule>
  <isSupportFireDetectionSchedule>
    <!--ro, opt, bool, 是否支持火点检测布防时间, desc:接口:/ISAPI/Event/schedules/fireDetections-->true
  </isSupportFireDetectionSchedule>
  <isSupportPower>
    <!--ro, opt, bool, 是否支持电源开关支持能力, desc:接口:/ISAPI/Thermal/Power/capabilities-->true
  </isSupportPower>
  <isSupportRealtimeTempHumi>
    <!--ro, opt, bool, 是否支持设备环境实时温湿度能力, desc:接口:/ISAPI/Thermal/TempHumi/capabilities-->true
  </isSupportRealtimeTempHumi>
  <ManualThermCap>
    <!--ro, opt, object, 手动测温能力-->
    <manualThermRuleNum>
      <!--ro, opt, int, 若不返回该节点则设备不支持手动测温, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/Thermal/manualThermometry/capabilities-->true
    </manualThermRuleNum>
  </ManualThermCap>
  <isSupportManualThermBasic>
    <!--ro, opt, bool, 否支持手动测温基本参数配置, desc:接口:/ISAPI/Thermal/manualThermBasic/capabilities-->true
  </isSupportManualThermBasic>
  <isSupportFireShieldMask>
    <!--ro, opt, bool, 是否支持火点区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/fireShieldMask/capabilities-->true
  </isSupportFireShieldMask>
  <isSupportSmokeShieldMask>
    <!--ro, opt, bool, 是否支持烟雾区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/smokeShieldMask/capabilities-->true
  </isSupportSmokeShieldMask>
  <isSupportThermometryMode>
    <!--ro, opt, bool, 是否支持测温模式配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometryMode/capabilities-->true
  </isSupportThermometryMode>
  <isSupportThermalPip>
    <!--ro, opt, bool, 是否支持热成像画中画配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/pip/capabilities-->true
  </isSupportThermalPip>
  <isSupportThermalIntelRuleDisplay>
    <!--ro, opt, bool, 是否支持热成像智能规则配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/IntelRuleDisplay/capabilities-->true
  </isSupportThermalIntelRuleDisplay>
  <AlgVersionInfo>
    <!--ro, opt, object, 是否支持获取热成像相关算法库版本能力, desc:接口:/ISAPI/Thermal/AlgVersion-->
    <thermometryAlgName min="1" max="128">
      <!--ro, opt, string, 测温算法库版本信息, range:[,], attr:min{opt, string, 算法名称最小值, range:[,]},max{opt, string, 测温算法库版本信息长度最大值, range:[,]}-->null
    </thermometryAlgName>
    <shipsAlgName min="1" max="128">
      <!--ro, opt, string, 船只算法库版本名称, range:[,], attr:min{opt, string, 船只算法库版本名称最小值, range:[,]},max{opt, string, 船只算法库版本名称最大值, range:[,]}-->null
    </shipsAlgName>
  </AlgVersionInfo>
  <isSupportFaceThermometry>
    <!--ro, opt, bool, 是否支持人脸测温配置, desc:接口:/ISAPI/Thermal/channels/<ID>/faceThermometry/capabilities-->true
  </isSupportFaceThermometry>
  <isSupportThermalBlackBody>
    <!--ro, opt, bool, 是否支持热成像黑体参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/blackBody/capabilities-->true
  </isSupportThermalBlackBody>
  <isSupportThermalStreamParam>
    <!--ro, opt, bool, 是否支持热成像码流参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/streamParam/capabilities-->true
  </isSupportThermalStreamParam>
  <isSupportBodyTemperatureCompensation>
    <!--ro, opt, bool, 是否支持体温温度补偿参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/bodyTemperatureCompensation/capabilities-->true
  </isSupportBodyTemperatureCompensation>
  <isSupportClickToThermometry>
    <!--ro, opt, bool, 是否支持点击测温, desc:接口:/ISAPI/Thermal/channels/<ID>/clickToThermometry/initialization-->true
  </isSupportClickToThermometry>
  <isSupportThermometryHistorySearch>
    <!--ro, opt, bool, 是否支持测温历史数据查询, desc:接口:/ISAPI/Thermal/channels/<ID>/historyTemperature/capabilities-->true
  </isSupportThermometryHistorySearch>
  <isSupportThermometryShieldMask>
    <!--ro, opt, bool, 是否支持测温区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometryShieldMask/capabilities-->true
  </isSupportThermometryShieldMask>
  <isSupportTemperatureCorrection>
    <!--ro, opt, bool, 是否支持测温矫正, desc:接口:/ISAPI/Thermal/channels/<ID>/CorrectionParam/capabilities-->true
  </isSupportTemperatureCorrection>
  <isSupportBurningPrevention>
    <!--ro, opt, bool, 是否支持防灼伤, desc:接口:/ISAPI/Thermal/channels/<ID>/burningPrevention/capabilities-->true
  </isSupportBurningPrevention>
  <isSupportTemperatureCollection>
    <!--ro, opt, bool, 是否支持温度补录, desc:接口:ISAPI/Thermal/temperature/collection/capabilities?format=json-->true
  </isSupportTemperatureCollection>
  <isSupportJpegPicWithAppendData>
    <!--ro, opt, bool, 是否支持抓热图, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/jpegPicWithAppendData?format=json-->true
  </isSupportJpegPicWithAppendData>
  <isSupportRealTimethermometryForHTTP>
    <!--ro, opt, bool, 是否支持实时温度检测, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/realTimethermometry/rules?format=json-->true
  </isSupportRealTimethermometryForHTTP>
  <isSupportthermometryOffLineCapture>
    <!--ro, opt, bool, 是否支持离线抓图, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/OffLineCapture?format=json-->true
  </isSupportthermometryOffLineCapture>
  <isSupportShipsDetectionWithScene>
    <!--ro, opt, bool, 是否支持按场景划分的船只检测, desc:接口:/ISAPI/Thermal/channels/<ID>/shipsDetection/capabilities?format=json-->true
  </isSupportShipsDetectionWithScene>
  <isSupportWasteGasDetection>
    <!--ro, opt, bool, 是否支持废气排放监测-->true
  </isSupportWasteGasDetection>
  <isSupportGreyScaleAlarm>
    <!--ro, opt, bool, 是否支持灰度报警-->true
  </isSupportGreyScaleAlarm>
  <isSupportFaceSnapThermometry>
    <!--ro, opt, bool, 是否支持人脸抓拍测温-->true
  </isSupportFaceSnapThermometry>
  <isSupportThermalTemperatureCorrect>
    <!--ro, opt, bool, 是否支持热成像温度二次校准, desc:接口:/ISAPI/Thermal/channels/<ID>/temperatureCorrect?format=json-->true
  </isSupportThermalTemperatureCorrect>
  <isSupportThermalVehicleDetection>
    <!--ro, opt, bool, 是否支持热成像车辆侦测-->true
  </isSupportThermalVehicleDetection>
  <isSupportTemperatureIntervalMeasurement>
    <!--ro, opt, bool, 是否支持温度区间检测-->true
  </isSupportTemperatureIntervalMeasurement>
  <isSupportIndustryThermometryTemperatureRise>
    <!--ro, opt, bool, 是否支持热成像工业测温温升补偿参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/industryThermometry/temperatureRise?format=json-->true
  </isSupportIndustryThermometryTemperatureRise>
</ThermalCap>

2. 获取烟火检测参数配置能力

2.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireDetection/capabilities

2.2 输入参数

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FireDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 烟火检测参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <sensitivity min="0" max="120">
    <!--ro, opt, int, 检测灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </sensitivity>
  <fireComfirmTime>
    <!--ro, opt, int, 发现火点等待时间, range:[0,120], step:, unit:, unitType:-->1
  </fireComfirmTime>
  <fireRegionOverlay>
    <!--ro, opt, bool, 码流叠加火点框-->true
  </fireRegionOverlay>
  <fireFrameDis>
    <!--ro, opt, bool, 火点框显示-->true
  </fireFrameDis>
  <fireMaxTemp>
    <!--ro, opt, bool, 最高温度-->true
  </fireMaxTemp>
  <fireMaxTempPosition>
    <!--ro, opt, bool, 最高温度位置显示-->true
  </fireMaxTempPosition>
  <fireDistance>
    <!--ro, opt, bool, 最高温度距离-->true
  </fireDistance>
  <detectionMode opt="multipleFarme,singleFarme">
    <!--ro, opt, enum, 火点检测模式, subType:string, [multipleFarme#二次判别,singleFarme#单帧检测], attr:opt{req, string, 取值范围, range:[,]}-->multipleFarme
  </detectionMode>
  <fireFocusMode opt="auto,cruise">
    <!--ro, opt, enum, 火点聚焦模式, subType:string, [auto#自动模式,cruise#巡航模式], attr:opt{req, string, 取值范围, range:[,]}-->auto
  </fireFocusMode>
  <FireZoom>
    <!--ro, opt, object, 火点变倍(光学变倍), desc:当发生火点时变倍生效-->
    <zoomMode opt="auto,manual">
      <!--ro, req, enum, 火点光学变倍模式, subType:string, [auto#自动模,manual#手动模式], attr:opt{req, string, 取值范围, range:[,]}-->auto
    </zoomMode>
    <zoomLevel min="1" max="100">
      <!--ro, opt, int, 火点光学变倍倍率, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当光学变倍模式为手动模式时生效-->1
    </zoomLevel>
  </FireZoom>
  <AlarmStrategy>
    <!--ro, opt, object, 报警策略-->
    <strategyType opt="any,cooperate,multisystem,appointFire,appointSmoke">
      <!--ro, req, enum, 报警策略类型, subType:string, [any#任意报警,cooperate#协同报警,multisystem#多系统报警,appointFire#指定火点报警,appointSmoke#指定烟雾报警], attr:opt{req, string, 取值范围, range:[,]}, 
desc:any- 任意报警,只要任何一个识别系统发现疑似火情时候,均实现报警上传,只要任何一种发生报警,
        报警信息则按照该种报警信息上传;cooperate- 协同报警,某一系统识别火情后暂不报警,疑似目标由剩下的系统确认,
        两个均认为是目标则标识两个报警,如不是则单一报警 上传的报警信息中需要说明为协同报警下,
        如有两个均确认发生则要上传(每个报警发生的时间;每个图片;设备的PTZF (归一化处理)数值,
        (包含热成像和可见光的ZF),经纬度,画面中的坐标),一个确认则上传一个的信息;
        multisystem- 多系统报警,多个系统均识别后才报警,
        否则不报警进行双确认的时候需要可见光与热成像视场角一致上传的报警信息中需要说明为多系统报警下,
        两个均确认发生则要上传(每个报警发生的时间;每个图片;设备的PTZF(归一化处理)数值,
        (包含热成像和可见光的ZF),经纬度,画面中的坐标);
        appointFire- 指定火点报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的火点报警发生才上传,不指定的报警不上传不显示任何报警信息; 
        appointSmoke- 指定烟雾报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的烟雾报警发生才上传,不指定的报警不上传不显示任何报警信息-->any
    </strategyType>
  </AlarmStrategy>
  <SmokeDetection>
    <!--ro, opt, object, 烟雾检测-->
    <enabled>
      <!--ro, req, bool, 控制烟雾检测是否开启-->true
    </enabled>
    <sensitivity min="1" max="100">
      <!--ro, opt, int, 烟雾检测的灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </sensitivity>
    <patrolSensitivity min="1" max="100" default="50">
      <!--ro, opt, int, 巡航检测灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </patrolSensitivity>
    <doubleCheckSensitivity min="1" max="100" default="50">
      <!--ro, opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}, 
desc:启用二次确认灵敏度后.巡航模式,触发报警,会在触发场景停留5分钟,5分钟后重新触发巡航计划生效;
                场景模式,设备在某一场景中停留时,设备会识别到烟雾时会进行二次检测,停留时间结束时,会立即结束烟雾检测运动至下一场景-->50
    </doubleCheckSensitivity>
    <displaySmokeInfoOnStreamEnabled opt="true,false">
      <!--ro, opt, bool, 码流叠加烟雾信息, attr:opt{req, string, 取值范围, range:[,]}-->true
    </displaySmokeInfoOnStreamEnabled>
    <SceneMode>
      <!--ro, opt, object, 场景模式参数能力-->
      <sceneSpeed min="1" max="40" def="30">
        <!--ro, opt, int, 场景模式巡航速度, range:[1,40], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->30
      </sceneSpeed>
      <sceneSensitivity min="1" max="100" def="50">
        <!--ro, opt, int, 场景模式烟雾检测的灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->50
      </sceneSensitivity>
      <sceneDoubleCheckSensitivity min="1" max="100" default="50">
        <!--ro, opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}, desc:设备在某一场景中停留时,设备会识别到烟雾时会进行二次检测,停留时间结束时,会立即结束烟雾检测运动至下一场景-->50
      </sceneDoubleCheckSensitivity>
    </SceneMode>
    <mode opt="patrol,scene" def="patrol">
      <!--ro, opt, enum, 检测模式, subType:string, [patrol#巡航模式,scene#场景模式], attr:opt{req, enum, 取值范围, subType:object, [patrol#巡航模式,scene#场景模式]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->patrol
    </mode>
    <darkSmokeDetectionEnabled opt="true,false" def="false">
      <!--ro, opt, bool, 黑烟检测使能是否开启, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->false
    </darkSmokeDetectionEnabled>
  </SmokeDetection>
  <smokeFireEnabled>
    <!--ro, opt, bool, 烟火总使能, desc:该使能与火点以及烟雾的单独使能能力互斥,若返回总使能能力,则无需返回火点以及烟雾的单独使能能力-->true
  </smokeFireEnabled>
  <ApplicationScene>
    <!--ro, opt, object, 应用场景-->
    <mode opt="forest-Fire_Prevention,strawBurning,high-building,Indoor/Perimeter,shortDistance,longDistance">
      <!--ro, opt, enum, 模式, subType:string, [forest-Fire_Prevention#森林防火,strawBurning#秸秆燃烧,high-building#高层建筑,Indoor/Perimeter#室内,shortDistance#近距离(≤200m),longDistance#远距离(>200m)], attr:opt{req, string, 取值范围, range:[,]}-->forest-Fire_Prevention
    </mode>
    <InstallationHeight min="1" max="500">
      <!--ro, opt, int, 安装高度, range:[1,500], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:如果 mode=strawBurning,high-building,Indoor/Perimeter有效-->1
    </InstallationHeight>
  </ApplicationScene>
  <cancelRepeatedAlarmEnabled opt="true,false">
    <!--ro, opt, bool, 取消重复报警使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </cancelRepeatedAlarmEnabled>
  <fireManualWaitEnabled opt="true,false">
    <!--ro, opt, bool, 火点手动等待使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </fireManualWaitEnabled>
  <isSupportFireScanStart opt="true,false">
    <!--ro, opt, bool, 是否支持火点继续扫描命令, attr:opt{req, string, 取值范围, range:[,]}, desc:对应URI:/ISAPI/Thermal/channels/<ID>/fireScanStart-->true
  </isSupportFireScanStart>
  <isSupportFireScanState opt="true,false">
    <!--ro, opt, bool, 是否支持火点扫描状态命令, attr:opt{req, string, 取值范围, range:[,]}, desc:对应URI:/ISAPI/Thermal/channels/<ID>/fireScanState-->true
  </isSupportFireScanState>
  <displayFireInfoOnStreamEnabled opt="true,false">
    <!--ro, opt, bool, 码流叠加火点信息, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayFireInfoOnStreamEnabled>
  <smokeAuxiliaryDetectionEnabled opt="true,false">
    <!--ro, opt, bool, 烟雾辅助判断启用使能, attr:opt{req, string, 取值范围, range:[,]}, desc:检测模式是二次判别时生效-->true
  </smokeAuxiliaryDetectionEnabled>
  <fireSourceDetection opt="dynamicFire,smokingMode">
    <!--ro, opt, enum, 火点搜索模式, subType:string, [dynamicFire#动态火点,smokingMode#吸烟模式], attr:opt{req, string, 取值范围, range:[,]}-->dynamicFire
  </fireSourceDetection>
  <verificationSensitivity min="1" max="100" default="50">
    <!--ro, opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->50
  </verificationSensitivity>
  <fireAlgorithmMode opt="patternRecognition, machineLearning">
    <!--ro, opt, enum, 火点算法模式, subType:string, [patternRecognition#模式识别,machineLearning#机器学习], attr:opt{req, string, 取值范围, range:[,]}-->patternRecognition
  </fireAlgorithmMode>
  <agriculturalMachineryFilterEnabled opt="true,false">
    <!--ro, opt, bool, 农机过滤模块使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </agriculturalMachineryFilterEnabled>
  <waterReflectionEnabled opt="true,false">
    <!--ro, opt, bool, 水面阳光反射模块使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </waterReflectionEnabled>
  <patrolSensitivity min="1" max="100" default="50">
    <!--ro, opt, int, 巡航检测灵敏度 (针对火点检测), range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->50
  </patrolSensitivity>
  <displayFireInOpticalChannelEnabled opt="true,false">
    <!--ro, opt, bool, 可见光通道显示火点信息使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayFireInOpticalChannelEnabled>
  <alarmInterval min="0" max="300" default="0">
    <!--ro, opt, int, 报警时间间隔, range:[0,300], step:, unit:s, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
  </alarmInterval>
</FireDetection>

3. 获取烟火检测参数

3.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireDetection

3.2 输入参数

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FireDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 烟火检测参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <sensitivity>
    <!--ro, opt, int, 检测灵敏度, range:[1,100], step:, unit:, unitType:-->1
  </sensitivity>
  <fireComfirmTime>
    <!--ro, opt, int, 发现火点等待时间, range:[0,120], step:, unit:, unitType:-->1
  </fireComfirmTime>
  <fireRegionOverlay>
    <!--ro, opt, bool, 码流叠加火点框-->true
  </fireRegionOverlay>
  <fireFrameDis>
    <!--ro, opt, bool, 火点框显示-->true
  </fireFrameDis>
  <fireMaxTemp>
    <!--ro, opt, bool, 最高温度-->true
  </fireMaxTemp>
  <fireMaxTempPosition>
    <!--ro, opt, bool, 最高温度位置显示-->true
  </fireMaxTempPosition>
  <fireDistance>
    <!--ro, opt, bool, 最高温度距离-->true
  </fireDistance>
  <detectionMode>
    <!--ro, opt, enum, 火点检测模式, subType:string, [multipleFarme#二次判别,singleFarme#单帧检测]-->multipleFarme
  </detectionMode>
  <fireFocusMode>
    <!--ro, opt, enum, 火点聚焦模式, subType:string, [auto#自动模式,cruise#巡航模式]-->auto
  </fireFocusMode>
  <FireZoom>
    <!--ro, opt, object, 火点变倍(光学变倍), desc:当发生火点时变倍生效-->
    <zoomMode>
      <!--ro, req, enum, 火点光学变倍模式, subType:string, [auto#自动模,manual#手动模式]-->auto
    </zoomMode>
    <zoomLevel>
      <!--ro, opt, int, 火点光学变倍倍率, range:[,], step:, unit:, unitType:, desc:当光学变倍模式为手动模式时生效-->1
    </zoomLevel>
  </FireZoom>
  <AlarmStrategy>
    <!--ro, opt, object, 报警策略-->
    <strategyType>
      <!--ro, req, enum, 报警策略类型, subType:string, [any#任意报警,cooperate#协同报警,multisystem#多系统报警,appointFire#指定火点报警,appointSmoke#指定烟雾报警], 
desc:any- 任意报警,只要任何一个识别系统发现疑似火情时候,均实现报警上传,只要任何一种发生报警,
        报警信息则按照该种报警信息上传;cooperate- 协同报警,某一系统识别火情后暂不报警,疑似目标由剩下的系统确认,
        两个均认为是目标则标识两个报警,如不是则单一报警 上传的报警信息中需要说明为协同报警下,
        如有两个均确认发生则要上传(每个报警发生的时间;每个图片;设备的PTZF (归一化处理)数值,
        (包含热成像和可见光的ZF),经纬度,画面中的坐标),一个确认则上传一个的信息;
        multisystem- 多系统报警,多个系统均识别后才报警,
        否则不报警进行双确认的时候需要可见光与热成像视场角一致上传的报警信息中需要说明为多系统报警下,
        两个均确认发生则要上传(每个报警发生的时间;每个图片;设备的PTZF(归一化处理)数值,
        (包含热成像和可见光的ZF),经纬度,画面中的坐标);
        appointFire- 指定火点报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的火点报警发生才上传,不指定的报警不上传不显示任何报警信息; 
        appointSmoke- 指定烟雾报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的烟雾报警发生才上传,不指定的报警不上传不显示任何报警信息-->any
    </strategyType>
  </AlarmStrategy>
  <SmokeDetection>
    <!--ro, opt, object, 烟雾检测-->
    <enabled>
      <!--ro, req, bool, 控制烟雾检测是否开启-->true
    </enabled>
    <sensitivity>
      <!--ro, opt, int, 烟雾检测的灵敏度, range:[1,100], step:, unit:, unitType:-->1
    </sensitivity>
    <patrolSensitivity>
      <!--ro, opt, int, 巡航检测灵敏度, range:[1,100], step:, unit:, unitType:-->1
    </patrolSensitivity>
    <doubleCheckSensitivity>
      <!--ro, opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:, 
desc:启用二次确认灵敏度后.巡航模式,触发报警,会在触发场景停留5分钟,5分钟后重新触发巡航计划生效;
                场景模式,设备在某一场景中停留时,设备会识别到烟雾时会进行二次检测,停留时间结束时,会立即结束烟雾检测运动至下一场景-->1
    </doubleCheckSensitivity>
    <displaySmokeInfoOnStreamEnabled>
      <!--ro, opt, bool, 码流叠加烟雾信息-->true
    </displaySmokeInfoOnStreamEnabled>
    <mode>
      <!--ro, opt, enum, 检测模式, subType:string, [patrol#巡航模式,scene#场景模式]-->patrol
    </mode>
    <speed>
      <!--ro, opt, int, mode为scene时支持巡航速, range:[1,40], step:, unit:, unitType:, dep:and,{$.FireDetection.SmokeDetection.mode,eq,scene}-->30
    </speed>
    <darkSmokeDetectionEnabled>
      <!--ro, opt, bool, 黑烟检测使能是否开启-->false
    </darkSmokeDetectionEnabled>
  </SmokeDetection>
  <smokeFireEnabled>
    <!--ro, opt, bool, 烟火总使能, desc:该使能与火点以及烟雾的单独使能能力互斥,若返回总使能能力,则无需返回火点以及烟雾的单独使能能力-->true
  </smokeFireEnabled>
  <ApplicationScene>
    <!--ro, opt, object, 应用场景-->
    <mode>
      <!--ro, opt, enum, 模式, subType:string, [forest-Fire_Prevention#森林防火,strawBurning#秸秆燃烧,high-building#高层建筑,Indoor/Perimeter#室内,shortDistance#近距离(≤200m),longDistance#远距离(>200m)]-->forest-Fire_Prevention
    </mode>
    <InstallationHeight>
      <!--ro, opt, int, 安装高度, range:[1,500], step:, unit:, unitType:, desc:如果 mode=strawBurning,high-building,Indoor/Perimeter有效-->1
    </InstallationHeight>
  </ApplicationScene>
  <cancelRepeatedAlarmEnabled>
    <!--ro, opt, bool, 取消重复报警使能-->true
  </cancelRepeatedAlarmEnabled>
  <fireManualWaitEnabled>
    <!--ro, opt, bool, 火点手动等待使能-->true
  </fireManualWaitEnabled>
  <isSupportFireScanStart>
    <!--ro, opt, bool, 是否支持火点继续扫描命令, desc:对应URI:/ISAPI/Thermal/channels/<ID>/fireScanStart-->true
  </isSupportFireScanStart>
  <isSupportFireScanState>
    <!--ro, opt, bool, 是否支持火点扫描状态命令, desc:对应URI:/ISAPI/Thermal/channels/<ID>/fireScanState-->true
  </isSupportFireScanState>
  <displayFireInfoOnStreamEnabled>
    <!--ro, opt, bool, 码流叠加火点信息-->true
  </displayFireInfoOnStreamEnabled>
  <smokeAuxiliaryDetectionEnabled>
    <!--ro, opt, bool, 烟雾辅助判断启用使能, desc:检测模式是二次判别时生效-->true
  </smokeAuxiliaryDetectionEnabled>
  <fireSourceDetection>
    <!--ro, opt, enum, 火点搜索模式, subType:string, [dynamicFire#动态火点,smokingMode#吸烟模式]-->dynamicFire
  </fireSourceDetection>
  <verificationSensitivity>
    <!--ro, opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:-->1
  </verificationSensitivity>
  <fireAlgorithmMode>
    <!--ro, opt, enum, 火点算法模式, subType:string, [patternRecognition#模式识别,machineLearning#机器学习]-->patternRecognition
  </fireAlgorithmMode>
  <agriculturalMachineryFilterEnabled>
    <!--ro, opt, bool, 农机过滤模块使能-->true
  </agriculturalMachineryFilterEnabled>
  <waterReflectionEnabled>
    <!--ro, opt, bool, 水面阳光反射模块使能-->true
  </waterReflectionEnabled>
  <patrolSensitivity>
    <!--ro, opt, int, 巡航检测灵敏度 (针对火点检测), range:[1,100], step:, unit:, unitType:-->1
  </patrolSensitivity>
  <displayFireInOpticalChannelEnabled>
    <!--ro, opt, bool, 可见光通道显示火点信息使能-->true
  </displayFireInOpticalChannelEnabled>
  <alarmInterval>
    <!--ro, opt, int, 报警时间间隔, range:[0,300], step:, unit:s, unitType:-->0
  </alarmInterval>
</FireDetection>

4. 配置烟火检测参数

4.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/fireDetection

4.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FireDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 烟火检测参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--opt, bool, 使能-->true
  </enabled>
  <sensitivity>
    <!--opt, int, 检测灵敏度, range:[1,100], step:, unit:, unitType:-->1
  </sensitivity>
  <fireComfirmTime>
    <!--opt, int, 发现火点等待时间, range:[0,120], step:, unit:, unitType:-->1
  </fireComfirmTime>
  <fireRegionOverlay>
    <!--opt, bool, 码流叠加火点框-->true
  </fireRegionOverlay>
  <fireFrameDis>
    <!--ro, opt, bool, 火点框显示-->true
  </fireFrameDis>
  <fireMaxTemp>
    <!--ro, opt, bool, 最高温度-->true
  </fireMaxTemp>
  <fireMaxTempPosition>
    <!--ro, opt, bool, 最高温度位置显示-->true
  </fireMaxTempPosition>
  <fireDistance>
    <!--ro, opt, bool, 最高温度距离-->true
  </fireDistance>
  <detectionMode>
    <!--opt, enum, 火点检测模式, subType:string, [multipleFarme#二次判别,singleFarme#单帧检测]-->multipleFarme
  </detectionMode>
  <fireFocusMode>
    <!--opt, enum, 火点聚焦模式, subType:string, [auto#自动模式,cruise#巡航模式]-->auto
  </fireFocusMode>
  <FireZoom>
    <!--opt, object, 火点变倍(光学变倍), desc:当发生火点时变倍生效-->
    <zoomMode>
      <!--req, enum, 火点光学变倍模式, subType:string, [auto#自动模,manual#手动模式]-->auto
    </zoomMode>
    <zoomLevel>
      <!--opt, int, 火点光学变倍倍率, range:[,], step:, unit:, unitType:, desc:当光学变倍模式为手动模式时生效-->1
    </zoomLevel>
  </FireZoom>
  <AlarmStrategy>
    <!--opt, object, 报警策略-->
    <strategyType>
      <!--req, enum, 报警策略类型, subType:string, [any#任意报警,cooperate#协同报警,multisystem#多系统报警,appointFire#指定火点报警,appointSmoke#指定烟雾报警], 
desc:any- 任意报警,只要任何一个识别系统发现疑似火情时候,均实现报警上传,只要任何一种发生报警,
        报警信息则按照该种报警信息上传;cooperate- 协同报警,某一系统识别火情后暂不报警,疑似目标由剩下的系统确认,
        两个均认为是目标则标识两个报警,如不是则单一报警 上传的报警信息中需要说明为协同报警下,
        如有两个均确认发生则要上传(每个报警发生的时间;每个图片;设备的PTZF (归一化处理)数值,
        (包含热成像和可见光的ZF),经纬度,画面中的坐标),一个确认则上传一个的信息;
        multisystem- 多系统报警,多个系统均识别后才报警,
        否则不报警进行双确认的时候需要可见光与热成像视场角一致上传的报警信息中需要说明为多系统报警下,
        两个均确认发生则要上传(每个报警发生的时间;每个图片;设备的PTZF(归一化处理)数值,
        (包含热成像和可见光的ZF),经纬度,画面中的坐标);
        appointFire- 指定火点报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的火点报警发生才上传,不指定的报警不上传不显示任何报警信息; 
        appointSmoke- 指定烟雾报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的烟雾报警发生才上传,不指定的报警不上传不显示任何报警信息-->any
    </strategyType>
  </AlarmStrategy>
  <SmokeDetection>
    <!--opt, object, 烟雾检测-->
    <enabled>
      <!--req, bool, 控制烟雾检测是否开启-->true
    </enabled>
    <sensitivity>
      <!--opt, int, 烟雾检测的灵敏度, range:[1,100], step:, unit:, unitType:-->1
    </sensitivity>
    <patrolSensitivity>
      <!--opt, int, 巡航检测灵敏度, range:[1,100], step:, unit:, unitType:-->1
    </patrolSensitivity>
    <doubleCheckSensitivity>
      <!--opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:, 
desc:启用二次确认灵敏度后.巡航模式,触发报警,会在触发场景停留5分钟,5分钟后重新触发巡航计划生效;
                场景模式,设备在某一场景中停留时,设备会识别到烟雾时会进行二次检测,停留时间结束时,会立即结束烟雾检测运动至下一场景-->1
    </doubleCheckSensitivity>
    <displaySmokeInfoOnStreamEnabled>
      <!--opt, bool, 码流叠加烟雾信息-->true
    </displaySmokeInfoOnStreamEnabled>
    <mode>
      <!--opt, enum, 检测模式, subType:string, [patrol#巡航模式,scene#场景模式]-->patrol
    </mode>
    <speed>
      <!--opt, int, mode为scene时支持巡航速, range:[1,40], step:, unit:, unitType:-->30
    </speed>
    <darkSmokeDetectionEnabled>
      <!--ro, opt, bool, 黑烟检测使能是否开启-->false
    </darkSmokeDetectionEnabled>
  </SmokeDetection>
  <smokeFireEnabled>
    <!--opt, bool, 烟火总使能, desc:该使能与火点以及烟雾的单独使能能力互斥,若返回总使能能力,则无需返回火点以及烟雾的单独使能能力-->true
  </smokeFireEnabled>
  <ApplicationScene>
    <!--opt, object, 应用场景-->
    <mode>
      <!--opt, enum, 模式, subType:string, [forest-Fire_Prevention#森林防火,strawBurning#秸秆燃烧,high-building#高层建筑,Indoor/Perimeter#室内,shortDistance#近距离(≤200m),longDistance#远距离(>200m)]-->forest-Fire_Prevention
    </mode>
    <InstallationHeight>
      <!--opt, int, 安装高度, range:[1,500], step:, unit:, unitType:, desc:如果 mode=strawBurning,high-building,Indoor/Perimeter有效-->1
    </InstallationHeight>
  </ApplicationScene>
  <cancelRepeatedAlarmEnabled>
    <!--opt, bool, 取消重复报警使能-->true
  </cancelRepeatedAlarmEnabled>
  <fireManualWaitEnabled>
    <!--opt, bool, 火点手动等待使能-->true
  </fireManualWaitEnabled>
  <isSupportFireScanStart>
    <!--opt, bool, 是否支持火点继续扫描命令, desc:对应URI:/ISAPI/Thermal/channels/<ID>/fireScanStart-->true
  </isSupportFireScanStart>
  <isSupportFireScanState>
    <!--opt, bool, 是否支持火点扫描状态命令, desc:对应URI:/ISAPI/Thermal/channels/<ID>/fireScanState-->true
  </isSupportFireScanState>
  <displayFireInfoOnStreamEnabled>
    <!--opt, bool, 码流叠加火点信息-->true
  </displayFireInfoOnStreamEnabled>
  <smokeAuxiliaryDetectionEnabled>
    <!--opt, bool, 烟雾辅助判断启用使能, desc:检测模式是二次判别时生效-->true
  </smokeAuxiliaryDetectionEnabled>
  <fireSourceDetection>
    <!--opt, enum, 火点搜索模式, subType:string, [dynamicFire#动态火点,smokingMode#吸烟模式]-->dynamicFire
  </fireSourceDetection>
  <verificationSensitivity>
    <!--opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:-->1
  </verificationSensitivity>
  <fireAlgorithmMode>
    <!--opt, enum, 火点算法模式, subType:string, [patternRecognition#模式识别,machineLearning#机器学习]-->patternRecognition
  </fireAlgorithmMode>
  <agriculturalMachineryFilterEnabled>
    <!--opt, bool, 农机过滤模块使能-->true
  </agriculturalMachineryFilterEnabled>
  <waterReflectionEnabled>
    <!--opt, bool, 水面阳光反射模块使能-->true
  </waterReflectionEnabled>
  <patrolSensitivity>
    <!--opt, int, 巡航检测灵敏度 (针对火点检测), range:[1,100], step:, unit:, unitType:-->1
  </patrolSensitivity>
  <displayFireInOpticalChannelEnabled>
    <!--opt, bool, 可见光通道显示火点信息使能-->true
  </displayFireInOpticalChannelEnabled>
  <alarmInterval>
    <!--opt, int, 报警时间间隔, range:[0,300], step:, unit:s, unitType:-->0
  </alarmInterval>
</FireDetection>

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

5. 获取烟火检测事件联动配置

5.1 命令

GET /ISAPI/Event/triggers/fireDetection-<channelID>

5.2 输入参数

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->fireDetection-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->fireDetection
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道id, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道id, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟随,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频输入id, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入id, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航,target#目标]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容,可以是预置点号,巡航路径号,花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:白光灯联动相关参数;当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

6. 配置烟火检测事件联动配置

6.1 命令

PUT /ISAPI/Event/triggers/fireDetection-<channelID>

6.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->fireDetection-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->fireDetection
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道id, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道id, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟随,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频输入id, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入id, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航,target#目标]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容,可以是预置点号,巡航路径号,花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:白光灯联动相关参数;当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

7. 获取烟火检测单个通道布防时间参数

7.1 命令

GET /ISAPI/Event/schedules/fireDetections/fireDetection-<channelID>

7.2 输入参数

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为:事件类型-通道号-->fireDetection-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->fireDetection
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--ro, opt, object, 场景巡航-->
        <SceneList>
          <!--ro, opt, array, 多场景切换配置, subType:object, range:[,]-->
          <Scene>
            <!--ro, opt, object, 场景信息-->
            <sceneID>
              <!--ro, req, string, 关联场景ID, range:[1,16]-->test
            </sceneID>
            <durationTime>
              <!--ro, req, int, 持续时间, range:[,], step:, unit:, unitType:-->0
            </durationTime>
          </Scene>
        </SceneList>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

8. 配置烟火检测单个通道布防时间参数

8.1 命令

PUT /ISAPI/Event/schedules/fireDetections/fireDetection-<channelID>

8.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为:事件类型-通道号-->fireDetection-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->fireDetection
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--opt, object, 场景巡航-->
        <SceneList>
          <!--opt, array, 多场景切换配置, subType:object, range:[,]-->
          <Scene>
            <!--opt, object, 场景信息-->
            <sceneID>
              <!--req, string, 关联场景ID, range:[1,16]-->test
            </sceneID>
            <durationTime>
              <!--req, int, 持续时间, range:[,], step:, unit:, unitType:-->0
            </durationTime>
          </Scene>
        </SceneList>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

9. 获取火点高级参数配置能力

9.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireDetection/advanceParam/capabilities?format=json

9.2 输入参数

9.3 输出参数

{
    "AdvanceParamCap": {    
    /*ro, opt, object, 火点高级参数配置能力*/
        "minPixel": {   
        /*ro, opt, object, 火点检测最小像素*/
            "@min":  1, 
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  10 
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "isFocusEnabled": { 
        /*ro, opt, object, 可见光居中变倍后是否执行聚焦*/
            "@opt": [true, false]   
            /*ro, opt, array, false-不执行, subType:bool, range:[,], desc:可见光居中变倍后是否执行聚焦:true-执行,false-不执行*/
        },
        "sceneMode": {  
        /*ro, opt, object, 场景类型*/
            "@opt": ["mountain", "plain"]   
            /*ro, opt, array, 场景类型, subType:string, range:[,], desc:场景类型:mountain-山地 plain-平原*/
        },
        "skylineDetectEnabled": {   
        /*ro, opt, object, 天际线检测使能*/
            "@opt": [true, false]   
            /*ro, opt, array, 天际线检测使能, subType:bool, range:[,]*/
        },
        "skylineDetectionLevel": {  
        /*ro, opt, object, 天际线检测等级*/
            "@min":  0, 
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  4  
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
        }
    }
}

10. 获取火点高级参数配置

10.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireDetection/advanceParam?format=json

10.2 输入参数

10.3 输出参数

{
    "AdvanceParam": {   
    /*ro, opt, object, 火点高级参数配置*/
        "minPixel":  1, 
        /*ro, opt, int, 火点检测最小像素, range:[,], step:, unit:, unitType:*/
        "isFocusEnabled":  true,    
        /*ro, opt, bool, 可见光居中变倍后是否执行聚焦, desc:可见光居中变倍后是否执行聚焦:true-执行,false-不执行*/
        "sceneMode":  "mountain",   
        /*ro, opt, enum, 场景类型, subType:string, [mountain#山地,plain#平原]*/
        "skylineDetectEnabled":  true,  
        /*ro, opt, bool, 天际线检测使能*/
        "skylineDetectionLevel":  1 
        /*ro, opt, int, 天际线检测等级, range:[0,4], step:, unit:, unitType:*/
    }
}

11. 配置火点高级参数配置

11.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/fireDetection/advanceParam?format=json

11.2 输入参数

{
    "AdvanceParam": {   
    /*ro, opt, object, 火点高级参数配置*/
        "minPixel":  1, 
        /*ro, opt, int, 火点检测最小像素, range:[,], step:, unit:, unitType:*/
        "isFocusEnabled":  true,    
        /*ro, opt, bool, 可见光居中变倍后是否执行聚焦, desc:可见光居中变倍后是否执行聚焦:true-执行,false-不执行*/
        "sceneMode":  "mountain",   
        /*ro, opt, enum, 场景类型, subType:string, [mountain#山地,plain#平原]*/
        "skylineDetectEnabled":  true,  
        /*ro, opt, bool, 天际线检测使能*/
        "skylineDetectionLevel":  1 
        /*ro, opt, int, 天际线检测等级, range:[0,4], step:, unit:, unitType:*/
    }
}

11.3 输出参数

{
    "statusCode":  1,   
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
    "statusString":  "ok",  
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
    "subStatusCode":  "ok", 
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
    "errorCode":  1,    
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
    "errorMsg":  "ok"   
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

12. 获取人体测温基本参数能力

12.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam/capabilities

12.2 输入参数

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryBasicParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人体测温基本参数, attr:version{opt, string, 未定义, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 启用, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <streamOverlay opt="true,false">
    <!--ro, req, bool, 码流是否叠加温度信息, attr:opt{req, string, 取值范围, range:[,]}-->true
  </streamOverlay>
  <pictureOverlay opt="true,false">
    <!--ro, req, bool, 抓图是否叠加温度信息, attr:opt{req, string, 取值范围, range:[,]}-->true
  </pictureOverlay>
  <temperatureRange opt="-20~150,0~550,0~650,-4~302,32~1022,32~1200,-20~650,-20~1500,automatic,-20~120,100-550,28-45">
    <!--ro, req, enum, 测温范围, subType:string, [-20~150#-20~150,0~550#0~550,0~650#0~650,-4~302#-4~302,32~1022#32~1022,32~1200#32~1200,-20~650#-20~650,-20~1500#-20~1500,automatic#自动,-20~120#-20~120,100-550#100-550,28-45#28-45], attr:opt{req, string, 取值范围, range:[,]}-->-20~150
  </temperatureRange>
  <temperatureUnit opt="degreeCentigrade,degreeFahrenheit,degreeKelvin">
    <!--ro, req, enum, 测温单位, subType:string, [degreeCentigrade#摄氏度(℃),degreeFahrenheit#华氏度(华氏度),degreeKelvin#开尔文(K)], attr:opt{req, string, 取值范围, range:[,]}-->degreeCentigrade
  </temperatureUnit>
  <temperatureCurve opt="close,transverseTemperatureTrend,longitudinalTemperatureTrend">
    <!--ro, opt, enum, 纵向温度趋势线模式, subType:string, [close#关闭,transverseTemperatureTrend#横向温度趋势线模式,longitudinalTemperatureTrend#纵向温度趋势线模式], attr:opt{req, string, 取值范围, range:[,]}-->close
  </temperatureCurve>
  <fireImageMode opt="blackWhite,thermalProbe,fireGround">
    <!--ro, opt, enum, 消防模式, subType:string, [blackWhite#黑白模式,thermalProbe#热探测模式,fireGround#火场模式], attr:opt{req, string, 取值范围, range:[,]}-->blackWhite
  </fireImageMode>
  <emissivity min="0.01" max="1.00" default="0.8">
    <!--ro, opt, float, 发射率, range:[0.01,1.00], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},default{opt, float, 未定义, range:[,], step:, unit:, unitType:}-->0.01
  </emissivity>
  <distanceUnit opt="meter,feet,centimeter">
    <!--ro, req, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米], attr:opt{req, string, 取值范围, range:[,]}-->meter
  </distanceUnit>
  <TemperatureColor>
    <!--ro, opt, object, 温度颜色-->
    <type opt="highTemperature,lowTemperature,rangeTemperature,heatPreservation">
      <!--ro, req, enum, 设置类型, subType:string, [highTemperature#高温报警类型,lowTemperature#低温报警类型,rangeTemperature#区间报警类型,heatPreservation#保温报警类型], attr:opt{req, string, 取值范围, range:[,]}, 
desc:highTemperature: 高温报警类型,此时<highTemperature>字段生效,当高于该温度值时会有进行颜色标注;
lowTemperature: 低温报警类型,此时<lowTemperature>字段生效,当低于该温度值时会有进行颜色标注;
rangeTemperature: 区间报警类型,此时<highTemperature>、<lowTemperature>字段生效,当在温度在该温度区间时会有进行颜色标注;
heatPreservation: 保温报警类型,此时<highTemperature>、<lowTemperature>字段生效,当温度不在该温度区间时会有进行颜色标注;-->highTemperature
    </type>
    <highTemperature min="-273" max="10000">
      <!--ro, opt, int, 最高温度, range:[-273,10000], step:1, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->100
    </highTemperature>
    <lowTemperature min="-273" max="10000">
      <!--ro, opt, int, 最低温度, range:[-273,10000], step:1, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->100
    </lowTemperature>
  </TemperatureColor>
  <enviroTemperature min="-273" max="10000">
    <!--ro, opt, int, 环境温度, range:[,], step:, unit:℃,"环境温度", unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </enviroTemperature>
  <enviroHumidity min="0" max="100">
    <!--ro, opt, int, 环境相对湿度, range:[,], step:, unit:%,"环境相对湿度", unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </enviroHumidity>
  <correctionVolume min="-100" max="100" def="0">
    <!--ro, opt, int, 测温修正量, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </correctionVolume>
  <specialPointThermType opt="centerPoint,highestPoint,lowestPoint">
    <!--ro, opt, enum, 特殊测温点显示, subType:string, [centerPoint#中心点测温,highestPoint#最高点测温,lowestPoint#最低点测温,null#不支持], attr:opt{req, string, 取值范围, range:[,]}-->lowestPoint
  </specialPointThermType>
  <distance min="0" max="10000">
    <!--ro, req, int, 距离, range:[,], step:, unit:m,"距离", unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </distance>
  <reflectiveEnable>
    <!--ro, req, bool, 反射温度使能-->true
  </reflectiveEnable>
  <reflectiveTemperature min="0.0" max="1000.0">
    <!--ro, opt, float, 反射温度, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数-->1.0
  </reflectiveTemperature>
  <alert min="-100.0" max="1000.0">
    <!--ro, opt, float, 全局预警阈值, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数-->1.0
  </alert>
  <alarm min="-100.0" max="1000.0">
    <!--ro, opt, float, 全局报警阈值, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数-->1.0
  </alarm>
  <showTempStripEnable>
    <!--ro, opt, bool, 温度条显示使能-->1
  </showTempStripEnable>
  <thermalOpticalTransmittance min="0.001" max="1.000" def="1.000">
    <!--ro, opt, float, 光学透过率, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},def{req, float, 默认值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数点-->1.0
  </thermalOpticalTransmittance>
  <externalOpticsWindowCorrection min="-40.0" max="80.0" def="20.0">
    <!--ro, opt, float, 外部光学温度, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},def{req, float, 默认值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数点-->1.0
  </externalOpticsWindowCorrection>
  <isSupportAlertOutputIOPortList>
    <!--ro, opt, bool, 是否支持获取预警输出口-->true
  </isSupportAlertOutputIOPortList>
  <isSupportAlarmOutputIOPortList>
    <!--ro, opt, bool, 是否支持获取报警输出口-->true
  </isSupportAlarmOutputIOPortList>
  <alertFilteringTime min="0" max="200" default="0">
    <!--ro, opt, int, 温度预警等待时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
  </alertFilteringTime>
  <alarmFilteringTime min="0" max="200" default="0">
    <!--ro, opt, int, 温度报警等待时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
  </alarmFilteringTime>
  <displayMaxTemperatureEnabled opt="true,false">
    <!--ro, opt, bool, 显示最高温, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayMaxTemperatureEnabled>
  <displayMinTemperatureEnabled opt="true,false">
    <!--ro, opt, bool, 显示最低温, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayMinTemperatureEnabled>
  <displayAverageTemperatureEnabled opt="true,false">
    <!--ro, opt, bool, 显示平均温, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayAverageTemperatureEnabled>
  <thermometryInfoDisplayposition opt="rules_around,top_left_of_screen">
    <!--ro, opt, string, 测温信息显示位置, range:[,], attr:opt{req, string, 取值范围, range:[,], desc:rules_around跟随规则、top_left_of_screen屏幕左上}-->test
  </thermometryInfoDisplayposition>
  <calibrationCoefficientEnabled opt="true,false">
    <!--ro, opt, bool, 启用标定系数使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </calibrationCoefficientEnabled>
  <calibrationCoefficient min="0.00" max="30.00">
    <!--ro, opt, float, 标定系数, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:精确小数点后2位-->0.00
  </calibrationCoefficient>
  <emissivityMode opt="rougher,rough,smooth,smoother,customsettings">
    <!--ro, opt, string, 发射率配置类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:rougher(粗糙0.95),rough(较粗糙0.80),smooth(较光滑0.60),smoother(光滑0.30),customsettings(自定义0.01-1.00)-->test
  </emissivityMode>
  <displayTemperatureInOpticalChannelEnabled opt="true,false">
    <!--ro, opt, bool, 可见光通道显示温度信息使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayTemperatureInOpticalChannelEnabled>
  <displayCentreTemperatureEnabled opt="true,false">
    <!--ro, opt, bool, 显示中心点温度, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayCentreTemperatureEnabled>
  <distanceMode opt="selfAdapt,fixed">
    <!--ro, opt, string, 距离模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:selfAdapt-自适应,fixed-固定-->test
  </distanceMode>
  <faceTemperatureInfoUploadEnabled opt="true,false">
    <!--ro, opt, bool, 人脸温度信息报警上传使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </faceTemperatureInfoUploadEnabled>
  <calibrationFileVersion>
    <!--ro, opt, string, 标定文件版本信息, range:[,]-->test
  </calibrationFileVersion>
  <alarmInterval min="1" max="300">
    <!--ro, opt, int, 测温报警时间间隔配置, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </alarmInterval>
  <rulesOverlayMode opt="all,alarm">
    <!--ro, opt, string, 规则信息图片叠加模式, range:[,], attr:opt{req, string, 取值范围, range:[,], desc:all-所有规则,alarm-触发报警规则}-->test
  </rulesOverlayMode>
  <toleranceTemperature min="1" max="5">
    <!--ro, opt, float, 容差温度, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}-->0.000
  </toleranceTemperature>
  <alarmMode opt="temperatureIntervalMeasurement,alarm_alert">
    <!--ro, opt, string, 报警模式, range:[,], attr:opt{req, string, 取值范围, range:[,], desc:"temperatureIntervalMeasurement"-温度区间检测,"alarm_alert"-预警/报警}-->test
  </alarmMode>
  <NormalRulesColor>
    <!--ro, opt, object, 正常规则颜色 , dep:and,{$.ThermometryBasicParam.alarmMode,eq,temperatureIntervalMeasurement}, desc:<alarmMode>==temperatureIntervalMeasurement时生效-->
    <R>
      <!--ro, req, int, R, range:[,], step:, unit:, unitType:-->1
    </R>
    <G>
      <!--ro, req, int, G, range:[,], step:, unit:, unitType:-->1
    </G>
    <B>
      <!--ro, req, int, B, range:[,], step:, unit:, unitType:-->1
    </B>
  </NormalRulesColor>
  <NormalTemperatureIntervalMeasurement>
    <!--ro, opt, object, 普通温度区间检测-->
    <alarmType opt="highestTemp,lowestTemp">
      <!--ro, opt, string, 报警类型, range:[,], attr:opt{req, string, 取值范围, range:[,], desc:highestTemp-最高温 lowestTemp-最低温}-->test
    </alarmType>
    <TemperatureIntervalList size="4">
      <!--ro, opt, array, 温度区间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <TemperatureInterval>
        <!--ro, opt, object, 温度区间-->
        <id min="1" max="4">
          <!--ro, opt, int, 序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </id>
        <enabled opt="true,false">
          <!--ro, opt, bool, 使能开关, attr:opt{req, string, 取值范围, range:[,]}-->true
        </enabled>
        <name min="1" max="96">
          <!--ro, opt, string, 区间名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
        </name>
        <minTemperature min="-20.0" max="550.0">
          <!--ro, opt, float, 最低温, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数点-->0.0
        </minTemperature>
        <maxTemperature min="-20.0" max="550.0">
          <!--ro, opt, float, 最高温, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}-->0.0
        </maxTemperature>
        <AlarmColor>
          <!--ro, opt, object, 温度区间报警颜色-->
          <R>
            <!--ro, req, int, R, range:[,], step:, unit:, unitType:-->1
          </R>
          <G>
            <!--ro, req, int, G, range:[,], step:, unit:, unitType:-->1
          </G>
          <B>
            <!--ro, req, int, B, range:[,], step:, unit:, unitType:-->1
          </B>
        </AlarmColor>
        <AlarmOutputIOPortList size="null">
          <!--ro, opt, array, 报警输出端口列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <OutputIOPort>
            <!--ro, opt, object, 报警输出端口-->
            <portID min="null" max="null">
              <!--ro, req, string, 端口号, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
            </portID>
            <enabled opt="true,false">
              <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
            </enabled>
          </OutputIOPort>
        </AlarmOutputIOPortList>
      </TemperatureInterval>
    </TemperatureIntervalList>
  </NormalTemperatureIntervalMeasurement>
  <SunReflectionBlur>
    <!--ro, opt, object, 太阳反光过滤-->
    <enabled opt="true,false">
      <!--ro, req, bool, 太阳反光过滤使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <sensitivity min="1" max="100">
      <!--ro, opt, int, 太阳反光过滤灵敏度, range:[1,100], step:, unit:s, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->50
    </sensitivity>
    <filterEnabled opt="true,false">
      <!--ro, opt, bool, 是否开启过滤提示, attr:opt{req, string, 取值范围, range:[,]}, desc:配置OSD显示是否已过滤,提示语仅显示在热成像图像上,内容和位置(右下角)固定,用户不可配置-->true
    </filterEnabled>
  </SunReflectionBlur>
  <VehicleBlur>
    <!--ro, opt, object, 车辆过滤-->
    <enabled opt="true,false">
      <!--ro, req, bool, 车辆过滤使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <sensitiveLevel min="0" max="4">
      <!--ro, opt, int, 车辆过滤检测灵敏度等级, range:[0,4], step:, unit:s, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->4
    </sensitiveLevel>
    <filterEnabled opt="true,false">
      <!--ro, opt, bool, 是否开启过滤提示, attr:opt{req, string, 取值范围, range:[,]}, desc:配置OSD显示是否已过滤,提示语仅显示在热成像图像上,内容和位置(右下角)固定,用户不可配置-->true
    </filterEnabled>
  </VehicleBlur>
  <TemperatureSuddenChange>
    <!--ro, opt, object, 普通测温模式下温度突变配置-->
    <mode opt="close,temperatureSuddenIncrease,temperatureSuddenDecrease">
      <!--ro, req, enum, 温度突变模式, subType:string, [close#关闭,temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降], attr:opt{opt, enum, 取值范围, subType:string, [close#关闭,temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降]}-->close
    </mode>
    <alarm min="0" max="570">
      <!--ro, opt, float, 报警值, range:[0,570], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{opt, float, 温度突变值, range:[0,570], step:, unit:, unitType:, desc:精确到小数点后一位}, desc:精确到小数点后一位-->0.0
    </alarm>
    <cycleCfg min="5" max="3600">
      <!--ro, opt, int, 记录周期, range:[5,3600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->60
    </cycleCfg>
  </TemperatureSuddenChange>
</ThermometryBasicParam>

13. 获取人体测温基本参数

13.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam

13.2 输入参数

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryBasicParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 基本参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <enabled>
    <!--ro, req, bool, 启用-->true
  </enabled>
  <streamOverlay>
    <!--ro, req, bool, 码流是否叠加温度信息-->true
  </streamOverlay>
  <pictureOverlay>
    <!--ro, req, bool, 抓图是否叠加温度信息-->true
  </pictureOverlay>
  <temperatureRange>
    <!--ro, req, enum, 测温范围, subType:string, [30~45#温度范围30~45,-20~150#温度范围-20~150,0~550#温度范围0~550,0~650#温度范围0~650,-4~302#温度范围-4~302,32~1022#温度范围32~1022,32~1200#温度范围32~1200,-20~650#温度范围-20~650,-20~1500#温度范围-20~1500,automatic#自动,-20~120#温度范围-20~120,20~45#温度范围20~45,20~350#温度范围20~350,30~45#温度范围30~45,100-550#温度范围100-550,28-45#温度范围28-45]-->30~45
  </temperatureRange>
  <temperatureUnit>
    <!--ro, req, enum, 测温单位, subType:string, [degreeCentigrade#摄氏度(℃),degreeFahrenheit#华氏度(华氏度),degreeKelvin#开尔文(K)]-->degreeCentigrade
  </temperatureUnit>
  <temperatureCurve>
    <!--ro, opt, enum, 纵向温度趋势线模式, subType:string, [close#关闭,transverseTemperatureTrend#横向温度趋势线模式,longitudinalTemperatureTrend#纵向温度趋势线模式]-->close
  </temperatureCurve>
  <fireImageMode>
    <!--ro, opt, enum, 消防模式, subType:string, [blackWhite#黑白模式,thermalProbe#热探测模式,fireGround#火场模式]-->blackWhite
  </fireImageMode>
  <emissivity>
    <!--ro, opt, float, 发射率, range:[0.01,1.00], step:, unit:, unitType:-->0.01
  </emissivity>
  <distanceUnit>
    <!--ro, req, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
  <TemperatureColor>
    <!--ro, opt, object, 温度颜色-->
    <type>
      <!--ro, req, enum, 设置类型, subType:string, [highTemperature#高温报警类型,lowTemperature#低温报警类型,rangeTemperature#区间报警类型,heatPreservation#保温报警类型]-->highTemperature
    </type>
    <highTemperature>
      <!--ro, opt, int, 最高温度, range:[-273,10000], step:1, unit:, unitType:-->100
    </highTemperature>
    <lowTemperature>
      <!--ro, opt, int, 最低温度, range:[-273,10000], step:1, unit:, unitType:-->100
    </lowTemperature>
  </TemperatureColor>
  <enviroTemperature>
    <!--ro, opt, int, 环境温度, range:[,], step:, unit:℃,"环境温度", unitType:-->1
  </enviroTemperature>
  <enviroHumidity>
    <!--ro, opt, int, 环境相对湿度, range:[,], step:, unit:%,"环境相对湿度", unitType:-->1
  </enviroHumidity>
  <correctionVolume>
    <!--ro, opt, int, 测温修正量, range:[,], step:, unit:, unitType:-->1
  </correctionVolume>
  <specialPointThermType>
    <!--ro, opt, enum, 特殊测温点显示, subType:string, [centerPoint#中心点测温,highestPoint#最高点测温,lowestPoint#最低点测温,null#不支持]-->lowestPoint
  </specialPointThermType>
  <distance>
    <!--ro, req, int, 距离, range:[,], step:, unit:m,"距离", unitType:-->1
  </distance>
  <reflectiveEnable>
    <!--ro, req, bool, 反射温度使能-->true
  </reflectiveEnable>
  <reflectiveTemperature>
    <!--ro, opt, float, 反射温度, range:[,], step:, unit:, unitType:-->1.0
  </reflectiveTemperature>
  <alert>
    <!--ro, opt, float, 全局预警阈值, range:[,], step:, unit:, unitType:-->1.0
  </alert>
  <alarm>
    <!--ro, opt, float, 全局报警阈值, range:[,], step:, unit:, unitType:-->1.0
  </alarm>
  <showTempStripEnable>
    <!--ro, opt, bool, 温度条显示使能-->1
  </showTempStripEnable>
  <thermalOpticalTransmittance>
    <!--ro, opt, float, 光学透过率, range:[,], step:, unit:, unitType:-->1.0
  </thermalOpticalTransmittance>
  <externalOpticsWindowCorrection>
    <!--ro, opt, float, 外部光学温度, range:[,], step:, unit:, unitType:-->1.0
  </externalOpticsWindowCorrection>
  <AlertOutputIOPortList>
    <!--ro, opt, array, 测温预警输出端口列表, subType:object, range:[,]-->
    <OutputIOPort>
      <!--ro, opt, object, 测温预警输出端口-->
      <portID>
        <!--ro, req, string, 测温预警输出端口号, range:[,]-->3333
      </portID>
      <enabled>
        <!--ro, req, bool, 测温预警输出端口使能-->true
      </enabled>
    </OutputIOPort>
  </AlertOutputIOPortList>
  <AlarmOutputIOPortList>
    <!--ro, opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
    <OutputIOPort>
      <!--ro, opt, object, 测温报警输出端口-->
      <portID>
        <!--ro, req, string, 测温报警输出端口号, range:[,]-->3333
      </portID>
      <enabled>
        <!--ro, req, bool, 测温报警输出端口使能-->true
      </enabled>
    </OutputIOPort>
  </AlarmOutputIOPortList>
  <alertFilteringTime>
    <!--ro, opt, int, 温度预警等待时间, range:[0,200], step:, unit:s, unitType:-->1
  </alertFilteringTime>
  <alarmFilteringTime>
    <!--ro, opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:-->1
  </alarmFilteringTime>
  <displayMaxTemperatureEnabled>
    <!--ro, opt, bool, 显示最高温-->true
  </displayMaxTemperatureEnabled>
  <displayMinTemperatureEnabled>
    <!--ro, opt, bool, 显示最低温-->true
  </displayMinTemperatureEnabled>
  <displayAverageTemperatureEnabled>
    <!--ro, opt, bool, 显示平均温-->true
  </displayAverageTemperatureEnabled>
  <thermometryInfoDisplayposition>
    <!--ro, opt, enum, 测温信息显示位置, subType:string, [rules_around#跟随规则,top_left_of_screen#屏幕左上角]-->rules_around
  </thermometryInfoDisplayposition>
  <calibrationCoefficientEnabled>
    <!--ro, opt, bool, 启用标定系数使能-->true
  </calibrationCoefficientEnabled>
  <calibrationCoefficient>
    <!--ro, opt, float, 标定系数, range:[,], step:, unit:, unitType:-->0.0
  </calibrationCoefficient>
  <emissivityMode>
    <!--ro, opt, enum, 发射率配置类型, subType:string, [rougher#粗糙0.95,rough#较粗糙0.80,smooth#较光滑0.60,smoother#光滑0.30,customsettings#自定义0.01-1.00]-->rougher
  </emissivityMode>
  <displayTemperatureInOpticalChannelEnabled>
    <!--ro, opt, bool, 可见光通道显示温度信息使能-->true
  </displayTemperatureInOpticalChannelEnabled>
  <displayCentreTemperatureEnabled>
    <!--ro, opt, bool, 显示中心点温度-->true
  </displayCentreTemperatureEnabled>
  <distanceMode>
    <!--ro, opt, enum, 距离模式, subType:string, [selfAdapt#自适应,fixed#固定]-->fixed
  </distanceMode>
  <faceTemperatureInfoUploadEnabled>
    <!--ro, opt, bool, 人脸温度信息报警上传使能, desc:1)报警叠加温度信息关闭,人体测温报警、预警和人脸抓拍报警,设备端这边会上传一个异常值65535,第三方平台接收到这个异常值不显示。 2)报警叠加温度信息开启,人体测温报警、预警和人脸抓拍报警,设备端上传的是真实的温度值-->true
  </faceTemperatureInfoUploadEnabled>
  <calibrationFileVersion>
    <!--ro, opt, string, 标定文件版本信息, range:[,]-->test
  </calibrationFileVersion>
  <alarmInterval>
    <!--ro, opt, int, 测温报警时间间隔配置, range:[1,300], step:, unit:s, unitType:时间-->1
  </alarmInterval>
  <rulesOverlayMode>
    <!--ro, opt, enum, 规则信息图片叠加模式, subType:string, [all#所有规则,alarm#触发报警规则]-->all
  </rulesOverlayMode>
  <toleranceTemperature>
    <!--ro, opt, float, 容差温度, range:[1,5], step:, unit:, unitType:-->1
  </toleranceTemperature>
  <alarmMode>
    <!--ro, opt, enum, 报警模式, subType:string, [temperatureIntervalMeasurement#温度区间检测,alarm_alert#预警/报警]-->temperatureIntervalMeasurement
  </alarmMode>
  <NormalRulesColor>
    <!--ro, opt, object, 正常规则颜色, desc:<alarmMode>=="temperatureIntervalMeasurement"时生效-->
    <R>
      <!--ro, req, int, R, range:[,], step:, unit:, unitType:-->1
    </R>
    <G>
      <!--ro, req, int, G, range:[,], step:, unit:, unitType:-->1
    </G>
    <B>
      <!--ro, req, int, B, range:[,], step:, unit:, unitType:-->1
    </B>
  </NormalRulesColor>
  <NormalTemperatureIntervalMeasurement>
    <!--ro, opt, object, 普通温度区间检测-->
    <alarmType>
      <!--ro, opt, enum, 报警类型, subType:string, [highestTemp#最高温,lowestTemp#最低温]-->highestTemp
    </alarmType>
    <TemperatureIntervalList>
      <!--ro, opt, array, 温度区间列表, subType:object, range:[,], desc:最多四段-->
      <TemperatureInterval>
        <!--ro, opt, object, 温度区间-->
        <id>
          <!--ro, opt, int, 序号, range:[,], step:, unit:, unitType:-->1
        </id>
        <enabled>
          <!--ro, opt, bool, 使能开关-->true
        </enabled>
        <name>
          <!--ro, opt, string, 区间名称, range:[,]-->test
        </name>
        <minTemperature>
          <!--ro, opt, float, 最低温, range:[-20,550], step:, unit:℃, unitType:温度, desc:保留后一位小数点-->0.0
        </minTemperature>
        <maxTemperature>
          <!--ro, opt, float, 最高温, range:[-20,550], step:, unit:℃, unitType:温度-esc:保留后一位小数点-->0.0
        </maxTemperature>
        <AlarmColor>
          <!--ro, opt, object, 温度区间报警颜色-->
          <R>
            <!--ro, req, int, R, range:[,], step:, unit:, unitType:-->1
          </R>
          <G>
            <!--ro, req, int, G, range:[,], step:, unit:, unitType:-->1
          </G>
          <B>
            <!--ro, req, int, B, range:[,], step:, unit:, unitType:-->1
          </B>
        </AlarmColor>
        <AlarmOutputIOPortList>
          <!--ro, opt, array, 报警输出端口列表, subType:object, range:[,]-->
          <OutputIOPort>
            <!--ro, opt, object, 报警输出端口-->
            <portID>
              <!--ro, req, string, 端口号, range:[,]-->test
            </portID>
            <enabled>
              <!--ro, req, bool, 使能-->true
            </enabled>
          </OutputIOPort>
        </AlarmOutputIOPortList>
      </TemperatureInterval>
    </TemperatureIntervalList>
  </NormalTemperatureIntervalMeasurement>
  <SunReflectionBlur>
    <!--ro, opt, object, 太阳反光过滤-->
    <enabled>
      <!--ro, req, bool, 太阳反光过滤使能-->true
    </enabled>
    <sensitivity>
      <!--ro, opt, int, 太阳反光过滤灵敏度, range:[1,100], step:, unit:s, unitType:-->50
    </sensitivity>
    <filterEnabled>
      <!--ro, opt, bool, 是否开启过滤提示, desc:配置OSD显示是否已过滤,提示语仅显示在热成像图像上,内容和位置(右下角)固定,用户不可配置-->true
    </filterEnabled>
  </SunReflectionBlur>
  <VehicleBlur>
    <!--ro, opt, object, 车辆过滤-->
    <enabled>
      <!--ro, req, bool, 车辆过滤使能-->true
    </enabled>
    <sensitiveLevel>
      <!--ro, opt, int, 车辆过滤检测灵敏度等级, range:[0,4], step:, unit:s, unitType:-->4
    </sensitiveLevel>
    <filterEnabled>
      <!--ro, opt, bool, 是否开启过滤提示, desc:配置OSD显示是否已过滤,提示语仅显示在热成像图像上,内容和位置(右下角)固定,用户不可配置-->true
    </filterEnabled>
  </VehicleBlur>
  <TemperatureSuddenChange>
    <!--ro, opt, object, 普通测温模式下温度突变配置-->
    <mode>
      <!--ro, req, enum, 温度突变模式, subType:string, [close#关闭,temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降]-->temperatureSuddenIncrease
    </mode>
    <alarm>
      <!--ro, opt, float, 报警值, range:[0,570], step:, unit:, unitType:, desc:精确到小数点后一位-->0.0
    </alarm>
    <cycleCfg>
      <!--ro, opt, int, 记录周期, range:[5,3600], step:, unit:s, unitType:时间-->60
    </cycleCfg>
  </TemperatureSuddenChange>
</ThermometryBasicParam>

14. 配置人体测温基本参数

14.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam

14.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryBasicParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 基本参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <enabled>
    <!--req, bool, 启用-->true
  </enabled>
  <streamOverlay>
    <!--req, bool, 码流是否叠加温度信息-->true
  </streamOverlay>
  <pictureOverlay>
    <!--req, bool, 抓图是否叠加温度信息-->true
  </pictureOverlay>
  <temperatureRange>
    <!--req, enum, 测温范围, subType:string, [30~45#温度范围30~45,-20~150#温度范围-20~150,0~550#温度范围0~550,0~650#温度范围0~650,-4~302#温度范围-4~302,32~1022#温度范围32~1022,32~1200#温度范围32~1200,-20~650#温度范围-20~650,-20~1500#温度范围-20~1500,automatic#自动,-20~120#温度范围-20~120,20~45#温度范围20~45,20~350#温度范围20~350,30~45#温度范围30~45,100-550#温度范围100-550,28-45#温度范围28-45]-->30~45
  </temperatureRange>
  <temperatureUnit>
    <!--req, enum, 测温单位, subType:string, [degreeCentigrade#摄氏度(℃),degreeFahrenheit#华氏度(华氏度),degreeKelvin#开尔文(K)]-->degreeCentigrade
  </temperatureUnit>
  <temperatureCurve>
    <!--opt, enum, 纵向温度趋势线模式, subType:string, [close#关闭,transverseTemperatureTrend#横向温度趋势线模式,longitudinalTemperatureTrend#纵向温度趋势线模式]-->close
  </temperatureCurve>
  <fireImageMode>
    <!--opt, enum, 消防模式, subType:string, [blackWhite#黑白模式,thermalProbe#热探测模式,fireGround#火场模式]-->blackWhite
  </fireImageMode>
  <emissivity>
    <!--opt, float, 发射率, range:[0.01,1.00], step:, unit:, unitType:-->0.01
  </emissivity>
  <distanceUnit>
    <!--req, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
  <TemperatureColor>
    <!--opt, object, 温度颜色-->
    <type>
      <!--req, enum, 设置类型, subType:string, [highTemperature#高温报警类型,lowTemperature#低温报警类型,rangeTemperature#区间报警类型,heatPreservation#保温报警类型]-->highTemperature
    </type>
    <highTemperature>
      <!--opt, int, 最高温度, range:[-273,10000], step:1, unit:, unitType:-->100
    </highTemperature>
    <lowTemperature>
      <!--opt, int, 最低温度, range:[-273,10000], step:1, unit:, unitType:-->100
    </lowTemperature>
  </TemperatureColor>
  <enviroTemperature>
    <!--opt, int, 环境温度, range:[,], step:, unit:℃,"环境温度", unitType:-->1
  </enviroTemperature>
  <enviroHumidity>
    <!--opt, int, 环境相对湿度, range:[,], step:, unit:%,"环境相对湿度", unitType:-->1
  </enviroHumidity>
  <correctionVolume>
    <!--opt, int, 测温修正量, range:[,], step:, unit:, unitType:-->1
  </correctionVolume>
  <specialPointThermType>
    <!--opt, enum, 特殊测温点显示, subType:string, [centerPoint#中心点测温,highestPoint#最高点测温,lowestPoint#最低点测温,null#不支持]-->lowestPoint
  </specialPointThermType>
  <distance>
    <!--req, int, 距离, range:[,], step:, unit:m,"距离", unitType:-->1
  </distance>
  <reflectiveEnable>
    <!--req, bool, 反射温度使能-->true
  </reflectiveEnable>
  <reflectiveTemperature>
    <!--opt, float, 反射温度, range:[,], step:, unit:, unitType:-->1.0
  </reflectiveTemperature>
  <alert>
    <!--opt, float, 全局预警阈值, range:[,], step:, unit:, unitType:-->1.0
  </alert>
  <alarm>
    <!--opt, float, 全局报警阈值, range:[,], step:, unit:, unitType:-->1.0
  </alarm>
  <showTempStripEnable>
    <!--opt, bool, 温度条显示使能-->1
  </showTempStripEnable>
  <thermalOpticalTransmittance>
    <!--opt, float, 光学透过率, range:[,], step:, unit:, unitType:-->1.0
  </thermalOpticalTransmittance>
  <externalOpticsWindowCorrection>
    <!--opt, float, 外部光学温度, range:[,], step:, unit:, unitType:-->1.0
  </externalOpticsWindowCorrection>
  <AlertOutputIOPortList>
    <!--opt, array, 测温预警输出端口列表, subType:object, range:[,]-->
    <OutputIOPort>
      <!--opt, object, 测温预警输出端口-->
      <portID>
        <!--req, string, 测温预警输出端口号, range:[,]-->3333
      </portID>
      <enabled>
        <!--req, bool, 测温预警输出端口使能-->true
      </enabled>
    </OutputIOPort>
  </AlertOutputIOPortList>
  <AlarmOutputIOPortList>
    <!--opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
    <OutputIOPort>
      <!--opt, object, 测温报警输出端口-->
      <portID>
        <!--req, string, 测温报警输出端口号, range:[,]-->3333
      </portID>
      <enabled>
        <!--req, bool, 测温报警输出端口使能-->true
      </enabled>
    </OutputIOPort>
  </AlarmOutputIOPortList>
  <alertFilteringTime>
    <!--opt, int, 温度预警等待时间, range:[0,200], step:, unit:s, unitType:-->1
  </alertFilteringTime>
  <alarmFilteringTime>
    <!--opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:-->1
  </alarmFilteringTime>
  <displayMaxTemperatureEnabled>
    <!--opt, bool, 显示最高温-->true
  </displayMaxTemperatureEnabled>
  <displayMinTemperatureEnabled>
    <!--opt, bool, 显示最低温-->true
  </displayMinTemperatureEnabled>
  <displayAverageTemperatureEnabled>
    <!--opt, bool, 显示平均温-->true
  </displayAverageTemperatureEnabled>
  <thermometryInfoDisplayposition>
    <!--opt, enum, 测温信息显示位置, subType:string, [rules_around#跟随规则,top_left_of_screen#屏幕左上角]-->rules_around
  </thermometryInfoDisplayposition>
  <calibrationCoefficientEnabled>
    <!--opt, bool, 启用标定系数使能-->true
  </calibrationCoefficientEnabled>
  <calibrationCoefficient>
    <!--opt, float, 标定系数, range:[,], step:, unit:, unitType:-->0.0
  </calibrationCoefficient>
  <emissivityMode>
    <!--opt, enum, 发射率配置类型, subType:string, [rougher#粗糙0.95,rough#较粗糙0.80,smooth#较光滑0.60,smoother#光滑0.30,customsettings#自定义0.01-1.00]-->rougher
  </emissivityMode>
  <displayTemperatureInOpticalChannelEnabled>
    <!--opt, bool, 可见光通道显示温度信息使能-->true
  </displayTemperatureInOpticalChannelEnabled>
  <displayCentreTemperatureEnabled>
    <!--opt, bool, 显示中心点温度-->true
  </displayCentreTemperatureEnabled>
  <distanceMode>
    <!--opt, enum, 距离模式, subType:string, [selfAdapt#自适应,fixed#固定]-->fixed
  </distanceMode>
  <faceTemperatureInfoUploadEnabled>
    <!--opt, bool, 人脸温度信息报警上传使能, desc:1)报警叠加温度信息关闭,人体测温报警、预警和人脸抓拍报警,设备端这边会上传一个异常值65535,第三方平台接收到这个异常值不显示。 2)报警叠加温度信息开启,人体测温报警、预警和人脸抓拍报警,设备端上传的是真实的温度值-->true
  </faceTemperatureInfoUploadEnabled>
  <calibrationFileVersion>
    <!--opt, string, 标定文件版本信息, range:[,]-->test
  </calibrationFileVersion>
  <alarmInterval>
    <!--opt, int, 测温报警时间间隔配置, range:[1,300], step:, unit:s, unitType:时间-->1
  </alarmInterval>
  <rulesOverlayMode>
    <!--opt, enum, 规则信息图片叠加模式, subType:string, [all#所有规则,alarm#触发报警规则]-->all
  </rulesOverlayMode>
  <toleranceTemperature>
    <!--opt, float, 容差温度, range:[1,5], step:, unit:, unitType:-->1
  </toleranceTemperature>
  <alarmMode>
    <!--opt, enum, 报警模式, subType:string, [temperatureIntervalMeasurement#温度区间检测,alarm_alert#预警/报警]-->temperatureIntervalMeasurement
  </alarmMode>
  <NormalRulesColor>
    <!--opt, object, 正常规则颜色, desc:<alarmMode>=="temperatureIntervalMeasurement"时生效-->
    <R>
      <!--req, int, R, range:[,], step:, unit:, unitType:-->1
    </R>
    <G>
      <!--req, int, G, range:[,], step:, unit:, unitType:-->1
    </G>
    <B>
      <!--req, int, B, range:[,], step:, unit:, unitType:-->1
    </B>
  </NormalRulesColor>
  <NormalTemperatureIntervalMeasurement>
    <!--opt, object, 普通温度区间检测-->
    <alarmType>
      <!--opt, enum, 报警类型, subType:string, [highestTemp#最高温,lowestTemp#最低温]-->highestTemp
    </alarmType>
    <TemperatureIntervalList>
      <!--opt, array, 温度区间列表, subType:object, range:[,], desc:最多四段-->
      <TemperatureInterval>
        <!--opt, object, 温度区间-->
        <id>
          <!--opt, int, 序号, range:[,], step:, unit:, unitType:-->1
        </id>
        <enabled>
          <!--opt, bool, 使能开关-->true
        </enabled>
        <name>
          <!--opt, string, 区间名称, range:[,]-->test
        </name>
        <minTemperature>
          <!--opt, float, 最低温, range:[-20,550], step:, unit:℃, unitType:温度, desc:保留后一位小数点-->0.0
        </minTemperature>
        <maxTemperature>
          <!--opt, float, 最高温, range:[-20,550], step:, unit:℃, unitType:温度-esc:保留后一位小数点-->0.0
        </maxTemperature>
        <AlarmColor>
          <!--opt, object, 温度区间报警颜色-->
          <R>
            <!--req, int, R, range:[,], step:, unit:, unitType:-->1
          </R>
          <G>
            <!--req, int, G, range:[,], step:, unit:, unitType:-->1
          </G>
          <B>
            <!--req, int, B, range:[,], step:, unit:, unitType:-->1
          </B>
        </AlarmColor>
        <AlarmOutputIOPortList>
          <!--opt, array, 报警输出端口列表, subType:object, range:[,]-->
          <OutputIOPort>
            <!--opt, object, 报警输出端口-->
            <portID>
              <!--req, string, 端口号, range:[,]-->test
            </portID>
            <enabled>
              <!--req, bool, 使能-->true
            </enabled>
          </OutputIOPort>
        </AlarmOutputIOPortList>
      </TemperatureInterval>
    </TemperatureIntervalList>
  </NormalTemperatureIntervalMeasurement>
  <SunReflectionBlur>
    <!--opt, object, 太阳反光过滤-->
    <enabled>
      <!--req, bool, 太阳反光过滤使能-->true
    </enabled>
    <sensitivity>
      <!--opt, int, 太阳反光过滤灵敏度, range:[1,100], step:, unit:s, unitType:-->50
    </sensitivity>
    <filterEnabled>
      <!--opt, bool, 是否开启过滤提示, desc:配置OSD显示是否已过滤,提示语仅显示在热成像图像上,内容和位置(右下角)固定,用户不可配置-->true
    </filterEnabled>
  </SunReflectionBlur>
  <VehicleBlur>
    <!--opt, object, 车辆过滤-->
    <enabled>
      <!--req, bool, 车辆过滤使能-->true
    </enabled>
    <sensitiveLevel>
      <!--opt, int, 车辆过滤检测灵敏度等级, range:[0,4], step:, unit:s, unitType:-->4
    </sensitiveLevel>
    <filterEnabled>
      <!--opt, bool, 是否开启过滤提示, desc:配置OSD显示是否已过滤,提示语仅显示在热成像图像上,内容和位置(右下角)固定,用户不可配置-->true
    </filterEnabled>
  </VehicleBlur>
  <TemperatureSuddenChange>
    <!--opt, object, 普通测温模式下温度突变报警配置-->
    <mode>
      <!--req, enum, 温度突变模式, subType:string, [close#关闭,temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降]-->temperatureSuddenIncrease
    </mode>
    <alarm>
      <!--opt, float, 报警值, range:[0,570], step:, unit:, unitType:, desc:精确到小数点后一位-->0.0
    </alarm>
    <cycleCfg>
      <!--opt, int, 记录周期, range:[5,3600], step:, unit:s, unitType:时间-->60
    </cycleCfg>
  </TemperatureSuddenChange>
</ThermometryBasicParam>

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->/ISAPI/xxxx
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

15. 获取测温模式能力

15.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometryMode/capabilities

15.2 输入参数

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 测温模式配置信息, attr:version{opt, string, 未定义, range:[,]}-->
  <mode opt="normal,expert,AI" def="normal">
    <!--ro, req, enum, 测温模式, subType:string, [normal#普通,expert#专家,AI#AI测温], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->normal
  </mode>
  <thermometryROIEnabled opt="true,false">
    <!--ro, opt, bool, 测温ROI使能, attr:opt{req, string, 取值范围, range:[,]}, desc:测温ROI使能-->true
  </thermometryROIEnabled>
</ThermometryMode>

16. 获取测温模式

16.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometryMode

16.2 输入参数

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 测温模式配置信息, attr:version{opt, string, 未定义, range:[,]}-->
  <mode>
    <!--ro, req, enum, 测温模式, subType:string, [normal#普通,expert#专家,AI#AI测温]-->normal
  </mode>
  <thermometryROIEnabled>
    <!--ro, opt, bool, 测温ROI使能, desc:测温ROI使能-->true
  </thermometryROIEnabled>
</ThermometryMode>

17. 配置测温模式

17.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermometryMode

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 测温模式配置信息, attr:version{opt, string, 未定义, range:[,]}-->
  <mode>
    <!--req, enum, 测温模式, subType:string, [normal#普通,expert#专家,AI#AI测温], desc:"normal,expert,AI", 测温模式,依次为:普通,专家,AI测温-->normal
  </mode>
  <thermometryROIEnabled>
    <!--opt, bool, 测温ROI使能, desc:测温ROI使能-->true
  </thermometryROIEnabled>
</ThermometryMode>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->/ISAPI/xxxx
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

18. 获取热成像智能调度能力

18.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermIntell/capabilities

18.2 输入参数

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermIntell xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 热成像智能互斥能力, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <intellType opt="thermometryAndSmart,shipsDetection,fireDetection,pip,faceThermometry,thermometryAndSmokeFireDetection,thermometryAndFireDetection,thermometryAndOpenPlatForm,basicBehavior,thermometry,thermometryAndFireDetectionAndAIOpenPlatForm" def="thermometryAndSmart">
    <!--ro, req, string, 智能功能资源配置类型, range:[,], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:thermometryAndSmart-测温+异常行为识别(默认), shipsDetection-船只检测,fireDetection-火点检测, pip-画中画功能, faceThermometry-人脸测温,thermometryAndSmokeFireDetection-测温+烟火检测,thermometryAndFireDetection-测温+火点检测, basicBehavior-异常行为识别, thermometry-测温,thermometryAndFireDetectionAndAIOpenPlatForm-测温+火点检测+AI开放平-->thermometryAndSmart
  </intellType>
</ThermIntell>

19. 获取热成像智能调度参数

19.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermIntell

19.2 输入参数

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermIntell xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 热成像智能互斥配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <intellType>
    <!--ro, req, enum, 智能类型, subType:string, [thermometryAndSmart#测温+异常行为识别(默认),shipsDetection#船只检测,fireDetection#火点检测,pip#画中画功能,faceThermometry#人脸测温,thermometryAndSmokeFireDetection#测温+烟火检测,thermometryAndFireDetection#测温+火点检测,basicBehavior#异常行为识别,thermometry#测温,thermometryAndFireDetectionAndAIOpenPlatForm#测温+火点检测+AI开放平台]-->thermometryAndSmart
  </intellType>
</ThermIntell>

20. 配置热成像智能调度参数

20.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermIntell

20.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermIntell xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 热成像智能互斥配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <intellType>
    <!--req, enum, 智能类型, subType:string, [thermometryAndSmart#测温+异常行为识别(默认),shipsDetection#船只检测,fireDetection#火点检测,pip#画中画功能,faceThermometry#人脸测温,thermometryAndFireDetectionAndAIOpenPlatForm#测温+火点检测+AI开放平台]-->thermometryAndSmart
  </intellType>
</ThermIntell>

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

21. 获取预置点关联信息参数能力

21.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/capabilities

21.2 输入参数

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryScene xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 预置点关联信息参数, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--ro, req, object, 坐标归一化-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ThermometryRegionList size="10">
    <!--ro, opt, array, 区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <ThermometryRegion>
      <!--ro, opt, object, 区域-->
      <id min="1" max="40">
        <!--ro, req, int, 通道号, range:[1,40], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </id>
      <enabled opt="true,false">
        <!--ro, req, bool, 是否使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <name min="0" max="32">
        <!--ro, req, string, 规则名称, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </name>
      <emissivity min="0.01" max="1.00">
        <!--ro, req, float, 发射率, range:[0.00,1.00], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </emissivity>
      <distance min="0" max="10000">
        <!--ro, req, int, 距离, range:[0,100], step:, unit:m, unitType:长度, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </distance>
      <reflectiveEnable opt="true,false">
        <!--ro, req, bool, 反射温度使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </reflectiveEnable>
      <reflectiveTemperature min="0" max="10">
        <!--ro, opt, float, 反射温度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </reflectiveTemperature>
      <type opt="point,region,line">
        <!--ro, req, enum, 规则标定类型, subType:string, [point#点,region#框,line#线], attr:opt{req, string, 取值范围, range:[,]}-->point
      </type>
      <Point>
        <!--ro, opt, object, 点测温, desc:显示平均温度-->
        <TempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 温度值, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </TempValue>
        <CalibratingCoordinates>
          <!--ro, opt, object, 标定点, desc:左下角为坐标原点-->
          <positionX min="0" max="1000">
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
          </positionX>
          <positionY min="0" max="1000">
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
          </positionY>
        </CalibratingCoordinates>
      </Point>
      <Region>
        <!--ro, opt, object, 框测温, desc:显示最高温、最低温、平均温、温差-->
        <highestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </highestTempValue>
        <lowestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </lowestTempValue>
        <averageTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 平均温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </averageTempValue>
        <diffTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 温差, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </diffTempValue>
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 框的区域坐标点列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[3,10], step:, unit:, unitType:}, desc:左下角为坐标原点-->
          <RegionCoordinates>
            <!--ro, opt, object, 框的区域坐标点-->
            <positionX min="0" max="1000">
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionX>
            <positionY min="0" max="1000">
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <Line>
        <!--ro, opt, object, 线测温, desc:显示最高温、最低温-->
        <highestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </highestTempValue>
        <lowestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </lowestTempValue>
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 线的端点坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:左下角为坐标原点-->
          <RegionCoordinates>
            <!--ro, opt, object, 坐标点-->
            <positionX min="0" max="1000">
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionX>
            <positionY min="0" max="1000">
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Line>
      <distanceUnit opt="meter,feet,centimeter">
        <!--ro, opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米], attr:opt{req, string, 取值范围, range:[,]}-->meter
      </distanceUnit>
      <emissivityMode opt="rougher,rough,smooth,smoother,customsettings">
        <!--ro, opt, enum, 发射率配置类型, subType:string, [rougher#粗糙,rough#较粗糙,smooth#较光滑,smoother#光滑,customsettings#自定义], attr:opt{req, string, 取值范围, range:[,]}-->rougher
      </emissivityMode>
      <RegionBoundary>
        <!--ro, opt, object, 规则区域边界-->
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:左下角为坐标原点-->
          <RegionCoordinates>
            <!--ro, opt, object, 区域-->
            <positionX min="0" max="1000">
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionX>
            <positionY min="0" max="1000">
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </RegionBoundary>
      <regionMode>
        <!--ro, opt, enum, 规则区域模式, subType:string, [polygon#多边形,rect#矩形]-->polygon
      </regionMode>
    </ThermometryRegion>
    <maxPointNum>
      <!--ro, req, int, 设备支持的点规则配置最大值, range:[,], step:, unit:, unitType:-->0
    </maxPointNum>
    <maxLineNum>
      <!--ro, req, int, 设备支持的线规则配置最大值, range:[,], step:, unit:, unitType:-->0
    </maxLineNum>
    <maxRegionNum>
      <!--ro, req, int, 设备支持的框规则配置最大值, range:[,], step:, unit:, unitType:-->0
    </maxRegionNum>
  </ThermometryRegionList>
  <ThermalFOVRegion>
    <!--ro, opt, object, 热成像视域-->
    <RegionCoordinatesList size="10">
      <!--ro, opt, array, 区域列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 区域, desc:左上角为坐标原点-->
        <positionX min="0" max="1000">
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </positionX>
        <positionY min="0" max="1000">
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </ThermalFOVRegion>
</ThermometryScene>

22. 获取预置点关联信息参数

22.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>

22.2 输入参数

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryScene xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 预置点关联信息参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <normalizedScreenSize>
    <!--ro, req, object, 坐标归一化-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ThermometryRegionList>
    <!--ro, opt, array, 区域列表, subType:object, range:[,]-->
    <ThermometryRegion>
      <!--ro, opt, object, 区域-->
      <id>
        <!--ro, req, int, 通道号, range:[1,40], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--ro, req, bool, 是否使能-->true
      </enabled>
      <name>
        <!--ro, req, string, 规则名称, range:[0,32]-->test
      </name>
      <emissivity>
        <!--ro, req, float, 发射率, range:[0.00,1.00], step:, unit:, unitType:-->0.000
      </emissivity>
      <distance>
        <!--ro, req, int, 距离, range:[0,100], step:, unit:m, unitType:长度-->0
      </distance>
      <reflectiveEnable>
        <!--ro, req, bool, 反射温度使能-->true
      </reflectiveEnable>
      <reflectiveTemperature>
        <!--ro, opt, float, 反射温度, range:[,], step:, unit:, unitType:-->0.000
      </reflectiveTemperature>
      <type>
        <!--ro, req, enum, 规则标定类型, subType:string, [point#点,region#框,line#线]-->point
      </type>
      <Point>
        <!--ro, opt, object, 点测温, desc:显示平均温度-->
        <TempValue>
          <!--ro, opt, float, 温度值, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </TempValue>
        <CalibratingCoordinates>
          <!--ro, opt, object, 标定点, desc:左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </CalibratingCoordinates>
      </Point>
      <Region>
        <!--ro, opt, object, 框测温, desc:显示最高温、最低温、平均温、温差-->
        <highestTempValue>
          <!--ro, opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </highestTempValue>
        <lowestTempValue>
          <!--ro, opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </lowestTempValue>
        <averageTempValue>
          <!--ro, opt, float, 平均温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </averageTempValue>
        <diffTempValue>
          <!--ro, opt, float, 温差, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </diffTempValue>
        <RegionCoordinatesList>
          <!--ro, opt, array, 框的区域坐标点列表, subType:object, range:[3,10]-->
          <RegionCoordinates>
            <!--ro, opt, object, 框的区域坐标点, desc:左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <distanceUnit>
        <!--ro, opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
      </distanceUnit>
      <emissivityMode opt="rougher,rough,smooth,smoother,customsettings">
        <!--ro, opt, enum, 发射率配置类型, subType:string, [rougher#粗糙,rough#较粗糙,smooth#较光滑,smoother#光滑,customsettings#自定义], attr:opt{req, string, 取值范围, range:[,]}-->rougher
      </emissivityMode>
    </ThermometryRegion>
  </ThermometryRegionList>
</ThermometryScene>

23. 配置预置点关联信息参数

23.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>

23.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryScene xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 预置点关联信息参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <normalizedScreenSize>
    <!--req, object, 坐标归一化-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ThermometryRegionList>
    <!--opt, array, 区域列表, subType:object, range:[,]-->
    <ThermometryRegion>
      <!--opt, object, 区域-->
      <id>
        <!--req, int, 通道号, range:[1,40], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--req, bool, 是否使能-->true
      </enabled>
      <name>
        <!--req, string, 规则名称, range:[0,32]-->test
      </name>
      <emissivity>
        <!--req, float, 发射率, range:[0.00,1.00], step:, unit:, unitType:-->0.000
      </emissivity>
      <distance>
        <!--req, int, 距离, range:[0,100], step:, unit:m, unitType:长度-->0
      </distance>
      <reflectiveEnable>
        <!--req, bool, 反射温度使能-->true
      </reflectiveEnable>
      <reflectiveTemperature>
        <!--opt, float, 反射温度, range:[,], step:, unit:, unitType:-->0.000
      </reflectiveTemperature>
      <type>
        <!--req, enum, 规则标定类型, subType:string, [point#点,region#框,line#线]-->point
      </type>
      <Point>
        <!--opt, object, 点测温, desc:显示平均温度-->
        <TempValue>
          <!--opt, float, 温度值, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </TempValue>
        <CalibratingCoordinates>
          <!--opt, object, 标定点, desc:左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </CalibratingCoordinates>
      </Point>
      <Region>
        <!--opt, object, 框测温, desc:显示最高温、最低温、平均温、温差-->
        <highestTempValue>
          <!--opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </highestTempValue>
        <lowestTempValue>
          <!--opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </lowestTempValue>
        <averageTempValue>
          <!--opt, float, 平均温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </averageTempValue>
        <diffTempValue>
          <!--opt, float, 温差, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </diffTempValue>
        <RegionCoordinatesList>
          <!--opt, array, 框的区域坐标点列表, subType:object, range:[3,10]-->
          <RegionCoordinates>
            <!--opt, object, 框的区域坐标点, desc:左下角为坐标原点-->
            <positionX>
              <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <distanceUnit>
        <!--opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
      </distanceUnit>
      <emissivityMode opt="rougher,rough,smooth,smoother,customsettings">
        <!--opt, enum, 发射率配置类型, subType:string, [rougher#粗糙,rough#较粗糙,smooth#较光滑,smoother#光滑,customsettings#自定义], attr:opt{req, string, 取值范围, range:[,]}-->rougher
      </emissivityMode>
    </ThermometryRegion>
  </ThermometryRegionList>
</ThermometryScene>

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

24. 获取报警规则参数能力

24.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/alarmRules/capabilities

24.2 输入参数

24.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryAlarmRule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 报警规则参数, attr:version{req, string, 协议版本, range:[,]}-->
  <ThermometryAlarmModeList size="10">
    <!--ro, req, array, 测温预置点报警规则配置参数列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <ThermometryAlarmMode>
      <!--ro, opt, object, 测温预置点报警规则配置参数-->
      <id min="0" max="10">
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </id>
      <enabled opt="true,false">
        <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <name min="0" max="32">
        <!--ro, req, string, 规则名称, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </name>
      <pointRule opt="averageGreater,averageLess" def="averageGreater">
        <!--ro, req, enum, 点测温的报警温度比较方式, subType:string, [averageGreater#平均温大于(默认),averageLess#平均温小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->averageGreater
      </pointRule>
      <lineRule opt="highestGreater,highestLess,lowestGreater,lowestLess,averageGreater,averageLess" def="averageGreater">
        <!--ro, req, enum, 线测温的报警温度比较方式, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->highestGreater
      </lineRule>
      <regionRule opt="highestGreater,highestLess,lowestGreater,lowestLess,averageGreater,averageLess,diffTempGreater,diffTempLess" def="averageGreater">
        <!--ro, req, enum, 框测温的报警温度比较方式, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->highestGreater
      </regionRule>
      <alert min="0" max="32">
        <!--ro, req, float, 预警温度, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </alert>
      <alarm min="0" max="32">
        <!--ro, req, float, 报警温度, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </alarm>
      <threshold min="0" max="32">
        <!--ro, req, float, 门限温度, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </threshold>
      <isSupportAlertOutputIOPortList>
        <!--ro, opt, bool, 是否支持IO输出预警-->true
      </isSupportAlertOutputIOPortList>
      <isSupportAlarmOutputIOPortList>
        <!--ro, opt, bool, 是否支持IO输出报警-->true
      </isSupportAlarmOutputIOPortList>
      <alertFilteringTime min="0" max="200" default="0">
        <!--ro, opt, int, 温度预警等待时间, range:[0,200], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->0
      </alertFilteringTime>
      <alarmFilteringTime min="0" max="200" default="0">
        <!--ro, opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->0
      </alarmFilteringTime>
      <visibleLightLinkageEnabled opt="true,false">
        <!--ro, opt, bool, 可见光联动, attr:opt{req, string, 取值范围, range:[,]}-->true
      </visibleLightLinkageEnabled>
      <TemperatureSuddenChange>
        <!--ro, opt, object, 温度突变-->
        <mode opt="close,temperatureSuddenIncrease,temperatureSuddenDecrease">
          <!--ro, req, enum, 温度突变模式, subType:string, [temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降], attr:opt{req, string, 取值范围, range:[,]}-->temperatureSuddenIncrease
        </mode>
        <cycle opt="1,5,10,30,60">
          <!--ro, opt, int, 记录周期, range:[,], step:, unit:s, unitType:时间, attr:opt{req, string, 取值范围, range:[,]}-->0
        </cycle>
        <alert min="0" max="10">
          <!--ro, opt, float, 预警值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </alert>
        <alarm min="0" max="570">
          <!--ro, opt, float, 报警值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </alarm>
        <cycleCfg min="5" max="3600">
          <!--ro, opt, int, 记录周期(可配置方式), range:[5,3600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->60
        </cycleCfg>
      </TemperatureSuddenChange>
    </ThermometryAlarmMode>
  </ThermometryAlarmModeList>
  <TemperatureDifferenceComparisonList size="10">
    <!--ro, req, array, 测温预置点温差规则配置参数列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TemperatureDifferenceComparison>
      <!--ro, opt, object, 测温预置点温差规则配置参数-->
      <id min="0" max="10">
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </id>
      <enabled opt="true,false">
        <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <ruleID1 min="0" max="10">
        <!--ro, req, string, 报警点1, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </ruleID1>
      <ruleID2 min="0" max="10">
        <!--ro, req, string, 报警点2, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </ruleID2>
      <pointRule opt="averageGreater,averageLess" def="averageGreater">
        <!--ro, req, enum, 点测温的报警温度比较方式, subType:string, [averageGreater#平均温大于(默认),averageLess#平均温小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->averageGreater
      </pointRule>
      <lineRule opt="highestGreater,highestLess,lowestGreater,lowestLess,averageGreater,averageLess" def="averageGreater">
        <!--ro, req, enum, 线测温的报警温度比较方式, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->highestGreater
      </lineRule>
      <regionRule opt="highestGreater,highestLess,lowestGreater,lowestLess,averageGreater,averageLess,diffTempGreater,diffTempLess" def="averageGreater">
        <!--ro, req, enum, 框测温的报警温度比较方式, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->highestGreater
      </regionRule>
      <temperatureDifference min="0" max="32">
        <!--ro, req, float, 温差值, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </temperatureDifference>
      <isSupportAlarmOutputIOPortList>
        <!--ro, opt, bool, 是否支持IO输出报警-->true
      </isSupportAlarmOutputIOPortList>
      <alarmFilteringTime min="0" max="200" default="0">
        <!--ro, opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->0
      </alarmFilteringTime>
      <alert min="0" max="32">
        <!--ro, req, float, 温差预警温度, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </alert>
      <alarm min="0" max="32">
        <!--ro, req, float, 温差报警温度, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </alarm>
    </TemperatureDifferenceComparison>
  </TemperatureDifferenceComparisonList>
</ThermometryAlarmRule>

25. 获取报警规则参数

25.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/alarmRules

25.2 输入参数

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryAlarmRule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 报警规则参数, attr:version{req, string, 协议版本, range:[,]}-->
  <ThermometryAlarmModeList>
    <!--ro, req, array, 测温预置点报警规则配置参数列表, subType:object, range:[,]-->
    <ThermometryAlarmMode>
      <!--ro, opt, object, 测温预置点报警规则配置参数-->
      <id>
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <name>
        <!--ro, req, string, 规则名称, range:[0,32]-->test
      </name>
      <rule>
        <!--ro, req, enum, 规则, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于]-->highestGreater
      </rule>
      <alert>
        <!--ro, req, float, 预警温度, range:[0,32], step:, unit:, unitType:-->0.000
      </alert>
      <alarm>
        <!--ro, req, float, 报警温度, range:[0,32], step:, unit:, unitType:-->0.000
      </alarm>
      <threshold>
        <!--ro, req, float, 门限温度, range:[0,32], step:, unit:, unitType:-->0.000
      </threshold>
      <AlertOutputIOPortList>
        <!--ro, opt, array, 测温预警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--ro, opt, object, 测温预警输出端口-->
          <portID>
            <!--ro, req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--ro, req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlertOutputIOPortList>
      <AlarmOutputIOPortList>
        <!--ro, opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--ro, opt, object, 测温报警输出端口-->
          <portID>
            <!--ro, req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--ro, req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlarmOutputIOPortList>
      <alertFilteringTime>
        <!--ro, opt, int, 温度预警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alertFilteringTime>
      <alarmFilteringTime>
        <!--ro, opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alarmFilteringTime>
      <visibleLightLinkageEnabled>
        <!--ro, opt, bool, 可见光联动-->true
      </visibleLightLinkageEnabled>
      <TemperatureSuddenChange>
        <!--ro, opt, object, 温度突变-->
        <mode>
          <!--ro, req, enum, 温度突变模式, subType:string, [temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降]-->temperatureSuddenIncrease
        </mode>
        <cycle>
          <!--ro, opt, enum, 记录周期, subType:int, [1#1s,5#5s,10#10s,30#30s,60#60s]-->1
        </cycle>
        <alert>
          <!--ro, opt, float, 预警值, range:[,], step:, unit:, unitType:-->0.000
        </alert>
        <alarm>
          <!--ro, opt, float, 报警值, range:[0,570], step:, unit:, unitType:-->0.000
        </alarm>
        <cycleCfg>
          <!--ro, opt, int, 记录周期(可配置方式), range:[5,3600], step:, unit:s, unitType:时间-->60
        </cycleCfg>
      </TemperatureSuddenChange>
    </ThermometryAlarmMode>
  </ThermometryAlarmModeList>
  <TemperatureDifferenceComparisonList>
    <!--ro, req, array, 测温预置点温差规则配置参数列表, subType:object, range:[,]-->
    <TemperatureDifferenceComparison>
      <!--ro, opt, object, 测温预置点温差规则配置参数-->
      <id>
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <ruleID1>
        <!--ro, req, string, 报警点1, range:[,]-->test
      </ruleID1>
      <ruleID2>
        <!--ro, req, string, 报警点2, range:[,]-->test
      </ruleID2>
      <rule>
        <!--ro, req, enum, 规则, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于]-->highestGreater
      </rule>
      <temperatureDifference>
        <!--ro, req, float, 温差值, range:[0,32], step:, unit:, unitType:-->0.000
      </temperatureDifference>
      <AlarmOutputIOPortList>
        <!--ro, opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--ro, opt, object, 测温报警输出端口-->
          <portID>
            <!--ro, req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--ro, req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlarmOutputIOPortList>
      <alarmFilteringTime>
        <!--ro, opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alarmFilteringTime>
    </TemperatureDifferenceComparison>
  </TemperatureDifferenceComparisonList>
</ThermometryAlarmRule>

26. 配置报警规则参数

26.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/alarmRules

26.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryAlarmRule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 报警规则参数, attr:version{req, string, 协议版本, range:[,]}-->
  <ThermometryAlarmModeList>
    <!--req, array, 测温预置点报警规则配置参数列表, subType:object, range:[,]-->
    <ThermometryAlarmMode>
      <!--opt, object, 测温预置点报警规则配置参数-->
      <id>
        <!--req, int, 规则ID, range:[,], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <name>
        <!--req, string, 规则名称, range:[0,32]-->test
      </name>
      <rule>
        <!--req, enum, 规则, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于]-->highestGreater
      </rule>
      <alert>
        <!--req, float, 预警温度, range:[0,32], step:, unit:, unitType:-->0.000
      </alert>
      <alarm>
        <!--req, float, 报警温度, range:[0,32], step:, unit:, unitType:-->0.000
      </alarm>
      <threshold>
        <!--req, float, 门限温度, range:[0,32], step:, unit:, unitType:-->0.000
      </threshold>
      <AlertOutputIOPortList>
        <!--opt, array, 测温预警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--opt, object, 测温预警输出端口-->
          <portID>
            <!--req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlertOutputIOPortList>
      <AlarmOutputIOPortList>
        <!--opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--opt, object, 测温报警输出端口-->
          <portID>
            <!--req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlarmOutputIOPortList>
      <alertFilteringTime>
        <!--opt, int, 温度预警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alertFilteringTime>
      <alarmFilteringTime>
        <!--opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alarmFilteringTime>
      <visibleLightLinkageEnabled>
        <!--opt, bool, 可见光联动-->true
      </visibleLightLinkageEnabled>
      <TemperatureSuddenChange>
        <!--opt, object, 温度突变-->
        <mode>
          <!--req, enum, 温度突变模式, subType:string, [temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降]-->temperatureSuddenIncrease
        </mode>
        <cycle>
          <!--opt, enum, 记录周期, subType:int, [1#1s,5#5s,10#10s,30#30s,60#60s]-->1
        </cycle>
        <alert>
          <!--opt, float, 预警值, range:[,], step:, unit:, unitType:-->0.000
        </alert>
        <alarm>
          <!--opt, float, 报警值, range:[0,570], step:, unit:, unitType:-->0.000
        </alarm>
        <cycleCfg>
          <!--opt, int, 记录周期(可配置方式), range:[5,3600], step:, unit:s, unitType:时间-->60
        </cycleCfg>
      </TemperatureSuddenChange>
    </ThermometryAlarmMode>
  </ThermometryAlarmModeList>
  <TemperatureDifferenceComparisonList>
    <!--req, array, 测温预置点温差规则配置参数列表, subType:object, range:[,]-->
    <TemperatureDifferenceComparison>
      <!--opt, object, 测温预置点温差规则配置参数-->
      <id>
        <!--req, int, 规则ID, range:[,], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <ruleID1>
        <!--req, string, 报警点1, range:[,]-->test
      </ruleID1>
      <ruleID2>
        <!--req, string, 报警点2, range:[,]-->test
      </ruleID2>
      <rule>
        <!--req, enum, 规则, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于]-->highestGreater
      </rule>
      <temperatureDifference>
        <!--req, float, 温差值, range:[0,32], step:, unit:, unitType:-->0.000
      </temperatureDifference>
      <AlarmOutputIOPortList>
        <!--opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--opt, object, 测温报警输出端口-->
          <portID>
            <!--req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlarmOutputIOPortList>
      <alarmFilteringTime>
        <!--opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alarmFilteringTime>
    </TemperatureDifferenceComparison>
  </TemperatureDifferenceComparisonList>
</ThermometryAlarmRule>

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

27. 获取温度检测联动参数

27.1 命令

GET /ISAPI/Event/triggers/thermometry-<channelID>/preset/<presetID>

27.2 输入参数

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->thermometry-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->thermometry
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟随,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO输出端口ID, range:[,]-->test
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--ro, opt, string, 动态IO输出端口ID, range:[,]-->test
      </dynOutputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容,可以是预置点号,巡航路径号,花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--ro, opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

28. 配置温度检测联动参数

28.1 命令

PUT /ISAPI/Event/triggers/thermometry-<channelID>/preset/<presetID>

28.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->thermometry-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->thermometry
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟随,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO输出端口ID, range:[,]-->test
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--opt, string, 动态IO输出端口ID, range:[,]-->test
      </dynOutputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容,可以是预置点号,巡航路径号,花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

29. 获取温度检测单个通道布防时间参数

29.1 命令

GET /ISAPI/Event/schedules/thermometry/thermometry-<channelID>

29.2 输入参数

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为:事件类型-通道号-->thermometry-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->thermometry
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

30. 配置温度检测单个通道布防时间参数

30.1 命令

PUT /ISAPI/Event/schedules/thermometry/thermometry-<channelID>

30.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为:事件类型-通道号-->thermometry-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->thermometry
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

31. 获取温差检测单个通道布防时间参数

31.1 命令

GET /ISAPI/Event/schedules/temperature/temperature-<channelID>

31.2 输入参数

31.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为:事件类型-通道号-->temperature-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->temperature
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

32. 配置温差检测单个通道布防时间参数

32.1 命令

PUT /ISAPI/Event/schedules/temperature/temperature-<channelID>

32.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为:事件类型-通道号-->temperature-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->temperature
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

32.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

33. 获取人体测温能力

33.1 命令

GET /ISAPI/Thermal/channels/<channelID>/faceThermometry/capabilities

33.2 输入参数

33.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceThermometry xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人体测温能力, attr:version{req, string, 协议版本, range:[,]}-->
  <faceThermometryEnabled opt="true,false">
    <!--ro, opt, bool, 人脸测温功能使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </faceThermometryEnabled>
  <thermometryShowEnabled opt="true,false">
    <!--ro, opt, bool, 温度信息通过OSD叠加方式显示位置使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </thermometryShowEnabled>
  <alarmEnabled opt="true,false">
    <!--ro, opt, bool, 是否开启报警订阅, attr:opt{req, string, 取值范围, range:[,]}-->true
  </alarmEnabled>
  <alarmIntervalTime min="0.5" max="600" def="1">
    <!--ro, opt, float, 报警间隔时间, range:[0.5,600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0.5
  </alarmIntervalTime>
  <normalizedScreenSize>
    <!--ro, req, object, 设备返回的归一化坐标倍数-->
    <normalizedScreenWidth>
      <!--ro, req, int, 设备返回的归一化坐标宽度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 设备返回的归一化坐标高度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FaceThermometryRegionList size="1">
    <!--ro, opt, array, 人脸测温规则列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <ThermometryRegion>
      <!--ro, opt, object, 人脸测温单一规则-->
      <id min="1" max="40">
        <!--ro, req, int, 规则ID, range:[1,40], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </id>
      <name min="0" max="32">
        <!--ro, opt, string, 规则名称, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </name>
      <sensitivity min="1" max="5" def="3">
        <!--ro, req, int, 灵敏度, range:[1,5], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:归一化值-->1
      </sensitivity>
      <PupilParam>
        <!--ro, req, object, 瞳孔参数-->
        <pupilDistance min="42" max="1000">
          <!--ro, req, int, 瞳距范围, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:归一化值-->1
        </pupilDistance>
        <Region>
          <!--ro, opt, object, 瞳孔区域-->
          <RegionCoordinatesList size="10">
            <!--ro, req, array, 区域顶点列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
            <RegionCoordinates>
              <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--ro, req, int, X轴坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--ro, req, int, Y轴坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </PupilParam>
      <MaxPupilParam>
        <!--ro, opt, object, 最大瞳距-->
        <pupilDistance min="10" max="625">
          <!--ro, opt, int, 瞳距范围, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </pupilDistance>
        <Region>
          <!--ro, opt, object, 规则区域-->
          <RegionCoordinatesList size="10">
            <!--ro, req, array, 区域顶点列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
            <RegionCoordinates>
              <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--ro, req, int, X轴坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--ro, req, int, Y轴坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </MaxPupilParam>
      <targetSpeed min="1" max="5" def="3">
        <!--ro, req, int, 目标生成速度, range:[1,5], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:归一化值-->1
      </targetSpeed>
      <alarmTemperature min="-20.0" max="60.0">
        <!--ro, opt, float, 报警温度, range:[-20.0,60.0], step:, unit:℃, unitType:温度, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}-->36.7
      </alarmTemperature>
      <type opt="region">
        <!--ro, req, enum, 规则类型, subType:string, [region#区域], attr:opt{req, string, 取值范围, range:[,]}-->region
      </type>
      <Region>
        <!--ro, opt, object, 规则区域-->
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域顶点列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
          <RegionCoordinates>
            <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, X轴坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, Y轴坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <RegionBoundary>
        <!--ro, opt, object, 规则区域最大可配置边界-->
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域顶点列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
          <RegionCoordinates>
            <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, X轴坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, Y轴坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </RegionBoundary>
      <alarmRule opt="highestGreater,highestLess">
        <!--ro, opt, enum, 报警规则, subType:string, [highestGreater#最高温度大于预定值,highestLess#最高温度小于预定值], attr:opt{req, string, 取值范围, range:[,]}-->highestGreater
      </alarmRule>
      <alert min="-100.0" max="1000.000">
        <!--ro, opt, float, 全局预警阈值, range:[-100.0,1000.0], step:, unit:℃, unitType:温度, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}-->36.7
      </alert>
    </ThermometryRegion>
  </FaceThermometryRegionList>
  <isSupportFaceThermDetectionInfo>
    <!--ro, opt, bool, 是否支持人脸测温检测结果获取-->true
  </isSupportFaceThermDetectionInfo>
  <imageQuality opt="high,medium,low">
    <!--ro, opt, enum, 抓图质量, subType:string, [high#高,medium#中,low#低], attr:opt{req, string, 取值范围, range:[,]}-->high
  </imageQuality>
  <mode opt="barrierPassing,targeting">
    <!--ro, opt, enum, 人体测温模式, subType:string, [barrierPassing#通关,targeting#筛查], attr:opt{req, string, 取值范围, range:[,]}-->barrierPassing
  </mode>
  <faceSnapUploadEnabled opt="true,false">
    <!--ro, opt, bool, 人脸抓拍上传使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </faceSnapUploadEnabled>
  <maxTemperatureCoordinatesEnabled opt="true,false">
    <!--ro, opt, bool, 最高温位置显示(在码流私有包中叠加), attr:opt{req, string, 取值范围, range:[,]}-->true
  </maxTemperatureCoordinatesEnabled>
  <faceRectShowEnabled opt="true,false">
    <!--ro, opt, bool, 人脸框叠加使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </faceRectShowEnabled>
  <faceTemperatureShowEnabled opt="true,false">
    <!--ro, opt, bool, 人脸温度叠加使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </faceTemperatureShowEnabled>
  <detectionMode opt="forehead,comprehensiveness" def="test">
    <!--ro, opt, enum, 人体测温检测模式, subType:string, [forehead#额头检测,comprehensiveness#综合检测], attr:opt{req, string, 取值范围, range:[,]},def{req, string, 默认值, range:[,]}, 
desc:综合检测:人体测温结果由额头测温和眼角测温共同决定。室外温度很低会造成额头温度很低且恢复速度缓慢,此时会出现检测出体温过低的情况,因此需要切换为综合检测。
     额头检测:人体测温始终使用额头区域进行测温。在较热的环境,眼角温度会过高,容易发生体温过高误报,此时需切换为额头检测。-->comprehensiveness
  </detectionMode>
</FaceThermometry>

34. 获取人体测温参数

34.1 命令

GET /ISAPI/Thermal/channels/<channelID>/faceThermometry

34.2 输入参数

34.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceThermometry xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人脸测温功能规则列表, attr:version{opt, string, 未定义, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <faceThermometryEnabled>
    <!--ro, req, bool, 人脸测温功能使能-->true
  </faceThermometryEnabled>
  <thermometryShowEnabled>
    <!--ro, req, bool, 温度信息通过OSD叠加方式显示位置使能-->true
  </thermometryShowEnabled>
  <alarmEnabled>
    <!--ro, opt, bool, 是否开启报警订阅-->true
  </alarmEnabled>
  <alarmIntervalTime>
    <!--ro, opt, float, 报警间隔时间, range:[0.5,600], step:, unit:s, unitType:时间, desc:当无门禁卡模式下生效,默认1s-->1
  </alarmIntervalTime>
  <normalizedScreenSize>
    <!--ro, req, object, 设备返回的归一化坐标倍数-->
    <normalizedScreenWidth>
      <!--ro, req, int, 设备返回的归一化坐标宽度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 设备返回的归一化坐标高度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FaceThermometryRegionList>
    <!--ro, opt, object, 人脸测温功能规则列表-->
    <ThermometryRegion>
      <!--ro, opt, object, 人脸测温单一规则-->
      <id>
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <name>
        <!--ro, opt, string, 规则名称, range:[0,32]-->test
      </name>
      <sensitivity>
        <!--ro, req, int, 灵敏度, range:[1,5], step:, unit:, unitType:, desc:归一化值-->1
      </sensitivity>
      <PupilParam>
        <!--ro, req, object, 瞳孔参数-->
        <Region>
          <!--ro, opt, object, 瞳孔区域-->
          <RegionCoordinatesList>
            <!--ro, opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
            <RegionCoordinates>
              <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--ro, req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--ro, req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </PupilParam>
      <MaxPupilParam>
        <!--ro, opt, object, 最大瞳距-->
        <Region>
          <!--ro, opt, object, 规则区域-->
          <RegionCoordinatesList>
            <!--ro, opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
            <RegionCoordinates>
              <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--ro, req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--ro, req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </MaxPupilParam>
      <targetSpeed>
        <!--ro, req, int, 目标生成速度, range:[1,5], step:, unit:, unitType:, desc:归一化值-->1
      </targetSpeed>
      <alarmTemperature>
        <!--ro, opt, float, 报警温度, range:[-20.0,60.0], step:, unit:℃, unitType:温度-->37.6
      </alarmTemperature>
      <type>
        <!--ro, req, enum, 规则类型, subType:string, [region#区域]-->region
      </type>
      <Region>
        <!--ro, opt, object, 规则区域-->
        <RegionCoordinatesList>
          <!--ro, opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
          <RegionCoordinates>
            <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <alarmRule>
        <!--ro, opt, enum, 报警规则, subType:string, [highestGreater#最高温大于,highestLess#最高温小于]-->highestGreater
      </alarmRule>
      <alert>
        <!--ro, opt, float, 全局预警阈值 , range:[-20.0,60.0], step:, unit:℃, unitType:温度-->37.6
      </alert>
    </ThermometryRegion>
  </FaceThermometryRegionList>
  <imageQuality>
    <!--ro, opt, enum, 抓图质量, subType:string, [high#高质量,medium#中质量,low#低质量]-->high
  </imageQuality>
  <mode>
    <!--ro, opt, enum, 人体测温模式, subType:string, [barrierPassing#通关,targeting#筛查]-->targeting
  </mode>
  <faceSnapUploadEnabled>
    <!--ro, opt, bool, 人脸抓拍上传使能-->true
  </faceSnapUploadEnabled>
  <maxTemperatureCoordinatesEnabled>
    <!--ro, opt, bool, 最高温位置显示使能, desc:在码流私有包中叠加-->true
  </maxTemperatureCoordinatesEnabled>
  <faceRectShowEnabled>
    <!--ro, opt, bool, 人脸框叠加使能-->true
  </faceRectShowEnabled>
  <faceTemperatureShowEnabled>
    <!--ro, opt, bool, 人脸温度叠加使能-->true
  </faceTemperatureShowEnabled>
  <detectionMode>
    <!--ro, opt, enum, 人体测温检测模式, subType:string, [forehead#额头检测,comprehensiveness#综合检测], 
desc:综合检测:人体测温结果由额头测温和眼角测温共同决定。室外温度很低会造成额头温度很低且恢复速度缓慢,此时会出现检测出体温过低的情况,因此需要切换为综合检测。
     额头检测:人体测温始终使用额头区域进行测温。在较热的环境,眼角温度会过高,容易发生体温过高误报,此时需切换为额头检测。-->comprehensiveness
  </detectionMode>
</FaceThermometry>

35. 配置人体测温参数

35.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/faceThermometry

35.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceThermometry xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 人脸测温功能规则列表, attr:version{opt, string, 未定义, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <faceThermometryEnabled>
    <!--req, bool, 人脸测温功能使能-->true
  </faceThermometryEnabled>
  <thermometryShowEnabled>
    <!--req, bool, 温度信息通过OSD叠加方式显示位置使能-->true
  </thermometryShowEnabled>
  <alarmEnabled>
    <!--opt, bool, 是否开启报警订阅-->true
  </alarmEnabled>
  <alarmIntervalTime>
    <!--opt, float, 报警间隔时间, range:[0.5,600], step:, unit:s, unitType:时间, desc:当无门禁卡模式下生效,默认1s-->1
  </alarmIntervalTime>
  <normalizedScreenSize>
    <!--req, object, 设备返回的归一化坐标倍数-->
    <normalizedScreenWidth>
      <!--req, int, 设备返回的归一化坐标宽度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 设备返回的归一化坐标高度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FaceThermometryRegionList>
    <!--opt, object, 人脸测温功能规则列表-->
    <ThermometryRegion>
      <!--opt, object, 人脸测温单一规则-->
      <id>
        <!--req, int, 规则ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <name>
        <!--opt, string, 规则名称, range:[0,32]-->test
      </name>
      <sensitivity>
        <!--req, int, 灵敏度, range:[1,5], step:, unit:, unitType:, desc:归一化值-->1
      </sensitivity>
      <PupilParam>
        <!--req, object, 瞳孔参数-->
        <Region>
          <!--opt, object, 瞳孔区域-->
          <RegionCoordinatesList>
            <!--opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
            <RegionCoordinates>
              <!--opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </PupilParam>
      <MaxPupilParam>
        <!--opt, object, 最大瞳距-->
        <Region>
          <!--opt, object, 规则区域-->
          <RegionCoordinatesList>
            <!--opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
            <RegionCoordinates>
              <!--opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </MaxPupilParam>
      <targetSpeed>
        <!--req, int, 目标生成速度, range:[1,5], step:, unit:, unitType:, desc:归一化值-->1
      </targetSpeed>
      <alarmTemperature>
        <!--opt, float, 报警温度, range:[-20.0,60.0], step:, unit:℃, unitType:温度-->37.6
      </alarmTemperature>
      <type>
        <!--req, enum, 规则类型, subType:string, [region#区域]-->region
      </type>
      <Region>
        <!--opt, object, 规则区域-->
        <RegionCoordinatesList>
          <!--opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
          <RegionCoordinates>
            <!--opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <alarmRule>
        <!--opt, enum, 报警规则, subType:string, [highestGreater#最高温大于,highestLess#最高温小于]-->highestGreater
      </alarmRule>
      <alert>
        <!--opt, float, 全局预警阈值 , range:[-20.0,60.0], step:, unit:℃, unitType:温度-->37.6
      </alert>
    </ThermometryRegion>
  </FaceThermometryRegionList>
  <imageQuality>
    <!--opt, enum, 抓图质量, subType:string, [high#高质量,medium#中质量,low#低质量]-->high
  </imageQuality>
  <mode>
    <!--opt, enum, 人体测温模式, subType:string, [barrierPassing#通关,targeting#筛查]-->targeting
  </mode>
  <faceSnapUploadEnabled>
    <!--opt, bool, 人脸抓拍上传使能-->true
  </faceSnapUploadEnabled>
  <maxTemperatureCoordinatesEnabled>
    <!--opt, bool, 最高温位置显示使能, desc:在码流私有包中叠加-->true
  </maxTemperatureCoordinatesEnabled>
  <faceRectShowEnabled>
    <!--opt, bool, 人脸框叠加使能-->true
  </faceRectShowEnabled>
  <faceTemperatureShowEnabled>
    <!--opt, bool, 人脸温度叠加使能-->true
  </faceTemperatureShowEnabled>
  <detectionMode>
    <!--opt, enum, 人体测温检测模式, subType:string, [forehead#额头检测,comprehensiveness#综合检测], 
desc:综合检测:人体测温结果由额头测温和眼角测温共同决定。室外温度很低会造成额头温度很低且恢复速度缓慢,此时会出现检测出体温过低的情况,因此需要切换为综合检测。
     额头检测:人体测温始终使用额头区域进行测温。在较热的环境,眼角温度会过高,容易发生体温过高误报,此时需切换为额头检测。-->comprehensiveness
  </detectionMode>
</FaceThermometry>

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->/ISAPI/xxxx
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

36. 获取人体测温联动参数

36.1 命令

GET /ISAPI/Event/triggers/faceThermometry-<channelID>

36.2 输入参数

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceThermometry-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->faceThermometry
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟随,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO输出端口ID, range:[,]-->test
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--ro, opt, string, 动态IO输出端口ID, range:[,]-->test
      </dynOutputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容,可以是预置点号,巡航路径号,花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--ro, opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

37. 配置人体测温联动参数

37.1 命令

PUT /ISAPI/Event/triggers/faceThermometry-<channelID>

37.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceThermometry-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->faceThermometry
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟随,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO输出端口ID, range:[,]-->test
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--opt, string, 动态IO输出端口ID, range:[,]-->test
      </dynOutputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容,可以是预置点号,巡航路径号,花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

37.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

38. 获取人体测温单个通道布防时间参数

38.1 命令

GET /ISAPI/Event/schedules/faceThermometrys/faceThermometrys-<channelID>

38.2 输入参数

38.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为:事件类型-通道号-->faceThermometry-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->faceThermometry
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

39. 配置人体测温单个通道布防时间参数

39.1 命令

PUT /ISAPI/Event/schedules/faceThermometrys/faceThermometrys-<channelID>

39.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为:事件类型-通道号-->faceThermometry-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->faceThermometry
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

40. 获取热成像黑体参数能力

40.1 命令

GET /ISAPI/Thermal/channels/<channelID>/blackBody/capabilities

40.2 输入参数

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalBlackBody xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 热成像黑体参数, attr:version{opt, string, 未定义, range:[,]}-->
  <emissivity min="0.01" max="1.00" def="0.97">
    <!--ro, req, float, 黑体发射率, range:[0.01,1.00], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},def{req, float, 默认值, range:[,], step:, unit:, unitType:}, desc:默认0.97,精确到小数点后2位-->0.97
  </emissivity>
  <distance min="0.0" max="10.0" def="2.0">
    <!--ro, req, float, 黑体距离, range:[0.0,10.0], step:, unit:m, unitType:长度, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},def{req, float, 默认值, range:[,], step:, unit:, unitType:}, desc:镜头距离黑体直线距离,默认2.0m,精确到小数点后1位-->2.0
  </distance>
  <temperature min="30.0" max="50.0" def="35.0">
    <!--ro, req, float, 黑体温度, range:[30.0,50.0], step:, unit:℃, unitType:温度, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},def{req, float, 默认值, range:[,], step:, unit:, unitType:}, desc:默认35.0℃,精确到小数点后1位)-->35.0
  </temperature>
  <CentrePoint>
    <!--ro, req, object, 黑体中心点位置, desc:通过鼠标在热成像通道上点击黑体中心点,IE、4200下发黑体中心点位置的归一化的坐标信息(0~1000)-->
    <CalibratingCoordinates>
      <!--ro, opt, object, 校准坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </CalibratingCoordinates>
  </CentrePoint>
  <normalizedScreenSize>
    <!--ro, req, object, 设备返回的归一化坐标倍数, desc:该参数只读-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled opt="true,false">
    <!--ro, opt, bool, 是否启用黑体, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <blackBodyRegiontype opt="point,region">
    <!--ro, opt, enum, 黑体检测区域类型, subType:string, [point#点(<CentrePoint>生效),region#框(<BlackBodyRegion>生效)], attr:opt{req, string, 取值范围, range:[,]}-->region
  </blackBodyRegiontype>
  <BlackBodyRegion>
    <!--ro, opt, object, 框坐标-->
    <RegionCoordinatesList size="4">
      <!--ro, opt, array, 框的区域坐标点列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 框的区域坐标点, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </BlackBodyRegion>
</ThermalBlackBody>

41. 获取热成像黑体参数

41.1 命令

GET /ISAPI/Thermal/channels/<channelID>/blackBody

41.2 输入参数

41.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalBlackBody xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 热成像黑体参数, attr:version{opt, string, 未定义, range:[,]}-->
  <emissivity>
    <!--ro, req, float, 黑体发射率, range:[0.01,1.00], step:, unit:, unitType:, desc:默认0.97,精确到小数点后2位-->0.97
  </emissivity>
  <distance>
    <!--ro, req, float, 黑体距离, range:[0.0,10.0], step:, unit:m, unitType:长度, desc:镜头距离黑体直线距离,默认2.0m,精确到小数点后1位-->2.0
  </distance>
  <temperature>
    <!--ro, req, float, 黑体温度, range:[30.0,50.0], step:, unit:℃, unitType:温度, desc:默认35.0℃,精确到小数点后1位)-->35.0
  </temperature>
  <CentrePoint>
    <!--ro, req, object, 黑体中心点位置, desc:通过鼠标在热成像通道上点击黑体中心点,IE、4200下发黑体中心点位置的归一化的坐标信息(0~1000)-->
    <CalibratingCoordinates>
      <!--ro, opt, object, 校准坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </CalibratingCoordinates>
  </CentrePoint>
  <normalizedScreenSize>
    <!--ro, req, object, 设备返回的归一化坐标倍数, desc:该参数只读-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--ro, opt, bool, 是否启用黑体-->true
  </enabled>
  <blackBodyRegiontype>
    <!--ro, opt, enum, 黑体检测区域类型, subType:string, [point#点(<CentrePoint>生效),region#框(<BlackBodyRegion>生效)]-->point
  </blackBodyRegiontype>
  <BlackBodyRegion>
    <!--ro, opt, object, 框坐标-->
    <RegionCoordinatesList>
      <!--ro, opt, array, 框的区域坐标点列表, subType:object, range:[0,4], desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 区域坐标点, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </BlackBodyRegion>
</ThermalBlackBody>

42. 配置热成像黑体参数

42.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/blackBody

42.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalBlackBody xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 热成像黑体参数, attr:version{opt, string, 未定义, range:[,]}-->
  <emissivity>
    <!--req, float, 黑体发射率, range:[0.01,1.00], step:, unit:, unitType:, desc:默认0.97,精确到小数点后2位-->0.97
  </emissivity>
  <distance>
    <!--req, float, 黑体距离, range:[0.0,10.0], step:, unit:m, unitType:长度, desc:镜头距离黑体直线距离,默认2.0m,精确到小数点后1位-->2.0
  </distance>
  <temperature>
    <!--req, float, 黑体温度, range:[30.0,50.0], step:, unit:℃, unitType:温度, desc:默认35.0℃,精确到小数点后1位)-->35.0
  </temperature>
  <CentrePoint>
    <!--req, object, 黑体中心点位置, desc:通过鼠标在热成像通道上点击黑体中心点,IE、4200下发黑体中心点位置的归一化的坐标信息(0~1000)-->
    <CalibratingCoordinates>
      <!--opt, object, 校准坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </CalibratingCoordinates>
  </CentrePoint>
  <normalizedScreenSize>
    <!--ro, req, object, 设备返回的归一化坐标倍数, desc:该参数只读-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--opt, bool, 是否启用黑体-->true
  </enabled>
  <blackBodyRegiontype>
    <!--opt, enum, 黑体检测区域类型, subType:string, [point#点(<CentrePoint>生效),region#框(<BlackBodyRegion>生效)]-->point
  </blackBodyRegiontype>
  <BlackBodyRegion>
    <!--opt, object, 框坐标-->
    <RegionCoordinatesList>
      <!--opt, array, 框的区域坐标点列表, subType:object, range:[0,4], desc:矩形-->
      <RegionCoordinates>
        <!--opt, object, 区域坐标点, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </BlackBodyRegion>
</ThermalBlackBody>

42.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->/ISAPI/xxxx
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

43. 获取温度补偿能力

43.1 命令

GET /ISAPI/Thermal/channels/<channelID>/bodyTemperatureCompensation/capabilities

43.2 输入参数

43.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BodyTemperatureCompensationCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 温度补偿能力, attr:version{req, string, 协议版本, range:[,]}-->
  <type opt="manual, auto">
    <!--ro, req, enum, 体温温度补偿方式, subType:string, [manual#手动补偿,auto#自动补偿], attr:opt{req, string, 取值范围, range:[,]}, desc:体温温度补偿方式分为两种:手动补偿、自动补偿-->manual
  </type>
  <ManualParam>
    <!--ro, opt, object, 手动补偿配置-->
    <compensationValue min="-10.0" max="10.0">
      <!--ro, opt, float, 补偿温度, range:[-10.0,10.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </compensationValue>
    <smartCorrection min="-10.0" max="10.0">
      <!--ro, opt, float, 手动校准, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </smartCorrection>
    <environmentalTemperature min="0" max="10">
      <!--ro, opt, int, 环境参考温度, range:[0.0,10.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:手动模式可配,自动模式下只读-->1
    </environmentalTemperature>
    <temperatureCompensation opt="true,false">
      <!--ro, opt, bool, 补偿开关, attr:opt{req, string, 取值范围, range:[,]}-->true
    </temperatureCompensation>
    <environmentalTemperatureMode opt="auto,manual,precision">
      <!--ro, opt, enum, 环境温度模式, subType:string, [auto#自动,manual#手动,precision#高精度], attr:opt{req, string, 取值范围, range:[,]}-->auto
    </environmentalTemperatureMode>
  </ManualParam>
  <AutoParam>
    <!--ro, opt, object, 自动补偿模式, desc:type="auto"-->
    <compensationValue min="-10.0" max="10.0">
      <!--ro, opt, float, 补偿温度, range:[-10.0,10.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </compensationValue>
    <smartCorrection min="-10.0" max="10.0">
      <!--ro, opt, float, 智能校准, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </smartCorrection>
    <environmentalTemperature>
      <!--ro, opt, float, 环境参考温度, range:[,], step:, unit:℃, unitType:温度-->0.000
    </environmentalTemperature>
    <temperatureCompensation opt="true,false">
      <!--ro, opt, bool, 补偿开关, attr:opt{req, string, 取值范围, range:[,]}-->true
    </temperatureCompensation>
    <environmentalTemperatureMode opt="auto,manual,precision">
      <!--ro, opt, enum, 环境温度模式, subType:string, [auto#自动,manual#手动,precision#高精度], attr:opt{req, string, 取值范围, range:[,]}-->auto
    </environmentalTemperatureMode>
  </AutoParam>
</BodyTemperatureCompensationCap>

44. 获取温度补偿参数

44.1 命令

GET /ISAPI/Thermal/channels/<channelID>/bodyTemperatureCompensation

44.2 输入参数

44.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BodyTemperatureCompensationCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 温度补偿配置信息, attr:version{opt, string, 未定义, range:[,]}-->
  <type>
    <!--ro, req, enum, 体温温度补偿方式, subType:string, [manual#手动补偿,auto#自动补偿], desc:体温温度补偿方式分为两种:手动补偿、自动补偿-->auto
  </type>
  <ManualParam>
    <!--ro, opt, object, 手动校准参数, desc:手动校准参数-->
    <compensationValue>
      <!--ro, opt, float, 补偿温度, range:[-10.0,10.0], step:0.1, unit:℃, unitType:温度, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:补偿温度-->-10
    </compensationValue>
    <smartCorrection>
      <!--ro, opt, float, 手动校准, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:手动校准,范围根据设备实际情况而定-->2.00
    </smartCorrection>
    <environmentalTemperature>
      <!--ro, opt, float, 环境参考温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:环境参考温度-->38.00
    </environmentalTemperature>
    <temperatureCompensation>
      <!--ro, opt, bool, 补偿开关, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:补偿开关-->true
    </temperatureCompensation>
    <environmentalTemperatureMode>
      <!--ro, opt, enum, 环境温度模式, subType:string, [auto#自动模式,manual#手动模式,precision#高精度], dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:环境温度模式,auto自动模式,manual手动模式,precision高精度-->auto
    </environmentalTemperatureMode>
  </ManualParam>
  <AutoParam>
    <!--ro, opt, object, 自动补偿参数信息, desc:自动补偿参数信息-->
    <compensationValue>
      <!--ro, opt, float, 补偿温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:补偿温度-->38.00
    </compensationValue>
    <smartCorrection>
      <!--ro, opt, float, 智能校准, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:智能校准-->3.00
    </smartCorrection>
    <environmentalTemperature>
      <!--ro, opt, float, 环境参考温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:环境参考温度-->38.00
    </environmentalTemperature>
    <temperatureCompensation>
      <!--ro, opt, bool, 补偿开关, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:补偿开关-->false
    </temperatureCompensation>
    <environmentalTemperatureMode>
      <!--ro, opt, enum, 环境温度模式, subType:string, [auto#自动模式,manual#手动模式,precision#高精度], dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:string,"环境温度模式,auto自动模式,manual手动模式,precision高精度-->auto
    </environmentalTemperatureMode>
  </AutoParam>
</BodyTemperatureCompensationCap>

45. 配置温度补偿参数

45.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/bodyTemperatureCompensation

45.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<BodyTemperatureCompensationCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 温度补偿配置信息, attr:version{opt, string, 未定义, range:[,]}-->
  <type>
    <!--req, enum, 体温温度补偿方式, subType:string, [manual#手动补偿,auto#自动补偿], desc:体温温度补偿方式分为两种:手动补偿、自动补偿-->auto
  </type>
  <ManualParam>
    <!--opt, object, 手动校准参数, desc:手动校准参数-->
    <compensationValue>
      <!--opt, float, 补偿温度, range:[-10.0,10.0], step:0.1, unit:℃, unitType:温度, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:补偿温度-->-10
    </compensationValue>
    <smartCorrection>
      <!--opt, float, 手动校准, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:手动校准,范围根据设备实际情况而定-->2.00
    </smartCorrection>
    <environmentalTemperature>
      <!--opt, float, 环境参考温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:环境参考温度-->38.00
    </environmentalTemperature>
    <temperatureCompensation>
      <!--opt, bool, 补偿开关, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:补偿开关-->true
    </temperatureCompensation>
    <environmentalTemperatureMode>
      <!--opt, enum, 环境温度模式, subType:string, [auto#自动模式,manual#手动模式,precision#高精度], dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:环境温度模式,auto自动模式,manual手动模式,precision高精度-->auto
    </environmentalTemperatureMode>
  </ManualParam>
  <AutoParam>
    <!--opt, object, 自动补偿参数信息, desc:自动补偿参数信息-->
    <compensationValue>
      <!--ro, opt, float, 补偿温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:补偿温度-->38.00
    </compensationValue>
    <smartCorrection>
      <!--opt, float, 智能校准, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:智能校准-->3.00
    </smartCorrection>
    <environmentalTemperature>
      <!--ro, opt, float, 环境参考温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:环境参考温度-->38.00
    </environmentalTemperature>
    <temperatureCompensation>
      <!--opt, bool, 补偿开关, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:补偿开关-->false
    </temperatureCompensation>
    <environmentalTemperatureMode>
      <!--opt, enum, 环境温度模式, subType:string, [auto#自动模式,manual#手动模式,precision#高精度], dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:环境温度模式,auto自动模式,manual手动模式,precision高精度-->auto
    </environmentalTemperatureMode>
  </AutoParam>
</BodyTemperatureCompensationCap>

45.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->/ISAPI/xxxx
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

46. 获取全屏测温参数

46.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/pixelToPixelParam

46.2 输入参数

46.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PixelToPixelParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 全屏测温参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <maxFrameRate>
    <!--ro, opt, int, 最大帧率, range:[,], step:, unit:, unitType:-->0
  </maxFrameRate>
  <reflectiveEnable>
    <!--ro, opt, bool, 反射温度使能-->true
  </reflectiveEnable>
  <reflectiveTemperature>
    <!--ro, opt, float, 反射温度, range:[,], step:, unit:, unitType:, desc:精确到小数后一位-->0.0
  </reflectiveTemperature>
  <emissivity>
    <!--ro, opt, float, 发射率, range:[0.00,1.00], step:, unit:, unitType:, desc:精确到小数后两位-->0.00
  </emissivity>
  <distance>
    <!--ro, req, int, 距离, range:[0,10000], step:, unit:m, unitType:长度-->0
  </distance>
  <refreshInterval>
    <!--ro, opt, int, 全屏测温映射表间隔, range:[1,500], step:, unit:, unitType:, desc:刷新一次映射表的测温次数-->1
  </refreshInterval>
  <distanceUnit>
    <!--ro, opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
  <temperatureDataLength>
    <!--ro, opt, enum, 测温数据长度, subType:int, [2#2,4#4]-->2
  </temperatureDataLength>
  <JpegPictureWithAppendData>
    <!--ro, opt, object, 抓热图参数配置-->
    <jpegPicEnabled>
      <!--ro, opt, bool, 抓热图设备是否返回jpeg图片-->true
    </jpegPicEnabled>
    <visiblePicEnabled>
      <!--ro, opt, bool, 抓热图设备是否返回可见光图片-->true
    </visiblePicEnabled>
    <captureMode>
      <!--ro, opt, enum, 抓图模式, subType:string, [standard#标准模式]-->standard
    </captureMode>
    <rulesOverlayEnabled>
      <!--ro, opt, bool, 抓热图是否叠加测温规则使能-->true
    </rulesOverlayEnabled>
    <visiblePicResolution>
      <!--ro, opt, enum, 可见光图片分辨率, subType:string, [600*800#600*800,1200*1600#1200*1600]-->600*800
    </visiblePicResolution>
    <thermalPicResolution>
      <!--ro, opt, enum, 热成像图片分辨率, subType:string, [160*120#160*120,640*480#640*480]-->160*120
    </thermalPicResolution>
  </JpegPictureWithAppendData>
</PixelToPixelParam>

47. 配置全屏测温参数

47.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermometry/pixelToPixelParam

47.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PixelToPixelParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 全屏测温参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <maxFrameRate>
    <!--opt, int, 最大帧率, range:[,], step:, unit:, unitType:-->0
  </maxFrameRate>
  <reflectiveEnable>
    <!--opt, bool, 反射温度使能-->true
  </reflectiveEnable>
  <reflectiveTemperature>
    <!--opt, float, 反射温度, range:[,], step:, unit:, unitType:, desc:精确到小数后一位-->0.0
  </reflectiveTemperature>
  <emissivity>
    <!--opt, float, 发射率, range:[0.00,1.00], step:, unit:, unitType:, desc:精确到小数后两位-->0.00
  </emissivity>
  <distance>
    <!--req, int, 距离, range:[0,10000], step:, unit:m, unitType:长度-->0
  </distance>
  <refreshInterval>
    <!--opt, int, 全屏测温映射表间隔, range:[1,500], step:, unit:, unitType:, desc:刷新一次映射表的测温次数-->1
  </refreshInterval>
  <distanceUnit>
    <!--opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
  <temperatureDataLength>
    <!--opt, enum, 测温数据长度, subType:int, [2#2,4#4]-->2
  </temperatureDataLength>
  <JpegPictureWithAppendData>
    <!--opt, object, 抓热图参数配置-->
    <jpegPicEnabled>
      <!--opt, bool, 抓热图设备是否返回jpeg图片-->true
    </jpegPicEnabled>
    <visiblePicEnabled>
      <!--opt, bool, 抓热图设备是否返回可见光图片-->true
    </visiblePicEnabled>
    <captureMode>
      <!--opt, enum, 抓图模式, subType:string, [standard#标准模式]-->standard
    </captureMode>
    <rulesOverlayEnabled>
      <!--opt, bool, 抓热图是否叠加测温规则使能-->true
    </rulesOverlayEnabled>
    <visiblePicResolution>
      <!--opt, enum, 可见光图片分辨率, subType:string, [600*800#600*800,1200*1600#1200*1600]-->600*800
    </visiblePicResolution>
    <thermalPicResolution>
      <!--opt, enum, 热成像图片分辨率, subType:string, [160*120#160*120,640*480#640*480]-->160*120
    </thermalPicResolution>
  </JpegPictureWithAppendData>
</PixelToPixelParam>

47.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

48. 获取热成像码流参数

48.1 命令

GET /ISAPI/Thermal/channels/<channelID>/streamParam

48.2 输入参数

48.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalStreamParamCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <videoCodingType>
    <!--ro, opt, enum, 码流数据编解码类型, subType:string, [thermal_raw_data#热成像裸数据,pixel-to-pixel_thermometry_data#全屏测温数据,real-time_raw_data#实时裸数据], desc:thermal_raw_data: 热成像裸数据,是指机芯输出的原始数据;pixel-to-pixel_thermometry_data: 全屏测温数据,是指对原始数据经过算法处理后的温度数据;real-time_raw_data: 实时裸数据,主要用于第三方进行二次开发,可以保证裸数据的实时性和连续性,默认thermal_raw_data-->thermal_raw_data
  </videoCodingType>
</ThermalStreamParamCap>

49. 配置热成像码流参数

49.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/streamParam

49.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalStreamParamCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <videoCodingType>
    <!--opt, enum, 码流数据编解码类型, subType:string, [thermal_raw_data#热成像裸数据,pixel-to-pixel_thermometry_data#全屏测温数据,real-time_raw_data#实时裸数据], desc:thermal_raw_data: 热成像裸数据,是指机芯输出的原始数据;pixel-to-pixel_thermometry_data: 全屏测温数据,是指对原始数据经过算法处理后的温度数据;real-time_raw_data: 实时裸数据,主要用于第三方进行二次开发,可以保证裸数据的实时性和连续性,默认thermal_raw_data-->thermal_raw_data
  </videoCodingType>
</ThermalStreamParamCap>

49.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

50. 获取手动测温单通道参数能力

50.1 命令

GET /ISAPI/Thermal/manualThermometry/channels/<channelID>/capabilities

50.2 输入参数

50.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualThermometry xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 手动测温参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id min="0" max="10">
    <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </id>
  <currentTime>
    <!--ro, req, datetime, 当前UTC时间(只读)-->1970-01-01T00:00:00+08:00
  </currentTime>
  <temperatureUnit opt="degreeCentigrade, degreeFahrenheit, degreeKelvin">
    <!--ro, req, enum, 温度单位(只读), subType:string, [degreeCentigrade#摄氏度(℃),degreeFahrenheit#华氏度(华氏度),degreeKelvin#尔文(K)], attr:opt{req, string, 取值范围, range:[,]}-->degreeKelvin
  </temperatureUnit>
  <normalizedScreenSize>
    <!--ro, req, object, 坐标归一化-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ThermometryRuleList>
    <!--ro, opt, array, 测温规则列表, subType:object, range:[,]-->
    <ThermometryRule>
      <!--ro, opt, object, 测温规则-->
      <ruleId min="1" max="10">
        <!--ro, req, int, 规则名称, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </ruleId>
      <enabled opt="true, false">
        <!--ro, req, bool, 是否使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <name min="0" max="32">
        <!--ro, req, string, 规则名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </name>
      <type opt="point, region, line">
        <!--ro, req, enum, 规则标定类型, subType:string, [point#点,region#框,line#线], attr:opt{req, string, 取值范围, range:[,]}-->point
      </type>
      <Point>
        <!--ro, opt, object, 点测温-->
        <TempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 温度值, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.0
        </TempValue>
        <CalibratingCoordinates>
          <!--ro, opt, object, 点坐标, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </CalibratingCoordinates>
      </Point>
      <Region>
        <!--ro, opt, object, 框测温, desc:显示最高温, 最低温, 平均温, 温差-->
        <highestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </highestTempValue>
        <lowestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </lowestTempValue>
        <averageTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 平均温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </averageTempValue>
        <diffTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 温差, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </diffTempValue>
        <RegionCoordinatesList>
          <!--ro, opt, array, 框的区域坐标点列表, subType:object, range:[3,10]-->
          <RegionCoordinates>
            <!--ro, opt, object, 框的区域坐标, desc:屏幕左上角为坐标原点-->
            <positionX>
              <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <Line>
        <!--ro, opt, object, 线测温, desc:显示最高温, 最低温-->
        <highestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </highestTempValue>
        <lowestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </lowestTempValue>
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <RegionCoordinates>
            <!--ro, opt, object, 区域坐标, desc:屏幕左上角为坐标原点-->
            <positionX>
              <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Line>
    </ThermometryRule>
  </ThermometryRuleList>
</ManualThermometry>

51. 获取手动测温单通道基本参数能力

51.1 命令

GET /ISAPI/Thermal/manualThermBasic/channels/<channelID>/capabilities

51.2 输入参数

51.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualThermBasic xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 基本参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id min="0" max="10">
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </id>
  <distance min="0" max="10000">
    <!--ro, req, int, 距离, range:[,], step:, unit:m, unitType:长度, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </distance>
  <emissivity min="0.01" max="1.00">
    <!--ro, req, float, 发射率, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
  </emissivity>
  <distanceUnit opt="meter,feet,centimeter">
    <!--ro, opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米], attr:opt{req, string, 取值范围, range:[,]}-->meter
  </distanceUnit>
</ManualThermBasic>

52. 获取手动测温单通道基本参数

52.1 命令

GET /ISAPI/Thermal/manualThermBasic/channels/<channelID>

52.2 输入参数

52.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualThermBasic xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 基本参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <distance>
    <!--ro, req, int, 距离, range:[,], step:, unit:m, unitType:长度-->0
  </distance>
  <emissivity>
    <!--ro, req, float, 发射率, range:[,], step:, unit:, unitType:-->0.000
  </emissivity>
  <distanceUnit>
    <!--ro, opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
</ManualThermBasic>

53. 配置手动测温单通道基本参数

53.1 命令

PUT /ISAPI/Thermal/manualThermBasic/channels/<channelID>

53.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualThermBasic xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 基本参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <distance>
    <!--req, int, 距离, range:[,], step:, unit:m, unitType:长度-->0
  </distance>
  <emissivity>
    <!--req, float, 发射率, range:[,], step:, unit:, unitType:-->0.000
  </emissivity>
  <distanceUnit>
    <!--opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
</ManualThermBasic>

53.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

54. 配置手动测温单通道参数

54.1 命令

PUT /ISAPI/Thermal/manualThermometry/channels/<channelID>

54.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualThermometry xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 手动测温参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 索引, range:[,], step:, unit:, unitType:-->0
  </id>
  <currentTime>
    <!--req, datetime, 当前UTC时间(只读)-->1970-01-01T00:00:00+08:00
  </currentTime>
  <temperatureUnit>
    <!--req, enum, 温度单位(只读), subType:string, [degreeCentigrade#摄氏度(℃),degreeFahrenheit#华氏度(华氏度),degreeKelvin#尔文(K)]-->degreeKelvin
  </temperatureUnit>
  <normalizedScreenSize>
    <!--req, object, 坐标归一化-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ThermometryRuleList>
    <!--opt, array, 测温规则列表, subType:object, range:[,]-->
    <ThermometryRule>
      <!--opt, object, 测温规则-->
      <ruleId>
        <!--req, int, 规则名称, range:[,], step:, unit:, unitType:-->0
      </ruleId>
      <enabled>
        <!--req, bool, 是否使能-->true
      </enabled>
      <name>
        <!--req, string, 规则名称, range:[,]-->test
      </name>
      <type>
        <!--req, enum, 规则标定类型, subType:string, [point#点,region#框,line#线]-->point
      </type>
      <Point>
        <!--opt, object, 点测温-->
        <TempValue>
          <!--opt, float, 温度值, range:[-40.0,1000.0], step:, unit:, unitType:-->0.0
        </TempValue>
        <CalibratingCoordinates>
          <!--opt, object, 点坐标, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </CalibratingCoordinates>
      </Point>
      <Region>
        <!--opt, object, 框测温, desc:显示最高温, 最低温, 平均温, 温差-->
        <highestTempValue>
          <!--opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </highestTempValue>
        <lowestTempValue>
          <!--opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </lowestTempValue>
        <averageTempValue>
          <!--opt, float, 平均温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </averageTempValue>
        <diffTempValue>
          <!--opt, float, 温差, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </diffTempValue>
        <RegionCoordinatesList>
          <!--opt, array, 框的区域坐标点列表, subType:object, range:[3,10]-->
          <RegionCoordinates>
            <!--opt, object, 框的区域坐标, desc:屏幕左上角为坐标原点-->
            <positionX>
              <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <Line>
        <!--opt, object, 线测温, desc:显示最高温, 最低温-->
        <highestTempValue>
          <!--opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </highestTempValue>
        <lowestTempValue>
          <!--opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </lowestTempValue>
        <RegionCoordinatesList>
          <!--opt, array, 区域坐标列表, subType:object, range:[0,2]-->
          <RegionCoordinates>
            <!--opt, object, 区域坐标, desc:屏幕左上角为坐标原点-->
            <positionX>
              <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Line>
    </ThermometryRule>
  </ThermometryRuleList>
</ManualThermometry>

54.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

55. 配置点击测温初始化

55.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/clickToThermometry/initialization

55.2 输入参数

55.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

56. 配置点击测温规则参数

56.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/clickToThermometry/rules/<ruleID>?format=json

56.2 输入参数

{
    "ClickToThermometryRule": { 
    /*opt, object, 点击测温规则参数*/
        "Point": {  
        /*opt, object, 点测温*/
            "positionX":  0.123,    
            /*req, float, 点测温坐标, range:[0.000,1.000], step:, unit:, unitType:*/
            "positionY":  0.123 
            /*req, float, 点测温坐标, range:[0.000,1.000], step:, unit:, unitType:*/
        }
    }
}

56.3 输出参数

{
    "statusCode":  1,   
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时(1表示成功且无特殊状态)必须返回*/
    "statusString":  "ok",  
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时(ok表示成功且无特殊状态)必须返回*/
    "subStatusCode":  "ok", 
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示(ok表示成功且无特殊状态)必须返回*/
    "errorCode":  1,    
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
    "errorMsg":  "ok"   
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时,必须返回,解释信息在协议约束中,允许设备在后续的版本迭代中,进行优化丰富提升(不限制死)*/
}

57. 获取全部测温规则温度信息

57.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/rulesTemperatureInfo?format=json

57.2 输入参数

57.3 输出参数

{
    "ThermometryRulesTemperatureInfoList": {    
    /*ro, opt, object, 测温规则温度信息列表*/
        "ThermometryRulesTemperatureInfo": [    
        /*ro, opt, array, 测温规则温度信息, subType:object, range:[,]*/
            {
                "id":  1,   
                /*ro, opt, int, 规则ID, range:[,], step:, unit:, unitType:*/
                "maxTemperature":  30.1,    
                /*ro, req, float, 最高温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
                "minTemperature":  30.1,    
                /*ro, req, float, 最低温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
                "averageTemperature":  30.1,    
                /*ro, req, float, 平均温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
                "MaxTemperaturePoint": {    
                /*ro, opt, object, 最高温位置*/
                    "positionX":  0.123,    
                    /*ro, req, float, 最高温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
                    "positionY":  0.123 
                    /*ro, req, float, 最高温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
                },
                "MinTemperaturePoint": {    
                /*ro, opt, object, 最低温位置*/
                    "positionX":  0.123,    
                    /*ro, req, float, 最低温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
                    "positionY":  0.123 
                    /*ro, req, float, 最低温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
                },
                "isFreezedata":  false  
                /*ro, opt, bool, 是否数据冻结*/
            }
        ]
    }
}

58. 获取单个测温规则温度信息

58.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/rulesTemperatureInfo/<ruleID>?format=json

58.2 输入参数

58.3 输出参数

{
    "ThermometryRulesTemperatureInfo": {    
    /*ro, opt, object, 测温规则温度信息*/
        "id":  1,   
        /*ro, opt, int, 规则ID, range:[,], step:, unit:, unitType:*/
        "maxTemperature":  30.1,    
        /*ro, req, float, 最高温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
        "minTemperature":  30.1,    
        /*ro, req, float, 最低温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
        "averageTemperature":  30.1,    
        /*ro, req, float, 平均温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
        "MaxTemperaturePoint": {    
        /*ro, opt, object, 最高温位置*/
            "positionX":  0.123,    
            /*ro, req, float, 最高温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
            "positionY":  0.123 
            /*ro, req, float, 最高温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
        },
        "MinTemperaturePoint": {    
        /*ro, opt, object, 最低温位置*/
            "positionX":  0.123,    
            /*ro, req, float, 最低温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
            "positionY":  0.123 
            /*ro, req, float, 最低温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
        },
        "isFreezedata":  false  
        /*ro, opt, bool, 是否数据冻结*/
    }
}

59. 获取通道裸码流能力

59.1 命令

GET /ISAPI/Streaming/channels/<channelID>/bareDataOverlay/capabilities

59.2 输入参数

59.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BareDataOverlay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <intervalTime min="1" max="5" def="3">
    <!--ro, req, int, 间隔时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </intervalTime>
</BareDataOverlay>

60. 获取通道裸码流参数

60.1 命令

GET /ISAPI/Streaming/channels/<channelID>/bareDataOverlay

60.2 输入参数

60.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BareDataOverlay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <intervalTime>
    <!--ro, req, int, 间隔时间, range:[,], step:, unit:s, unitType:时间-->1
  </intervalTime>
</BareDataOverlay>

61. 配置通道裸码流参数

61.1 命令

PUT /ISAPI/Streaming/channels/<channelID>/bareDataOverlay

61.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<BareDataOverlay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <intervalTime>
    <!--req, int, 间隔时间, range:[,], step:, unit:s, unitType:时间-->1
  </intervalTime>
</BareDataOverlay>

61.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

62. 获取相机电源能力

62.1 命令

GET /ISAPI/Thermal/Power/capabilities

62.2 输入参数

62.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Power xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 相机电源能力, attr:version{req, string, 协议版本, range:[,]}-->
  <powerSwitch>
    <!--ro, req, bool, 开关使能, desc:true为开启, 重载云台设备将唤醒为正常工作状态;false为关闭, 重载云台设备将处于低消耗的睡眠状态-->true
  </powerSwitch>
  <batteryPower min="1" max="100">
    <!--ro, opt, int, 电池电量百分比, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </batteryPower>
</Power>

63. 获取相机电源配置

63.1 命令

GET /ISAPI/Thermal/Power

63.2 输入参数

63.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Power xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 相机电源能力, attr:version{req, string, 协议版本, range:[,]}-->
  <powerSwitch>
    <!--ro, req, bool, 开关使能, desc:true为开启, 重载云台设备将唤醒为正常工作状态;false为关闭, 重载云台设备将处于低消耗的睡眠状态-->true
  </powerSwitch>
  <batteryPower>
    <!--ro, opt, int, 电池电量百分比, range:[1,100], step:, unit:, unitType:-->1
  </batteryPower>
</Power>

64. 设置相机电源配置

64.1 命令

PUT /ISAPI/Thermal/Power

64.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Power xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 相机电源能力, attr:version{req, string, 协议版本, range:[,]}-->
  <powerSwitch>
    <!--req, bool, 开关使能, desc:true为开启, 重载云台设备将唤醒为正常工作状态;false为关闭, 重载云台设备将处于低消耗的睡眠状态-->true
  </powerSwitch>
  <batteryPower>
    <!--opt, int, 电池电量百分比, range:[1,100], step:, unit:, unitType:-->1
  </batteryPower>
</Power>

64.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

65. 获取单个温湿度参数能力

65.1 命令

GET /ISAPI/Thermal/TempHumi/<channelID>/capabilities

65.2 输入参数

65.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TempHumi xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 温湿度参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id min="0" max="10">
    <!--ro, opt, int, 代表着对应的通道, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </id>
  <currentTime>
    <!--ro, req, datetime, 当前时间-->1970-01-01T00:00:00+08:00
  </currentTime>
  <temperature min="-273.00" max="1000.00">
    <!--ro, opt, float, 设备环境温度, range:[-273.00,1000.00], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:精确到小数点后两位-->0.00
  </temperature>
  <humidity min="0" max="100.00">
    <!--ro, opt, float, 设备环境湿度, range:[0.00,100.00], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:精确到小数点后两位-->0.00
  </humidity>
</TempHumi>

66. 获取单个温湿度参数

66.1 命令

GET /ISAPI/Thermal/TempHumi/<channelID>

66.2 输入参数

66.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TempHumi xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 温湿度参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, opt, int, 代表着对应的通道, range:[,], step:, unit:, unitType:-->0
  </id>
  <currentTime>
    <!--ro, req, datetime, 当前时间-->1970-01-01T00:00:00+08:00
  </currentTime>
  <temperature>
    <!--ro, opt, float, 设备环境温度, range:[-273.00,1000.00], step:, unit:, unitType:, desc:精确到小数点后两位-->0.00
  </temperature>
  <humidity>
    <!--ro, opt, float, 设备环境湿度, range:[0.00,100.00], step:, unit:, unitType:, desc:精确到小数点后两位-->0.00
  </humidity>
</TempHumi>

67. 获取火点屏蔽区域配置能力

67.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireShieldMask/capabilities

67.2 输入参数

67.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FireShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 火点屏蔽区域能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 屏蔽区域功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FireShieldMaskRegionList size="24">
    <!--ro, opt, array, 火点屏蔽区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <FireShieldMaskRegion>
      <!--ro, opt, object, 单个火点屏蔽区域-->
      <id min="1" max="24">
        <!--ro, req, int, 火点屏蔽区域ID编号, range:[1,24], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </id>
      <showEnabled>
        <!--ro, req, bool, 区域显示使能(该节点为只读-->true
      </showEnabled>
      <enabled>
        <!--ro, req, bool, 单个火点屏蔽区域使能-->true
      </enabled>
      <maskName min="0" max="32">
        <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </maskName>
      <shieldZoom min="0" max="32">
        <!--ro, opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </shieldZoom>
      <regionType opt="quadrilateral">
        <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形], attr:opt{req, string, 取值范围, range:[,]}-->quadrilateral
      </regionType>
      <maskType opt="gray,red,yellow,blue,orange,green,transparent,half-transparent,mosaic">
        <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克], attr:opt{req, string, 取值范围, range:[,]}-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <drawingMode opt="inFOV,outFOV,inPanoramaMap">
        <!--ro, opt, enum, 绘制模式, subType:string, [inFOV#视角内绘制,outFOV#超视角绘制,inPanoramaMap#360度可见光拼接图], attr:opt{req, string, 取值范围, range:[,]}, desc:360度可见光拼接图为web通过PTZ转动将不同视角下的图像拼接为360度的全景静态图片。-->inFOV
      </drawingMode>
      <vertexId min="1" max="4">
        <!--ro, opt, int, 顶点序号, range:[1,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </vertexId>
    </FireShieldMaskRegion>
  </FireShieldMaskRegionList>
  <shieldAreaTransparency opt="no_transparent,transparent,semi_transparent">
    <!--ro, opt, enum, 屏蔽区域透明度, subType:string, [no_transparent#不透明,transparent#透明,semi_transparent#半透明], attr:opt{req, string, 取值范围, range:[,]}-->no_transparent
  </shieldAreaTransparency>
  <displayShieldAreaEnabled opt="true,false">
    <!--ro, opt, bool, 码流叠加屏蔽区域使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayShieldAreaEnabled>
</FireShieldMask>

68. 获取火点屏蔽区域配置

68.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireShieldMask

68.2 输入参数

68.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FireShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 火点屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 屏蔽区域功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FireShieldMaskRegionList>
    <!--ro, opt, array, 火点屏蔽区域列表, subType:object, range:[,]-->
    <FireShieldMaskRegion>
      <!--ro, opt, array, 单个火点屏蔽区域, subType:object, range:[,]-->
      <id>
        <!--ro, req, int, 火点屏蔽区域ID编号, range:[1,24], step:, unit:, unitType:-->0
      </id>
      <showEnabled>
        <!--ro, req, bool, 区域显示使能-->true
      </showEnabled>
      <enabled>
        <!--ro, req, bool, 单个火点屏蔽区域使能-->true
      </enabled>
      <maskName>
        <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32]-->test
      </maskName>
      <shieldZoom>
        <!--ro, opt, int, 屏蔽倍率, range:[1,32], step:, unit:, unitType:, desc:屏蔽大于等于该值的光学变倍-->1
      </shieldZoom>
      <regionType>
        <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
      </regionType>
      <maskType>
        <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <drawingMode>
        <!--ro, opt, enum, 绘制模式, subType:string, [inFOV#视角内绘制,outFOV#超视角绘制,inPanoramaMap#360度可见光拼接图], desc:360度可见光拼接图为web通过PTZ转动将不同视角下的图像拼接为360度的全景静态图片。-->inFOV
      </drawingMode>
    </FireShieldMaskRegion>
  </FireShieldMaskRegionList>
  <shieldAreaTransparency>
    <!--ro, opt, enum, 屏蔽区域透明度, subType:string, [no_transparent#不透明,transparent#透明,semi_transparent#半透明]-->no_transparent
  </shieldAreaTransparency>
  <displayShieldAreaEnabled>
    <!--ro, opt, bool, 码流叠加屏蔽区域使能-->true
  </displayShieldAreaEnabled>
</FireShieldMask>

69. 配置火点屏蔽区域配置

69.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/fireShieldMask

69.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FireShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 火点屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 屏蔽区域功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FireShieldMaskRegionList>
    <!--opt, array, 火点屏蔽区域列表, subType:object, range:[,]-->
    <FireShieldMaskRegion>
      <!--opt, array, 单个火点屏蔽区域, subType:object, range:[,]-->
      <id>
        <!--req, int, 火点屏蔽区域ID编号, range:[1,24], step:, unit:, unitType:-->0
      </id>
      <showEnabled>
        <!--req, bool, 区域显示使能-->true
      </showEnabled>
      <enabled>
        <!--req, bool, 单个火点屏蔽区域使能-->true
      </enabled>
      <maskName>
        <!--opt, string, 屏蔽区域名称长度, range:[0,32]-->test
      </maskName>
      <shieldZoom>
        <!--opt, int, 屏蔽倍率, range:[1,32], step:, unit:, unitType:, desc:屏蔽大于等于该值的光学变倍-->1
      </shieldZoom>
      <regionType>
        <!--opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
      </regionType>
      <maskType>
        <!--opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <drawingMode>
        <!--ro, opt, enum, 绘制模式, subType:string, [inFOV#视角内绘制,outFOV#超视角绘制,inPanoramaMap#360度可见光拼接图], desc:360度可见光拼接图为web通过PTZ转动将不同视角下的图像拼接为360度的全景静态图片。-->inFOV
      </drawingMode>
    </FireShieldMaskRegion>
  </FireShieldMaskRegionList>
  <shieldAreaTransparency>
    <!--opt, enum, 屏蔽区域透明度, subType:string, [no_transparent#不透明,transparent#透明,semi_transparent#半透明]-->no_transparent
  </shieldAreaTransparency>
  <displayShieldAreaEnabled>
    <!--opt, bool, 码流叠加屏蔽区域使能-->true
  </displayShieldAreaEnabled>
</FireShieldMask>

69.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

70. 删除火点屏蔽区域规则单个配置

70.1 命令

DELETE /ISAPI/Thermal/channels/<channelID>/fireShieldMask/regions/<regionID>

70.2 输入参数

70.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

71. 获取火点屏蔽区域规则单个配置

71.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireShieldMask/regions/<regionID>

71.2 输入参数

71.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FireShieldMaskRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 单个火点屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 火点屏蔽区域ID编号, range:[1,24], step:, unit:, unitType:-->0
  </id>
  <showEnabled>
    <!--ro, req, bool, 区域显示使能(该节点为只读-->true
  </showEnabled>
  <enabled>
    <!--ro, req, bool, 单个火点屏蔽区域使能-->true
  </enabled>
  <maskName>
    <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32]-->test
  </maskName>
  <shieldZoom>
    <!--ro, opt, int, 屏蔽倍率, range:[1,32], step:, unit:, unitType:, desc:屏蔽大于等于该值的光学变倍-->1
  </shieldZoom>
  <regionType>
    <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
  </regionType>
  <maskType>
    <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
  </maskType>
  <RegionCoordinatesList>
    <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <drawingMode>
    <!--ro, opt, enum, 绘制模式, subType:string, [inFOV#视角内绘制,outFOV#超视角绘制,inPanoramaMap#360度可见光拼接图], desc:360度可见光拼接图为web通过PTZ转动将不同视角下的图像拼接为360度的全景静态图片。-->inFOV
  </drawingMode>
</FireShieldMaskRegion>

72. 配置火点屏蔽区域规则单个配置

72.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/fireShieldMask/regions/<regionID>

72.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FireShieldMaskRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 单个火点屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 火点屏蔽区域ID编号, range:[1,24], step:, unit:, unitType:-->0
  </id>
  <showEnabled>
    <!--req, bool, 区域显示使能(该节点为只读-->true
  </showEnabled>
  <enabled>
    <!--req, bool, 单个火点屏蔽区域使能-->true
  </enabled>
  <maskName>
    <!--opt, string, 屏蔽区域名称长度, range:[0,32]-->test
  </maskName>
  <shieldZoom>
    <!--opt, int, 屏蔽倍率, range:[1,32], step:, unit:, unitType:, desc:屏蔽大于等于该值的光学变倍-->1
  </shieldZoom>
  <regionType>
    <!--opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
  </regionType>
  <maskType>
    <!--opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
  </maskType>
  <RegionCoordinatesList>
    <!--req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <drawingMode>
    <!--opt, enum, 绘制模式, subType:string, [inFOV#视角内绘制,outFOV#超视角绘制,inPanoramaMap#360度可见光拼接图], desc:360度可见光拼接图为web通过PTZ转动将不同视角下的图像拼接为360度的全景静态图片。-->inFOV
  </drawingMode>
</FireShieldMaskRegion>

72.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

73. 获取烟雾屏蔽区域配置能力

73.1 命令

GET /ISAPI/Thermal/channels/<channelID>/smokeShieldMask/capabilities

73.2 输入参数

73.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmokeShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 烟雾区域屏蔽能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 烟雾区域屏蔽功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <SmokeShieldMaskRegionList size="4">
    <!--ro, opt, array, 烟雾屏蔽区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <SmokeShieldMaskRegion>
      <!--ro, opt, object, 区域显示使能(该节点为只读-->
      <id min="1" max="4">
        <!--ro, req, int, 烟雾屏蔽区域ID编号, range:[1,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </id>
      <showEnabled>
        <!--ro, opt, bool, 区域显示使能, desc:区域显示使能(该节点为只读,若该使能为false则上层不显示该区域相关信息,为True则显示该区域相关信息-->true
      </showEnabled>
      <enabled>
        <!--ro, req, bool, 单个烟雾屏蔽区域使能-->true
      </enabled>
      <maskName min="0" max="32">
        <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </maskName>
      <shieldZoom min="0" max="32">
        <!--ro, opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </shieldZoom>
      <regionType opt="quadrilateral">
        <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形], attr:opt{req, string, 取值范围, range:[,]}-->quadrilateral
      </regionType>
      <maskType opt="gray,red,yellow,blue,orange,green,transparent,half-transparent,mosaic">
        <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克], attr:opt{req, string, 取值范围, range:[,]}-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </SmokeShieldMaskRegion>
  </SmokeShieldMaskRegionList>
  <shieldAreaTransparency opt="no_transparent,transparent,semi_transparent">
    <!--ro, opt, string, 屏蔽区域透明度, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </shieldAreaTransparency>
  <displayShieldAreaEnabled opt="true,false">
    <!--ro, opt, bool, false, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayShieldAreaEnabled>
  <MultiScene>
    <!--ro, opt, object, 多场景烟火检测能力-->
    <sid min="1" max="8">
      <!--ro, opt, int, 所支持的多场景个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </sid>
    <regionNum>
      <!--ro, opt, int, 单场景最大支持4个屏蔽区域, range:[,], step:, unit:, unitType:-->0
    </regionNum>
  </MultiScene>
</SmokeShieldMask>

74. 获取烟雾屏蔽区域配置

74.1 命令

GET /ISAPI/Thermal/channels/<channelID>/SmokeShieldMask

74.2 输入参数

74.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmokeShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 烟雾区域屏蔽能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 烟雾区域屏蔽功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <SmokeShieldMaskRegionList>
    <!--ro, opt, array, 烟雾屏蔽区域列表, subType:object, range:[,]-->
    <SmokeShieldMaskRegion>
      <!--ro, opt, object, 单个烟雾屏蔽区域-->
      <id>
        <!--ro, req, int, 烟雾屏蔽区域ID编号, range:[1,4], step:, unit:, unitType:-->0
      </id>
      <showEnabled>
        <!--ro, req, bool, 区域显示使能, desc:区域显示使能(该节点为只读,若该使能为false则上层不显示该区域相关信息,为True则显示该区域相关信息-->true
      </showEnabled>
      <enabled>
        <!--ro, req, bool, 单个烟雾屏蔽区域使能-->true
      </enabled>
      <maskName>
        <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32]-->test
      </maskName>
      <shieldZoom>
        <!--ro, opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:-->0
      </shieldZoom>
      <regionType>
        <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
      </regionType>
      <maskType>
        <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </SmokeShieldMaskRegion>
  </SmokeShieldMaskRegionList>
  <shieldAreaTransparency>
    <!--ro, opt, enum, 屏蔽区域透明度, subType:string, [no_transparent#no_transparent,transparent#transparent,semi_transparent#semi_transparent]-->no_transparent
  </shieldAreaTransparency>
  <displayShieldAreaEnabled>
    <!--ro, opt, bool, 码流叠加屏蔽区域使能-->true
  </displayShieldAreaEnabled>
</SmokeShieldMask>

75. 配置烟雾屏蔽区域配置

75.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/SmokeShieldMask

75.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SmokeShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 烟雾区域屏蔽能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 烟雾区域屏蔽功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <SmokeShieldMaskRegionList>
    <!--opt, array, 烟雾屏蔽区域列表, subType:object, range:[,]-->
    <SmokeShieldMaskRegion>
      <!--opt, object, 单个烟雾屏蔽区域-->
      <id>
        <!--req, int, 烟雾屏蔽区域ID编号, range:[1,4], step:, unit:, unitType:-->0
      </id>
      <showEnabled>
        <!--req, bool, 区域显示使能, desc:区域显示使能(该节点为只读,若该使能为false则上层不显示该区域相关信息,为True则显示该区域相关信息-->true
      </showEnabled>
      <enabled>
        <!--req, bool, 单个烟雾屏蔽区域使能-->true
      </enabled>
      <maskName>
        <!--opt, string, 屏蔽区域名称长度, range:[0,32]-->test
      </maskName>
      <shieldZoom>
        <!--opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:-->0
      </shieldZoom>
      <regionType>
        <!--opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
      </regionType>
      <maskType>
        <!--opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </SmokeShieldMaskRegion>
  </SmokeShieldMaskRegionList>
  <shieldAreaTransparency>
    <!--opt, enum, 屏蔽区域透明度, subType:string, [no_transparent#no_transparent,transparent#transparent,semi_transparent#semi_transparent]-->no_transparent
  </shieldAreaTransparency>
  <displayShieldAreaEnabled>
    <!--opt, bool, 码流叠加屏蔽区域使能-->true
  </displayShieldAreaEnabled>
</SmokeShieldMask>

75.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

76. 删除烟雾屏蔽区域规则单个配置

76.1 命令

DELETE /ISAPI/Thermal/channels/<channelID>/smokeShieldMask/regions/<regionID>

76.2 输入参数

76.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

77. 获取烟雾屏蔽区域规则单个配置

77.1 命令

GET /ISAPI/Thermal/channels/<channelID>/smokeShieldMask/regions/<regionID>

77.2 输入参数

77.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmokeShieldMaskRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 单个烟雾屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 烟雾屏蔽区域ID编号, range:[,], step:, unit:, unitType:-->0
  </id>
  <showEnabled>
    <!--ro, req, bool, 区域显示使能, desc:区域显示使能(该节点为只读,若该使能为false则上层不显示该区域相关信息,为True则显示该区域相关信息-->true
  </showEnabled>
  <enabled>
    <!--ro, req, bool, 单个烟雾屏蔽区域使能-->true
  </enabled>
  <maskName>
    <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32]-->test
  </maskName>
  <shieldZoom>
    <!--ro, opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:-->0
  </shieldZoom>
  <regionType>
    <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
  </regionType>
  <maskType>
    <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
  </maskType>
  <RegionCoordinatesList>
    <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</SmokeShieldMaskRegion>

78. 配置烟雾屏蔽区域规则单个配置

78.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/smokeShieldMask/regions/<regionID>

78.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SmokeShieldMaskRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 单个烟雾屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 烟雾屏蔽区域ID编号, range:[,], step:, unit:, unitType:-->0
  </id>
  <showEnabled>
    <!--req, bool, 区域显示使能, desc:区域显示使能(该节点为只读,若该使能为false则上层不显示该区域相关信息,为True则显示该区域相关信息-->true
  </showEnabled>
  <enabled>
    <!--req, bool, 单个烟雾屏蔽区域使能-->true
  </enabled>
  <maskName>
    <!--opt, string, 屏蔽区域名称长度, range:[0,32]-->test
  </maskName>
  <shieldZoom>
    <!--opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:-->0
  </shieldZoom>
  <regionType>
    <!--opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
  </regionType>
  <maskType>
    <!--opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
  </maskType>
  <RegionCoordinatesList>
    <!--req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</SmokeShieldMaskRegion>

78.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

79. 配置镜头聚焦变倍

79.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/fireFocusZoom

79.2 输入参数

79.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

80. 配置快门置位参数

80.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/shutterSetting

80.2 输入参数

80.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

81. 获取热成像画中画能力

81.1 命令

GET /ISAPI/Thermal/channels/<channelID>/pip/capabilities

81.2 输入参数

81.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalPip xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 热成像画中画参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 画中画功能使能-->true
  </enabled>
  <pipMode opt="overlap,fusion,normal" def="normal">
    <!--ro, req, enum, 画中画模式, subType:string, [overlap#叠加模式,fusion#融合模式,normal#普通模式], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->overlap
  </pipMode>
  <overlapType opt="visibleOverlapThermal,thermalOverlapVisible">
    <!--ro, req, enum, 叠加类型, subType:string, [visibleOverlapThermal#可见光叠加热成像图片,thermalOverlapVisible#热成像叠加可见光图片], attr:opt{req, string, 取值范围, range:[,]}-->visibleOverlapThermal
  </overlapType>
  <transparency min="0" max="100">
    <!--ro, opt, int, 透明度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </transparency>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <PipRegion>
    <!--ro, opt, object, 画中画区域位置-->
    <RegionCoordinatesList size="4">
      <!--ro, opt, array, 画中画区域坐标列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 画中画区域点坐标, desc:屏幕左上角为坐标原点-->
        <positionX>
          <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </PipRegion>
  <imageFusionRatio min="0" max="100" default="75">
    <!--ro, opt, int, 图像融合比例, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 默认值, range:[,]}, desc:融合模式下生效-->1
  </imageFusionRatio>
  <borderFusionRatio min="0" max="100" default="100">
    <!--ro, opt, int, 边缘融合比例, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 默认值, range:[,]}, desc:融合模式下生效-->1
  </borderFusionRatio>
  <distance min="0.1" max="4.0">
    <!--ro, opt, int, 融合距离, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:融合模式下生效-->1
  </distance>
  <borderEnhancementSensitivity min="0" max="100" default="80">
    <!--ro, opt, int, 边缘凸显灵敏度, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 默认值, range:[,]}, desc:控制叠加细节丰富程度,灵敏度低细节少,噪声少;灵敏度高细节多,噪声大, 融合模式下生效-->1
  </borderEnhancementSensitivity>
</ThermalPip>

82. 获取热成像画中画参数

82.1 命令

GET /ISAPI/Thermal/channels/<channelID>/pip

82.2 输入参数

82.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalPip xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 热成像画中画参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 画中画功能使能-->true
  </enabled>
  <pipMode>
    <!--ro, req, enum, 画中画模式, subType:string, [overlap#叠加模式,fusion#融合模式,normal#普通模式]-->overlap
  </pipMode>
  <overlapType>
    <!--ro, req, enum, 叠加类型, subType:string, [visibleOverlapThermal#可见光叠加热成像图片,thermalOverlapVisible#热成像叠加可见光图片]-->visibleOverlapThermal
  </overlapType>
  <transparency>
    <!--ro, opt, int, 透明度, range:[0,100], step:, unit:, unitType:-->1
  </transparency>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <PipRegion>
    <!--ro, opt, object, 画中画区域位置-->
    <RegionCoordinatesList>
      <!--ro, opt, array, 画中画区域坐标列表, subType:object, range:[0,4], desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 画中画区域点坐标, desc:屏幕左上角为坐标原点-->
        <positionX>
          <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </PipRegion>
  <imageFusionRatio>
    <!--ro, opt, int, 图像融合比例, range:[0,100], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:默认75-->1
  </imageFusionRatio>
  <borderFusionRatio>
    <!--ro, opt, int, 边缘融合比例, range:[0,100], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:默认100-->1
  </borderFusionRatio>
  <distance>
    <!--ro, opt, float, 融合距离, range:[0.1,4.0], step:, unit:m, unitType:长度, dep:and,{$.ThermalPip.pipMode,eq,fusion}-->0.1
  </distance>
  <borderEnhancementSensitivity>
    <!--ro, opt, int, 边缘凸显灵敏度, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:控制叠加细节丰富程度,灵敏度低细节少,噪声少;灵敏度高细节多,噪声大-->1
  </borderEnhancementSensitivity>
</ThermalPip>

83. 配置热成像画中画参数

83.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/pip

83.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalPip xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 热成像画中画参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 画中画功能使能-->true
  </enabled>
  <pipMode>
    <!--req, enum, 画中画模式, subType:string, [overlap#叠加模式,fusion#融合模式,normal#普通模式]-->overlap
  </pipMode>
  <overlapType>
    <!--req, enum, 叠加类型, subType:string, [visibleOverlapThermal#可见光叠加热成像图片,thermalOverlapVisible#热成像叠加可见光图片]-->visibleOverlapThermal
  </overlapType>
  <transparency>
    <!--opt, int, 透明度, range:[0,100], step:, unit:, unitType:-->1
  </transparency>
  <normalizedScreenSize>
    <!--req, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <PipRegion>
    <!--opt, object, 画中画区域位置-->
    <RegionCoordinatesList>
      <!--opt, array, 画中画区域坐标列表, subType:object, range:[0,4], desc:矩形-->
      <RegionCoordinates>
        <!--opt, object, 画中画区域点坐标, desc:屏幕左上角为坐标原点-->
        <positionX>
          <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </PipRegion>
  <imageFusionRatio>
    <!--opt, int, 图像融合比例, range:[0,100], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:默认75-->1
  </imageFusionRatio>
  <borderFusionRatio>
    <!--opt, int, 边缘融合比例, range:[0,100], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:默认100-->1
  </borderFusionRatio>
  <distance>
    <!--opt, float, 融合距离, range:[0.1,4.0], step:, unit:m, unitType:长度, dep:and,{$.ThermalPip.pipMode,eq,fusion}-->0.1
  </distance>
  <borderEnhancementSensitivity>
    <!--opt, int, 边缘凸显灵敏度, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:控制叠加细节丰富程度,灵敏度低细节少,噪声少;灵敏度高细节多,噪声大-->1
  </borderEnhancementSensitivity>
</ThermalPip>

83.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

84. 获取智能规则显示参数能力

84.1 命令

GET /ISAPI/Thermal/channels/<channelID>/IntelRuleDisplay/capabilities

84.2 输入参数

84.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IntelRuleDisplay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 智能规则显示参数, attr:version{req, string, 协议版本, range:[,]}-->
  <fontSize opt="8, 12, 16, 20, 24" def="12">
    <!--ro, req, enum, 字体大小倍率, subType:string, [8#小,12#标准(默认值),16#大,20#超大,24#特大], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:播放库会根据该倍率以及预览窗口的宽度动态改变字体的大小, 公式为: fontSize/8*(0.01*预览窗口宽度)"-->8
  </fontSize>
  <NormalRulesLine>
    <!--ro, opt, object, 正常规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R min="0" max="255">
        <!--ro, req, int, R(红色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </R>
      <G min="0" max="255">
        <!--ro, req, int, G(绿色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </G>
      <B min="0" max="255">
        <!--ro, req, int, B(蓝色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </B>
    </LineColor>
  </NormalRulesLine>
  <AlertRulesLine>
    <!--ro, opt, object, 预警规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R min="0" max="255">
        <!--ro, req, int, R(红色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </R>
      <G min="0" max="255">
        <!--ro, req, int, G(绿色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </G>
      <B min="0" max="255">
        <!--ro, req, int, B(蓝色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </B>
    </LineColor>
  </AlertRulesLine>
  <AlarmRulesLine>
    <!--ro, opt, object, 报警规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R min="0" max="255">
        <!--ro, req, int, R(红色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </R>
      <G min="0" max="255">
        <!--ro, req, int, G(绿色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </G>
      <B min="0" max="255">
        <!--ro, req, int, B(蓝色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </B>
    </LineColor>
  </AlarmRulesLine>
</IntelRuleDisplay>

85. 获取智能规则显示参数

85.1 命令

GET /ISAPI/Thermal/channels/<channelID>/IntelRuleDisplay

85.2 输入参数

85.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IntelRuleDisplay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 智能规则显示参数, attr:version{req, string, 协议版本, range:[,]}-->
  <fontSize>
    <!--ro, req, enum, 字体大小倍率, subType:string, [8#小,12#标准(默认值),16#大,20#超大,24#特大], desc:播放库会根据该倍率以及预览窗口的宽度动态改变字体的大小, 公式为: fontSize/8*(0.01*预览窗口宽度)"-->8
  </fontSize>
  <NormalRulesLine>
    <!--ro, opt, object, 正常规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R>
        <!--ro, req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--ro, req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--ro, req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </NormalRulesLine>
  <AlertRulesLine>
    <!--ro, opt, object, 预警规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R>
        <!--ro, req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--ro, req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--ro, req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </AlertRulesLine>
  <AlarmRulesLine>
    <!--ro, opt, object, 报警规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R>
        <!--ro, req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--ro, req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--ro, req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </AlarmRulesLine>
</IntelRuleDisplay>

86. 配置智能规则显示参数

86.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/IntelRuleDisplay

86.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<IntelRuleDisplay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 智能规则显示参数, attr:version{req, string, 协议版本, range:[,]}-->
  <fontSize>
    <!--req, enum, 字体大小倍率, subType:string, [8#小,12#标准(默认值),16#大,20#超大,24#特大], desc:播放库会根据该倍率以及预览窗口的宽度动态改变字体的大小, 公式为: fontSize/8*(0.01*预览窗口宽度)"-->8
  </fontSize>
  <NormalRulesLine>
    <!--opt, object, 正常规则线相关属性参数-->
    <LineColor>
      <!--req, object, 规则线RGB颜色配置-->
      <R>
        <!--req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </NormalRulesLine>
  <AlertRulesLine>
    <!--opt, object, 预警规则线相关属性参数-->
    <LineColor>
      <!--req, object, 规则线RGB颜色配置-->
      <R>
        <!--req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </AlertRulesLine>
  <AlarmRulesLine>
    <!--opt, object, 报警规则线相关属性参数-->
    <LineColor>
      <!--req, object, 规则线RGB颜色配置-->
      <R>
        <!--req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </AlarmRulesLine>
</IntelRuleDisplay>

86.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

87. 获取防灼伤参数能力

87.1 命令

GET /ISAPI/Thermal/channels/<channelID>/burningPrevention/capabilities

87.2 输入参数

87.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BurningPreventionCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 防灼伤参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 防灼伤功能使, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <mode opt="manual,automatic">
    <!--ro, opt, enum, 模式, subType:string, [manual#手动,automatic#自动], attr:opt{req, string, 取值范围, range:[,]}-->manual
  </mode>
  <closedDuration min="1" max="10" default="0">
    <!--ro, opt, int, 保护时间, range:[1,10], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </closedDuration>
  <shutterStatus opt="closed,open">
    <!--ro, opt, enum, 挡片状态, subType:string, [open#开启,close#关闭], attr:opt{req, string, 取值范围, range:[,]}-->open
  </shutterStatus>
  <protectionMode opt="lensMovement,shutterClose">
    <!--ro, opt, enum, 保护方式, subType:string, [lensMovement#运动躲避,shutterClose#挡片遮挡], attr:opt{req, string, 取值范围, range:[,]}-->lensMovement
  </protectionMode>
  <burningRecoveryEnabled opt="true,false">
    <!--ro, opt, bool, 灼伤恢复使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </burningRecoveryEnabled>
  <movementDuration min="0" max="10" default="0">
    <!--ro, opt, int, 运动躲避保护时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->0
  </movementDuration>
</BurningPreventionCap>

88. 获取防灼伤参数

88.1 命令

GET /ISAPI/Thermal/channels/<channelID>/burningPrevention

88.2 输入参数

88.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BurningPrevention xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 防灼伤参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 防灼伤功能使-->true
  </enabled>
  <mode>
    <!--ro, opt, enum, 模式, subType:string, [manual#手动,automatic#自动]-->manual
  </mode>
  <closedDuration>
    <!--ro, opt, int, 保护时间, range:[1,10], step:, unit:s, unitType:时间-->1
  </closedDuration>
  <shutterStatus>
    <!--ro, opt, enum, 挡片状态, subType:string, [open#开启,close#关闭]-->open
  </shutterStatus>
  <protectionMode>
    <!--ro, opt, enum, 保护方式, subType:string, [lensMovement#运动躲避,shutterClose#挡片遮挡]-->lensMovement
  </protectionMode>
  <burningRecoveryEnabled>
    <!--ro, opt, bool, 灼伤恢复使能-->true
  </burningRecoveryEnabled>
  <movementDuration>
    <!--ro, opt, int, 运动躲避保护时间, range:[,], step:, unit:min, unitType:时间-->0
  </movementDuration>
</BurningPrevention>

89. 配置防灼伤参数

89.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/burningPrevention

89.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<BurningPrevention xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 防灼伤参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 防灼伤功能使-->true
  </enabled>
  <mode>
    <!--opt, enum, 模式, subType:string, [manual#手动,automatic#自动]-->manual
  </mode>
  <closedDuration>
    <!--opt, int, 保护时间, range:[1,10], step:, unit:s, unitType:时间-->1
  </closedDuration>
  <shutterStatus>
    <!--opt, enum, 挡片状态, subType:string, [open#开启,close#关闭]-->open
  </shutterStatus>
  <protectionMode>
    <!--opt, enum, 保护方式, subType:string, [lensMovement#运动躲避,shutterClose#挡片遮挡]-->lensMovement
  </protectionMode>
  <burningRecoveryEnabled>
    <!--opt, bool, 灼伤恢复使能-->true
  </burningRecoveryEnabled>
  <movementDuration>
    <!--opt, int, 运动躲避保护时间, range:[,], step:, unit:min, unitType:时间-->0
  </movementDuration>
</BurningPrevention>

89.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

90. 获取船只检测能力

90.1 命令

GET /ISAPI/Smart/shipsDetection/<channelID>/capabilities

90.2 输入参数

90.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ShipsDetectionCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 船只检测能力, attr:version{req, string, 协议版本, range:[,]}-->
  <ShipsDetection>
    <!--ro, opt, object, 船只检测-->
    <id min="1" max="10">
      <!--ro, req, string, 规则ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </id>
    <enabled opt="true, false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <lookDownUpAngle min="1" max="10">
      <!--ro, req, float, 设备俯仰角度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:精确到小数点后一位-->0.000
    </lookDownUpAngle>
    <horizontalHeight min="1" max="10">
      <!--ro, req, float, 设备水平高度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:精确到小数点后一位-->0.000
    </horizontalHeight>
    <normalizedScreenSize>
      <!--ro, opt, object, 归一化屏幕尺寸-->
      <normalizedScreenWidth>
        <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
      </normalizedScreenWidth>
      <normalizedScreenHeight>
        <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
      </normalizedScreenHeight>
    </normalizedScreenSize>
    <ShipsDetectionRegionList size="4">
      <!--ro, opt, array, 船只检测区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <ShipsDetectionRegion>
        <!--ro, opt, object, 船只检测区域-->
        <id>
          <!--ro, req, string, 区域ID, range:[,]-->test
        </id>
        <enabled>
          <!--ro, req, bool, 使能-->true
        </enabled>
        <sensitivityLevel min="1" max="100">
          <!--ro, req, int, 灵敏度参数, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </sensitivityLevel>
        <frameOverlayEnabled>
          <!--ro, req, bool, 视频是否叠加检测框-->true
        </frameOverlayEnabled>
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域坐标点列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <RegionCoordinates>
            <!--ro, opt, object, 坐标点-->
            <positionX>
              <!--ro, req, int, X坐标, range:[,], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, Y坐标, range:[,], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
        <TriggerLineCoordinatesList size="2">
          <!--ro, opt, array, 触发线坐标点列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <TriggerLineCoordinates>
            <!--ro, opt, object, 触发线坐标点-->
            <positionX>
              <!--ro, req, int, X坐标, range:[,], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, Y坐标, range:[,], step:, unit:, unitType:-->1
            </positionY>
          </TriggerLineCoordinates>
        </TriggerLineCoordinatesList>
        <TriggerLineList size="16">
          <!--ro, opt, array, 触发线坐标点列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <TriggerLine>
            <!--ro, opt, object, 触发线坐标点-->
            <id>
              <!--ro, req, int, 序号, range:[,], step:, unit:, unitType:-->1
            </id>
            <enabled opt="true, false">
              <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
            </enabled>
            <sensitivity min="1" max="100" default="1">
              <!--ro, req, int, 灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{opt, int, 最小值, range:[,], step:, unit:, unitType:},max{opt, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->50
            </sensitivity>
            <MinimumTargetSize>
              <!--ro, req, object, 最小目标尺寸-->
              <width min="0" max="1000" default="1">
                <!--ro, req, int, 宽, range:[1,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:52, unit:, unitType:}-->52
              </width>
              <height min="0" max="1000" default="35">
                <!--ro, req, int, 高, range:[1,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->35
              </height>
            </MinimumTargetSize>
            <TriggerLineCoordinatesList size="2">
              <!--ro, opt, array, 触发线坐标点列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
              <TriggerLineCoordinates>
                <!--ro, opt, object, 触发线坐标点-->
                <positionX>
                  <!--ro, req, int, X坐标, range:[,], step:, unit:, unitType:-->1
                </positionX>
                <positionY>
                  <!--ro, req, int, Y坐标, range:[,], step:, unit:, unitType:-->1
                </positionY>
              </TriggerLineCoordinates>
            </TriggerLineCoordinatesList>
          </TriggerLine>
        </TriggerLineList>
      </ShipsDetectionRegion>
    </ShipsDetectionRegionList>
  </ShipsDetection>
  <isSupportShipsDetectionCount>
    <!--ro, opt, bool, 是否支持船只计数-->true
  </isSupportShipsDetectionCount>
  <backToSceneTime min="5" max="100" default="15">
    <!--ro, opt, int, 场景恢复时间, range:[5,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->15
  </backToSceneTime>
  <targetDetectionThreshold min="0" max="4" default="1">
    <!--ro, opt, int, 目标检测阈值, range:[0,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </targetDetectionThreshold>
  <targetGenerationSpeed min="0" max="4" default="0">
    <!--ro, opt, int, 目标生成速度, range:[0,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->0
  </targetGenerationSpeed>
  <regionEnOrExAlarmEnabled>
    <!--ro, opt, bool, 进入或离开区域报警使能-->true
  </regionEnOrExAlarmEnabled>
  <displayShipInfoOnStreamEnabled opt="true, false">
    <!--ro, opt, bool, 码流叠加船只信息, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayShipInfoOnStreamEnabled>
</ShipsDetectionCap>

91. 获取船只检测参数单个配置

91.1 命令

GET /ISAPI/Smart/shipsDetection/<channelID>

91.2 输入参数

91.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ShipsDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 船只检测, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 规则ID, range:[,]-->1
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <lookDownUpAngle>
    <!--ro, req, float, 设备俯仰角度, range:[,], step:, unit:, unitType:, desc:精确到小数点后一位-->0.000
  </lookDownUpAngle>
  <horizontalHeight>
    <!--ro, req, float, 设备水平高度, range:[,], step:, unit:, unitType:, desc:精确到小数点后一位-->0.000
  </horizontalHeight>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化屏幕尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ShipsDetectionRegionList>
    <!--ro, opt, array, 船只检测区域列表, subType:object, range:[,]-->
    <ShipsDetectionRegion version="2.0">
      <!--ro, opt, object, 船只检测区域, attr:version{req, string, 协议版本, range:[,]}-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <sensitivityLevel>
        <!--ro, req, int, 敏感度参数, range:[1,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <frameOverlayEnabled>
        <!--ro, req, bool, 视频是否叠加检测框-->true
      </frameOverlayEnabled>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 坐标点, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <TriggerLineCoordinatesList>
        <!--ro, opt, array, 触发线坐标点列表, subType:object, range:[0,2]-->
        <TriggerLineCoordinates>
          <!--ro, opt, object, 触发线坐标点, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </TriggerLineCoordinates>
      </TriggerLineCoordinatesList>
      <TriggerLineList>
        <!--ro, opt, array, 出发线列表, subType:object, range:[,]-->
        <TriggerLine>
          <!--ro, opt, object, 出发线-->
          <id>
            <!--ro, req, int, 序号, range:[,], step:, unit:, unitType:-->1
          </id>
          <enabled>
            <!--ro, req, bool, 使能-->true
          </enabled>
          <sensitivity>
            <!--ro, req, int, 灵敏度, range:[1,100], step:, unit:, unitType:-->1
          </sensitivity>
          <MinimumTargetSize>
            <!--ro, req, object, 最小目标尺寸-->
            <width>
              <!--ro, req, int, 宽, range:[0,1000], step:, unit:, unitType:-->52
            </width>
            <height>
              <!--ro, req, int, 高, range:[0,1000], step:, unit:, unitType:-->35
            </height>
          </MinimumTargetSize>
          <TriggerLineCoordinatesList>
            <!--ro, opt, array, 触发线坐标列表, subType:object, range:[0,2]-->
            <TriggerLineCoordinates>
              <!--ro, opt, object, 触发线坐标, desc:屏幕左上角为坐标原点-->
              <positionX>
                <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionY>
            </TriggerLineCoordinates>
          </TriggerLineCoordinatesList>
        </TriggerLine>
      </TriggerLineList>
    </ShipsDetectionRegion>
  </ShipsDetectionRegionList>
  <backToSceneTime>
    <!--ro, opt, int, 场景恢复时间, range:[5,100], step:, unit:, unitType:-->15
  </backToSceneTime>
  <targetDetectionThreshold>
    <!--ro, opt, int, 目标检测阈值, range:[0,4], step:, unit:, unitType:-->1
  </targetDetectionThreshold>
  <targetGenerationSpeed>
    <!--ro, opt, int, 目标生成速度, range:[0,4], step:, unit:, unitType:-->0
  </targetGenerationSpeed>
  <regionEnOrExAlarmEnabled>
    <!--ro, opt, bool, 进入或离开区域报警使能-->true
  </regionEnOrExAlarmEnabled>
  <displayShipInfoOnStreamEnabled>
    <!--ro, opt, bool, 码流叠加船只信息-->true
  </displayShipInfoOnStreamEnabled>
</ShipsDetection>

92. 配置船只检测参数单个配置

92.1 命令

PUT /ISAPI/Smart/shipsDetection/<channelID>

92.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ShipsDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 船只检测, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 规则ID, range:[,]-->1
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <lookDownUpAngle>
    <!--req, float, 设备俯仰角度, range:[,], step:, unit:, unitType:, desc:精确到小数点后一位-->0.000
  </lookDownUpAngle>
  <horizontalHeight>
    <!--req, float, 设备水平高度, range:[,], step:, unit:, unitType:, desc:精确到小数点后一位-->0.000
  </horizontalHeight>
  <normalizedScreenSize>
    <!--opt, object, 归一化屏幕尺寸-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ShipsDetectionRegionList>
    <!--opt, array, 船只检测区域列表, subType:object, range:[,]-->
    <ShipsDetectionRegion version="2.0">
      <!--opt, object, 船只检测区域, attr:version{req, string, 协议版本, range:[,]}-->
      <id>
        <!--req, string, 区域ID, range:[,]-->1
      </id>
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <sensitivityLevel>
        <!--req, int, 敏感度参数, range:[1,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <frameOverlayEnabled>
        <!--req, bool, 视频是否叠加检测框-->true
      </frameOverlayEnabled>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--opt, object, 坐标点, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <TriggerLineCoordinatesList>
        <!--opt, array, 触发线坐标点列表, subType:object, range:[0,2]-->
        <TriggerLineCoordinates>
          <!--opt, object, 触发线坐标点, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </TriggerLineCoordinates>
      </TriggerLineCoordinatesList>
      <TriggerLineList>
        <!--opt, array, 出发线列表, subType:object, range:[,]-->
        <TriggerLine>
          <!--opt, object, 出发线-->
          <id>
            <!--req, int, 序号, range:[,], step:, unit:, unitType:-->1
          </id>
          <enabled>
            <!--req, bool, 使能-->true
          </enabled>
          <sensitivity>
            <!--req, int, 灵敏度, range:[1,100], step:, unit:, unitType:-->1
          </sensitivity>
          <MinimumTargetSize>
            <!--req, object, 最小目标尺寸-->
            <width>
              <!--req, int, 宽, range:[0,1000], step:, unit:, unitType:-->52
            </width>
            <height>
              <!--req, int, 高, range:[0,1000], step:, unit:, unitType:-->35
            </height>
          </MinimumTargetSize>
          <TriggerLineCoordinatesList>
            <!--opt, array, 触发线坐标列表, subType:object, range:[0,2]-->
            <TriggerLineCoordinates>
              <!--opt, object, 触发线坐标, desc:屏幕左上角为坐标原点-->
              <positionX>
                <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionY>
            </TriggerLineCoordinates>
          </TriggerLineCoordinatesList>
        </TriggerLine>
      </TriggerLineList>
    </ShipsDetectionRegion>
  </ShipsDetectionRegionList>
  <backToSceneTime>
    <!--opt, int, 场景恢复时间, range:[5,100], step:, unit:, unitType:-->15
  </backToSceneTime>
  <targetDetectionThreshold>
    <!--opt, int, 目标检测阈值, range:[0,4], step:, unit:, unitType:-->1
  </targetDetectionThreshold>
  <targetGenerationSpeed>
    <!--opt, int, 目标生成速度, range:[0,4], step:, unit:, unitType:-->0
  </targetGenerationSpeed>
  <regionEnOrExAlarmEnabled>
    <!--opt, bool, 进入或离开区域报警使能-->true
  </regionEnOrExAlarmEnabled>
  <displayShipInfoOnStreamEnabled>
    <!--opt, bool, 码流叠加船只信息-->true
  </displayShipInfoOnStreamEnabled>
</ShipsDetection>

92.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

93. 获取船只检测联动配置

93.1 命令

GET /ISAPI/Event/triggers/shipsDetection-<channelID>

93.2 输入参数

93.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,], desc:由事件类型-通道号组成-->shipsDetection-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->shipsDetection
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->test
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->0
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, object, 联动方式-->
    <EventTriggerNotification>
      <!--ro, opt, array, 索引, subType:object, range:[,]-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟随,whiteLight#白光灯,audio#声音]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->recurring
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO输出端口ID, range:[,]-->1
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--ro, opt, string, 动态IO输出端口ID, range:[,]-->1
      </dynOutputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->test
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航,target#目标]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容,可以是预置点号,巡航路径号,花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--ro, opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

94. 配置船只检测联动配置

94.1 命令

PUT /ISAPI/Event/triggers/shipsDetection-<channelID>

94.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,], desc:由事件类型-通道号组成-->shipsDetection-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->shipsDetection
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->test
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->0
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, object, 联动方式-->
    <EventTriggerNotification>
      <!--opt, array, 索引, subType:object, range:[,]-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟随,whiteLight#白光灯,audio#声音]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->recurring
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO输出端口ID, range:[,]-->1
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--opt, string, 动态IO输出端口ID, range:[,]-->1
      </dynOutputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->test
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航,target#目标]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容,可以是预置点号,巡航路径号,花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

94.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

95. 获取船只检测单个通道时间布防配置

95.1 命令

GET /ISAPI/Event/schedules/shipsDetections/shipsDetection-<channelID>

95.2 输入参数

95.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防计划, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 事件类型-通道号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, req, enum, 事件类型, subType:string, [ADAS#高级辅助驾驶报警,ADASAlarm#高级驾驶辅助报警,AID#交通事件检测,ANPR#车牌识别,AccessControllerEvent#门禁主机检测事件,CDsStatus#光盘刻录状态上报,DBD#驾驶行为报警,GPSUpload#GPS信息上传,HFPD#高频图像特征识别报警,IO#信号量报警,IOTD#非视频设备检测事件,LFPD#低频人员检测,PALMismatch#视频制式不匹配,PIR#PIR,PeopleCounting#客流量统计,PeopleNumChange#人数异常,Standup#人员站立检测,TMA#测温报警,TMPA#测温预警,VMD#移动侦测,abnormalAcceleration#设备加速度异常报警,abnormalDriving#异常驾驶行为,advReachHeight#折线攀高检测,alarmResult#人脸比对,attendance#考勤事件,attendedBaggage#物品拿取,audioAbnormal#声强突变检测,audioexception#音频异常侦测,behaviorResult#异常行为识别结果上报,blindSpotDetection#盲区监测报警,cardMatch#认证比对,changedStatus#状态变化上报,collision#碰撞,containerDetection#集装箱检测,crowdSituationAnalysis#人群态势分析,databaseException#数据库异常,defocus#虚焦侦测,diskUnformat#磁盘未格式化,diskerror#硬盘错误,diskfull#硬盘满,driverConditionMonitor#驾驶员状态监测报警,emergencyAlarm#紧急报警,faceCapture#人脸抓拍识别,faceSnapModeling#人脸抓拍建模,facedetection#人脸侦测,failDown#人员倒地(使用错误的拼写,faultAlarm#故障告警,fielddetection#区域入侵,fireDetection#火点检测,fireEscapeDetection#消防通道检测,flowOverrun#流量超限,framesPeopleCounting#区域人数统计,getUp#起身检测,group#人员聚集,hdBadBlock#硬盘坏块,hdImpact#硬盘冲击,headRiseRate#抬头率事件,heatmap#热度图报警,highHDTemperature#硬盘温度过高,highTempAlarm#设备温度过高报警,hotSpare#热备异常,illaccess#非法访问,ipcTransferAbnormal#IPC迁移失败,ipconflict#IP地址冲突,keyPersonGetUp#重点人员起身检测,leavePosition#高危岗位异常-离岗检测,linedetection#越界侦测(穿越警戒线),listSyncException#列表(名单)同步异常,loitering#徘徊侦测,lowHDTemperature#硬盘温度过低,mixedTargetDetection#混合目标检测,modelError#模型错误,nicbroken#网络断开,nodeOffline#掉线异常,nonPoliceIntrusion#非警察人员入侵,objectsThrownDetection#高空抛物事件检测,overSpeed#超速报警,overtimeTarry#超时滞留检测,parking#停车侦测,peopleNumChange#人数变化,peopleNumCounting#人数统计(区别于区域人数统计),personAbnormalAlarm#人员身份异常报警,personDensityDetection#人员密度,personQueueCounting#排队人数检测,personQueueDetection#排队检测,personQueueRealTime#人员排队检测实时数据上报,personQueueTime#排队时长检测,playCellphone#玩手机检测,pocException#视频异常,poe#POE供电异常,policeAbsent#警察不在场,radarAlarm#雷达告警,radarFieldDetection#雷达区域入侵,radarLineDetection#雷达越界侦测,radarPerimeterRule#雷达规则数据,radarTargetDetection#雷达目标数据,radarVideoDetection#雷视目标检测,raidException#阵列异常,rapidMove#快速移动,reachHeight#攀高检测,recordCycleAbnormal#录像周期不足,recordException#录像异常,regionEntrance#进入区域,regionExiting#离开区域,retention#人员滞留事件,rollover#侧翻,running#人员奔跑,safetyHelmetDetection#安全帽检测,scenechangedetection#场景变更,sensorAlarm#角速度加速度报警,severeHDFailure#硬盘严重故障,shelteralarm#遮挡报警,shipsDetection#船只检测,smokeAndFireDetection#烟火检测,smokeDetection#烟雾检测,softIO#报警软IO,spacingChange#间距异常,sysStorFull#集群系统存储满异常,takingElevatorDetection#乘梯检测(电瓶车进电梯检测),targetCapture#目标抓拍,temperature#温差报警,thermometry#温度报警,thirdPartyException#第三方异常,toiletTarry#目标区域滞留超时检测,tollCodeInfo#二维码信息上报,tossing#抛物,unattendedBaggage#物品遗留,vacantSeatRate#空座率事件,vehicleMatchResult#非授权名单车辆报警上传,vehicleRcogResult#车辆图片二次识别,versionAbnormal#集群版本异常,videoException#视频异常,videoloss#视频丢失,violationAlarm#违规告警,violentMotion#剧烈运动,yardTarry#放风场滞留检测]-->shipsDetection
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出端口ID, range:[,]-->1
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, int, 星期, range:[1,7], step:, unit:, unitType:-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间范围-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间范围-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

96. 配置船只检测单个通道时间布防配置

96.1 命令

PUT /ISAPI/Event/schedules/shipsDetections/shipsDetection-<channelID>

96.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防计划, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 事件类型-通道号, range:[,]-->test
  </id>
  <eventType>
    <!--req, enum, 事件类型, subType:string, [ADAS#高级辅助驾驶报警,ADASAlarm#高级驾驶辅助报警,AID#交通事件检测,ANPR#车牌识别,AccessControllerEvent#门禁主机检测事件,CDsStatus#光盘刻录状态上报,DBD#驾驶行为报警,GPSUpload#GPS信息上传,HFPD#高频图像特征识别报警,IO#信号量报警,IOTD#非视频设备检测事件,LFPD#低频人员检测,PALMismatch#视频制式不匹配,PIR#PIR,PeopleCounting#客流量统计,PeopleNumChange#人数异常,Standup#人员站立检测,TMA#测温报警,TMPA#测温预警,VMD#移动侦测,abnormalAcceleration#设备加速度异常报警,abnormalDriving#异常驾驶行为,advReachHeight#折线攀高检测,alarmResult#人脸比对,attendance#考勤事件,attendedBaggage#物品拿取,audioAbnormal#声强突变检测,audioexception#音频异常侦测,behaviorResult#异常行为识别结果上报,blindSpotDetection#盲区监测报警,cardMatch#认证比对,changedStatus#状态变化上报,collision#碰撞,containerDetection#集装箱检测,crowdSituationAnalysis#人群态势分析,databaseException#数据库异常,defocus#虚焦侦测,diskUnformat#磁盘未格式化,diskerror#硬盘错误,diskfull#硬盘满,driverConditionMonitor#驾驶员状态监测报警,emergencyAlarm#紧急报警,faceCapture#人脸抓拍识别,faceSnapModeling#人脸抓拍建模,facedetection#人脸侦测,failDown#人员倒地(使用错误的拼写,faultAlarm#故障告警,fielddetection#区域入侵,fireDetection#火点检测,fireEscapeDetection#消防通道检测,flowOverrun#流量超限,framesPeopleCounting#区域人数统计,getUp#起身检测,group#人员聚集,hdBadBlock#硬盘坏块,hdImpact#硬盘冲击,headRiseRate#抬头率事件,heatmap#热度图报警,highHDTemperature#硬盘温度过高,highTempAlarm#设备温度过高报警,hotSpare#热备异常,illaccess#非法访问,ipcTransferAbnormal#IPC迁移失败,ipconflict#IP地址冲突,keyPersonGetUp#重点人员起身检测,leavePosition#高危岗位异常-离岗检测,linedetection#越界侦测(穿越警戒线),listSyncException#列表(名单)同步异常,loitering#徘徊侦测,lowHDTemperature#硬盘温度过低,mixedTargetDetection#混合目标检测,modelError#模型错误,nicbroken#网络断开,nodeOffline#掉线异常,nonPoliceIntrusion#非警察人员入侵,objectsThrownDetection#高空抛物事件检测,overSpeed#超速报警,overtimeTarry#超时滞留检测,parking#停车侦测,peopleNumChange#人数变化,peopleNumCounting#人数统计(区别于区域人数统计),personAbnormalAlarm#人员身份异常报警,personDensityDetection#人员密度,personQueueCounting#排队人数检测,personQueueDetection#排队检测,personQueueRealTime#人员排队检测实时数据上报,personQueueTime#排队时长检测,playCellphone#玩手机检测,pocException#视频异常,poe#POE供电异常,policeAbsent#警察不在场,radarAlarm#雷达告警,radarFieldDetection#雷达区域入侵,radarLineDetection#雷达越界侦测,radarPerimeterRule#雷达规则数据,radarTargetDetection#雷达目标数据,radarVideoDetection#雷视目标检测,raidException#阵列异常,rapidMove#快速移动,reachHeight#攀高检测,recordCycleAbnormal#录像周期不足,recordException#录像异常,regionEntrance#进入区域,regionExiting#离开区域,retention#人员滞留事件,rollover#侧翻,running#人员奔跑,safetyHelmetDetection#安全帽检测,scenechangedetection#场景变更,sensorAlarm#角速度加速度报警,severeHDFailure#硬盘严重故障,shelteralarm#遮挡报警,shipsDetection#船只检测,smokeAndFireDetection#烟火检测,smokeDetection#烟雾检测,softIO#报警软IO,spacingChange#间距异常,sysStorFull#集群系统存储满异常,takingElevatorDetection#乘梯检测(电瓶车进电梯检测),targetCapture#目标抓拍,temperature#温差报警,thermometry#温度报警,thirdPartyException#第三方异常,toiletTarry#目标区域滞留超时检测,tollCodeInfo#二维码信息上报,tossing#抛物,unattendedBaggage#物品遗留,vacantSeatRate#空座率事件,vehicleMatchResult#非授权名单车辆报警上传,vehicleRcogResult#车辆图片二次识别,versionAbnormal#集群版本异常,videoException#视频异常,videoloss#视频丢失,violationAlarm#违规告警,violentMotion#剧烈运动,yardTarry#放风场滞留检测]-->ADAS
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出端口ID, range:[,]-->1
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, int, 星期, range:[1,7], step:, unit:, unitType:-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间范围-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间范围-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

96.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

97. 配置清空船只计数信息

97.1 命令

PUT /ISAPI/Smart/shipsDetectionCount/<channelID>/resetCount

97.2 输入参数

97.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>