| | |
| | | /// 获取所有场景的所有信息 |
| | | /// </summary> |
| | | [System.Serializable] |
| | | public class GetSceneAllInfo:CommonDevice |
| | | public class GetSceneAllInfo |
| | | { |
| | | /// <summary> |
| | | ///场景总数 |
| | |
| | | public int MemberNumber; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 获取场景列表 |
| | | ///<summary > |
| | | ///获取场景列表 |
| | | ///</summary> |
| | | public static async System.Threading.Tasks.Task<List<GetSceneAllInfo>> GetSceneListAsync() |
| | | { |
| | | return await System.Threading.Tasks.Task.Run(async () => { |
| | | var dateTime = DateTime.Now; |
| | | GetSceneAllData d = null; |
| | | var mainGateway = ZbGateway.MainGateWay; |
| | | if (mainGateway == null) |
| | | { |
| | | d = new GetSceneAllData { errorMessageBase = "当前没有主网关" }; |
| | | return null; |
| | | } |
| | | |
| | | var listScene = new List<GetSceneAllInfo>(); |
| | | Action<string, string> action = (topic, message) => |
| | | { |
| | | var gatewayID = topic.Split('/')[0]; |
| | | var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); |
| | | |
| | | if (topic == gatewayID + "/" + "Scene/GetAllInfo_Respon") |
| | | { |
| | | dateTime = DateTime.Now; |
| | | var sceneGetAllInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetSceneAllInfo>(jobject["Data"].ToString()); |
| | | listScene.Add(sceneGetAllInfo); |
| | | |
| | | System.Console.WriteLine($"UI收到通知后的主题_{ topic}"); |
| | | } |
| | | }; |
| | | mainGateway.Actions += action; |
| | | System.Console.WriteLine("Scene/GetAllInfo_Actions 启动" + System.DateTime.Now.ToString()); |
| | | try |
| | | { |
| | | var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 807 } }; |
| | | mainGateway.Send(("Scene/GetAllInfo"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString())); |
| | | } |
| | | catch { } |
| | | |
| | | while ((DateTime.Now - dateTime).TotalMilliseconds < 1000) |
| | | { |
| | | await System.Threading.Tasks.Task.Delay(10); |
| | | } |
| | | |
| | | mainGateway.Actions -= action; |
| | | System.Console.WriteLine("Scene/GetAllInfo_Actions 退出" + System.DateTime.Now.ToString()); |
| | | |
| | | return listScene; |
| | | }); |
| | | } |
| | | #endregion |
| | | |
| | | #region 只能获取场景信息,没有场景中的设备信息 |
| | |
| | | public int ScenesId; |
| | | |
| | | } |
| | | |
| | | //public static string SceneFilePath = "SceneFile"; |
| | | |
| | | //static Scene() |
| | | //{ |
| | | // if (null == Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(Encoding.UTF8.GetString(Shared.IO.FileUtils.ReadFile(SceneFilePath)))) |
| | | // { |
| | | // //初始化场景列表 |
| | | // Shared.IO.FileUtils.WriteFileByBytes(SceneFilePath, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(new List<string>()))); |
| | | // } |
| | | //} |
| | | |
| | | ///// <summary> |
| | | ///// 保存当前场景 |
| | | ///// </summary> |
| | | ///// <param name="scenceFilePath">Scence file path.</param> |
| | | //public void Save(string scenceFilePath) |
| | | //{ |
| | | // Shared.IO.FileUtils.WriteFileByBytes(scenceFilePath, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this))); |
| | | //} |
| | | |
| | | /// <summary> |
| | | /// 根据场景路径恢复场景对象 |
| | | /// </summary> |
| | | /// <returns>The by file path.</returns> |
| | | /// <param name="sceneFilePath">Room file path.</param> |
| | | //public static Scene GetSceneByFilePath(string sceneFilePath) |
| | | //{ |
| | | // try |
| | | // { |
| | | // return Newtonsoft.Json.JsonConvert.DeserializeObject<Scene>(System.Text.Encoding.UTF8.GetString(Shared.IO.FileUtils.ReadFile(sceneFilePath))); |
| | | // } |
| | | // catch |
| | | // { |
| | | // return new Scene(); |
| | | // } |
| | | //} |
| | | |
| | | /// <summary> |
| | | /// 场景标识 |
| | | /// </summary> |
| | | //public bool SceneLabel = false; |
| | | |
| | | /// <summary> |
| | | /// 控制目标的文件路径,格式如:RoomScene_+DeviceID_Mac_Epoint |
| | | /// </summary> |
| | | //public readonly List<string> DeviceFilePathList = new List<string>(); |
| | | |
| | | /// <summary> |
| | | /// 场景的背景图 |
| | | /// </summary> |
| | | //public string BackgroundImagePath = "Scene/s1.png"; |
| | | |
| | | /// <summary> |
| | | /// 场景中的设备列表 |
| | | /// </summary> |
| | | //[Newtonsoft.Json.JsonIgnore] |
| | | //public List<Scene> sceneDeviceList = new List<Scene>(); |
| | | |
| | | //[Newtonsoft.Json.JsonIgnore] |
| | | //public List<Scene> LocalSceneList = new List<Scene>(); |
| | | |
| | | //public SceneId SceneID; |
| | | |
| | | ///<summary > |
| | | /// 从网关的场景中移除设备 |
| | | /// </summary> |
| | | //public static void SceneRemoveMember1(ZigBee.Device.ZbGateway gateway, int ScenesId, string DeviceAddr, int Epoint) |
| | | //{ |
| | | // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 802 } }; |
| | | // var DeviceList = new JArray |
| | | // { |
| | | // new JObject { |
| | | // { "Type", 0}, |
| | | // { "DeviceAddr",DeviceAddr}, |
| | | // { "Epoint",Epoint} |
| | | // } |
| | | // }; |
| | | // var data = new JObject { |
| | | // {"ScenesId",ScenesId}, |
| | | // { "DeviceList", DeviceList } |
| | | // }; |
| | | // jobject.Add("Data", data); |
| | | // gateway.Send(("Scene/RemoveMember"), Common.SecuritySet.Encryption((jobject.ToString()))); |
| | | |
| | | //} |
| | | |
| | | ///<summary > |
| | | /// 删除场景 |
| | | /// </summary> |
| | | //public static void SceneRemove1(ZigBee.Device.ZbGateway gateway, int scenesId) |
| | | //{ |
| | | // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 803 } }; |
| | | // var data = new JObject { { "ScenesId", scenesId } }; |
| | | // jobject.Add("Data", data); |
| | | // gateway.Send(("Scene/Remove"), Common.SecuritySet.Encryption((jobject.ToString()))); |
| | | //} |
| | | |
| | | ///<summary > |
| | | /// 修改场景名称 |
| | | /// </summary> |
| | | //public static void SceneRename1(ZigBee.Device.ZbGateway gateway, int scenesId, string scenesName) |
| | | //{ |
| | | // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 804 } }; |
| | | // var data = new JObject { { "ScenesId", scenesId }, { "ScenesName", scenesName } }; |
| | | // jobject.Add("Data", data); |
| | | // gateway.Send(("Scene/Rename"), Common.SecuritySet.Encryption((jobject.ToString()))); |
| | | //} |
| | | |
| | | ///<summary > |
| | | /// 获取网关中场景信息 |
| | | /// </summary> |
| | | //public static void SceneGetInfo1(ZigBee.Device.ZbGateway gateway) |
| | | //{ |
| | | // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 805 } }; |
| | | // gateway.Send(("Scene/GetInfo"), Common.SecuritySet.Encryption((jobject.ToString()))); |
| | | //} |
| | | |
| | | ///<summary > |
| | | ///获取网关中场景的设备列表 |
| | | /// </summary> |
| | | //public static void SceneGetDeviceList1(ZigBee.Device.ZbGateway gateway, int ScenesId) |
| | | //{ |
| | | // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 806 } }; |
| | | // var data = new JObject { { "ScenesId", ScenesId } }; |
| | | // jobject.Add("Data", data); |
| | | // gateway.Send(("Scene/GetDeviceList"), Common.SecuritySet.Encryption((jobject.ToString()))); |
| | | //} |
| | | |
| | | ///<summary > |
| | | /// 获取所有场景信息(包括场景设备列表) |
| | | /// </summary> |
| | | //public static void SceneGetAllInfo1(ZigBee.Device.ZbGateway gateway) |
| | | //{ |
| | | // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 807 } }; |
| | | // gateway.Send(("Scene/GetAllInfo"), Common.SecuritySet.Encryption((jobject.ToString()))); |
| | | //} |
| | | |
| | | ///<summary > |
| | | ///调用场景 |
| | | /// </summary> |
| | | //public static void SceneOpen1(ZigBee.Device.ZbGateway gateway, int ScenesId) |
| | | //{ |
| | | // var jobject = new JObject { { "Cluster_ID", 0 }, { "Command", 808 } }; |
| | | // var data = new JObject { { "ScenesId", ScenesId } }; |
| | | // jobject.Add("Data", data); |
| | | // gateway.Send(("Scene/Open"), Common.SecuritySet.Encryption((jobject.ToString()))); |
| | | //} |
| | | } |
| | | } |