wjc
2023-06-05 8369943018da4ffe3fed1ecf5992edaee597d49c
2023年06月05日17:44:04

人体存在传感器作为条件
12个文件已修改
372 ■■■■■ 已修改文件
HDL-ON_Android/Assets/Language.ini 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Resources/Resource.designer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Language.ini 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/R.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Function.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini
@@ -1149,6 +1149,9 @@
7166=Camera
7167=Main switch
7168=PM10
7169=Time of duration
7170=Human presence detection
7171=continue
8501=Video door lock
8502=Electric quantity
@@ -2432,6 +2435,10 @@
7166=摄像头
7167=总控开关
7168=PM10
7169=持续时间
7170=人体存在检测
7171=持续
8501=视频门锁
@@ -3711,6 +3718,9 @@
7166=Camera
7167=Main switch
7168=PM10
7169=Time of duration
7170=Human presence detection
7171=continue
8501=Video door lock
8502=Electric quantity
@@ -4985,6 +4995,9 @@
7166=Camera
7167=Main switch
7168=PM10
7169=Time of duration
7170=Human presence detection
7171=continue
8501=Video door lock
8502=Electric quantity
@@ -6258,6 +6271,9 @@
7166=Camera
7167=Main switch
7168=PM10
7169=Time of duration
7170=Human presence detection
7171=continue
8501=Video door lock
8502=Electric quantity
HDL-ON_Android/Resources/Resource.designer.cs
@@ -14,7 +14,7 @@
{
    
    
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.2.8.165")]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
    public partial class Resource
    {
        
HDL-ON_iOS/Resources/Language.ini
@@ -1149,6 +1149,9 @@
7166=Camera
7167=Main switch
7168=PM10
7169=Time of duration
7170=Human presence detection
7171=continue
8501=Video door lock
8502=Electric quantity
@@ -2432,6 +2435,10 @@
7166=摄像头
7167=总控开关
7168=PM10
7169=持续时间
7170=人体存在检测
7171=持续
8501=视频门锁
@@ -3711,6 +3718,9 @@
7166=Camera
7167=Main switch
7168=PM10
7169=Time of duration
7170=Human presence detection
7171=continue
8501=Video door lock
8502=Electric quantity
@@ -4985,6 +4995,9 @@
7166=Camera
7167=Main switch
7168=PM10
7169=Time of duration
7170=Human presence detection
7171=continue
8501=Video door lock
8502=Electric quantity
@@ -6258,6 +6271,9 @@
7166=Camera
7167=Main switch
7168=PM10
7169=Time of duration
7170=Human presence detection
7171=continue
8501=Video door lock
8502=Electric quantity
HDL_ON/Common/R.cs
@@ -3238,6 +3238,19 @@
        /// PM210
        /// </summary>
        public const int pm10 = 7168;
        /// <summary>
        /// 持续时间
        /// </summary>
        public const int chixushijian = 7169;
        /// <summary>
        /// 人体存在检测
        /// </summary>
        public const int rentijiance = 7170;
        /// <summary>
        /// 持续
        /// </summary>
        public const int chixu = 7171;
        /// <summary>
        /// 视频门锁
HDL_ON/Entity/Function/Function.cs
@@ -1681,6 +1681,10 @@
        /// </summary>
        public const string SensorPir = "sensor.pir";
        /// <summary>
        /// 人体移动传感器(带持续时间)
        /// </summary>
        public const string sensorPirhold = "sensor.pir_hold";
        /// <summary>
        /// (门窗传感器)
        /// </summary>
        public const string SensorDoorWindow = "sensor.doorwindow";
@@ -1734,6 +1738,7 @@
        {
            var spkList = new List<string>();
            //spkList.Add(SensorLight);
            spkList.Add(sensorPirhold);
            spkList.Add(SensorPir);
            spkList.Add(SensorHelp);
            spkList.Add(SensorDoorWindow);
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -36,6 +36,12 @@
        /// 可视对讲专用
        /// </summary>
        private string identifier;
        /// <summary>
        /// 人体传感器持续时间专用
        /// </summary>
        private string hold_time=string.Empty;
        private static ConditionDeviceFunList m_Current = null;
@@ -184,6 +190,59 @@
                        if (edit)
                        {
                            GetEditState(device, index, view.btnState, null, null, null);
                        }
                    }
                    break;
                //人体存在传感器
                case SPK.sensorPirhold:
                    {
                        LogicView.FunTypeView view1 = new LogicView.FunTypeView();
                        view1.btnText.TextID = StringId.rentijiance;
                        view1.btnText.Name = Language.StringByID(StringId.rentijiance);
                        fLayout.AddChidren(view1.FLayoutView());
                        view1.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            DeviceView(device, view1.btnState, StringId.youren, StringId.wuren);
                        };
                        LogicView.FunTypeView view2 = new LogicView.FunTypeView();
                        view2.frameLayout.Y = view1.frameLayout.Bottom;
                        view2.btnText.TextID = StringId.chixushijian;
                        fLayout.AddChidren(view2.FLayoutView());
                        view2.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            //主界面控件
                            FrameLayout fLayout = new FrameLayout
                            {
                                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                            };
                            this.AddChidren(fLayout);
                            TimeView(fLayout, device, view2.btnState);
                        };
                        if (edit)
                        {
                            try
                            {
                                Input inputs = Logic.currlogic.input[index];
                                if (!string.IsNullOrEmpty(inputs.hold_time) && int.Parse(inputs.hold_time) > 0)
                                {
                                    int time = int.Parse(inputs.hold_time);
                                    int h = time / (60 * 60);
                                    int m = time % (60 * 60) / 60;
                                    int s = (time % (60 * 60) % 60);
                                    view2.btnState.Text = inputs.hold_time + "s";
                                    view2.btnState.Name = h + ":" + m + ":" + s;
                                    this.hold_time = inputs.hold_time;
                                }
                            }
                            catch { }
                            GetEditState(device, index, view1.btnState, view2.btnState, null, null);
                        }
                    }
                    break;
@@ -694,6 +753,11 @@
                    inputDevice.condition_type = "9";
                    inputDevice.identifier = this.identifier;
                }
                else if (device.spk == SPK.sensorPirhold)
                {
                    //人体存在传感器
                    inputDevice.hold_time = this.hold_time;
                }
                if (edit)
@@ -737,6 +801,7 @@
            }
        }
        /// <summary>
        /// 设备选择条件界面
        /// </summary>
@@ -779,6 +844,7 @@
                            }
                        }
                        break;
                    case SPK.sensorPirhold:
                    case SPK.SensorDuiShe:
                    case SPK.SensorShanLan:
                    case SPK.SensorPir:
@@ -1191,6 +1257,43 @@
        }
        /// <summary>
        /// 时间方法
        /// </summary>
        /// <param name="fLayout">在哪个界面显示</param>
        /// <param name="edit">(true=编辑;false=新建)</param>
        /// <param name="index">编辑条件的索引</param>
        private void TimeView(FrameLayout fLayout,Function device, Button button)
        {
            LogicView.TimeView timePointView = new LogicView.TimeView();
            timePointView.FLayoutView(fLayout);
            timePointView.Time(fLayout, button.Name, (timeValue) =>
            {
                try
                {
                    if (timeValue.Contains(":"))
                    {
                        string[] ary = timeValue.Split(':');
                        int h = int.Parse(ary[0]) * 60 * 60;
                        int m = int.Parse(ary[1]) * 60;
                        int s = int.Parse(ary[2]);
                        this.hold_time = (h + m + s).ToString();
                        if (button != null)
                        {
                            button.Text = this.hold_time + "s";
                            button.Name = timeValue;
                        }
                        selectedState = device.spk + "_" + timeValue;
                    }
                }
                catch { }
            });
        }
        /// <summary>
        /// 显示编辑之前的设备状态
        /// </summary>
        /// <param name="device">编辑设备</param>
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -247,7 +247,7 @@
                                        {
                                            inputView.btnState.Text = Language.StringByID(StringId.kaiqi);
                                        }
                                    }
                                    break;
                                case SPK.SensorUtrasonic:
@@ -307,12 +307,14 @@
                                    {
                                        string value = this.GetValue(dicList);
                                        inputView.btnState.Text = Language.StringByID(StringId.wuren);
                                        if (value == "fall") {
                                        if (value == "fall")
                                        {
                                            inputView.btnState.Text = Language.StringByID(StringId.diedao);
                                        }
                                    }
                                    break;
                                case SPK.SensorEnvironment:case SPK.SensorEnvironmentHailin:
                                case SPK.SensorEnvironment:
                                case SPK.SensorEnvironmentHailin:
                                case SPK.SensorEnvironment2:
                                case SPK.SensorEnvironment3:
                                    {
@@ -376,7 +378,7 @@
                                case SPK.SensorTemperature:
                                    {
                                        string str =this.GetText(dicList, "temperature");
                                        string str = this.GetText(dicList, "temperature");
                                        inputView.btnState.Text = str;
                                    }
                                    break;
@@ -451,7 +453,7 @@
                                            }
                                        }
                                        inputView.btnState.Text = s;
                                    }
@@ -462,7 +464,32 @@
                                        {
                                            inputView.btnState.Text = Language.StringByID(StringId.quyuruqingaojing);
                                        }
                                    }
                                    break;
                                case SPK.sensorPirhold:
                                    {
                                        string value = this.GetKeyValue("people_status", dicList);
                                        if (string.IsNullOrEmpty(value))
                                        {
                                            inputView.btnState.Text = inputCondition.hold_time + "s";
                                            break;
                                        }
                                        inputView.btnState.Text = Language.StringByID(StringId.wuren);
                                        if (value == "true")
                                        {
                                            inputView.btnState.Text = Language.StringByID(StringId.youren);
                                        }
                                        if (!string.IsNullOrEmpty(inputCondition.hold_time) && int.Parse(inputCondition.hold_time) > 0)
                                        {
                                            inputView.btnState.Text += "持续" + inputCondition.hold_time + "s";
                                        }
                                    }
                                    break;
                            }
@@ -1978,6 +2005,7 @@
                        }
                    }
                    break;
                case SPK.SensorGas:
                case SPK.SensorSmoke:
                    {
@@ -2046,6 +2074,23 @@
                        }
                    }
                    break;
                case SPK.sensorPirhold:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "true")
                            {
                                button1.Text = Language.StringByID(StringId.youren);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.wuren);
                            }
                        }
                    }
                    break;
                case SPK.SensorDoorWindow:
                    {
                        foreach (var dic in dicList)
HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
@@ -106,6 +106,10 @@
        /// condition_type=9时使用
        /// </summary>
        public string identifier = "";
        /// <summary>
        /// 人体移动传感器(带持续时间)
        /// </summary>
        public string hold_time = "";
        public List<Dictionary<string, string>> condition = new List<Dictionary<string, string>>();
        /// <summary>
        /// 地理围栏配置
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -356,7 +356,7 @@
            {
                return "MusicIcon/localMusic.png";
            }
            else if (SPK.SensorPm10 == device.spk)
            else if (SPK.SensorPm10 == device.spk || SPK.sensorPirhold == device.spk)
            {
                return "LogicIcon/sensor.png";
            }
@@ -467,6 +467,8 @@
                case SPK.SensorTVOC:
                case SPK.SensorHcho:
                case SPK.SensorHelp:
                case SPK.sensorPirhold:
                    {
                        strPath = "LogicIcon/sensor.png";
                    }
@@ -562,6 +564,7 @@
                          || device.spk == SPK.SensorHcho
                          || device.spk == SPK.SensorHelp
                          || device.spk == SPK.SensorPm10
                          || device.spk == SPK.sensorPirhold
            );
            if (sensor != null)
            {
@@ -686,6 +689,7 @@
                functionTypeList.Add(SPK.SensorHcho);
                functionTypeList.Add(SPK.SensorHelp);
                functionTypeList.Add(SPK.SensorPm10);
                functionTypeList.Add(SPK.sensorPirhold);
            }
@@ -781,6 +785,7 @@
                functionTypeList.Add(SPK.SensorPm10);
                functionTypeList.Add(SPK.VideoDoorLock);
                functionTypeList.Add(SPK.AcIr);
                functionTypeList.Add(SPK.sensorPirhold);
            }
@@ -842,6 +847,7 @@
                        deviceTypeList.Add(SPK.SensorPm10);
                        deviceTypeList.Add(SPK.VideoDoorLock);
                        deviceTypeList.Add(SPK.AcIr);
                        deviceTypeList.Add(SPK.sensorPirhold);
                    }
                    break;
@@ -1186,7 +1192,7 @@
                 //  new Entity.Function { sid = "1234567892", name = "湿度传感器", spk = Entity.SPK.SensorHumidity },
                    //new Entity.Function { sid = "12345678933456", name = "门锁", spk = Entity.SPK.DoorLock },
                    //  new Entity.Function { sid = "1234567895444", name = "视频门锁", spk = Entity.SPK.VideoDoorLock },
                      new Entity.Function { sid = "12345678968888", name = "pm10", spk = Entity.SPK.LightDimming },
                      new Entity.Function { sid = "12345678968888", name = "人体存在传感器", spk = Entity.SPK.sensorPirhold },
                      //  new Entity.Function { sid = "1234567897", name = "毫米波传感器1", spk = Entity.SPK.SenesorMegahealth2 },
                      // new Entity.Function { sid = "1234567899", name = "门磁传感器", spk = Entity.SPK.SensorDoorWindow },
                      //  new Entity.Function { sid = "12345678991234", name = "HDL机械手", spk = Entity.SPK.MechanicalArm },
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
@@ -81,7 +81,7 @@
            frameLayout.AddChidren(btnLine);
        }
        /// <summary>
        /// 选中时间的方法
        /// 选中时间的方法(时,分)
        /// </summary>
        /// <param name="fLayout">父控件</param>
        /// <param name="currState">之前状态值</param>
@@ -156,6 +156,120 @@
                string hour = GethStringList()[index1].Split(' ')[0];
                string minuet = GetmStringList()[index2].Split(' ')[0];
                timepoint = hour + ":" + minuet;
            };
            //确定点击事件
            btnConfirm.MouseUpEventHandler += (sender, e3) =>
            {
                action(timepoint);
                //移除fLayout界面
                fLayout.RemoveFromParent();
            };
        }
        /// <summary>
        /// 选中时间的方法(时,分,秒)
        /// </summary>
        /// <param name="fLayout">父控件</param>
        /// <param name="currState">之前状态值</param>
        /// <param name="action">返回时间值</param>
        public void Time(FrameLayout fLayout, string currState, Action<string> action)
        {
            //取消点击事件
            btnCancel.MouseUpEventHandler += (sender, e1) =>
            {
                //移除fLayout界面
                fLayout.RemoveFromParent();
            };
            //加载数据界面的设置方法(列表互不联动)
            mUIPickerView.setNPicker(GethStringList(), GetmStringList(), GetsStringList());
            var systemHour = DateTime.Now.Hour; //获取小时
            var systeMinute = DateTime.Now.Minute;//获取分钟
            var systeSecond = DateTime.Now.Second;//获取秒
            int systemHourIndex = 0;
            int systeMinuteIndex = 0;
            int systeSecondIndex = 0;
            for (int i = 0; i < GethIntList().Count; i++)
            {
                var currhour = GethIntList()[i];
                if (systemHour == currhour)
                {
                    systemHourIndex = i;
                    break;
                }
            }
            for (int i = 0; i < GetmIntList().Count; i++)
            {
                var currminute = GetmIntList()[i];
                if (systeMinute == currminute)
                {
                    systeMinuteIndex = i;
                    break;
                }
            }
            for (int i = 0; i < GetsIntList().Count; i++)
            {
                var currsecond= GetsIntList()[i];
                if (systeSecond == currsecond)
                {
                    systeSecondIndex = i;
                    break;
                }
            }
            //默认初始选中状态
            mUIPickerView.setCurrentItems(systemHourIndex, systeMinuteIndex, systeSecondIndex);
            string currH = "";
            string currM = "";
            string currS = "";
            if (systemHour < 10)
            {
                currH = "0" + systemHour.ToString();
            }
            else
            {
                currH = systemHour.ToString();
            }
            if (systeMinute < 10)
            {
                currM = "0" + systeMinute.ToString();
            }
            else
            {
                currM = systeMinute.ToString();
            }
            if (systeSecond < 10)
            {
                currS = "0" + systeMinute.ToString();
            }
            else
            {
                currS = systeMinute.ToString();
            }
            //定义一个局部变量记录选中时间
            string timepoint = currH + ":" + currM + ":" + currS;
            if (!string.IsNullOrEmpty(currState))
            {
                int hIndex = GetValueIndex(currState, 0, 1, GethIntList());
                int mIndex = GetValueIndex(currState, 1, 0, GetmIntList());
                int sIndex = GetValueIndex(currState, 2, 0, GetsIntList());
                //更新初始状态
                mUIPickerView.setCurrentItems(hIndex, mIndex, sIndex);
                timepoint = currState;
            }
            //选中时间回调方法,时间变化一次回调一次
            mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
            {
                try
                {
                    string hour = GethStringList()[index1].Split(' ')[0];
                    string minuet = GetmStringList()[index2].Split(' ')[0];
                    string second = GetmStringList()[index3].Split(' ')[0];
                    timepoint = hour + ":" + minuet + ":" + second;
                }
                catch { }
            };
            //确定点击事件
            btnConfirm.MouseUpEventHandler += (sender, e3) =>
@@ -306,7 +420,22 @@
            }
            return mList;
        }
        /// <summary>
        /// 获取60秒列表
        /// </summary>
        /// <returns></returns>
        public List<int> GetsIntList()
        {
            //初始化列表
            var mList = new List<int>();
            for (int i = 0; i < 60; i++)
            {
                //添加数据
                mList.Add(i);
            }
            return mList;
        }
        /// <summary>
        /// 获取时间值
        /// </summary>
@@ -317,6 +446,10 @@
        /// <returns></returns>
        public int GetValueIndex(string str, int digit, int startIndex, List<int> list)
        {
            if (string.IsNullOrEmpty(str))
            {
                return 0;
            }
            int index = 0;
            int value = 0;
            if (str.Contains(":"))
HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
@@ -408,12 +408,7 @@
                        }
                        break;
                    case 8:
                        {
                            iconInt = 5;
                        }
                        break;
                }
                if (!iconIntValue.Contains(iconInt))
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -114,6 +114,7 @@
                {
                    var inputTypeJOb = new JObject { };
                    inputTypeJOb.Add("sid", dictionary.sid);
                    inputTypeJOb.Add("hold_time", dictionary.hold_time);
                    inputTypeJOb.Add("condition_type", dictionary.condition_type);
                    if (dictionary.condition_type=="9") {
                        inputTypeJOb.Add("identifier", dictionary.identifier);
@@ -241,6 +242,7 @@
                {
                    var inputTypeJOb = new JObject { };
                    inputTypeJOb.Add("sid", dictionary.sid);
                    inputTypeJOb.Add("hold_time", dictionary.hold_time);
                    inputTypeJOb.Add("condition_type", dictionary.condition_type);
                    if (dictionary.condition_type == "9")
                    {