HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -5,7 +5,6 @@
using System.Text;
using HDL_ON.Entity;
using Newtonsoft.Json.Linq;
using Shared;
namespace HDL_ON.DAL.Server
{
@@ -45,14 +44,19 @@
        /// <param name="qType">时间查询类型:hour=近24小时、week=近一周、month = 近一月 </param>
        /// <param name="deviceId">设备ID</param>
        /// <param name="deviceKey">功能查询类型:pm25</param>
        /// <param name="time">具体查询的日期,金茂温控器使用</param>
        /// <returns></returns>
        public ResponsePackNew GetSensorHistory(string qType, string deviceId, string deviceKey)
        public ResponsePackNew GetSensorHistory(string qType, string deviceId, string deviceKey, string time = "")
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("type", qType);
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", deviceId);
            d.Add("key", deviceKey);
            if (time != "")
            {
                d.Add("time", time);
            }
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_EnvironmentalSensorHistoricalData, requestJson);
@@ -144,6 +148,7 @@
            {
                var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(revertObj.Data.ToString());
                UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken;
                UserInfo.Current.AccessToken = revertData.accessToken;
                UserInfo.Current.RefreshToken = revertData.refreshToken;
                UserInfo.Current.LastTime = DateTime.Now;
                UserInfo.Current.SaveUserInfo();
@@ -200,8 +205,6 @@
        }
        #region 注册、登录部分
        /// <summary>
        /// 通用 发送验证码方法
        /// </summary>
@@ -335,6 +338,20 @@
            }
            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Member_ForgetPwd, requestJson);
        }
        /// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="loginPwd"></param>
        /// <param name="loginNewPwd"></param>
        /// <returns></returns>
        public ResponsePackNew UpdataPassword(string loginPwd,string loginNewPwd)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("loginPwd", loginPwd);
            d.Add("loginNewPwd", loginNewPwd);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_Update_Pwd, requestJson);
        }
        /// <summary>
@@ -527,12 +544,19 @@
                var homeList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RegionInfoRes>>(resultObj.Data.ToString());
                if (homeList == null || homeList.Count == 0)
                {
                    if (DB_ResidenceData.Instance.CurrentRegion!=null && DB_ResidenceData.Instance.CurrentRegion.id != "")
                    {
                        Shared.Application.RunOnMainThread(() =>
                        {
                            MainPage.GoUserPage(false);
                        });
                    }
                }
                else
                {
                    foreach (var home in homeList)
                    {
                        if (home.isBindGateway)
                        if (home.isBindGateway)//是否绑定网关
                        {
                            UserInfo.Current.regionList.Add(home);
                            //新绑定的住宅,直接切换到新住宅
@@ -547,6 +571,10 @@
                    }
                    if (UserInfo.Current.regionList.Count == 0)
                    {
                        Shared.Application.RunOnMainThread(() =>
                        {
                            MainPage.GoUserPage(false);
                        });
                        return "null";
                    }
                    //-------如果账号是首次登录
@@ -709,7 +737,7 @@
        {
            var requestObj = new ChildDeleteObj()
            {
                childAccountId = subaccount.childAccountId,
                childId = subaccount.id,
                homeId = subaccount.homeId
            };
            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
@@ -724,12 +752,11 @@
        /// <returns></returns>
        public ResponsePackNew EditSubAccountNickName(string nickName, string childAccountId)
        {
            var requestJson = HttpUtil.GetSignRequestJson(new UpdateChildNickNameObj()
            {
                homeId = DB_ResidenceData.Instance.CurrentRegion.id,
                childAccountId = childAccountId,
                nickName = nickName,
            });
            var d = new Dictionary<string, string>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("childId", childAccountId);
            d.Add("nickName", nickName);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Update, requestJson);
        }
@@ -744,7 +771,7 @@
            var requestJson = HttpUtil.GetSignRequestJson(new UpdateChildAllowCreateSceneObj()
            {
                homeId = DB_ResidenceData.Instance.CurrentRegion.id,
                childAccountId = childAccountId,
                childId = childAccountId,
                isAllowCreateScene = isAllow,
            });
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Update, requestJson);
@@ -960,10 +987,60 @@
        public ResponsePackNew BindResidenceMemberAccount(string subAccount, string nickName)
        {
            //添加子账号
            var requestObj = new ChildAddObj() { homeId = DB_ResidenceData.Instance.CurrentRegion.id, account = subAccount, nickName = nickName };
            var requestObj = new ChildAddObj()
            {
                homeId = DB_ResidenceData.Instance.CurrentRegion.id,
                account = subAccount,
                nickName = nickName
            };
            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Add, requestJson);
        }
        //v1.7更新接口
        public ResponsePackNew BindResidenceMemberAccount(string subAccount, string nickName,string faceUrl)
        {
            //添加子账号
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("nickName", nickName);
            if (!string.IsNullOrEmpty(subAccount))
            {
                d.Add("account", subAccount);
            }
            if (!string.IsNullOrEmpty(faceUrl))
            {
                d.Add("faceUrl", @"data:image/jpg;base64," + faceUrl);
            }
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_Add, requestJson);
        }
        /// <summary>
        /// 删除成员账号人脸数据
        /// </summary>
        /// <param name="subAccount"></param>
        /// <param name="nickName"></param>
        /// <param name="faceUrl"></param>
        /// <returns></returns>
        public ResponsePackNew DeleteMemberFace( string childId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("childId", childId);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_RemoveFace, requestJson);
        }
        /// <summary>
        /// 更新成员账号人脸数据
        /// </summary>
        public ResponsePackNew UpdataMemberFace(string childId, string faceUrl)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("childId", childId);
            d.Add("userFace", @"data:image/jpg;base64," + faceUrl);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Child_UpdateFace, requestJson);
        }
        /// <summary>
@@ -1030,10 +1107,10 @@
#endif
                //是否生产模式
                bool isProduce = true;
#if DEBUG
                isProduce = true;
#endif
                if (HttpUtil.GlobalRequestHttpsHost == "https://test-gz.hdlcontrol.com")
                {
                    isProduce = false;
                }
                if (string.IsNullOrEmpty(OnAppConfig.Instance.PushDeviceToken))
                {
                    Utlis.WriteLine("PushDeviceToken 为空");
@@ -1058,15 +1135,9 @@
                //var mAddpushinfoJson = Newtonsoft.Json.JsonConvert.SerializeObject(mAddpushinfoObj);
                var mAddpushinfoJson = HttpUtil.GetSignRequestJson(mAddpushinfoObj);
                Utlis.WriteLine("mAddpushinfoJson: " + mAddpushinfoJson);
                //new Alert("", , "取消", "确定").Show();
                var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_PushSerivce_AddToken, mAddpushinfoJson);
                if (revertObj.Code == StateCode.SUCCESS)
                {
                    //new Alert("", "提交pushToken成功" + OnAppConfig.Instance.PushDeviceToken, "取消", "确定").Show();
                    if (revertObj.Data != null)
                    {
                        var pushId = revertObj.Data.ToString();
@@ -1075,7 +1146,7 @@
                            OnAppConfig.Instance.PushId = pushId;
                            OnAppConfig.Instance.SaveConfig();
                            Utlis.WriteLine("PushId: " + pushId);
                            //new Alert("","提交pushToken成功"+ OnAppConfig.Instance.PushDeviceToken, "取消","确定").Show();
                            return true;
                        }
                    }
@@ -1083,7 +1154,7 @@
                }
                else
                {
                    Utlis.WriteLine("AddToken 失败");
                    //Utlis.WriteLine("AddToken 失败");
                }
                return false;
            }
@@ -1343,23 +1414,60 @@
        {
            var requestObj = new AppVersionCheckObj()
            {
            };
            #if __IOS__
            requestObj.releaseSystem = "IOS";
            #else
            requestObj.releaseSystem = "Android";
            #endif
            var requestJson = HttpUtil.GetSignRequestJson(requestObj);
            return HttpUtil.RequestHttpsPost(NewAPI.API_POST_CheckAppVersion, requestJson);
        }
        #endregion
        #region 获取天气部分
        #region 注销账号
        /// <summary>
        /// 获取当前版本注销账号模式
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew GetUnregisterModel()
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("version", MainPage.VersionString);
            d.Add("appCode", "1588071238036582401");
#if __IOS__
            d.Add("releaseSystem", "IOS");
#else
            d.Add("releaseSystem", "Android");
#endif
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_GetUnregisterModel, requestJson);
        }
        /// <summary>
        /// 注销账号
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew Unregister(string pwd)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("userId", UserInfo.Current.ID);
            d.Add("pwd", pwd);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_Unregister, requestJson);
        }
#endregion
#region 获取天气部分
        /// <summary>
        /// 获取指定经纬度的城市信息天气信息
        /// </summary>
        public void GetCityWeatherInfo(string lon, string lat)
        {
            MainPage.cityInfo.lon = lon;
            MainPage.cityInfo.lat = lat;
            System.Threading.Tasks.Task.Run(() =>
            {
                while (true)
@@ -1401,7 +1509,7 @@
                            MainPage.cityInfo.weather = jt.GetValue("Weather").ToString();
                            MainPage.cityInfo.lowestTemperature = jt.GetValue("lowestTemperature").ToString();
                            MainPage.cityInfo.highestTemperature = jt.GetValue("highestTemperature").ToString();
                            MainPage.CityWeatherAction?.Invoke();
                            break;
                        }
                        catch (Exception ex)
@@ -1954,10 +2062,22 @@
        #region Kaede --设备功能——————————————————————————————————
        /// <summary>
        /// 获取乐橙子账号token
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew GetLcSubAccountToken()
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetLcSubToken, requestJson);
        }
        /// <summary>
        /// 获取设备列表
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew GetDeviceList(string pageSize="",string pageNo ="")
        public ResponsePackNew GetDeviceList(string pageSize = "", string pageNo = "")
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
@@ -1985,8 +2105,10 @@
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("productPlatform", productPlatform);
            d.Add("productBrand", productBrand);
            if (productBrand != "MegaHealth")
            if (productBrand == "MegaHealth" || productBrand == "IMOU")
            {
            }
            else {
                d.Add("networkConfig", true);
            }
@@ -2016,7 +2138,7 @@
        /// <param name="productPlatform"></param>
        /// <param name="productBrand"></param>
        /// <returns></returns>
        public ResponsePackNew IndependentRegister3TyDevcie(string spk, string extDevId, string deviceName, string pairCode = "")
        public ResponsePackNew IndependentRegister3TyDevcie(string spk, string extDevId, string deviceName,string productBrandIdentity, string pairCode = "")
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
@@ -2024,12 +2146,28 @@
            d.Add("extDevId", extDevId);
            d.Add("name", deviceName);
            d.Add("code", pairCode);
            d.Add("productBrandIdentity", productBrandIdentity);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_IndependentRegister3TyDevcie, requestJson);
        }
        /// <summary>
        /// 删除第三方设备
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew Delete3tyDevice(string deviceId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", deviceId);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var responsePackNew = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_Remove3tyDevcie, requestJson);
            return responsePackNew;
        }
@@ -2103,6 +2241,21 @@
            d.Add("name", function.name);
            d.Add("collect", function.collect);
            d.Add("roomIds", function.roomIds);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_EditDevice, requestJson);
        }
        /// <summary>
        /// 编辑设备信息
        /// 绑定关系、名称、收藏
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew UpdataDevcieName(Function function,string name)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", function.deviceId);
            d.Add("name", name);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_EditDevice, requestJson);
@@ -2186,10 +2339,55 @@
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_CancelCollectDevice, requestJson);
        }
        /// <summary>
        /// 设备扩展配置
        /// </summary>
        public ResponsePackNew DeviceExtSet(string deviceId,ExtSet extSet)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId",  deviceId );
            d.Add("extSet", extSet);
        #endregion
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_DeviceExtSet, requestJson);
        }
        /// <summary>
        /// 获取设备消息规则配置
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew GetDeviceMessageRulesSet(string deviceId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", deviceId);
        #region Kaede --场景功能--------------------------
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDeviceMessageRulesSet, requestJson);
        }
        /// <summary>
        /// 设备消息规则配置
        /// </summary>
        /// <param name="deviceId"></param>
        /// <param name="conditionIdentify"></param>
        /// <param name="push"></param>
        /// <returns></returns>
        public ResponsePackNew DeviceMessageRulesSet(string deviceId,string conditionIdentify,bool push)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", deviceId);
            d.Add("conditionIdentify", conditionIdentify);
            d.Add("push", push);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_DeviceMessageRulesSet, requestJson);
        }
#endregion
#region Kaede --场景功能--------------------------
        /// <summary>
        /// 获取场景列表
        /// 房间ID可空,默认查询住宅下所有房间
@@ -2321,9 +2519,9 @@
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_CancelCollectScene, requestJson).Code;
        }
        #endregion
#endregion
        #region Kaede --房间功能--------------------------
#region Kaede --房间功能--------------------------
        /// <summary>
        /// 获取房间列表
        /// </summary>
@@ -2398,10 +2596,10 @@
            return pack;
        }
        #endregion
#endregion
        #region Kaede -- 安防接口____________________________
#region Kaede -- 安防接口____________________________
        /// <summary>
        /// 获取安防列表
        /// </summary>
@@ -2565,10 +2763,10 @@
            return pack;
        }
        #endregion
#endregion
        #region Kaede --第三方品牌功能--------------------------
#region Kaede --第三方品牌功能--------------------------
        /// <summary>
        /// 获取第三方品牌列表
        /// </summary>
@@ -2580,6 +2778,93 @@
            return pack;
        }
        /// <summary>
        /// 获取第三方品牌列表_Iot
        /// </summary>
        public ResponsePackNew Get3tyIotBrandList()
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetBrandList_Iot, requestJson);
            return pack;
        }
        /// <summary>
        /// 搜索第三方设备_iot
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew Search3tyIotDevice(string companyId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("companyId", companyId);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_Search3tyIotDevice, requestJson);
            return pack;
        }
        /// <summary>
        /// 搜索第三方设备功能列表_iot
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew Get3tyIotDeviceFunctionList(string companyId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("companyId", companyId);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_Get3tyIotFunction, requestJson);
            return pack;
        }
        /// <summary>
        /// 获取第三方平台支持的设备类型列表
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew Get3tyIotSupportSpkList(string companyId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("companyId", companyId);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_Get3tyIotFunction, requestJson);
            return pack;
        }
        /// <summary>
        /// 设置第三方设备绑定的住宅
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew Set3tyIotFunctionToHouse(List<string> deviceIds,string homeId, string companyId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("deviceIds", deviceIds);
            d.Add("homeId", homeId);
            d.Add("companyId", companyId);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_Setting3tyIotFunctionToHouse, requestJson);
            return pack;
        }
        /// <summary>
        /// 解绑第三方平台账号
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew Unbound3tyIotAccount(string companyId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("companyId", companyId);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_Unbound3tyIotAccount, requestJson);
            return pack;
        }
        /// <summary>
        /// 获取绑定的第三方品牌列表
        /// </summary>
@@ -2593,9 +2878,9 @@
            return pack;
        }
        #endregion
#endregion
        #region ■ 萤石云SDK相关接口_________________________
#region ■ 萤石云SDK相关接口_________________________
        /// <summary>
        /// 河东获取萤石云子账号token的接口
        /// 2021-07-07 新方案接口调整对接
@@ -2608,10 +2893,10 @@
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_EZ_GetChildToken, requestJson);
        }
        #endregion
#endregion
        #region ■ 可视对讲_________________________
#region ■ 可视对讲_________________________
        /// <summary>
        /// 检查住宅是否绑定丰林
        /// </summary>
@@ -2624,6 +2909,41 @@
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Check, requestJson);
            return pack;
        }
        /// <summary>
        /// 获取门口机徘徊报警数据
        /// </summary>
        /// <param name="deviceId"></param>
        /// <returns></returns>
        public ResponsePackNew GetAlarmRecords(string deviceId, int pageSize, int pageNo, string alarmType = "PROWLER_ALARM")
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", deviceId);
            d.Add("alarmType", alarmType);
            d.Add("pageSize", pageSize);
            d.Add("pageNo", pageNo);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_ALARM_RECORDS, requestJson);
            return pack;
        }
        /// <summary>
        /// 获取第三方注册的id
        /// </summary>
        /// <param homeId="homeId">住宅id</param>
        /// <returns></returns>
        public ResponsePackNew GetExtUserId(string homeId)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", homeId);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetExtUserId, requestJson);
            return pack;
        }
        #endregion
        #region ■ 门锁相关____________________________
@@ -2695,8 +3015,8 @@
            return listSortLog;
        }
        #endregion
        #region ■ 音箱语言控制相关_________________________
#endregion
#region ■ 音箱语言控制相关_________________________
        /// <summary>
        /// 获取已授权的音箱列表
        /// </summary>
@@ -2760,7 +3080,7 @@
            var requestJson = HttpUtil.GetSignRequestJson(updateSpeakerDeviceListObj);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_Speaker_DeviceList_Update, requestJson);
        }
        #endregion
#endregion
        /// <summary>
        /// 绑定source面板
@@ -2821,5 +3141,87 @@
            var requestJson = HttpUtil.GetSignRequestJson(d);
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetCustomerInfo, requestJson);
        }
        #region 光伏储能
        /// <summary>
        /// 获取住宅下逆变器列表
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew GetInverterList()
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetInverter_List, requestJson);
            return pack;
        }
        /// <summary>
        /// 获取住宅下光伏统计的数据
        /// </summary>
        /// <returns></returns>
        public ResponsePackNew GetInverterStatisticsInfo()
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetInverter_StatisticsInfo, requestJson);
            return pack;
        }
        #endregion
        #region 群控,组合调光
        /// <summary>
        /// 获取群控类型
        /// </summary>
        /// <param name="spk"></param>
        /// <returns></returns>
        public ResponsePackNew GetGroupControlTypes(string spk)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("spk", spk);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetGroupControlTypes, requestJson);
            return pack;
        }
        /// <summary>
        /// 获取群控列表
        /// </summary>
        /// <param name="spk"></param>
        /// <returns></returns>
        public ResponsePackNew GetGroupControlList()
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetGroupControlListByHome, requestJson);
            return pack;
        }
        /// <summary>
        /// 添加群控列表
        /// </summary>
        /// <param name="spk"></param>
        /// <returns></returns>
        public ResponsePackNew AddGroupControl(List<GroupControl> groupControls)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("gatewayId", DB_ResidenceData.Instance.HomeGateway.gatewayId);
            d.Add("infos", groupControls);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetGroupControlListByHome, requestJson);
            return pack;
        }
        #endregion
    }
}