| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.Entity |
| | | { |
| | | public class Scene : Function |
| | | public class Scene |
| | | { |
| | | public Scene() |
| | | /// <summary> |
| | | /// 远端唯一ID |
| | | /// </summary> |
| | | public string userSceneId = ""; |
| | | /// <summary> |
| | | /// 场景sid |
| | | /// </summary> |
| | | public string sid = ""; |
| | | /// <summary> |
| | | /// 场景名称 |
| | | /// </summary> |
| | | public string name = ""; |
| | | /// <summary> |
| | | /// 网关ID |
| | | /// </summary> |
| | | public string gatewayId = ""; |
| | | /// <summary> |
| | | /// 云端oss存储图片的路径 |
| | | /// </summary> |
| | | public string image = ""; |
| | | /// <summary> |
| | | /// 所属房间列表 |
| | | /// </summary> |
| | | public List<string> roomIds = new List<string>(); |
| | | /// <summary> |
| | | /// 延时 |
| | | /// </summary> |
| | | public int delay = 0; |
| | | /// <summary> |
| | | /// 延时显示的文本 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public string delayText |
| | | { |
| | | get |
| | | { |
| | | string text = ""; |
| | | switch (delay) |
| | | { |
| | | case 0: |
| | | text = Language.StringByID(StringId.NoDelay); |
| | | break; |
| | | case 30: |
| | | text = "30s"; |
| | | break; |
| | | case 60: |
| | | text = "1min"; |
| | | break; |
| | | case 120: |
| | | text = "2min"; |
| | | break; |
| | | case 300: |
| | | text = "5min"; |
| | | break; |
| | | } |
| | | return text; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 场景分组 |
| | | /// </summary> |
| | | public string group = "1"; |
| | | /// <summary> |
| | | /// 场景类型 |
| | | /// </summary> |
| | | public SceneType sceneType = SceneType.OrdinaryScenes; |
| | | /// <summary> |
| | | /// 收藏标记 |
| | | /// </summary> |
| | | public bool collect = false; |
| | | |
| | | |
| | | /// <summary> |
| | | /// 场景背景 |
| | |
| | | /// <summary> |
| | | /// 场景功能列表 |
| | | /// </summary> |
| | | public List<Function> sceneFunctionList = new List<Function>(); |
| | | public List<SceneFunction> functions = new List<SceneFunction>(); |
| | | /// <summary> |
| | | /// 场景推送配置列表 |
| | | /// </summary> |
| | | public List<ScenePushConfig> pushConfigs = new List<ScenePushConfig>(); |
| | | |
| | | /// <summary> |
| | | /// 生成场景sid |
| | |
| | | { |
| | | sTimeSpan = sTimeSpan.Substring(0, 8); |
| | | } |
| | | else |
| | | else |
| | | { |
| | | sTimeSpan = "00000000"; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取设备添加到房间的房间名称 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public string GetRoomListName() |
| | | { |
| | | string roomNameList = ""; |
| | | foreach (var roomId in roomIds) |
| | | { |
| | | var findRoom = DB_ResidenceData.rooms.Find(obj => obj.sid == roomId); |
| | | if (findRoom == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (roomNameList != "") |
| | | { |
| | | roomNameList += ","; |
| | | } |
| | | roomNameList += findRoom.floorName + findRoom.name; |
| | | } |
| | | if (roomNameList == "" ) |
| | | { |
| | | roomNameList = Shared.Language.StringByID(StringId.WholeHouseScene); |
| | | } |
| | | return roomNameList; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 数据存储文件名 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public string savePath |
| | | { |
| | | get |
| | | { |
| | | return "SceneData_" + sid; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 保存功能数据 |
| | | /// </summary> |
| | | public void SaveSceneData() |
| | | { |
| | | var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); |
| | | FileUtils.WriteFileByBytes(savePath + this.sid, ssd); |
| | | MainPage.Log($"Save Scene Data : {this.sid}"); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新时间 |
| | | /// </summary> |
| | | public DateTime refreshTime = DateTime.MinValue; |
| | | } |
| | | /// <summary> |
| | | /// 场景功能对象 |
| | | /// </summary> |
| | | public class SceneFunction |
| | | { |
| | | public string sid = ""; |
| | | |
| | | public List<SceneFunctionStatus> status = new List<SceneFunctionStatus>(); |
| | | /// <summary> |
| | | /// 功能延时 |
| | | /// </summary> |
| | | public string delay = "0"; |
| | | |
| | | Function _localFunction; |
| | | /// <summary> |
| | | /// 本地对应的功能 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public Function localFunction { |
| | | get |
| | | { |
| | | if(_localFunction == null) |
| | | { |
| | | _localFunction = ConvertFunctionObject(); |
| | | } |
| | | return _localFunction; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 转换成功能对象 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | Function ConvertFunctionObject() |
| | | { |
| | | var localFunction = DB_ResidenceData.functionList.GetAllDeviceFunctionList().Find((obj) => obj.sid == sid); |
| | | foreach (var s in status) |
| | | { |
| | | localFunction.attributes.Add(new FunctionAttributes() { key = s.key, curValue = s.value, value = new List<string>() { s.value } }); |
| | | } |
| | | return localFunction; |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 场景功能属性 |
| | | /// </summary> |
| | | public class SceneFunctionStatus |
| | | { |
| | | public string key = ""; |
| | | public string value = ""; |
| | | } |
| | | /// <summary> |
| | | /// 场景推送配置 |
| | | /// </summary> |
| | | public class ScenePushConfig |
| | | { |
| | | /// <summary> |
| | | /// 推送方式 |
| | | /// </summary> |
| | | public string pushMethod = ""; |
| | | /// <summary> |
| | | /// 推送内容 |
| | | /// </summary> |
| | | public string pushContent = ""; |
| | | /// <summary> |
| | | /// 推送目标集合 |
| | | /// </summary> |
| | | public List<string> pushTarget = new List<string>(); |
| | | } |
| | | |
| | | } |
| | | //5.1.14获取场景列表
|
| | | //请求参数 |
| | | //{
|
| | | // "namespace": "HDL",
|
| | | // "type": "scene",
|
| | | // "command": "get_list"
|
| | | //}
|
| | | //返回值 json格式 所有场景id及场景里执行的目标数据
|
| | | //返回例子 |
| | | //{
|
| | | // "namespace": "HDL",
|
| | | // "command": "get_list_respond",
|
| | | // "type": "scene",
|
| | | // "number": [{
|
| | | // "scene_id": "0001",
|
| | | // "scene_name": "dinner",
|
| | | // "objects": [{
|
| | | // "sid": "00010019101209000025670100010001",
|
| | | //"data_type": "string ",
|
| | | // "value": "on"
|
| | | // }]
|
| | | // }]
|
| | | //}
|
| | | //说明 获取场景列表和属性,只开,只关,既开又关
|
| | | |
| | | //5.1.15创建场景
|
| | | //请求参数 |
| | | //{
|
| | | // "namespace": "HDL",
|
| | | // "command": "create",
|
| | | // "type": "scene",
|
| | | // "objects": [{
|
| | | // "scene_name": "Away ",
|
| | | // "status": "single_off"
|
| | | // }]
|
| | | //}
|
| | | //返回值 json格式
|
| | | //返回例子 {
|
| | | // "namespace": "HDL",
|
| | | // "command": "create_respond",
|
| | | // "type": "scene",
|
| | | // "objects": [{
|
| | | // "scene_id": "0004",
|
| | | // "name": "Away",
|
| | | // "status": "single_off"
|
| | | // }]
|
| | | //}
|
| | | //说明 创建场景
|
| | | |
| | | //5.1.16添加目标到场景
|
| | | //请求参数 |
| | | //{
|
| | | // "namespace": "HDL",
|
| | | // "command": "add_member",
|
| | | // "type": "scene",
|
| | | // "number": [{
|
| | | // "scene_id": "0001",
|
| | | // "objects": [{
|
| | | // "sid": "00010019101209000025670100010001",
|
| | | // "function": [{
|
| | | // "attri": "switch", |
| | | //"data_type": "string ",
|
| | | // "value": "on"
|
| | | // }]
|
| | |
|
| | | // }]
|
| | | // }, {
|
| | | // "scene_id": "0002",
|
| | | // "objects": [{
|
| | | // "sid": "00010019101209000025670200010001",
|
| | | // "function": [{
|
| | | // "attri": "brightness",
|
| | | //"data_type": "int",
|
| | | // "value": 50
|
| | | // }]
|
| | | // }]
|
| | | // }]
|
| | | //}
|
| | | //返回值 json格式
|
| | | //返回例子 {
|
| | | // "namespace": "HDL",
|
| | | // "command": "add_member_respond",
|
| | | // "type": "scene",
|
| | | // "scene_id": "0001",
|
| | | // "value": "success"
|
| | | //}
|
| | | //说明 成功添加目标的场景列表
|
| | | |
| | | //5.1.17删除场景命令
|
| | | //请求参数 |
| | | //{
|
| | | // "namespace": "HDL",
|
| | | // "command": "delete",
|
| | | // "type": "scene",
|
| | | // "objects": [{
|
| | | // "scene_id": "0001"
|
| | | // }]
|
| | | //}
|
| | | //返回值 json格式
|
| | | //返回例子 {
|
| | | // "namespace": "HDL",
|
| | | // "command": "delete_respond",
|
| | | // "type": "scene",
|
| | | // "scene_id": "0001",
|
| | | // "value": "success"
|
| | | //}
|
| | | //说明 删除场景
|
| | | |
| | | //5.1.18删除场景里的目标
|
| | | //请求参数 |
| | | //{
|
| | | // "Namespace": "HDL",
|
| | | // "Command": "delete_member",
|
| | | // "type": "scene",
|
| | | // "number": [{
|
| | | // "scene_id": "0001",
|
| | | // "objects": [{
|
| | | // "sid": "00010019101209000025670100010001"
|
| | | // }, {
|
| | | // "sid": "00010019101209000025670100010002"
|
| | | // }]
|
| | | // }]
|
| | | //}
|
| | | //返回值 json格式
|
| | | //返回例子 {
|
| | | // "namespace": "HDL",
|
| | | // "command": "delete_member_respond",
|
| | | // "type": "scene",
|
| | | // "scenesid": "0001",
|
| | | // "sid": "00010019101209000025670100010001",
|
| | | // "value": "success"
|
| | | //}
|
| | | //说明 删除场景内设备
|
| | | |
| | | //5.1.19配置场景分组(足内场景状态自动记录最后一次记录)
|
| | | //请求参数 {
|
| | | // "namespace": "HDL",
|
| | | // "command": "group",
|
| | | // "type": "scene",
|
| | | // "objects": [{
|
| | | // "group_id": 1,
|
| | | // "scene_ids": [{
|
| | | // "scene_id": "0001"
|
| | | // }, {
|
| | | // "scene_id": "0002"
|
| | | // }]
|
| | | // }]
|
| | | //}
|
| | | //返回值 json格式
|
| | | //返回例子 {
|
| | | // "namespace": "HDL",
|
| | | // "command": "group_respond",
|
| | | // "type": "scene",
|
| | | // "group_id": "0001",
|
| | | // "value": "success"
|
| | | //}
|
| | | //说明 控制场景
|
| | | |
| | |
|
| | | //5.1.20读取场景分组
|
| | | //请求参数 |
| | | //{
|
| | | // "namespace": "HDL",
|
| | | // "command": "read_group",
|
| | | // "type": "scene",
|
| | | // "objects": [{
|
| | | // "group_id": 1
|
| | | // }]
|
| | | //}
|
| | | //返回值 json格式
|
| | | //返回例子 {
|
| | | // "namespace": "HDL",
|
| | | // "command": "read_group_respond",
|
| | | // "type": "scene",
|
| | | // "objects": [{
|
| | | // "group_id": 1,
|
| | | // "scene_ids": [{
|
| | | // "scene_id": "0001"
|
| | | // }, {
|
| | | // "scene_id": "0002"
|
| | | // }]
|
| | | // }]
|
| | | //}
|
| | | //说明 控制场景
|
| | | |
| | |
|
| | | //5.1.21控制场景 |
| | | //请求参数 |
| | | //{
|
| | | // "namespace": "HDL",
|
| | | // "command": "contrl",
|
| | | // "type": "scene",
|
| | | // "objects": [{
|
| | | // "scene_id": "0001",
|
| | | // "value": “on”
|
| | | // }]
|
| | | //}
|
| | | //返回值 json格式
|
| | | //返回例子 {
|
| | | // "namespace": "HDL",
|
| | | // "command": "contrl_respond",
|
| | | // "type": "scene",
|
| | | // "scene_id": "0001",
|
| | | // "value": "success"
|
| | | //}
|
| | | //说明 控制场景 |