From 66c72ee19b9e3543537621b8dd25685c9b5c03c4 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 02 八月 2022 14:05:30 +0800
Subject: [PATCH] RGB色盘优化,第三方平台对接功能

---
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_AuthorizedPage.cs        |   65 ++++++
 HDL-ON_Android/Assets/Language.ini                                      |    4 
 HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs                    |    2 
 HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs                        |    2 
 HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs                       |   16 +
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_SupportSpkListPage.cs    |   26 ++
 HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs                            |   13 +
 HDL_ON/DAL/Mqtt/MqttClient.cs                                           |   90 ++++++--
 HDL_ON/HDL_ON.projitems                                                 |    1 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandListPage.cs         |   56 ++---
 HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs               |   22 ++
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandFunctionListPage.cs |  151 +++++++++++---
 HDL-ON_iOS/Resources/Language.ini                                       |    4 
 HDL_ON/DAL/Server/NewAPI.cs                                             |    4 
 HDL_ON/Entity/Function/Function.cs                                      |   25 ++
 HDL_ON/DAL/Server/HttpUtil.cs                                           |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/iot_BindTipPage.cs           |   30 ++
 HDL_ON/DAL/Server/HttpServerRequest.cs                                  |   16 +
 HDL_ON/DAL/DriverLayer/Control.cs                                       |    6 
 SiriIntents/Server/HttpUtil.cs                                          |    4 
 20 files changed, 418 insertions(+), 123 deletions(-)

diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 18e26c5..3de2aa2 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -1600,7 +1600,7 @@
 408=纭娣诲姞
  
 409=鍔熻兘鍝佺墝
-410=浣犲綋鍓嶈繕鏈坊鍔犱换浣曞钩鍙拌澶�
+410=娌℃湁鎮ㄧ殑璁惧
 411=鍏朵粬骞冲彴璁惧鍧囩敱绗笁鏂规湇鍔″晢鎻愪緵鏀寔
 412=娣诲姞
 413=鎺у埗鍣ㄦ湭寮�鍚�
@@ -1621,7 +1621,7 @@
 428=璐熺瀛愭椂闂�
 429=灏忔椂
 430=鍒嗛挓
-431=浣犲綋鍓嶈繕涓烘坊鍔犱换浣曞钩鍙拌澶�
+431=鎮ㄥ綋鍓嶈繕鏈坊鍔犱换浣曞钩鍙拌澶�
 432=鍏朵粬骞冲彴璁惧鍧囩敱绗笁鏂规湇鍔″晢鎻愪緵鏀寔
 433=姘撮榾
 434=瀹氭椂寮�鍏�
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index c4deb26..bfc05e6 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -1598,7 +1598,7 @@
 408=纭娣诲姞
  
 409=鍔熻兘鍝佺墝
-410=浣犲綋鍓嶈繕鏈坊鍔犱换浣曞钩鍙拌澶�
+410=娌℃湁鎮ㄧ殑璁惧
 411=鍏朵粬骞冲彴璁惧鍧囩敱绗笁鏂规湇鍔″晢鎻愪緵鏀寔
 412=娣诲姞
 413=鎺у埗鍣ㄦ湭寮�鍚�
@@ -1619,7 +1619,7 @@
 428=璐熺瀛愭椂闂�
 429=灏忔椂
 430=鍒嗛挓
-431=浣犲綋鍓嶈繕涓烘坊鍔犱换浣曞钩鍙拌澶�
+431=鎮ㄥ綋鍓嶈繕鏈坊鍔犱换浣曞钩鍙拌澶�
 432=鍏朵粬骞冲彴璁惧鍧囩敱绗笁鏂规湇鍔″晢鎻愪緵鏀寔
 433=姘撮榾
 434=瀹氭椂寮�鍏�
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index e93e6a7..9e2364b 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -1032,6 +1032,12 @@
         /// <param name="updateBytes"></param>
         public void UpdataFunctionStatus(string revString, byte[] usefulBytes,bool isCloudData = false)
         {
+            ////test 浜戠杩炴帴鎴愬姛鏃讹紝涓嶉�傜敤鏈湴鏁版嵁鏇存柊
+            //if (Ins.GatewayOnline_Cloud && !isCloudData)
+            //{
+            //    return;
+            //}
+
             var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<AlinkFunctionStatusObj>(revString);
             if (temp != null)
             {
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index b0c260f..ea5e472 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -205,6 +205,7 @@
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                     };
 
+
                     #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰�
                     //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡--鏉ㄦ稕
                     var appHomeRefresh = new MqttTopicFilter()
@@ -273,6 +274,49 @@
                 }
             }
         }
+
+        /// <summary>
+        /// 璁㈤槄缁戝畾绗笁鏂筰ot璐﹀彿缁撴灉
+        /// </summary>
+        /// <returns></returns>
+        public static async Task<bool> SubscribeAsync3tyIotbind()
+        {
+            var topicFilter = new MqttTopicFilter()
+            {
+                Topic = $"/user/{UserInfo.Current.ID}/app/third/bind/send",
+                QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+            };
+            var result = await RemoteMqttClient.SubscribeAsync(topicFilter);
+            if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
+            {
+                Utlis.WriteLine("璁㈤槄缁戝畾绗笁鏂筰ot璐﹀彿缁撴灉鎴愬姛锛�");
+                return true;
+            }
+            return false;
+        }
+        /// <summary>
+        /// 鍙栨秷璁㈤槄缁戝畾绗笁鏂筰ot璐﹀彿缁撴灉
+        /// </summary>
+        /// <returns></returns>
+        public static async Task<bool> UnsubscribeAsync3tyIotbind()
+        {
+            string[] strs = new string[] {
+                $"/user/{UserInfo.Current.ID}/app/third/bind/send"
+            };
+
+            var result = await RemoteMqttClient.UnsubscribeAsync(strs);
+            
+            if (result.Items[0].ReasonCode == MQTTnet.Client.Unsubscribing.MqttClientUnsubscribeResultCode.Success)
+            {
+                Utlis.WriteLine("鍙栨秷璁㈤槄缁戝畾绗笁鏂筰ot璐﹀彿缁撴灉鎴愬姛锛�");
+                return true;
+            }
+            return false;
+        }
+        /// <summary>
+        /// 缁戝畾绗笁鏂瑰钩鍙版帴鏀跺洖璋冧簨浠�
+        /// </summary>
+        public static Action Bind3tyIotAction;
 
         /// <summary>
         /// 鍚姩杩滅▼Mqtt
@@ -352,8 +396,14 @@
                                     //鏂版尋涓嬬嚎涓婚鏂规 鏀跺埌鎸や笅绾夸富棰�
                                     ReceiveNotifySqueezeAsync(mMes);
                                 }
+                                //缁戝畾绗笁鏂瑰钩鍙扮粨鏋滈�氱煡
+                                else if(topic == $"/user/{UserInfo.Current.ID}/app/third/bind/send")
+                                {
+                                    var revString = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
+                                    Bind3tyIotAction?.Invoke();
+                                }
                                 //璁惧鍦ㄧ嚎绂荤嚎鐘舵�佹帹閫�
-                                else if(topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/son/session/online")
+                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/son/session/online")
                                 {
                                     try
                                     {
@@ -373,7 +423,7 @@
                                         //}
 
                                     }
-                                    catch(Exception ex)
+                                    catch (Exception ex)
                                     {
 
                                     }
@@ -504,7 +554,8 @@
                                                 }
                                                 HomePage.LoadEvent_RefreshSecurityStatus();
                                             }
-                                        }catch(Exception ex)
+                                        }
+                                        catch (Exception ex)
                                         {
                                             MainPage.Log($"瀹夐槻杩滅▼淇℃伅寮傚父:{ex.Message}");
                                         }
@@ -516,29 +567,16 @@
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/property/send")
                                 {
 
-                                    if (Control.Ins.GatewayOnline_Local)//鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�
-                                    {
-                                        if (FunctionList.List.OtherBrandFunction.Count == 0)
-                                        {
-                                            MainPage.Log($"A鍗忚鏇存柊鐘舵��:鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�...");
-                                            return;
-                                        }
-                                        else
-                                        {
-                                            var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
-                                            var revString = Encoding.UTF8.GetString(bytes);
-                                            MainPage.Log($"mqtt 鐘舵�佹洿鏂�:{revString}");
-                                            Control.Ins.UpdataFunctionStatus(revString, null, true);
-                                            //Control.Ins.MsgInfoList.Add($"mqtt 鐘舵�佹洿鏂�:{revString}");
-                                            //Control.Ins.MsgInfoList.Add(revString + "\r\n");
-                                            //if (FunctionList.List.OtherBrandFunction.Find((obj) => obj.sid == updateTemp.sid) == null)
-                                            //{
-                                            //    return;
-                                            //}
-                                        }
-                                    }
-
-
+                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
+                                    var revString = Encoding.UTF8.GetString(bytes);
+                                    MainPage.Log($"mqtt 鐘舵�佹洿鏂�:{revString}");
+                                    Control.Ins.UpdataFunctionStatus(revString, null, true);
+                                    //Control.Ins.MsgInfoList.Add($"mqtt 鐘舵�佹洿鏂�:{revString}");
+                                    //Control.Ins.MsgInfoList.Add(revString + "\r\n");
+                                    //if (FunctionList.List.OtherBrandFunction.Find((obj) => obj.sid == updateTemp.sid) == null)
+                                    //{
+                                    //    return;
+                                    //}
                                 }
                                 //涓�绔彛鏁版嵁瑙f瀽
                                 else
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index 02d3aaf..3a6d450 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -2664,16 +2664,30 @@
             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(string deviceId,string homeId)
+        public ResponsePackNew Set3tyIotFunctionToHouse(string deviceId,string homeId, string companyId)
         {
             Dictionary<string, object> d = new Dictionary<string, object>();
             d.Add("deviceId", deviceId);
             d.Add("homeId", homeId);
+            d.Add("companyId", companyId);
             var requestJson = HttpUtil.GetSignRequestJson(d);
 
             var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_Setting3tyIotFunctionToHouse, requestJson);
diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs
index fef52b7..015e50c 100644
--- a/HDL_ON/DAL/Server/HttpUtil.cs
+++ b/HDL_ON/DAL/Server/HttpUtil.cs
@@ -18,8 +18,8 @@
         /// 鍏叡鍩熷悕灏辫繎瑙f瀽
         /// </summary>
 
-        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
-        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
+        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
+        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
         /// <summary>
         /// RegionMark
         /// </summary>
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index e153373..bf216a1 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -620,7 +620,7 @@
         /// <summary>
         /// 鑾峰彇绗笁鏂筰ot骞冲彴璁惧鍔熻兘鍒楄〃
         /// </summary>
-        public const string Api_Post_Get3tyIotFunction = "/home-wisdom/app/open/discoveryDevice";
+        public const string Api_Post_Get3tyIotFunction = "/home-wisdom/app/open/extDeviceList";
         /// <summary>
         /// 閰嶇疆绗笁鏂筰ot骞冲彴璁惧鍔熻兘鍒颁綇瀹�
         /// </summary>
@@ -628,7 +628,7 @@
         /// <summary>
         /// 瑙g粦绗笁鏂筰ot骞冲彴璐﹀彿
         /// </summary>
-        public const string Api_Post_Unbound3tyIotAccount = "/open-platform/tripartite/userUnbind";
+        public const string Api_Post_Unbound3tyIotAccount = "/smart-open/open-platform/tripartite/userUnbind";
 
         #region 鈻�  -- 绾㈠瀹濇帴鍙__________________________
         /// <summary>
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 1482e07..ba20bf1 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -243,7 +243,30 @@
         /// <summary>
         /// 澶囨敞
         /// </summary>
-        public string name;
+        public string name = "";
+        /// <summary>
+        /// 璁惧缁戝畾鐨刪omeId
+        /// </summary>
+        private string _homeId = "";
+        public string homeId
+        {
+            get
+            {
+                if (string.IsNullOrEmpty(_homeId))
+                {
+                    return DB_ResidenceData.Instance.CurrentRegion.id;
+                }
+                else
+                {
+                    return _homeId;
+                }
+            }
+            set
+            {
+                _homeId = value;
+            }
+        }
+
         /// <summary>
         /// 璁惧ID
         /// 浜戠璐熻矗鐢熸垚
diff --git a/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs b/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs
index a430895..7ba544a 100644
--- a/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs
+++ b/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs
@@ -87,6 +87,8 @@
         /// 鍏徃id
         /// </summary>
         public string companyId;
+
+        public string clientId;
     }
 
     /// <summary>
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index a40633a..6002a93 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -511,6 +511,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\iot_BindTipPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\Iot_BrandFunctionListPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\Iot_AuthorizedPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\Iot_SupportSpkListPage.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
diff --git a/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs b/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs
index 63457e1..19ea6e0 100644
--- a/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs
+++ b/HDL_ON/UI/UI0-Public/Widget/WebViewDialog.cs
@@ -19,6 +19,9 @@
         /// </summary>
         public WebView mWebView;
 
+        private Action closeAction;
+
+
         /// <summary>
         /// WebViewDialog
         /// </summary>
@@ -26,6 +29,14 @@
         {
             bodyView = new FrameLayout();
         }
+        public WebViewDialog(Action action)
+        {
+            closeAction = action;
+            bodyView = new FrameLayout();
+        }
+
+
+
 
         /// <summary>
         /// 鍔犺浇椤甸潰
@@ -34,7 +45,7 @@
         {
             bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
             this.AddChidren(bodyView);
-            new TopViewDiv(this, bodyView, titleStr).LoadTopView();
+            new TopViewDiv(this, bodyView, titleStr).LoadTopView(closeAction);
             //WebView
             mWebView = new WebView()
             {
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_AuthorizedPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_AuthorizedPage.cs
index 366aa1d..e3c0244 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_AuthorizedPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_AuthorizedPage.cs
@@ -11,11 +11,74 @@
 
         IntegratedBrand_Iot brand_Iot;
 
-        public Iot_AuthorizedPage(IntegratedBrand_Iot brand)
+        Action boudedAction;
+
+        public Iot_AuthorizedPage(IntegratedBrand_Iot brand,Action action)
         {
             brand_Iot = brand;
+            boudedAction = action;
         }
 
+        
+
+        public void LoadView()
+        {
+            string url = brand_Iot.authorizationUrl + $"?companyId={brand_Iot.companyId}&openUId={UserInfo.Current.ID}&client_id={brand_Iot.clientId}";
+            var dd = new WebViewDialog(()=> {
+                UnsubscribeAsync3tyIotbind();
+            });
+            dd.LoadPage("", url);
+            DAL.Mqtt.MqttClient.Bind3tyIotAction = () => {
+                UnsubscribeAsync3tyIotbind();
+                Application.RunOnMainThread(() =>
+                {
+                    http.Search3tyIotDevice(brand_Iot.companyId);
+                    boudedAction?.Invoke();
+                    dd.Close();
+                });
+            };
+            SubscribeAsync3tyIotbind();
+        }
+
+        /// <summary>
+        /// 璁㈤槄缁戝畾绗笁鏂筰ot璐﹀彿缁撴灉
+        /// </summary>
+        private void SubscribeAsync3tyIotbind()
+        {
+            new System.Threading.Thread(async () =>
+            {
+                try
+                {
+                    var result = await DAL.Mqtt.MqttClient.SubscribeAsync3tyIotbind();
+                }
+                catch { }
+                finally
+                {
+
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 鍙栨秷璁㈤槄缁戝畾绗笁鏂筰ot璐﹀彿缁撴灉
+        /// </summary>
+        private void UnsubscribeAsync3tyIotbind()
+        {
+            new System.Threading.Thread(async () =>
+            {
+                try
+                {
+                    var result = await DAL.Mqtt.MqttClient.UnsubscribeAsync3tyIotbind();
+                }
+                catch { }
+                finally
+                {
+
+                }
+            })
+            { IsBackground = true }.Start();
+        }
         /// <summary>
         /// 鎼滅储绗笁鏂硅澶�
         /// </summary>
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandFunctionListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandFunctionListPage.cs
index 986a5d1..56c39d1 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandFunctionListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandFunctionListPage.cs
@@ -8,8 +8,10 @@
 {
     public class Iot_BrandFunctionListPage :FrameLayout
     {
-
         FrameLayout bodyView;
+
+        FrameLayout contentView;
+
 
 
         IntegratedBrand_Iot brand_Iot;
@@ -36,7 +38,7 @@
                 page.LoadPage(brand_Iot);
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
             }; 
-            new TopViewDiv(bodyView, "鍝佺墝鍚嶇О").LoadTopView_3tyIot(action);
+            new TopViewDiv(bodyView, brand_Iot.brandName).LoadTopView_3tyIot(action);
 
             bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
 
@@ -65,16 +67,43 @@
             };
             bodyView.AddChidren(btnTipText);
 
-            var contentView = new VerticalRefreshLayout()
+            contentView = new FrameLayout()
             {
                 Y = Application.GetRealHeight(150),
                 Height = Application.GetRealHeight(573),
             };
             bodyView.AddChidren(contentView);
 
-            LoadDeviceFunctionControlZone(contentView);
 
-
+            var waitPage = new Loading();
+            contentView.AddChidren(waitPage);
+            waitPage.Start("");
+            new System.Threading.Thread(() =>
+            {
+                try
+                {
+                    var pack = http.Get3tyIotDeviceFunctionList(brand_Iot.companyId);
+                    if (pack != null)
+                    {
+                        if (pack.Code == StateCode.SUCCESS)
+                        {
+                            var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Function>>(pack.Data.ToString());
+                            Application.RunOnMainThread(() =>
+                            {
+                                LoadDeviceFunctionControlZone(list);
+                            });
+                        }
+                    }
+                }
+                catch { }
+                finally
+                {
+                    Application.RunOnMainThread(() => {
+                        waitPage.Hide();
+                        waitPage.RemoveFromParent();
+                    });
+                }
+            }) { IsBackground = true }.Start();
 
         }
 
@@ -82,26 +111,32 @@
         /// <summary>
         /// 鍔犺浇璁惧鍔熻兘鏄剧ず鍖哄煙
         /// </summary>
-        void LoadDeviceFunctionControlZone(VerticalRefreshLayout deviceFunctionView)
+        void LoadDeviceFunctionControlZone(List<Function> list)
         {
+            contentView.RemoveAll();
+
+            if (list.Count == 0)
+            {
+                NotListTipView();
+                return;
+            }
+
+            VerticalScrolViewLayout deviceFunctionView = new VerticalScrolViewLayout();
+            contentView.AddChidren(deviceFunctionView);
+
             #region ContextView
             var rowView = new FrameLayout();
             try
             {
                 int index = 0;
-                var list = new List<Function>();
-                list.Add(new Function
-                {
-                    spk = SPK.AcStandard,
-                    name = "绌鸿皟"
-                });
-                list.Add(new Function
-                {
-                    spk = SPK.LightDimming,
-                    name = "鐏厜"
-                });
+              
                 foreach (var function in list)
                 {
+                    if(function.homeId != DB_ResidenceData.Instance.CurrentRegion.id && function.homeId != "0")
+                    {
+                        continue;
+                    }
+
                     if (index % 2 == 0)
                     {
                         rowView = new FrameLayout()
@@ -143,24 +178,14 @@
                     var view = new FrameLayout();
                     deviceFunctionView.AddChidren(view);
 
-                    var btnNoCollectionBg = new Button()
-                    {
-                        Y = Application.GetRealHeight(20),
-                        Gravity = Gravity.CenterHorizontal,
-                        Width = Application.GetRealWidth(180),
-                        Height = Application.GetRealWidth(180),
-                        Text = "娌℃湁浠讳綍璁惧"
-                    };
-                    view.AddChidren(btnNoCollectionBg);
-
                     var btnNoCollectionTip = new Button()
                     {
                         Height = Application.GetRealHeight(42),
-                        Y = btnNoCollectionBg.Bottom,
+                        Y = Application.GetRealHeight(100),
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.PromptingColor1,
                         TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                        TextID = StringId.TipNoFunctionCollcetion,
+                        Text = "娌℃湁浠讳綍璁惧"
                     };
                     view.AddChidren(btnNoCollectionTip);
                 }
@@ -215,20 +240,25 @@
                     function.collect = !function.collect;
                     if (function.collect)
                     {
-                        btnName.IsSelected = btnIcon.IsSelected = btnBg.IsSelected = true;
-                        var pack = http.Set3tyIotFunctionToHouse(function.deviceId, DB_ResidenceData.Instance.CurrentRegion.id);
+                        var pack = http.Set3tyIotFunctionToHouse(function.deviceId, DB_ResidenceData.Instance.CurrentRegion.id,brand_Iot.companyId);
                         if (pack != null)
                         {
-
+                            if(pack.Code == StateCode.SUCCESS)
+                            {
+                                btnName.IsSelected = btnIcon.IsSelected = btnBg.IsSelected = true;
+                            }
                         }
                     }
                     else
                     {
                         btnName.IsSelected = btnIcon.IsSelected = btnBg.IsSelected = false;
-                        var pack = http.Set3tyIotFunctionToHouse(function.deviceId, "0");
+                        var pack = http.Set3tyIotFunctionToHouse(function.deviceId, "0", brand_Iot.companyId);
                         if (pack != null)
                         {
-
+                            if (pack.Code == StateCode.SUCCESS)
+                            {
+                                btnName.IsSelected = btnIcon.IsSelected = btnBg.IsSelected = false;
+                            }
                         }
                     }
 
@@ -242,6 +272,59 @@
         }
 
 
+        void NotListTipView()
+        {
+            contentView.RemoveAll();
+            var btnTip = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(88),
+                Width = Application.GetRealWidth(180),
+                Height = Application.GetRealWidth(180),
+                UnSelectedImagePath = "TipNot.png",
+            };
+            contentView.AddChidren(btnTip);
+
+            var btnTipText = new Button()
+            {
+                Y = Application.GetRealHeight(252),
+                Height = Application.GetRealHeight(52),
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.Center,
+                TextID = StringId.TipNotThirdPartyDevice,
+            };
+            contentView.AddChidren(btnTipText);
+
+            var btnAdd = new Button()
+            {
+                Y = Application.GetRealHeight(400),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(220),
+                Height = Application.GetRealWidth(44),
+                BackgroundColor = CSS_Color.MainColor,
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.MainBackgroundColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                IsBold = true,
+                Radius = (uint)Application.GetRealWidth(22),
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+                Text = "鏌ョ湅璁惧鏀寔鑼冨洿"
+            };
+            contentView.AddChidren(btnAdd);
+            btnAdd.MouseUpEventHandler = (sender, e) =>
+            {
+                //var page = new AddThirdPartyBrandListpage(brandList);
+                //MainPage.BasePageView.AddChidren(page);
+                //page.LoadPage();
+                //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+
+
+        }
+
 
         HttpServerRequest http = new HttpServerRequest();
 
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandListPage.cs
index f1091a7..32531d7 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandListPage.cs
@@ -14,7 +14,7 @@
     {
         FrameLayout bodyView;
 
-        VerticalRefreshLayout contentView;
+        VerticalScrolViewLayout contentView;//VerticalRefreshLayout
 
         List<IntegratedBrand_Iot> brandList;
 
@@ -56,7 +56,7 @@
             };
             bodyView.AddChidren(btnTipText);
              
-            contentView = new VerticalRefreshLayout()
+            contentView = new VerticalScrolViewLayout()
             {
                 Y = Application.GetRealHeight(150),
                 Height = Application.GetRealHeight(573),
@@ -68,14 +68,11 @@
 
             GetBindList();
 
-            contentView.BeginHeaderRefreshingAction = () =>
-            {
-                contentView.EndHeaderRefreshing();
-                GetBindList();
-            };
-
-            LoadRow();
-
+            //contentView.BeginHeaderRefreshingAction = () =>
+            //{
+            //    contentView.EndHeaderRefreshing();
+            //    GetBindList();
+            //};
 
         }
         /// <summary>
@@ -130,14 +127,12 @@
         void LoadRow()
         {
             contentView.RemoveAll();
-            bool isFrist = true;
-
-            brandList.Add(new IntegratedBrand_Iot
-            {
-                authBrandNameCn = "Test Hdl",
-                authBrandNameEn = "Test Hdl",
-                hasAuthorization = false
-            });
+            //brandList.Add(new IntegratedBrand_Iot
+            //{
+            //    authBrandNameCn = "Test Hdl",
+            //    authBrandNameEn = "Test Hdl",
+            //    hasAuthorization = false
+            //});
 
             foreach (var brand in brandList)
             {
@@ -149,22 +144,15 @@
                 };
                 contentView.AddChidren(row);
 
-                //if (isFrist)
-                //{
-                //    isFrist = false;
-                //}
-                //else
+                Button btnLine = new Button()
                 {
-                    Button btnLine = new Button()
-                    {
-                        Y = Application.GetRealWidth(86),
-                        Gravity = Gravity.CenterHorizontal,
-                        Width = Application.GetRealWidth(343),
-                        Height = 1,
-                        BackgroundColor = CSS_Color.DividingLineColor,
-                    };
-                    row.AddChidren(btnLine);
-                }
+                    Y = Application.GetRealWidth(86),
+                    Gravity = Gravity.CenterHorizontal,
+                    Width = Application.GetRealWidth(343),
+                    Height = 1,
+                    BackgroundColor = CSS_Color.DividingLineColor,
+                };
+                row.AddChidren(btnLine);
 
                 ImageView btnIcon = new ImageView()
                 {
@@ -209,7 +197,7 @@
                 };
                 row.AddChidren(btnName);
                 //涓嬭浇绗笁鏂瑰搧鐗宨con
-                //ImageUtlis.Current.Load3tyBrandIconImages(brand.brandName, brand.authrBandIconUrl, btnIcon);
+                ImageUtlis.Current.Load3tyBrandIconImages(brand.brandName, brand.authrBandIconUrl, btnIcon);
 
                 btnName.MouseUpEventHandler = (sender, e) => {
                     if (brand.hasAuthorization)
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_SupportSpkListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_SupportSpkListPage.cs
new file mode 100644
index 0000000..eadaa43
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_SupportSpkListPage.cs
@@ -0,0 +1,26 @@
+锘縰sing System;
+using HDL_ON.Entity;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+	/// 鏀寔鐨勭涓夋柟骞冲彴璁惧鍒楄〃鐣岄潰
+	/// </summary>
+    public class Iot_SupportSpkListPage : FrameLayout
+    {
+        private FrameLayout bodyView;
+
+        IntegratedBrand_Iot brand_Iot;
+
+        public Iot_SupportSpkListPage()
+        {
+            bodyView = this;
+        }
+
+        public void LoadPage()
+        {
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/iot_BindTipPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/iot_BindTipPage.cs
index 668e511..601da76 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/iot_BindTipPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/iot_BindTipPage.cs
@@ -139,14 +139,23 @@
             {
                 btnComfirm.MouseUpEventHandler = (sender, e) =>
                 {
-                    brand_Iot.hasAuthorization = true;
-                    boundAction?.Invoke();
-                    this.RemoveFromParent();
-                    var page = new Iot_BrandFunctionListPage(brand_Iot);
-                    page.unboundAction = unboundAction;
-                    MainPage.BasePageView.AddChidren(page);
-                    page.LoadPage();
-                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+                    Action action = () => {
+                        brand_Iot.hasAuthorization = true;
+                        boundAction?.Invoke();
+                        this.RemoveFromParent();
+                        var page = new Iot_BrandFunctionListPage(brand_Iot);
+                        page.unboundAction = unboundAction;
+                        MainPage.BasePageView.AddChidren(page);
+                        page.LoadPage();
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                    };
+
+                    var page = new Iot_AuthorizedPage(brand_Iot,action);
+                    page.LoadView();
+
+
+
                 };
             }
             else
@@ -239,6 +248,11 @@
                                         });
                                     }
                                 }
+                                else
+                                {
+                                    dialog.Close();
+                                    new Alert("", "鎿嶄綔澶辫触", "").Show();
+                                }
                             }
                             catch { }
                             finally
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
index 9455d9a..495e602 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
@@ -174,20 +174,28 @@
             echartsView.AddChidren(myEchartsView_Pie);
 
             Dictionary<string, string> list = new Dictionary<string, string>();
+
+            int count = 0;
             foreach(var ene in energyList)
             {
+                if (count > 10)
+                {
+                    break;
+                }
                 double tt = 0;
                 double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out tt);
                 tt *= 100;//涔樹互100锛屽皬浜�1鏃犳硶鍔犺浇echart
                 tt = Math.Round(tt, 2);
-                if (list.ContainsKey(ene.name))
+                string key = ene.name;
+                if (list.ContainsKey(key))
                 {
-                    list.Add(ene.name + "1", tt.ToString());
+                    list.Add(ene.name + DateTime.Now.ToLongTimeString(), tt.ToString());
                 }
                 else
                 {
                     list.Add(ene.name, tt.ToString());
                 }
+                count++;
             }
             myEchartsView_Pie.ShowWithOption(new EchartsOption_Pie().InitDateJson(list));
 
@@ -219,6 +227,10 @@
             int index = 0;
             foreach (var energy in energyList)
             {
+                if (index > 10)
+                {
+                    break;
+                }
                 EnergyRow(energy, energyListView, index);
                 index++;
                 new System.Threading.Thread(() =>
@@ -562,8 +574,14 @@
             double totalValue = 0;
             double realtimeValue = 0;
             Dictionary<string, string> list = new Dictionary<string, string>();//楗煎浘鏁版嵁
+            int count = 0;
             foreach (var ene in bodyView.energyList)
             {
+                if (count > 10)
+                {
+                    break;
+                }
+                count++;
                 double power = 0.00;
                 double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out power);
                 power = Math.Round(power, 2);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
index 8c6bab8..556e3e1 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
@@ -157,6 +157,7 @@
             framePickerBack.Y = btnFromFoorAndRoom.Bottom + Application.GetRealHeight(1);
             framePickerBack.Width = Application.GetMinRealAverage(216);
             framePickerBack.Height = Application.GetMinRealAverage(216);
+            //framePickerBack.BackgroundColor = 0xFFFF0000;
             controlView.AddChidren(framePickerBack);
 
             colorPicker = new ColorPicker()
@@ -177,10 +178,17 @@
             //};
 
             //鐧界偣鎺т欢
-            this.btnWhiteRound = new Button();
-            btnWhiteRound.Width = Application.GetRealWidth(24);
-            btnWhiteRound.Height = Application.GetRealWidth(24);
-            btnWhiteRound.UnSelectedImagePath = "FunctionIcon/Light/ColorWheelTip.png";
+            var diameter = Application.GetRealWidth(12);
+            this.btnWhiteRound = new Button()
+            {
+                Width = diameter,
+                Height = diameter,
+                Radius = (uint)Application.GetRealWidth(6),
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                BorderColor = CSS_Color.MainBackgroundColor,
+                Enable = false,
+            };
+            //btnWhiteRound.UnSelectedImagePath = "FunctionIcon/Light/ColorWheelTip.png";
             btnWhiteRound.Visible = false;
             framePickerBack.AddChidren(btnWhiteRound);
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
index b45f539..8dbdfa5 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
@@ -104,7 +104,7 @@
             //褰撳墠鐐瑰嚮鐨勩�愮偣銆戞槸鍚︽纭�
             bool pointIsRight = false;
             //鍦嗙殑鍗婂緞(鑰冭檻杈圭晫,闇�瑕佽缃畠鐨勫崐寰勬瘮杈冨皬涓�鐐�)
-            int circleR = colorPicker.Width / 2 - Application.GetRealWidth(12);
+            int circleR = colorPicker.Width / 2 - Application.GetRealWidth(2);
 
             colorPicker.ColorChaged += (sender2, e2) => {
                 if (function.trait_on_off.curValue.ToString() == "off" || pointIsRight == false)
diff --git a/SiriIntents/Server/HttpUtil.cs b/SiriIntents/Server/HttpUtil.cs
index f61de04..56a78a0 100644
--- a/SiriIntents/Server/HttpUtil.cs
+++ b/SiriIntents/Server/HttpUtil.cs
@@ -16,8 +16,8 @@
         /// 鍥哄畾鍩熷悕,姝e紡鐜
         /// 鍏叡鍩熷悕灏辫繎瑙f瀽
         /// </summary>
-        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
-        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
+        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
+        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
         /// <summary>
         /// RegionMark
         /// </summary>

--
Gitblit v1.8.0