wxr
2022-05-18 46719b11d11b6544b57cf966cf498fbedf9b613e
HDL_ON/DAL/DriverLayer/Control.cs
@@ -360,10 +360,11 @@
        /// <param name="function"></param>
        /// <param name="useRemote">是否直接使用远程发送</param>
        /// <returns></returns>
        public void SendWriteCommand(Function function, Dictionary<string, string> commandDictionary, bool useRemote = false,int resend = 3)
        public bool SendWriteCommand(Function function, Dictionary<string, string> commandDictionary, bool useRemote = false,int resend = 3)
        {
            function.controlCounter++;
            function.refreshTime = DateTime.Now;
            //如果是控制调光的开时,亮度值不能为0
            if (commandDictionary.Count > 2)
@@ -404,7 +405,7 @@
                upDataObj.objects.Add(asd);
                revString = Newtonsoft.Json.JsonConvert.SerializeObject(upDataObj);
                UpdataFunctionStatus(revString, null, true);
                return;
                return true;
            }
@@ -459,6 +460,7 @@
                        var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson);
                        new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id,resend);
                        MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}");
                        //Control.Ins.MsgInfoList.Add($"本地通讯 发送HDL-Link数据:{functionControlDataJson}"+"\r\n");
                    }
                }
                //远程通讯
@@ -493,6 +495,8 @@
                }
            }
            return true;
        }
        /// <summary>
        /// 全开全关功能
@@ -663,7 +667,7 @@
                 gatewayId = DB_ResidenceData.Instance.HomeGateway.gatewayId,
                  sid = securityAlarm.sid, status = state, userSecurityId = securityAlarm.userSecurityId
                } });
                MainPage.Log($"安防控制结果:{result.Code}");
                MainPage.Log($"安防控制结果:code:{result.Code};msg:{result.message}");
            }
            else
            {
@@ -948,6 +952,7 @@
        /// <summary>
        /// 更新设备状态
        /// A协议数据
        /// Tag Link状态处理
        /// </summary>
        /// <param name="updateBytes"></param>
        public void UpdataFunctionStatus(string revString, byte[] usefulBytes,bool isCloudData = false)
@@ -1062,6 +1067,10 @@
                                RollingShutterPage.UpdataState(localFunction);
                                break;
                            case SPK.CurtainShades:
                                break;
                            case SPK.HvacCac:
                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
                                break;
                            case SPK.AcStandard:
                            case SPK.HvacAC:
@@ -1187,6 +1196,7 @@
                            case SPK.AirFreshStandard:
                            case SPK.HvacAirFresh:
                            case SPK.SensorGas:
                            case SPK.SensorHelp:
                                //设备状态推送
                                //状态更新
                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
@@ -1232,13 +1242,88 @@
            }
            else
            {
                Dictionary<string, object> d = new Dictionary<string, object>();
                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                d.Add("deviceId", doorlock.deviceId);
                var requestJson = HttpUtil.GetSignRequestJson(d);
                HttpUtil.RequestHttpsPost("/home-wisdom/app/device/door/remoteOpen", requestJson);
                ConfirmUnlocking(doorlock.deviceId, extStr);
            }
        }
        /// <summary>
        /// 确认开锁
        /// </summary>
        /// <param name="functionId"></param>
        /// <param name="pwd"></param>
        public void ConfirmUnlocking(string functionId,string pwd)
        {
            Loading loading = new Loading();
            MainPage.BaseView.AddChidren(loading);
            loading.BackgroundColor = 0x88000000;
            loading.LodingBackgroundColor = UI.CSS.CSS_Color.BackgroundColor;
            loading.Start(Language.StringByID(StringId.PleaseWait));
            new System.Threading.Thread(() =>
            {
                try
                {
                    Dictionary<string, object> d = new Dictionary<string, object>();
                    d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                    d.Add("deviceId", functionId);
                    d.Add("pwd", pwd);
                    var requestJson = HttpUtil.GetSignRequestJson(d);
                    var pack = HttpUtil.RequestHttpsPost("/home-wisdom/app/device/door/pwdConfirm", requestJson);
                    if (pack.Code == StateCode.SUCCESS)
                    {
                        Newtonsoft.Json.Linq.JObject pairs = Newtonsoft.Json.Linq.JObject.Parse(pack.Data.ToString());
                        var scrip = pairs.GetValue("scrip");
                        d = new Dictionary<string, object>();
                        d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                        d.Add("deviceId", functionId);
                        d.Add("scrip", scrip);
                        requestJson = HttpUtil.GetSignRequestJson(d);
                        pack = HttpUtil.RequestHttpsPost("/home-wisdom/app/device/door/remoteOpen", requestJson);
                        //if(pack.Code == StateCode.SUCCESS)
                        //{
                        //    return true;
                        //}
                        //else
                        //{
                        //    return false;
                        //}
                        if (pack.Code != StateCode.SUCCESS) {
                            Application.RunOnMainThread(() => {
                                new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), pack.message);
                                UserInfo.Current.doorPasswordString = "";//
                                UserInfo.Current.LastTimeOpenDoor = DateTime.MinValue;
                            });
                        }
                    }
                    if (pack.Code != StateCode.SUCCESS)
                    {
                        Application.RunOnMainThread(() => {
                            if(string.IsNullOrEmpty(pack.message))
                            {
                                new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip),
                                    Language.StringByID(StringId.OperationFailed));
                            }
                            else
                            {
                                new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), pack.message);
                            }
                        });
                    }
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        loading.Hide();
                        loading.RemoveFromParent();
                    });
                }
            })
            { IsBackground = true }.Start();
        }
        //密码冻结
        //密码验证