package com.example.iot_controlhost.utils.global;

/**
 * 系统默认值，需要开发人员手动设置
 *
 * @Author DuanKaiji
 */
public class Variable {
    /**
     * 记录传感器历史值时间间隔
     * 单位：毫秒
     */
    public static final double SENSOR_RECORD_TIME = 60 * 1000;
    /**
     * 刷新获取传感器数据的时间间隔
     * 单位：秒
     */
    public static final long SENSOR_REFRESH_TIME = 5;
    /**
     * 温湿度异常持续多长时间则上报-公众号
     *
     * 最好为@DEVICE_ANOMALY_CHECK_TIME / 60 的倍数
     * 单位：分钟
     */
    public static final long WARNING_REPORT_TIME_INTERVAL = 20;
    /**
     * 温湿度异常持续多长时间则上报-语音
     *
     *  必须大于 @WARNING_REPORT_TIME_INTERVAL
     *  最好为 （@DEVICE_ANOMALY_CHECK_TIME / 60） 的倍数
     * 单位：分钟
     */
    public static final long WARNING_REPORT_TIME_INTERVAL_VOICE = 30;
    /**
     * 其他设备，使保持运行状态的循环检查时间
     * 单位：秒
     */
    public static final long CHECK_CLOSE_INFRARED = 4 * 60;
    /**
     * 开启物理开关后开启空调遥控的等待时间
     * 单位：毫秒
     */
    public static final long WAIT_START_INFRARED = 2 * 1000;
    /**
     * 开启物理开关后开启空调遥控的等待时间
     * 单位：毫秒
     */
    public static final long WAIT_START_485_DE = 5 * 1000;
    /**
     * 开启物理开关后开启空调遥控的等待时间
     * 单位：毫秒
     */
    public static final long WAIT_START_INFRARED_FOR_DEHUMIDIFIER = 5 * 1000;
    /**
     * 自动设置地暖PWM时的功率误差比例
     */
    public static final double FLOOR_GEAR_BIAS = 0.02;
    /**
     * 刷新共育状态
     * 单位：秒
     */
    public static final long REFRESH_CULTURE_STATE_TIME = 60 * 60 * 1;
    /**
     * MQTT自动上报循环时间-传感器信息
     * 单位：秒
     */
    public static final long UPLOAD_SENSOR_DATA_TIME = 10;
    /**
     * 自动模式下检测更新策略时间-温度、湿度、换气
     * 单位：秒
     */
    public static final long AUTO_CHECK_TIME = 10;
    /**
     * 空调/地暖 略过相同操作控制的次数
     */
    public static final int SAME_OPERATE_TIMES = 5;

    /**
     * 自动模式下各种温度控制算法的“不作为”范围-普通模式/高精度模式
     * 单位：摄氏度
     */
    public static final double AUTO_DO_NOTHING_TEMPERATURE_NORMAL = 1;
    /**
     * 自动模式下-高精度模式-（目标与极值）最小温度差
     * 单位：摄氏度
     */
    public static final double AUTO_DO_NOTHING_TEMPERATURE_FULL = 0.2;
    /**
     * 自动模式下各种温度控制算法的“不作为”范围-节能模式
     * 单位：摄氏度
     */
    public static final double AUTO_DO_NOTHING_TEMPERATURE_SAVING = 2;
    /**
     * 自动模式下各种湿度控制算法的“不作为”范围
     * 单位：百分比
     */
    public static final double AUTO_DO_NOTHING_HUMIDITY = 5;
    /**
     * 硬性错误次数达到多少次则上报
     * 单位：次数
     */
    public static final int WARNING_REPORT_ERROR_TIMES = 30;
    /**
     * 防抖拦截时间,即此时间内的点击事件不会被重复执行
     * 单位：毫秒
     */
    public static final long CLICK_INTERVAL = 600;
    /**
     * 地暖最大温度限制
     * 单位：摄氏度
     */
    public static final double FLOOR_MAX_TEMPERATURE_LIMIT = 38;

    /**
     * 设备异常检测轮询时间
     * 在连续3次后报告
     * 单位：秒
     */
    public static final long DEVICE_ANOMALY_CHECK_TIME = 5 * 60;
    /**
     * 长时间未开始   的判定时间
     */
    public static long LONG_TIME_NOT_START = 60 * 60 * 24 * 5; // 5 days
}
