| | |
| | | /// </summary> |
| | | public class HDLLinkUtlis |
| | | { |
| | | /// <summary> |
| | | /// 生成逻辑sid方法 |
| | | /// </summary> |
| | | public static string NewSceneSid () |
| | | { |
| | | string sceneId = ""; |
| | | try { |
| | | string sOidBeginsWith = "000101";//厂商 + 通讯方式 |
| | | |
| | | string sTimeSpan = "00000000"; |
| | | long sTimeSp = ConvertDateTimeLong (); //以2020年1月1日算出的时间戳0.1s为单位 |
| | | ConvertIntToByteArray (sTimeSp, ref sTimeSpan); |
| | | |
| | | if (sTimeSpan.Length > 8) { |
| | | sTimeSpan = sTimeSpan.Substring (0, 8); |
| | | } |
| | | |
| | | sceneId = sOidBeginsWith + sTimeSpan; |
| | | |
| | | sceneId += "0A"; |
| | | sceneId += "0A01"; |
| | | int maxId = 1; |
| | | |
| | | Random random = new Random (Guid.NewGuid ().GetHashCode ()); |
| | | maxId = random.Next (65535); |
| | | |
| | | sceneId += (maxId).ToString ("X4"); |
| | | sceneId += "0000"; |
| | | } catch { |
| | | return sceneId; |
| | | } |
| | | return sceneId; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="curtainStatus"></param> |
| | | /// <returns></returns> |
| | | public static string GetCurtainStatusKey (CurtainStatus curtainStatus) { |
| | | if(curtainStatus == CurtainStatus.Open) { |
| | | return "on"; |
| | | } else if (curtainStatus == CurtainStatus.Close) { |
| | | return "off"; |
| | | } else if (curtainStatus == CurtainStatus.Stop) { |
| | | return "stop"; |
| | | } else { |
| | | return "off"; |
| | | } |
| | | |
| | | } |
| | | |
| | | #region 生成4位byte 时间戳 |
| | | private static long LastTime = 0; |
| | | /// <summary> |
| | | /// DateTime时间格式转换为13位带毫秒的Unix时间戳 |
| | | /// </summary> |
| | | /// <param name="time"> DateTime时间格式</param> |
| | | /// <returns>Unix时间戳格式</returns> |
| | | public static long ConvertDateTimeLong () |
| | | { |
| | | System.DateTime startTime = TimeZoneInfo.ConvertTimeToUtc (new System.DateTime (2020, 1, 1)); |
| | | long l = (long)(Math.Round ((DateTime.Now - startTime).TotalMilliseconds, 1) / 10); |
| | | if (l <= LastTime) l = LastTime + 1; |
| | | LastTime = l; |
| | | return l; |
| | | } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="m"></param> |
| | | /// <param name="strTmp"></param> |
| | | /// <returns></returns> |
| | | public static bool ConvertIntToByteArray (long m, ref string strTmp) |
| | | { |
| | | strTmp = "00000000"; |
| | | byte [] arry = new byte [4]; |
| | | arry [0] = (byte)(m & 0xFF); |
| | | arry [1] = (byte)((m & 0xFF00) >> 8); |
| | | arry [2] = (byte)((m & 0xFF0000) >> 16); |
| | | arry [3] = (byte)((m & 0xFF000000) >> 24); |
| | | strTmp = arry [0].ToString ("X2") + arry [1].ToString ("X2") + arry [2].ToString ("X2") + arry [3].ToString ("X2"); |
| | | return true; |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | #region ■ Current___________________________ |
| | | /// <summary> |
| | | /// 通用方法 |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region ■ 上传场景列表___________________________ |
| | | /// <summary> |
| | | /// 上传场景列表 |
| | | /// </summary> |
| | | public bool UploadSecneList () |
| | | { |
| | | var res = false; |
| | | try { |
| | | //1.加载所有场景并转换 |
| | | var allSecneList = GetAllSecneList (); |
| | | var hdlLinkSceneList = new List<HDLLinkScene> (); |
| | | foreach (var sence in allSecneList) { |
| | | var mHDLLinkScene = GetHDLLinkScene (sence); |
| | | //1.1成功转换的场景才添加到准备上传列表 |
| | | if(mHDLLinkScene != null && mHDLLinkScene.functions != null && mHDLLinkScene.functions.Count > 0) { |
| | | hdlLinkSceneList.Add (mHDLLinkScene); |
| | | } |
| | | } |
| | | |
| | | //全量同步场景 |
| | | res = UploadSceneList (hdlLinkSceneList); |
| | | |
| | | |
| | | |
| | | } catch (Exception ex){ |
| | | Utlis.WriteLine ("catch :" + ex.ToString ()); |
| | | } |
| | | return res; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取所有场景列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public List<Scene> GetAllSecneList () |
| | | { |
| | | List<Scene> targetSceneList = new List<Scene> (); |
| | | //// 找出需要显示的场景 |
| | | // 1.全局场景 |
| | | var globalSceneFileList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (Scene.GlobalSceneFilePath))); |
| | | if (globalSceneFileList == null) { |
| | | globalSceneFileList = new List<string> (); |
| | | } |
| | | // 2.房间场景 |
| | | List<string> RoomsSceneFileList = new List<string> (); |
| | | foreach (var r in Room.Lists) { |
| | | if (string.IsNullOrEmpty (r.Name)) { |
| | | continue; |
| | | } |
| | | if (r != null) { |
| | | RoomsSceneFileList.AddRange (r.SceneFilePathList); |
| | | } |
| | | } |
| | | |
| | | foreach (var sceneFilePath in globalSceneFileList) { |
| | | var tempScene = Scene.GetSceneByFilePath (sceneFilePath); |
| | | if (tempScene != null) { |
| | | if (string.IsNullOrEmpty (tempScene.Sid)) { |
| | | //如果Sid为空,重新生成并保存 |
| | | tempScene.Sid = NewSceneSid (); |
| | | tempScene.Save (sceneFilePath); |
| | | Utlis.WriteLine ("生成新的场景id: " + tempScene.Sid); |
| | | |
| | | } |
| | | targetSceneList.Add (tempScene); |
| | | } |
| | | } |
| | | |
| | | foreach (var roomSceneFilePath in RoomsSceneFileList) { |
| | | var tempScene = Scene.GetSceneByFilePath (roomSceneFilePath); |
| | | if (tempScene != null) { |
| | | if (string.IsNullOrEmpty (tempScene.Sid)) { |
| | | //如果Sid为空,重新生成并保存 |
| | | tempScene.Sid = NewSceneSid (); |
| | | tempScene.Save (roomSceneFilePath); |
| | | Utlis.WriteLine ("生成新的场景id: " + tempScene.Sid); |
| | | } |
| | | targetSceneList.Add (tempScene); |
| | | } |
| | | } |
| | | // 所有场景 |
| | | return targetSceneList; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 全量同步场景 |
| | | /// </summary> |
| | | /// <param name="mScene"></param> |
| | | bool UploadSceneList (List<HDLLinkScene> hdlLinkSceneList) |
| | | { |
| | | var res = false; |
| | | try { |
| | | var revertObj = HttpServerRequest.Current.SecneSyncList (hdlLinkSceneList); |
| | | if (revertObj.Code == StateCode.SUCCESS) { |
| | | res = true; |
| | | } else { |
| | | IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code); |
| | | } |
| | | } catch { |
| | | |
| | | } |
| | | return res; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="mScene"></param> |
| | | bool UpdateSceneList (List<HDLLinkScene> updateLinkSceneList) |
| | | { |
| | | var res = false; |
| | | try { |
| | | var revertObj = HttpServerRequest.Current.EditScene (updateLinkSceneList); |
| | | if (revertObj.Code == StateCode.SUCCESS) { |
| | | res = true; |
| | | } else { |
| | | IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code); |
| | | } |
| | | } catch { |
| | | |
| | | } |
| | | return res; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 原生协议Scene 转换成 HDLLinkScene数据格式 |
| | | /// </summary> |
| | | /// <param name="mScene"></param> |
| | | /// <returns></returns> |
| | | HDLLinkScene GetHDLLinkScene (Scene mScene) |
| | | { |
| | | var mHDLLinkScene = new HDLLinkScene (); |
| | | mHDLLinkScene.sid = mScene.Sid; |
| | | mHDLLinkScene.name = mScene.Name; |
| | | if (UserConfig.Instance.CheckWhetherGatewayIdNotNull ()) { |
| | | mHDLLinkScene.gatewayId = UserConfig.Instance.HomeGateway.gatewayId; |
| | | } |
| | | var functions = new List<SceneFunction> (); |
| | | if (!mScene.busScene) { |
| | | foreach (var deviceFilePath in mScene.DeviceFilePathList) { |
| | | var jsonInfo = System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)); |
| | | var common = Newtonsoft.Json.JsonConvert.DeserializeObject<Common> (jsonInfo); |
| | | if (common == null) continue; |
| | | |
| | | var function = CommonUtlis.Current.CommonToFunction (common, CommonConfig.Current.FunctionList); |
| | | if (function == null) continue; |
| | | |
| | | if (common.Type == DeviceType.LightDimming) { |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<LightDimming> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.on_off |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = commonNew.CurrentBrightness > 0 ? "on" : "off", |
| | | }); |
| | | //2.Brightness |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.Brightness, |
| | | value = commonNew.CurrentBrightness.ToString(), |
| | | }); |
| | | //3.Delay |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.Delay, |
| | | value = (commonNew.DelayTimeHeight * 256 + commonNew.DelayTimeLow).ToString (), |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | |
| | | } else if (common.Type == DeviceType.LightEnergySocket) { |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<LightEnergySocket> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.on_off |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = commonNew.CurrentBrightness > 0 ? "on" : "off", |
| | | }); |
| | | //2.Delay |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.Delay, |
| | | value = (commonNew.DelayTimeHeight * 256 + commonNew.DelayTimeLow).ToString (), |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | |
| | | |
| | | } else if (common.Type == DeviceType.LightEnergySwitch) { |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<LightEnergySwitch> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.on_off |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = commonNew.CurrentBrightness > 0 ? "on" : "off", |
| | | }); |
| | | //2.Delay |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.Delay, |
| | | value = (commonNew.DelayTimeHeight * 256 + commonNew.DelayTimeLow).ToString(), |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | |
| | | |
| | | } else if (common.Type == DeviceType.LightRGB) { |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<LightLogic> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.on_off |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = commonNew.CurrentBrightness > 0 ? "on" : "off", |
| | | }); |
| | | //2.Brightness |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.Brightness, |
| | | value = commonNew.CurrentBrightness.ToString (), |
| | | }); |
| | | //3.Delay |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.Delay, |
| | | value = (commonNew.DelayTimeHeigh * 256 + commonNew.DelayTimeLow).ToString (), |
| | | }); |
| | | |
| | | //4.rgb |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.RGB, |
| | | value = commonNew.RStatus + "," + commonNew.GStatus + "," + commonNew.BStatus, |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | |
| | | //var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightLogic> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath))); |
| | | ////if (device == null) { |
| | | //// mSendCount--; |
| | | //// continue; |
| | | ////} |
| | | //if (device == null) { |
| | | // //replyBytes = new byte [] { 0x00 }; |
| | | //} else { |
| | | // var mSceneFunction = new SceneFunction (); |
| | | // functions.Add (mSceneFunction); |
| | | // replyBytes = Control.ControlBytesSendHasReturn (Command.SetLogicLoopColor, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, 254, device.DelayTimeHeigh,device.DelayTimeLow, |
| | | // 3,device.RStatus,device.GStatus,device.BStatus,0,0}); |
| | | //} |
| | | |
| | | } else if (common.Type == DeviceType.LightSwitch) { |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<LightSwitch> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.OnOff |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = commonNew.CurrentBrightness > 0 ? "on" : "off", |
| | | }); |
| | | //2.Delay |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.Delay, |
| | | value = (commonNew.DelayTimeHeight * 256 + commonNew.DelayTimeLow).ToString (), |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | |
| | | |
| | | } else if (common.Type == DeviceType.CurtainModel) { |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<CurtainModel> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.on_off stop |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = GetCurtainStatusKey(commonNew.Status), |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | |
| | | |
| | | } else if (common.Type == DeviceType.CurtainRoller) { |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<CurtainRoller> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.percent |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.Percent, |
| | | value = commonNew.CurtainProress.ToString(), |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | |
| | | |
| | | } else if (common.Type == DeviceType.CurtainTrietex) { |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<CurtainTrietex> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.percent |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.Percent, |
| | | value = commonNew.CurtainProress.ToString (), |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | } else if (common.Type == DeviceType.HVAC || common.Type == DeviceType.ACInfrared) { |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<HVAC> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.on_off |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = commonNew.Power > 0 ? "on" : "off", |
| | | }); |
| | | |
| | | //2.mode |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.Mode, |
| | | value = commonNew.SetModeAttribute, |
| | | }); |
| | | |
| | | //3.fan |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.FanSpeed, |
| | | value = commonNew.SetFanSpeedAttribute, |
| | | }); |
| | | |
| | | //4.SetTemp |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.SetTemp, |
| | | value = commonNew.SetTemperature.ToString(), |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | |
| | | //replyBytes = Control.ControlBytesSendHasReturn (Command.SetACMode, device.SubnetID, device.DeviceID, new byte [] { |
| | | // device.LoopID, |
| | | // device.TemperatureMode, |
| | | // device.IndoorTemperature, |
| | | // device.CoolTemperature, |
| | | // device.HeatTemperature, |
| | | // device.AutoTemperature, |
| | | // device.ChuShiTemperature, |
| | | // device.RealModeAndFanSpeed, |
| | | // device.Power, |
| | | // device.SetMode, |
| | | // device.SetFanSpeed, |
| | | // device.SetTemperature, |
| | | // device.ShaoFanMode}); |
| | | |
| | | |
| | | |
| | | } else if (common.Type == DeviceType.FoolHeat) { |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<FoolHeat> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.on_off |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = commonNew.Status > 0 ? "on" : "off", |
| | | }); |
| | | |
| | | //2.mode |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.Mode, |
| | | value = commonNew.SetModeAttribute, |
| | | }); |
| | | |
| | | //3.SetTemp |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.SetTemp, |
| | | value = commonNew.WorkingTemperature.ToString (), |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | |
| | | //var device = Newtonsoft.Json.JsonConvert.DeserializeObject<FoolHeat> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath))); |
| | | ////if (device == null) { |
| | | //// mSendCount--; |
| | | //// continue; |
| | | ////} |
| | | //if (device == null) { |
| | | // //replyBytes = new byte [] { 0x00 }; |
| | | //} else { |
| | | // var mSceneFunction = new SceneFunction (); |
| | | // functions.Add (mSceneFunction); |
| | | //replyBytes = Control.ControlBytesSendHasReturn (Command.SetFoolHeat, device.SubnetID, device.DeviceID, |
| | | // new byte [] { device.LoopID, (byte)(device.Status + device.WorkingMode * 16), 0,device.WorkingMode,device.NormalTemperature, device.DayTemperature, |
| | | // device.NightTemperature, device.AwayTemperature , 0, 0 }); |
| | | //} |
| | | } else if (common.Type == DeviceType.FanModule) { |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<FanModule> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.on_off |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = commonNew.WindSpeed > 0 ? "on" : "off", |
| | | }); |
| | | |
| | | //2.FanSpeedPercent |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.FanSpeedPercent, |
| | | value = commonNew.WindSpeed.ToString(), |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | |
| | | //replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, (byte)device.WindSpeed }); |
| | | |
| | | } else if (common.Type == DeviceType.LogicModule) { |
| | | //replyBytes = Control.ControlBytesSendHasReturn (Command.SetScene, device.SubnetID, device.DeviceID, new byte [] { |
| | | //device.AreaID,device.AreaSceneID}); |
| | | } else if (common.Type == DeviceType.UniversalDevice) {//2020-09-02 增加通用开关 |
| | | var commonNew = Newtonsoft.Json.JsonConvert.DeserializeObject<UniversalDevice> (jsonInfo); |
| | | var mSceneFunction = new SceneFunction (); |
| | | mSceneFunction.sid = function.sid; |
| | | //1.on_off |
| | | var status = new List<SceneFunctionStatus> (); |
| | | status.Add (new SceneFunctionStatus () { |
| | | key = FunctionAttributeKey.OnOff, |
| | | value = commonNew.SendBytes [1] > 0 ? "on" : "off", |
| | | }); |
| | | |
| | | mSceneFunction.status = status; |
| | | functions.Add (mSceneFunction); |
| | | //replyBytes = Control.ControlBytesSendHasReturn (Command.SetCommonSwitch, device.SubnetID, device.DeviceID, new byte [] { device.SendBytes [0], device.SendBytes [1] }); |
| | | } |
| | | } |
| | | } else { |
| | | |
| | | } |
| | | |
| | | |
| | | mHDLLinkScene.functions = functions; |
| | | return mHDLLinkScene; |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 上传设备列表___________________________ |
| | | /// <summary> |
| | | /// 上传设备列表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public bool UploadOidAndSidList () |
| | |
| | | List<Common> TargetList = new List<Common> (); |
| | | |
| | | //找出需要显示的设备 |
| | | var filesList = FileUtils.ReadFiles ().FindAll ((obj) => { |
| | | string [] str = obj.Split ('_'); |
| | | return obj.StartsWith ("Equipment_") && str.Length == 5; |
| | | }); |
| | | var localEquipments = filesList.FindAll ((obj) => { |
| | | string typeString = obj.Split ('_') [1]; |
| | | return ( |
| | | #region light |
| | | typeString.ToString () == DeviceType.LightCCT.ToString () || |
| | | typeString.ToString () == DeviceType.LightRGB.ToString () || |
| | | typeString.ToString () == DeviceType.LightDALI.ToString () || |
| | | typeString.ToString () == DeviceType.LightRGBW.ToString () || |
| | | typeString.ToString () == DeviceType.LightLogic.ToString () || |
| | | typeString.ToString () == DeviceType.LightSwitch.ToString () || |
| | | typeString.ToString () == DeviceType.LightDimming.ToString () || |
| | | typeString.ToString () == DeviceType.LightMixSwitch.ToString () || |
| | | typeString.ToString () == DeviceType.LightRGBandCCT.ToString () || |
| | | typeString.ToString () == DeviceType.LightMixDimming.ToString () || |
| | | typeString.ToString () == DeviceType.LightEnergySwitch.ToString () || |
| | | typeString.ToString () == DeviceType.LightEnergySocket.ToString () || |
| | | typeString.ToString () == DeviceType.LightSwitchSocket.ToString () |
| | | || typeString.ToString () == DeviceType.DMX48.ToString () |
| | | #endregion |
| | | #region light |
| | | || typeString.ToString () == DeviceType.SensorCH4.ToString () || |
| | | typeString.ToString () == DeviceType.SensorCO2.ToString () || |
| | | typeString.ToString () == DeviceType.SensorLPG.ToString () || |
| | | typeString.ToString () == DeviceType.SensorCOH2.ToString () || |
| | | typeString.ToString () == DeviceType.SensorPM25.ToString () || |
| | | typeString.ToString () == DeviceType.SensorTVOC.ToString () || |
| | | typeString.ToString () == DeviceType.SensorPower.ToString () || |
| | | typeString.ToString () == DeviceType.SensorSmoke.ToString () || |
| | | typeString.ToString () == DeviceType.SensorWater.ToString () || |
| | | typeString.ToString () == DeviceType.SensorWeight.ToString () || |
| | | typeString.ToString () == DeviceType.SensorCurrent.ToString () || |
| | | typeString.ToString () == DeviceType.SensorVoltage.ToString () |
| | | || typeString.ToString () == DeviceType.SensorRainfall.ToString () |
| | | || typeString.ToString () == DeviceType.SensorVelocity.ToString () |
| | | || typeString.ToString () == DeviceType.SensorMenciAndwindowMagnetic.ToString () |
| | | || typeString.ToString () == DeviceType.SensorMobileDetection.ToString () |
| | | || typeString.ToString () == DeviceType.SensorLiquidPressure.ToString () |
| | | || typeString.ToString () == DeviceType.SensorVibration.ToString () |
| | | || typeString.ToString () == DeviceType.SensorLiquidFlow.ToString () |
| | | || typeString.ToString () == DeviceType.SensorLiquidDepth.ToString () |
| | | || typeString.ToString () == DeviceType.SensorTemperature.ToString () |
| | | || typeString.ToString () == DeviceType.SensorHeightLength.ToString () |
| | | || typeString.ToString () == DeviceType.SensorIllumination.ToString () |
| | | || typeString.ToString () == DeviceType.SensorWindPressure.ToString () |
| | | || typeString.ToString () == DeviceType.SensorHumidity.ToString () |
| | | #endregion |
| | | #region curtain |
| | | || typeString.ToString () == DeviceType.CurtainModel.ToString () |
| | | || typeString.ToString () == DeviceType.CurtainRoller.ToString () |
| | | || typeString.ToString () == DeviceType.CurtainTrietex.ToString () |
| | | #endregion |
| | | #region ac |
| | | || typeString.ToString () == DeviceType.ACPanel.ToString () |
| | | || typeString.ToString () == DeviceType.ACDevice.ToString () |
| | | || typeString.ToString () == DeviceType.ACInfrared.ToString () |
| | | || typeString.ToString () == DeviceType.ACCoolmaster.ToString () |
| | | || typeString.ToString () == DeviceType.CustomAC.ToString () |
| | | || typeString.ToString () == DeviceType.HVAC.ToString () |
| | | #endregion |
| | | #region foolheat |
| | | || typeString.ToString () == DeviceType.FoolHeat.ToString () |
| | | || typeString.ToString () == DeviceType.FoolHeatPanel.ToString () |
| | | #endregion |
| | | #region |
| | | || typeString.ToString () == DeviceType.InfraredMode.ToString () |
| | | || typeString.ToString () == DeviceType.DoorLock.ToString () |
| | | || typeString.ToString () == DeviceType.FanModule.ToString () |
| | | || typeString.ToString () == DeviceType.FreshAir.ToString () |
| | | || typeString.ToString () == DeviceType.InfraredTV.ToString () |
| | | || typeString.ToString () == DeviceType.UniversalDevice.ToString () |
| | | || typeString.ToString () == DeviceType.MusicModel.ToString () |
| | | || typeString.ToString () == DeviceType.SecurityModule.ToString () |
| | | || typeString.ToString () == DeviceType.LogicModule.ToString () |
| | | || typeString.ToString () == DeviceType.SecurityPanel.ToString () |
| | | #endregion |
| | | ); |
| | | }); |
| | | var localEquipments = CommonUtlis.Current.GetAllLocalEquipments (); |
| | | |
| | | foreach (string deviceFilePath in localEquipments) { |
| | | try { |
| | |
| | | Oid tmpOid = new Oid (); |
| | | tmpOid.protocolType = "bus"; |
| | | tmpOid.device_name = tmp.Type.ToString (); |
| | | tmpOid.oid = FormingNewOid (tmp.Type); |
| | | tmpOid.oid = FormingNewOid (tmp); |
| | | tmpOid.addresses = addresses; |
| | | tmpOid.device_model = tmp.Type.ToString (); |
| | | tmpOid.fw_version = ""; |
| | |
| | | |
| | | functionLists.AddRange (ConvertToSidListToIotCloud (tmpOid.oid, tmp)); |
| | | |
| | | Utlis.WriteLine ("新的模块,新的的OID:" + tmpOid.addresses + " deviceType:" + tmpOid.deviceType); |
| | | //Utlis.WriteLine ("新的模块,新的的OID:" + tmpOid.addresses + " deviceType:" + tmpOid.deviceType); |
| | | } else { |
| | | //3.2存在则取之前的oid |
| | | functionLists.AddRange (ConvertToSidListToIotCloud (deviceOid.oid, tmp)); |
| | | Utlis.WriteLine ("相同的模块,取之前的OID:" + deviceOid.addresses + " deviceType:" + deviceOid.deviceType); |
| | | //Utlis.WriteLine ("相同的模块,取之前的OID:" + deviceOid.addresses + " deviceType:" + deviceOid.deviceType); |
| | | } |
| | | |
| | | } |
| | |
| | | /// <summary> |
| | | /// 生成设备Oid |
| | | /// </summary> |
| | | /// <param name="iDeviceType"></param> |
| | | /// <param name="common"></param> |
| | | /// <returns></returns> |
| | | public string FormingNewOid (DeviceType deviceType) |
| | | public string FormingNewOid (Common common) |
| | | { |
| | | string sOid = ""; |
| | | try { |
| | | //1.生成 厂商 + 通讯方式 |
| | | string sOidBeginsWith = "000101";//厂商 + 通讯方式 |
| | | //2.生成产品时间戳 |
| | | long sTimeSp = ConvertDateTimeLong (); //以2020年1月1日算出的时间戳0.1s为单位 |
| | | |
| | | //**************************** |
| | | ////2.生成产品时间戳 |
| | | //long sTimeSp = ConvertDateTimeLong (); //以2020年1月1日算出的时间戳0.1s为单位 |
| | | //string sTimeSpan = ""; |
| | | //ConvertIntToByteArray (sTimeSp, ref sTimeSpan); |
| | | //if (sTimeSpan.Length != 8) return sOid; |
| | | ////延迟10ms |
| | | |
| | | //2.方案二:生成产品时间戳(云端不解析)印度APP把当前位置改为(子网号、设备号、大类小类)表示,保证设备在子网号设备号不变的情况下 oid生成也不变 |
| | | string sTimeSpan = ""; |
| | | ConvertIntToByteArray (sTimeSp, ref sTimeSpan); |
| | | if (sTimeSpan.Length != 8) return sOid; |
| | | //延迟10ms |
| | | sTimeSpan = common.SubnetID.ToString ("X2") + common.DeviceID.ToString ("X2") + common.DeviceTypeString; |
| | | //**************************** |
| | | |
| | | //3.生成产品类别 |
| | | var productType = GetProductType (deviceType); |
| | | var productType = GetProductType (common.Type); |
| | | sOid = sOidBeginsWith + sTimeSpan + productType; |
| | | |
| | | return sOid; |
| | |
| | | //2.通道号 |
| | | string loopIDStr = loopCommon.LoopID.ToString ("X4"); |
| | | //3.大小类别 |
| | | string bigMinStr = loopCommon.BigClass.ToString ("X2") + loopCommon.MinClass.ToString ("X2"); |
| | | string bigMinStr = loopCommon.DeviceTypeString; |
| | | //4.拼接 |
| | | sSid = sOid + mPhysicalModelType + loopIDStr + bigMinStr; |
| | | return sSid; |
| | |
| | | tmp.oid = sOid; |
| | | tmp.sid = sSid; |
| | | tmp.name = loopCommon.Name; |
| | | tmp.attributes = new List<FunctionSid> (); |
| | | tmp.attributes = new List<Attribute> (); |
| | | tmp.omodel = loopCommon.Type.ToString (); |
| | | //继电器开关类 |
| | | if (loopCommon.Type == DeviceType.LightSwitch |
| | | || loopCommon.Type == DeviceType.LightEnergySwitch |
| | | || loopCommon.Type == DeviceType.LightEnergySocket |
| | | || loopCommon.Type == DeviceType.LightSwitchSocket |
| | | || loopCommon.Type == DeviceType.LightMixSwitch) { |
| | | tmp.spk = "light.switch"; |
| | | if (loopCommon.Type == DeviceType.UniversalDevice) { |
| | | //通用开关 |
| | | tmp.spk = SPK.UniversalDevice; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "on_off"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("on"); |
| | | tempFunction.value.Add ("off"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "on_off"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("on"); |
| | | tempAttribute.value.Add ("off"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | }else if (loopCommon.Type == DeviceType.FanModule ) { |
| | | //风扇 |
| | | tmp.spk = SPK.ElectricFan; |
| | | #region on_off |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "on_off"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("on"); |
| | | tempAttribute.value.Add ("off"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | #region volume_level |
| | | Attribute tempSpeedAttribute = new Attribute (); |
| | | tempSpeedAttribute.key = FunctionAttributeKey.FanSpeedPercent; |
| | | tempSpeedAttribute.data_type = "integer"; |
| | | tempSpeedAttribute.value = new List<string> (); |
| | | tempSpeedAttribute.max = 8; |
| | | tempSpeedAttribute.min = 0; |
| | | tmp.attributes.Add (tempSpeedAttribute); |
| | | #endregion |
| | | |
| | | } else if (loopCommon.Type == DeviceType.LightSwitch |
| | | || loopCommon.Type == DeviceType.LightEnergySwitch |
| | | || loopCommon.Type == DeviceType.LightMixSwitch) { |
| | | //继电器开关类 |
| | | tmp.spk = SPK.LightSwitch; |
| | | #region on_off |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "on_off"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("on"); |
| | | tempAttribute.value.Add ("off"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | }else if (loopCommon.Type == DeviceType.LightEnergySocket |
| | | || loopCommon.Type == DeviceType.LightSwitchSocket) { |
| | | //电器 插座 |
| | | tmp.spk = SPK.ElectricSocket; |
| | | #region on_off |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "on_off"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("on"); |
| | | tempAttribute.value.Add ("off"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | } else if (loopCommon.Type == DeviceType.LightDimming |
| | | || loopCommon.Type == DeviceType.LightCCT |
| | | || loopCommon.Type == DeviceType.LightDALI) { |
| | | //调光类 |
| | | tmp.spk = "light.dimming"; |
| | | //tmp.spk = "light.dimming"; |
| | | tmp.spk = SPK.LightDimming; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "on_off"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("on"); |
| | | tempFunction.value.Add ("off"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "on_off"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("on"); |
| | | tempAttribute.value.Add ("off"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | #region brightness |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "brightness"; |
| | | tempFunction1.data_type = "integer"; |
| | | tempFunction1.value = new List<string> (); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "brightness"; |
| | | tempAttribute1.data_type = "integer"; |
| | | tempAttribute1.value = new List<string> (); |
| | | |
| | | tempFunction1.max = 100; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | tempAttribute1.max = 100; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | |
| | | #region fade_time |
| | | FunctionSid tempFunction3 = new FunctionSid (); |
| | | tempFunction3.key = "fade_time"; |
| | | tempFunction3.data_type = "integer"; |
| | | tempFunction3.value = new List<string> (); |
| | | //tempFunction1.value.Add("percent"); |
| | | Attribute tempAttribute3 = new Attribute (); |
| | | tempAttribute3.key = "fade_time"; |
| | | tempAttribute3.data_type = "integer"; |
| | | tempAttribute3.value = new List<string> (); |
| | | //tempAttribute1.value.Add("percent"); |
| | | //for (int iPercent = 0; iPercent <= 100; iPercent++) |
| | | //{ |
| | | // tempFunction1.value.Add(iPercent.ToString()); |
| | | // tempAttribute1.value.Add(iPercent.ToString()); |
| | | //} |
| | | tempFunction3.max = 100; |
| | | tempFunction3.min = 0; |
| | | tmp.attributes.Add (tempFunction3); |
| | | tempAttribute3.max = 100; |
| | | tempAttribute3.min = 0; |
| | | tmp.attributes.Add (tempAttribute3); |
| | | #endregion |
| | | |
| | | if (loopCommon.Type == DeviceType.LightCCT || loopCommon.Type == DeviceType.LightDALI)//色温类别 |
| | | { |
| | | tmp.spk = "light.cct"; |
| | | //tmp.spk = "light.cct"; |
| | | tmp.spk = SPK.LightCCT; |
| | | #region cct |
| | | FunctionSid tempFunction2 = new FunctionSid (); |
| | | tempFunction2.key = "cct"; |
| | | tempFunction2.data_type = "integer"; |
| | | tempFunction2.value = new List<string> (); |
| | | //tempFunction2.value.Add("warm light "); |
| | | //tempFunction2.value.Add("cold light "); |
| | | tempFunction2.max = 65535; |
| | | tempFunction2.min = 0; |
| | | tmp.attributes.Add (tempFunction2); |
| | | Attribute tempAttribute2 = new Attribute (); |
| | | tempAttribute2.key = "cct"; |
| | | tempAttribute2.data_type = "integer"; |
| | | tempAttribute2.value = new List<string> (); |
| | | //tempAttribute2.value.Add("warm light "); |
| | | //tempAttribute2.value.Add("cold light "); |
| | | tempAttribute2.max = 65535; |
| | | tempAttribute2.min = 0; |
| | | tmp.attributes.Add (tempAttribute2); |
| | | #endregion |
| | | } |
| | | } else if (loopCommon.Type == DeviceType.LightRGB |
| | |
| | | || loopCommon.Type == DeviceType.LightRGBandCCT |
| | | || loopCommon.Type == DeviceType.DMX48) { |
| | | |
| | | tmp.spk = "light.rgb"; |
| | | tmp.spk = SPK.LightRGB; |
| | | //tmp.spk = "light.rgb"; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "on_off"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("on"); |
| | | tempFunction.value.Add ("off"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "on_off"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("on"); |
| | | tempAttribute.value.Add ("off"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | #region brightness |
| | | FunctionSid tempFunction2 = new FunctionSid (); |
| | | tempFunction2.key = "brightness"; |
| | | tempFunction2.data_type = "integer"; |
| | | tempFunction2.value = new List<string> (); |
| | | tempFunction2.max = 100; |
| | | tempFunction2.min = 0; |
| | | tmp.attributes.Add (tempFunction2); |
| | | Attribute tempAttribute2 = new Attribute (); |
| | | tempAttribute2.key = "brightness"; |
| | | tempAttribute2.data_type = "integer"; |
| | | tempAttribute2.value = new List<string> (); |
| | | tempAttribute2.max = 100; |
| | | tempAttribute2.min = 0; |
| | | tmp.attributes.Add (tempAttribute2); |
| | | #endregion |
| | | |
| | | |
| | | |
| | | if (loopCommon.Type == DeviceType.LightRGBW) { |
| | | tmp.spk = "light.rgbw"; |
| | | //tmp.spk = "light.rgbw"; |
| | | tmp.spk = SPK.LightRGBW; |
| | | #region color |
| | | FunctionSid tempFunction3 = new FunctionSid (); |
| | | tempFunction3.key = "rgb"; |
| | | tempFunction3.data_type = "integer"; |
| | | tempFunction3.value = new List<string> (); |
| | | //tempFunction2.value.Add("red"); |
| | | //tempFunction2.value.Add("green"); |
| | | //tempFunction2.value.Add("blue"); |
| | | tempFunction3.max = 255; |
| | | tempFunction3.min = 0; |
| | | tmp.attributes.Add (tempFunction3); |
| | | Attribute tempAttribute3 = new Attribute (); |
| | | tempAttribute3.key = "rgb"; |
| | | tempAttribute3.data_type = "integer"; |
| | | tempAttribute3.value = new List<string> (); |
| | | //tempAttribute2.value.Add("red"); |
| | | //tempAttribute2.value.Add("green"); |
| | | //tempAttribute2.value.Add("blue"); |
| | | tempAttribute3.max = 255; |
| | | tempAttribute3.min = 0; |
| | | tmp.attributes.Add (tempAttribute3); |
| | | #endregion |
| | | } else { |
| | | #region color |
| | | FunctionSid tempFunction3 = new FunctionSid (); |
| | | tempFunction3.key = "rgb"; |
| | | tempFunction3.data_type = "integer"; |
| | | tempFunction3.value = new List<string> (); |
| | | tempFunction3.min = 0; |
| | | tmp.attributes.Add (tempFunction3); |
| | | Attribute tempAttribute3 = new Attribute (); |
| | | tempAttribute3.key = "rgb"; |
| | | tempAttribute3.data_type = "integer"; |
| | | tempAttribute3.value = new List<string> (); |
| | | tempAttribute3.min = 0; |
| | | tmp.attributes.Add (tempAttribute3); |
| | | #endregion |
| | | |
| | | } |
| | | |
| | | if (loopCommon.Type == DeviceType.LightRGBandCCT) { |
| | | #region CCT |
| | | FunctionSid tempFunctionCCT = new FunctionSid (); |
| | | tempFunctionCCT.key = "cct"; |
| | | tempFunctionCCT.data_type = "integer"; |
| | | tempFunctionCCT.value = new List<string> (); |
| | | //tempFunction2.value.Add("red"); |
| | | //tempFunction2.value.Add("green"); |
| | | //tempFunction2.value.Add("blue"); |
| | | tempFunctionCCT.max = 65535; |
| | | tempFunctionCCT.min = 0; |
| | | tmp.attributes.Add (tempFunctionCCT); |
| | | Attribute tempAttributeCCT = new Attribute (); |
| | | tempAttributeCCT.key = "cct"; |
| | | tempAttributeCCT.data_type = "integer"; |
| | | tempAttributeCCT.value = new List<string> (); |
| | | //tempAttribute2.value.Add("red"); |
| | | //tempAttribute2.value.Add("green"); |
| | | //tempAttribute2.value.Add("blue"); |
| | | tempAttributeCCT.max = 65535; |
| | | tempAttributeCCT.min = 0; |
| | | tmp.attributes.Add (tempAttributeCCT); |
| | | #endregion |
| | | } |
| | | |
| | | } else if (loopCommon.Type == DeviceType.CurtainModel || loopCommon.Type == DeviceType.CurtainRoller || loopCommon.Type == DeviceType.CurtainTrietex) { |
| | | tmp.spk = "curtain.switch"; |
| | | //tmp.spk = "curtain.switch"; |
| | | tmp.spk = SPK.CurtainSwitch; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "on_off"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("on"); |
| | | tempFunction.value.Add ("off"); |
| | | tempFunction.value.Add ("stop"); |
| | | tempFunction.max = 2; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "on_off"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("on"); |
| | | tempAttribute.value.Add ("off"); |
| | | tempAttribute.value.Add ("stop"); |
| | | tempAttribute.max = 2; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | if (loopCommon.Type == DeviceType.CurtainRoller || loopCommon.Type == DeviceType.CurtainTrietex)//所有卷帘控制器 |
| | | { |
| | | tmp.spk = "curtain.trietex"; |
| | | tmp.spk = SPK.CurtainTrietex; |
| | | //tmp.spk = "curtain.trietex"; |
| | | #region openlevel |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "percent"; |
| | | tempFunction1.data_type = "integer"; |
| | | tempFunction1.value = new List<string> (); |
| | | //tempFunction1.value.Add("percent"); |
| | | tempFunction1.max = 100; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "percent"; |
| | | tempAttribute1.data_type = "integer"; |
| | | tempAttribute1.value = new List<string> (); |
| | | //tempAttribute1.value.Add("percent"); |
| | | tempAttribute1.max = 100; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | } |
| | | } else if (loopCommon.Type == DeviceType.ACPanel |
| | |
| | | || loopCommon.Type == DeviceType.HVAC) { |
| | | |
| | | //空调类 |
| | | tmp.spk = "ac.standard"; |
| | | tmp.spk = SPK.AcStandard; |
| | | //tmp.spk = "ac.standard"; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "on_off"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("on"); |
| | | tempFunction.value.Add ("off"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "on_off"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("on"); |
| | | tempAttribute.value.Add ("off"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | #region mode |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "mode"; |
| | | tempFunction1.data_type = "integer"; |
| | | tempFunction1.value = new List<string> (); |
| | | tempFunction1.value.Add ("cool"); |
| | | tempFunction1.value.Add ("heat"); |
| | | tempFunction1.value.Add ("fan"); |
| | | tempFunction1.value.Add ("auto"); |
| | | tempFunction1.value.Add ("dry"); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "mode"; |
| | | tempAttribute1.data_type = "integer"; |
| | | tempAttribute1.value = new List<string> (); |
| | | tempAttribute1.value.Add ("cool"); |
| | | tempAttribute1.value.Add ("heat"); |
| | | tempAttribute1.value.Add ("fan"); |
| | | tempAttribute1.value.Add ("auto"); |
| | | tempAttribute1.value.Add ("dry"); |
| | | |
| | | tempFunction1.max = 4; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | tempAttribute1.max = 4; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | |
| | | #region fan |
| | | FunctionSid tempFunction2 = new FunctionSid (); |
| | | tempFunction2.key = "fan"; |
| | | tempFunction2.data_type = "integer"; |
| | | tempFunction2.value = new List<string> (); |
| | | tempFunction2.value.Add ("high"); |
| | | tempFunction2.value.Add ("medium"); |
| | | tempFunction2.value.Add ("low"); |
| | | tempFunction2.value.Add ("auto"); |
| | | tempFunction2.max = 3; |
| | | tempFunction2.min = 0; |
| | | tmp.attributes.Add (tempFunction2); |
| | | Attribute tempAttribute2 = new Attribute (); |
| | | tempAttribute2.key = "fan"; |
| | | tempAttribute2.data_type = "integer"; |
| | | tempAttribute2.value = new List<string> (); |
| | | tempAttribute2.value.Add ("high"); |
| | | tempAttribute2.value.Add ("medium"); |
| | | tempAttribute2.value.Add ("low"); |
| | | tempAttribute2.value.Add ("auto"); |
| | | tempAttribute2.max = 3; |
| | | tempAttribute2.min = 0; |
| | | tmp.attributes.Add (tempAttribute2); |
| | | #endregion |
| | | |
| | | #region temp |
| | | FunctionSid tempFunction3 = new FunctionSid (); |
| | | tempFunction3.key = "set_temp"; |
| | | Attribute tempAttribute3 = new Attribute (); |
| | | tempAttribute3.key = "set_temp"; |
| | | //2020 08 11 hvac 温度控制 1°-> int 0.5°->float |
| | | //if (HVACModuleDeviceTypeList.HDLHVACwithAcControlHighPrecision.Contains(DevOnLineTmp.DeviceType)) |
| | | //{ |
| | | //20201224 设置温度数据类型统一float 伟南后续ai+数据类型网关处理 |
| | | tempFunction3.data_type = "float"; |
| | | tempAttribute3.data_type = "float"; |
| | | //} |
| | | //else |
| | | //{ |
| | | // tempFunction3.data_type = "integer"; |
| | | // tempAttribute3.data_type = "integer"; |
| | | //} |
| | | tempFunction3.value = new List<string> (); |
| | | tempFunction3.max = 30; |
| | | tempFunction3.min = 16; |
| | | tmp.attributes.Add (tempFunction3); |
| | | tempAttribute3.value = new List<string> (); |
| | | tempAttribute3.max = 30; |
| | | tempAttribute3.min = 16; |
| | | tmp.attributes.Add (tempAttribute3); |
| | | #endregion |
| | | |
| | | #region temp_step |
| | | FunctionSid tempFunction5 = new FunctionSid (); |
| | | tempFunction5.key = "set_temp_step"; |
| | | tempFunction5.data_type = "string"; |
| | | tempFunction5.value = new List<string> (); |
| | | tempFunction5.value.Add ("up"); |
| | | tempFunction5.value.Add ("down"); |
| | | tempFunction5.max = 1; |
| | | tempFunction5.min = 0; |
| | | tmp.attributes.Add (tempFunction5); |
| | | Attribute tempAttribute5 = new Attribute (); |
| | | tempAttribute5.key = "set_temp_step"; |
| | | tempAttribute5.data_type = "string"; |
| | | tempAttribute5.value = new List<string> (); |
| | | tempAttribute5.value.Add ("up"); |
| | | tempAttribute5.value.Add ("down"); |
| | | tempAttribute5.max = 1; |
| | | tempAttribute5.min = 0; |
| | | tmp.attributes.Add (tempAttribute5); |
| | | #endregion |
| | | |
| | | #region room_temp |
| | | FunctionSid tempFunction6 = new FunctionSid (); |
| | | tempFunction6.key = "room_temp"; |
| | | tempFunction6.data_type = "float"; |
| | | tempFunction6.value = new List<string> (); |
| | | tempFunction6.max = 50; |
| | | tempFunction6.min = -50; |
| | | tmp.attributes.Add (tempFunction6); |
| | | Attribute tempAttribute6 = new Attribute (); |
| | | tempAttribute6.key = "room_temp"; |
| | | tempAttribute6.data_type = "float"; |
| | | tempAttribute6.value = new List<string> (); |
| | | tempAttribute6.max = 50; |
| | | tempAttribute6.min = -50; |
| | | tmp.attributes.Add (tempAttribute6); |
| | | #endregion |
| | | |
| | | #region swing |
| | | FunctionSid tempFunction4 = new FunctionSid (); |
| | | tempFunction4.key = "swing"; |
| | | tempFunction4.data_type = "string"; |
| | | tempFunction4.value = new List<string> (); |
| | | tempFunction4.value.Add ("up_down"); |
| | | //tempFunction4.value.Add("down"); |
| | | tempFunction4.value.Add ("left_right"); |
| | | //tempFunction4.value.Add("right"); |
| | | tempFunction4.value.Add ("stop"); |
| | | tempFunction4.max = 3; |
| | | tempFunction4.min = 0; |
| | | tmp.attributes.Add (tempFunction4); |
| | | Attribute tempAttribute4 = new Attribute (); |
| | | tempAttribute4.key = "swing"; |
| | | tempAttribute4.data_type = "string"; |
| | | tempAttribute4.value = new List<string> (); |
| | | tempAttribute4.value.Add ("up_down"); |
| | | //tempAttribute4.value.Add("down"); |
| | | tempAttribute4.value.Add ("left_right"); |
| | | //tempAttribute4.value.Add("right"); |
| | | tempAttribute4.value.Add ("stop"); |
| | | tempAttribute4.max = 3; |
| | | tempAttribute4.min = 0; |
| | | tmp.attributes.Add (tempAttribute4); |
| | | #endregion |
| | | |
| | | #region lock |
| | |
| | | #endregion |
| | | } else if (loopCommon.Type == DeviceType.FoolHeat |
| | | || loopCommon.Type == DeviceType.FoolHeatPanel) { |
| | | tmp.spk = "floorHeat.standard"; |
| | | tmp.spk = SPK.FloorHeatStandard; |
| | | //tmp.spk = "floorHeat.standard"; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "on_off"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("on"); |
| | | tempFunction.value.Add ("off"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "on_off"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("on"); |
| | | tempAttribute.value.Add ("off"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | #region mode |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "mode"; |
| | | tempFunction1.data_type = "string"; |
| | | tempFunction1.value = new List<string> (); |
| | | tempFunction1.value.Add ("day"); |
| | | tempFunction1.value.Add ("night"); |
| | | tempFunction1.value.Add ("away"); |
| | | tempFunction1.value.Add ("normal"); |
| | | tempFunction1.value.Add ("timer"); |
| | | tempFunction1.max = 4; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "mode"; |
| | | tempAttribute1.data_type = "string"; |
| | | tempAttribute1.value = new List<string> (); |
| | | tempAttribute1.value.Add ("day"); |
| | | tempAttribute1.value.Add ("night"); |
| | | tempAttribute1.value.Add ("away"); |
| | | tempAttribute1.value.Add ("normal"); |
| | | tempAttribute1.value.Add ("timer"); |
| | | tempAttribute1.max = 4; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | |
| | | #region temp |
| | | FunctionSid tempFunction3 = new FunctionSid (); |
| | | tempFunction3.key = "set_temp"; |
| | | tempFunction3.data_type = "float"; |
| | | tempFunction3.value = new List<string> (); |
| | | //tempFunction3.value.Add("up"); |
| | | //tempFunction3.value.Add("down"); |
| | | //tempFunction3.value.Add("value"); |
| | | tempFunction3.max = 35; |
| | | tempFunction3.min = 0; |
| | | tmp.attributes.Add (tempFunction3); |
| | | Attribute tempAttribute3 = new Attribute (); |
| | | tempAttribute3.key = "set_temp"; |
| | | tempAttribute3.data_type = "float"; |
| | | tempAttribute3.value = new List<string> (); |
| | | //tempAttribute3.value.Add("up"); |
| | | //tempAttribute3.value.Add("down"); |
| | | //tempAttribute3.value.Add("value"); |
| | | tempAttribute3.max = 35; |
| | | tempAttribute3.min = 0; |
| | | tmp.attributes.Add (tempAttribute3); |
| | | #endregion |
| | | |
| | | #region temp |
| | | FunctionSid tempFunction4 = new FunctionSid (); |
| | | tempFunction4.key = "set_temp_step"; |
| | | tempFunction4.data_type = "string"; |
| | | tempFunction4.value = new List<string> (); |
| | | tempFunction4.value.Add ("up"); |
| | | tempFunction4.value.Add ("down"); |
| | | tempFunction4.max = 1; |
| | | tempFunction4.min = 0; |
| | | tmp.attributes.Add (tempFunction4); |
| | | Attribute tempAttribute4 = new Attribute (); |
| | | tempAttribute4.key = "set_temp_step"; |
| | | tempAttribute4.data_type = "string"; |
| | | tempAttribute4.value = new List<string> (); |
| | | tempAttribute4.value.Add ("up"); |
| | | tempAttribute4.value.Add ("down"); |
| | | tempAttribute4.max = 1; |
| | | tempAttribute4.min = 0; |
| | | tmp.attributes.Add (tempAttribute4); |
| | | #endregion |
| | | |
| | | #region room_temp |
| | | FunctionSid tempFunction5 = new FunctionSid (); |
| | | tempFunction5.key = "room_temp"; |
| | | tempFunction5.data_type = "float"; |
| | | tempFunction5.value = new List<string> (); |
| | | tempFunction5.max = 50; |
| | | tempFunction5.min = -50; |
| | | tmp.attributes.Add (tempFunction5); |
| | | Attribute tempAttribute5 = new Attribute (); |
| | | tempAttribute5.key = "room_temp"; |
| | | tempAttribute5.data_type = "float"; |
| | | tempAttribute5.value = new List<string> (); |
| | | tempAttribute5.max = 50; |
| | | tempAttribute5.min = -50; |
| | | tmp.attributes.Add (tempAttribute5); |
| | | #endregion |
| | | |
| | | #region lock |
| | |
| | | } else if (loopCommon.Type == DeviceType.MusicA31 |
| | | || loopCommon.Type == DeviceType.MusicModel |
| | | || loopCommon.Type == DeviceType.MusicPanel) { |
| | | tmp.spk = "music.standard"; |
| | | tmp.spk = SPK.MusicStandard; |
| | | //tmp.spk = "music.standard"; |
| | | // on_off volume song_step audio list_channel mode song_num special_song volume_level |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "on_off"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("play"); |
| | | tempFunction.value.Add ("pause"); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "on_off"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("play"); |
| | | tempAttribute.value.Add ("pause"); |
| | | |
| | | //tempFunction.value.Add("play"); |
| | | //tempFunction.value.Add("stop"); |
| | | //tempFunction.value.Add("pause"); |
| | | //tempAttribute.value.Add("play"); |
| | | //tempAttribute.value.Add("stop"); |
| | | //tempAttribute.value.Add("pause"); |
| | | //play stop pause |
| | | tempFunction.max = 2; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | tempAttribute.max = 2; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | #region volume |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "volume"; |
| | | tempFunction1.data_type = "integer"; |
| | | tempFunction1.value = new List<string> (); |
| | | //tempFunction1.value.Add("percent"); |
| | | tempFunction1.max = 100; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "volume"; |
| | | tempAttribute1.data_type = "integer"; |
| | | tempAttribute1.value = new List<string> (); |
| | | //tempAttribute1.value.Add("percent"); |
| | | tempAttribute1.max = 100; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | |
| | | #region volume_step |
| | | FunctionSid tempFunction9 = new FunctionSid (); |
| | | tempFunction9.key = "volume_step"; |
| | | tempFunction9.data_type = "string"; |
| | | tempFunction9.value = new List<string> (); |
| | | tempFunction9.value.Add ("up"); |
| | | tempFunction9.value.Add ("down"); |
| | | tempFunction9.max = 1; |
| | | tempFunction9.min = 0; |
| | | tmp.attributes.Add (tempFunction9); |
| | | Attribute tempAttribute9 = new Attribute (); |
| | | tempAttribute9.key = "volume_step"; |
| | | tempAttribute9.data_type = "string"; |
| | | tempAttribute9.value = new List<string> (); |
| | | tempAttribute9.value.Add ("up"); |
| | | tempAttribute9.value.Add ("down"); |
| | | tempAttribute9.max = 1; |
| | | tempAttribute9.min = 0; |
| | | tmp.attributes.Add (tempAttribute9); |
| | | #endregion |
| | | |
| | | |
| | | #region volume_level |
| | | FunctionSid tempFunction10 = new FunctionSid (); |
| | | tempFunction10.key = "volume_level"; |
| | | tempFunction10.data_type = "integer"; |
| | | tempFunction10.value = new List<string> (); |
| | | //tempFunction1.value.Add("percent"); |
| | | tempFunction10.max = 10; |
| | | tempFunction10.min = 0; |
| | | tmp.attributes.Add (tempFunction10); |
| | | Attribute tempAttribute10 = new Attribute (); |
| | | tempAttribute10.key = "volume_level"; |
| | | tempAttribute10.data_type = "integer"; |
| | | tempAttribute10.value = new List<string> (); |
| | | //tempAttribute1.value.Add("percent"); |
| | | tempAttribute10.max = 10; |
| | | tempAttribute10.min = 0; |
| | | tmp.attributes.Add (tempAttribute10); |
| | | #endregion |
| | | |
| | | #region volume_level_step |
| | | FunctionSid tempFunction11 = new FunctionSid (); |
| | | tempFunction11.key = "volume_level_step"; |
| | | tempFunction11.data_type = "string"; |
| | | tempFunction11.value = new List<string> (); |
| | | tempFunction11.value.Add ("up"); |
| | | tempFunction11.value.Add ("down"); |
| | | tempFunction11.max = 1; |
| | | tempFunction11.min = 0; |
| | | tmp.attributes.Add (tempFunction11); |
| | | Attribute tempAttribute11 = new Attribute (); |
| | | tempAttribute11.key = "volume_level_step"; |
| | | tempAttribute11.data_type = "string"; |
| | | tempAttribute11.value = new List<string> (); |
| | | tempAttribute11.value.Add ("up"); |
| | | tempAttribute11.value.Add ("down"); |
| | | tempAttribute11.max = 1; |
| | | tempAttribute11.min = 0; |
| | | tmp.attributes.Add (tempAttribute11); |
| | | #endregion |
| | | |
| | | #region treble |
| | | FunctionSid tempFunction14 = new FunctionSid (); |
| | | tempFunction14.key = "treble"; |
| | | tempFunction14.data_type = "integer"; |
| | | tempFunction14.max = 10; |
| | | tempFunction14.min = -10; |
| | | tmp.attributes.Add (tempFunction14); |
| | | Attribute tempAttribute14 = new Attribute (); |
| | | tempAttribute14.key = "treble"; |
| | | tempAttribute14.data_type = "integer"; |
| | | tempAttribute14.max = 10; |
| | | tempAttribute14.min = -10; |
| | | tmp.attributes.Add (tempAttribute14); |
| | | #endregion |
| | | |
| | | #region treble_step |
| | | FunctionSid tempFunction12 = new FunctionSid (); |
| | | tempFunction12.key = "treble_step"; |
| | | tempFunction12.data_type = "string"; |
| | | tempFunction12.value = new List<string> (); |
| | | tempFunction12.value.Add ("up"); |
| | | tempFunction12.value.Add ("down"); |
| | | tempFunction12.max = 1; |
| | | tempFunction12.min = 0; |
| | | tmp.attributes.Add (tempFunction12); |
| | | Attribute tempAttribute12 = new Attribute (); |
| | | tempAttribute12.key = "treble_step"; |
| | | tempAttribute12.data_type = "string"; |
| | | tempAttribute12.value = new List<string> (); |
| | | tempAttribute12.value.Add ("up"); |
| | | tempAttribute12.value.Add ("down"); |
| | | tempAttribute12.max = 1; |
| | | tempAttribute12.min = 0; |
| | | tmp.attributes.Add (tempAttribute12); |
| | | #endregion |
| | | |
| | | |
| | | #region bass |
| | | FunctionSid tempFunction15 = new FunctionSid (); |
| | | tempFunction15.key = "bass"; |
| | | tempFunction15.data_type = "integer"; |
| | | tempFunction15.max = 10; |
| | | tempFunction15.min = -10; |
| | | tmp.attributes.Add (tempFunction15); |
| | | Attribute tempAttribute15 = new Attribute (); |
| | | tempAttribute15.key = "bass"; |
| | | tempAttribute15.data_type = "integer"; |
| | | tempAttribute15.max = 10; |
| | | tempAttribute15.min = -10; |
| | | tmp.attributes.Add (tempAttribute15); |
| | | #endregion |
| | | |
| | | #region bass_step |
| | | FunctionSid tempFunction13 = new FunctionSid (); |
| | | tempFunction13.key = "bass_step"; |
| | | tempFunction13.data_type = "string"; |
| | | tempFunction13.value = new List<string> (); |
| | | tempFunction13.value.Add ("up"); |
| | | tempFunction13.value.Add ("down"); |
| | | tempFunction13.max = 1; |
| | | tempFunction13.min = 0; |
| | | tmp.attributes.Add (tempFunction13); |
| | | Attribute tempAttribute13 = new Attribute (); |
| | | tempAttribute13.key = "bass_step"; |
| | | tempAttribute13.data_type = "string"; |
| | | tempAttribute13.value = new List<string> (); |
| | | tempAttribute13.value.Add ("up"); |
| | | tempAttribute13.value.Add ("down"); |
| | | tempAttribute13.max = 1; |
| | | tempAttribute13.min = 0; |
| | | tmp.attributes.Add (tempAttribute13); |
| | | #endregion |
| | | |
| | | #region mode |
| | | FunctionSid tempFunction5 = new FunctionSid (); |
| | | tempFunction5.key = "mode"; |
| | | tempFunction5.data_type = "string"; |
| | | tempFunction5.value = new List<string> (); |
| | | Attribute tempAttribute5 = new Attribute (); |
| | | tempAttribute5.key = "mode"; |
| | | tempAttribute5.data_type = "string"; |
| | | tempAttribute5.value = new List<string> (); |
| | | //singel/single_circle/order/all |
| | | //single/single_cycle/order/list_cycle/random |
| | | tempFunction5.value.Add ("single"); |
| | | tempFunction5.value.Add ("single_cycle"); |
| | | tempFunction5.value.Add ("order"); |
| | | tempFunction5.value.Add ("list_cycle"); |
| | | tempFunction5.value.Add ("random"); |
| | | tempFunction5.max = 3; |
| | | tempFunction5.min = 0; |
| | | tmp.attributes.Add (tempFunction5); |
| | | tempAttribute5.value.Add ("single"); |
| | | tempAttribute5.value.Add ("single_cycle"); |
| | | tempAttribute5.value.Add ("order"); |
| | | tempAttribute5.value.Add ("list_cycle"); |
| | | tempAttribute5.value.Add ("random"); |
| | | tempAttribute5.max = 3; |
| | | tempAttribute5.min = 0; |
| | | tmp.attributes.Add (tempAttribute5); |
| | | #endregion |
| | | |
| | | #region source |
| | | //1 = SD, 2 = External Input, 3 = FTP, 4 = Radio |
| | | //sdcard/external_input/ftp/radio |
| | | FunctionSid tempFunction3 = new FunctionSid (); |
| | | tempFunction3.key = "source"; |
| | | tempFunction3.data_type = "string"; |
| | | tempFunction3.value = new List<string> (); |
| | | tempFunction3.value.Add ("sdcard"); |
| | | tempFunction3.value.Add ("audio_in"); |
| | | tempFunction3.value.Add ("ftp"); |
| | | tempFunction3.value.Add ("radio"); |
| | | tempFunction3.value.Add ("bluetooth"); |
| | | tempFunction3.max = 3; |
| | | tempFunction3.min = 0; |
| | | tmp.attributes.Add (tempFunction3); |
| | | Attribute tempAttribute3 = new Attribute (); |
| | | tempAttribute3.key = "source"; |
| | | tempAttribute3.data_type = "string"; |
| | | tempAttribute3.value = new List<string> (); |
| | | tempAttribute3.value.Add ("sdcard"); |
| | | tempAttribute3.value.Add ("audio_in"); |
| | | tempAttribute3.value.Add ("ftp"); |
| | | tempAttribute3.value.Add ("radio"); |
| | | tempAttribute3.value.Add ("bluetooth"); |
| | | tempAttribute3.max = 3; |
| | | tempAttribute3.min = 0; |
| | | tmp.attributes.Add (tempAttribute3); |
| | | #endregion |
| | | |
| | | #region song_step |
| | | FunctionSid tempFunction2 = new FunctionSid (); |
| | | tempFunction2.key = "song_step"; |
| | | tempFunction2.data_type = "string"; |
| | | tempFunction2.value = new List<string> (); |
| | | tempFunction2.value.Add ("up"); |
| | | tempFunction2.value.Add ("down"); |
| | | tempFunction2.max = 1; |
| | | tempFunction2.min = 0; |
| | | tmp.attributes.Add (tempFunction2); |
| | | Attribute tempAttribute2 = new Attribute (); |
| | | tempAttribute2.key = "song_step"; |
| | | tempAttribute2.data_type = "string"; |
| | | tempAttribute2.value = new List<string> (); |
| | | tempAttribute2.value.Add ("up"); |
| | | tempAttribute2.value.Add ("down"); |
| | | tempAttribute2.max = 1; |
| | | tempAttribute2.min = 0; |
| | | tmp.attributes.Add (tempAttribute2); |
| | | #endregion |
| | | |
| | | #region bass |
| | | FunctionSid tempFunction16 = new FunctionSid (); |
| | | tempFunction16.key = "playlist_name"; |
| | | tempFunction16.data_type = "string"; |
| | | tmp.attributes.Add (tempFunction16); |
| | | Attribute tempAttribute16 = new Attribute (); |
| | | tempAttribute16.key = "playlist_name"; |
| | | tempAttribute16.data_type = "string"; |
| | | tmp.attributes.Add (tempAttribute16); |
| | | #endregion |
| | | |
| | | #region bass |
| | | FunctionSid tempFunction17 = new FunctionSid (); |
| | | tempFunction17.key = "song_name"; |
| | | tempFunction17.data_type = "string"; |
| | | tmp.attributes.Add (tempFunction17); |
| | | Attribute tempAttribute17 = new Attribute (); |
| | | tempAttribute17.key = "song_name"; |
| | | tempAttribute17.data_type = "string"; |
| | | tmp.attributes.Add (tempAttribute17); |
| | | #endregion |
| | | |
| | | #region bass |
| | | FunctionSid tempFunction19 = new FunctionSid (); |
| | | tempFunction19.key = "song_time"; |
| | | tempFunction19.data_type = "string"; |
| | | tmp.attributes.Add (tempFunction19); |
| | | Attribute tempAttribute19 = new Attribute (); |
| | | tempAttribute19.key = "song_time"; |
| | | tempAttribute19.data_type = "string"; |
| | | tmp.attributes.Add (tempAttribute19); |
| | | #endregion |
| | | |
| | | #region bass |
| | | FunctionSid tempFunction20 = new FunctionSid (); |
| | | tempFunction20.key = "playing_time"; |
| | | tempFunction20.data_type = "string"; |
| | | tmp.attributes.Add (tempFunction20); |
| | | Attribute tempAttribute20 = new Attribute (); |
| | | tempAttribute20.key = "playing_time"; |
| | | tempAttribute20.data_type = "string"; |
| | | tmp.attributes.Add (tempAttribute20); |
| | | #endregion |
| | | } else if (loopCommon.BigClass == 5) { |
| | | //传感器 |
| | | if (loopCommon.Type == DeviceType.SensorMobileDetection) { |
| | | tmp.spk = "sensor.pir"; |
| | | tmp.spk = SPK.SensorPir; |
| | | //tmp.spk = "sensor.pir"; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "enable"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("true"); |
| | | tempFunction.value.Add ("false"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "enable"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("true"); |
| | | tempAttribute.value.Add ("false"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | #region status |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "status"; |
| | | tempFunction1.data_type = "string"; |
| | | tempFunction1.value = new List<string> (); |
| | | tempFunction1.value.Add ("true"); |
| | | tempFunction1.value.Add ("false"); |
| | | tempFunction1.max = 1; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "status"; |
| | | tempAttribute1.data_type = "string"; |
| | | tempAttribute1.value = new List<string> (); |
| | | tempAttribute1.value.Add ("true"); |
| | | tempAttribute1.value.Add ("false"); |
| | | tempAttribute1.max = 1; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | |
| | | #region sensitivity |
| | | FunctionSid tempFunction2 = new FunctionSid (); |
| | | tempFunction2.key = "sensitivity"; |
| | | tempFunction2.data_type = "integer"; |
| | | tempFunction2.max = 100; |
| | | tempFunction2.min = 0; |
| | | tmp.attributes.Add (tempFunction2); |
| | | Attribute tempAttribute2 = new Attribute (); |
| | | tempAttribute2.key = "sensitivity"; |
| | | tempAttribute2.data_type = "integer"; |
| | | tempAttribute2.max = 100; |
| | | tempAttribute2.min = 0; |
| | | tmp.attributes.Add (tempAttribute2); |
| | | #endregion |
| | | }else if (loopCommon.Type == DeviceType.SensorTemperature) { |
| | | tmp.spk = "sensor.temperature"; |
| | | tmp.spk = SPK.SensorTemperature; |
| | | //tmp.spk = "sensor.temperature"; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "enable"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("true"); |
| | | tempFunction.value.Add ("false"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "enable"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("true"); |
| | | tempAttribute.value.Add ("false"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | #region temp |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "value"; //2020 12 22 |
| | | tempFunction1.data_type = "float"; |
| | | tempFunction1.max = 50; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "value"; //2020 12 22 |
| | | tempAttribute1.data_type = "float"; |
| | | tempAttribute1.max = 50; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | |
| | | #region type |
| | | FunctionSid tempFunction2 = new FunctionSid (); |
| | | tempFunction2.key = "type"; |
| | | tempFunction2.data_type = "string"; |
| | | tempFunction2.value = new List<string> (); |
| | | tempFunction2.value.Add ("C"); |
| | | tempFunction2.value.Add ("F"); |
| | | tempFunction2.max = 1; |
| | | tempFunction2.min = 0; |
| | | tmp.attributes.Add (tempFunction2); |
| | | Attribute tempAttribute2 = new Attribute (); |
| | | tempAttribute2.key = "type"; |
| | | tempAttribute2.data_type = "string"; |
| | | tempAttribute2.value = new List<string> (); |
| | | tempAttribute2.value.Add ("C"); |
| | | tempAttribute2.value.Add ("F"); |
| | | tempAttribute2.max = 1; |
| | | tempAttribute2.min = 0; |
| | | tmp.attributes.Add (tempAttribute2); |
| | | #endregion |
| | | |
| | | //#region precision |
| | | //Function tempFunction3 = new GateWay.Function(); |
| | | //tempFunction3.key = "precision"; |
| | | //tempFunction3.data_type = "string"; |
| | | //tempFunction3.value = new List<string>(); |
| | | //tempFunction3.value.Add("0.01"); |
| | | //tempFunction3.value.Add("0.1"); |
| | | //tempFunction3.value.Add("100"); |
| | | //tempFunction3.max = 2; |
| | | //tempFunction3.min = 0; |
| | | //tmp.attributes.Add(tempFunction3); |
| | | //Function tempAttribute3 = new GateWay.Function(); |
| | | //tempAttribute3.key = "precision"; |
| | | //tempAttribute3.data_type = "string"; |
| | | //tempAttribute3.value = new List<string>(); |
| | | //tempAttribute3.value.Add("0.01"); |
| | | //tempAttribute3.value.Add("0.1"); |
| | | //tempAttribute3.value.Add("100"); |
| | | //tempAttribute3.max = 2; |
| | | //tempAttribute3.min = 0; |
| | | //tmp.attributes.Add(tempAttribute3); |
| | | //#endregion |
| | | }else if (loopCommon.Type == DeviceType.SensorIllumination) { |
| | | tmp.spk = "sensor.light"; |
| | | //tmp.spk = "sensor.light"; |
| | | tmp.spk = SPK.SensorLight; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "enable"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("true"); |
| | | tempFunction.value.Add ("false"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "enable"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("true"); |
| | | tempAttribute.value.Add ("false"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | #region lux |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "value"; //2020 12 22 |
| | | tempFunction1.data_type = "integer"; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "value"; //2020 12 22 |
| | | tempAttribute1.data_type = "integer"; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | |
| | | #region error_value |
| | | FunctionSid tempFunction2 = new FunctionSid (); |
| | | tempFunction2.key = "error_value"; |
| | | tempFunction2.data_type = "integer"; |
| | | tmp.attributes.Add (tempFunction2); |
| | | Attribute tempAttribute2 = new Attribute (); |
| | | tempAttribute2.key = "error_value"; |
| | | tempAttribute2.data_type = "integer"; |
| | | tmp.attributes.Add (tempAttribute2); |
| | | #endregion |
| | | |
| | | #region precision |
| | | FunctionSid tempFunction3 = new FunctionSid (); |
| | | tempFunction3.key = "precision"; |
| | | tempFunction3.data_type = "string"; |
| | | tempFunction3.value = new List<string> (); |
| | | tempFunction3.value.Add ("0.01"); |
| | | tempFunction3.value.Add ("0.1"); |
| | | tempFunction3.value.Add ("100"); |
| | | tempFunction3.max = 2; |
| | | tempFunction3.min = 0; |
| | | tmp.attributes.Add (tempFunction3); |
| | | Attribute tempAttribute3 = new Attribute (); |
| | | tempAttribute3.key = "precision"; |
| | | tempAttribute3.data_type = "string"; |
| | | tempAttribute3.value = new List<string> (); |
| | | tempAttribute3.value.Add ("0.01"); |
| | | tempAttribute3.value.Add ("0.1"); |
| | | tempAttribute3.value.Add ("100"); |
| | | tempAttribute3.max = 2; |
| | | tempAttribute3.min = 0; |
| | | tmp.attributes.Add (tempAttribute3); |
| | | #endregion |
| | | } else if (loopCommon.Type == DeviceType.SensorPM25) { |
| | | tmp.spk = "sensor.pm25"; |
| | | //tmp.spk = "sensor.pm25"; |
| | | tmp.spk = SPK.SensorPm25; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "enable"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("true"); |
| | | tempFunction.value.Add ("false"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "enable"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("true"); |
| | | tempAttribute.value.Add ("false"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | #region value |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "value"; |
| | | tempFunction1.data_type = "integer"; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "value"; |
| | | tempAttribute1.data_type = "integer"; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | |
| | | #region error_value |
| | | FunctionSid tempFunction2 = new FunctionSid (); |
| | | tempFunction2.key = "error_value"; |
| | | tempFunction2.data_type = "integer"; |
| | | tmp.attributes.Add (tempFunction2); |
| | | Attribute tempAttribute2 = new Attribute (); |
| | | tempAttribute2.key = "error_value"; |
| | | tempAttribute2.data_type = "integer"; |
| | | tmp.attributes.Add (tempAttribute2); |
| | | #endregion |
| | | |
| | | #region precision |
| | | FunctionSid tempFunction3 = new FunctionSid (); |
| | | tempFunction3.key = "precision"; |
| | | tempFunction3.data_type = "string"; |
| | | tempFunction3.value = new List<string> (); |
| | | tempFunction3.value.Add ("0.01"); |
| | | tempFunction3.value.Add ("0.1"); |
| | | tempFunction3.value.Add ("100"); |
| | | tempFunction3.max = 2; |
| | | tempFunction3.min = 0; |
| | | tmp.attributes.Add (tempFunction3); |
| | | Attribute tempAttribute3 = new Attribute (); |
| | | tempAttribute3.key = "precision"; |
| | | tempAttribute3.data_type = "string"; |
| | | tempAttribute3.value = new List<string> (); |
| | | tempAttribute3.value.Add ("0.01"); |
| | | tempAttribute3.value.Add ("0.1"); |
| | | tempAttribute3.value.Add ("100"); |
| | | tempAttribute3.max = 2; |
| | | tempAttribute3.min = 0; |
| | | tmp.attributes.Add (tempAttribute3); |
| | | #endregion |
| | | }else if (loopCommon.Type == DeviceType.SensorHumidity) { |
| | | tmp.spk = "sensor.humidity"; |
| | | //tmp.spk = "sensor.humidity"; |
| | | tmp.spk = SPK.SensorHumidity; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "enable"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("true"); |
| | | tempFunction.value.Add ("false"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "enable"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("true"); |
| | | tempAttribute.value.Add ("false"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | #region value |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "value"; |
| | | tempFunction1.data_type = "float"; |
| | | tempFunction1.max = 10000; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "value"; |
| | | tempAttribute1.data_type = "float"; |
| | | tempAttribute1.max = 10000; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | }else if (loopCommon.Type == DeviceType.SensorTVOC) { |
| | | tmp.spk = "sensor.tvoc"; |
| | | //tmp.spk = "sensor.tvoc"; |
| | | tmp.spk = SPK.SensorTVOC; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "enable"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("true"); |
| | | tempFunction.value.Add ("false"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "enable"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("true"); |
| | | tempAttribute.value.Add ("false"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | #region value |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "value"; |
| | | tempFunction1.data_type = "integer"; |
| | | tempFunction1.max = 10000; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "value"; |
| | | tempAttribute1.data_type = "integer"; |
| | | tempAttribute1.max = 10000; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | }else if (loopCommon.Type == DeviceType.SensorCO2) { |
| | | tmp.spk = "sensor.co2"; |
| | | //tmp.spk = "sensor.co2"; |
| | | tmp.spk = SPK.SensorCO2; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "enable"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("true"); |
| | | tempFunction.value.Add ("false"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "enable"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("true"); |
| | | tempAttribute.value.Add ("false"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | #region value |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "value"; |
| | | tempFunction1.data_type = "integer"; |
| | | tempFunction1.max = 10000; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "value"; |
| | | tempAttribute1.data_type = "integer"; |
| | | tempAttribute1.max = 10000; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | }else if (loopCommon.Type == DeviceType.Sensor) { |
| | | tmp.spk = "dryContact.standard"; |
| | | //tmp.spk = "dryContact.standard"; |
| | | tmp.spk = SPK.DryContact; |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "enable"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("true"); |
| | | tempFunction.value.Add ("false"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "enable"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("true"); |
| | | tempAttribute.value.Add ("false"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | |
| | | #region status |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "status"; |
| | | tempFunction1.data_type = "string"; |
| | | tempFunction1.value = new List<string> (); |
| | | tempFunction1.value.Add ("on"); |
| | | tempFunction1.value.Add ("off"); |
| | | tempFunction1.max = 1; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "status"; |
| | | tempAttribute1.data_type = "string"; |
| | | tempAttribute1.value = new List<string> (); |
| | | tempAttribute1.value.Add ("on"); |
| | | tempAttribute1.value.Add ("off"); |
| | | tempAttribute1.max = 1; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | } else { |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "enable"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("true"); |
| | | tempFunction.value.Add ("false"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "enable"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("true"); |
| | | tempAttribute.value.Add ("false"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | #region value |
| | | FunctionSid tempFunction1 = new FunctionSid (); |
| | | tempFunction1.key = "value"; |
| | | tempFunction1.data_type = "integer"; |
| | | tempFunction1.max = 10000; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | Attribute tempAttribute1 = new Attribute (); |
| | | tempAttribute1.key = "value"; |
| | | tempAttribute1.data_type = "integer"; |
| | | tempAttribute1.max = 10000; |
| | | tempAttribute1.min = 0; |
| | | tmp.attributes.Add (tempAttribute1); |
| | | #endregion |
| | | } |
| | | |
| | |
| | | |
| | | } else { |
| | | #region on_off |
| | | FunctionSid tempFunction = new FunctionSid (); |
| | | tempFunction.key = "on_off"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("on"); |
| | | tempFunction.value.Add ("off"); |
| | | tempFunction.max = 1; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | Attribute tempAttribute = new Attribute (); |
| | | tempAttribute.key = "on_off"; |
| | | tempAttribute.data_type = "string"; |
| | | tempAttribute.value = new List<string> (); |
| | | tempAttribute.value.Add ("on"); |
| | | tempAttribute.value.Add ("off"); |
| | | tempAttribute.max = 1; |
| | | tempAttribute.min = 0; |
| | | tmp.attributes.Add (tempAttribute); |
| | | #endregion |
| | | } |
| | | |
| | | } catch { } |
| | | return tmp; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | #region 获取属性 |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | //#region 判断类型 |
| | | ///// <summary> |
| | |
| | | //#endregion |
| | | |
| | | |
| | | #region 生成4位byte 时间戳 |
| | | private long LastTime = 0; |
| | | /// <summary> |
| | | /// DateTime时间格式转换为13位带毫秒的Unix时间戳 |
| | | /// </summary> |
| | | /// <param name="time"> DateTime时间格式</param> |
| | | /// <returns>Unix时间戳格式</returns> |
| | | public long ConvertDateTimeLong () |
| | | { |
| | | System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime (new System.DateTime (2020, 1, 1)); |
| | | long l = (long)(Math.Round ((DateTime.Now - startTime).TotalSeconds, 1) * 10); |
| | | if (l <= LastTime) l = LastTime + 1; |
| | | LastTime = l; |
| | | return l; |
| | | } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="m"></param> |
| | | /// <param name="strTmp"></param> |
| | | /// <returns></returns> |
| | | public bool ConvertIntToByteArray (long m, ref string strTmp) |
| | | { |
| | | strTmp = "00000000"; |
| | | byte [] arry = new byte [4]; |
| | | arry [0] = (byte)(m & 0xFF); |
| | | arry [1] = (byte)((m & 0xFF00) >> 8); |
| | | arry [2] = (byte)((m & 0xFF0000) >> 16); |
| | | arry [3] = (byte)((m & 0xFF000000) >> 24); |
| | | strTmp = arry [0].ToString ("X2") + arry [1].ToString ("X2") + arry [2].ToString ("X2") + arry [3].ToString ("X2"); |
| | | return true; |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | } |
| | | |
| | | #region ■ 设备列表相关___________________________ |
| | | [Serializable] |
| | | public class BaseCloudFeedback |
| | | { |
| | |
| | | |
| | | public string oid { get; set; } //设备模块地址 |
| | | public string omodel { get; set; } //型号 |
| | | public List<FunctionSid> attributes { get; set; } //属性列表 |
| | | public List<Attribute> attributes { get; set; } //属性列表 |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 属性 |
| | | /// </summary> |
| | | [Serializable] |
| | | public class FunctionSid |
| | | public class Attribute |
| | | { |
| | | //public string name { get; set; } |
| | | public string key { get; set; } |
| | |
| | | /// 固定的序号 |
| | | /// </summary> |
| | | public int fixedSerialNumber = int.MaxValue; |
| | | |
| | | /// <summary> |
| | | /// 大类小类 |
| | | /// </summary> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public string DeviceTypeString { |
| | | get { |
| | | if (!string.IsNullOrEmpty (sid) && sid.Length >= 28) { |
| | | return sid.Substring (sid.Length - 4, 4); |
| | | } else { |
| | | return "0000"; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | /// value |
| | | /// </summary> |
| | | public const string Value = "value"; |
| | | |
| | | /// <summary> |
| | | /// 风扇档位 |
| | | /// </summary> |
| | | public const string FanSpeedPercent = "fan_speed_percent"; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// 家电、风扇 |
| | | /// </summary> |
| | | public const string ElectricFan = "electrical.fan"; |
| | | /// <summary> |
| | | /// 其它、通用开关 |
| | | /// </summary> |
| | | public const string UniversalDevice = "other.common"; |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | // public Sids devices { get; set; } //设备列表 |
| | | //} |
| | | |
| | | } |
| | | |
| | | |
| | | //sid组成部分: |
| | | //sid |
| | | //来源 厂商代码 通讯方式 产品时间戳 产品类别 物模型类 通道号 大小类别 |
| | | //1byte 1byte 1byte 4byte 1byte 2byte 2byte 2byte |
| | | //oid组成部分: |
| | | //来源 厂商代码 通讯方式 产品时间戳 产品类别 |
| | | //1byte 1 byte 1 byte 4 byte 1byte |
| | | //其中各部分代码列表: |
| | | //来源 1byte 编号 描述 |
| | | // 00 默认原生态系统数据 |
| | | // 01 网关或者其他A设备 |
| | | // 02 调试软件 |
| | | // 03 APP应用程序 |
| | | // 04 第三方网关或者平台 |
| | | |
| | | //厂商代码 1byte 编号 描述 |
| | | // 01 HDL |
| | | // 02 |
| | | //sid组成部分: |
| | | //sid |
| | | //来源 厂商代码 通讯方式 产品时间戳 产品类别 物模型类 通道号 大小类别 |
| | | //1byte 1byte 1byte 4byte 1byte 2byte 2byte 2byte |
| | | //oid组成部分: |
| | | //来源 厂商代码 通讯方式 产品时间戳 产品类别 |
| | | //1byte 1 byte 1 byte 4 byte 1byte |
| | | //其中各部分代码列表: |
| | | //来源 1byte 编号 描述 |
| | | // 00 默认原生态系统数据 |
| | | // 01 网关或者其他A设备 |
| | | // 02 调试软件 |
| | | // 03 APP应用程序 |
| | | // 04 第三方网关或者平台 |
| | | |
| | | //通讯方式 1byte 编号 描述 |
| | | // 01 HDL Bus |
| | | // 02 Zigbee |
| | | // 03 KNX |
| | | // 04 Z-Wave |
| | | //厂商代码 1byte 编号 描述 |
| | | // 01 HDL |
| | | // 02 |
| | | |
| | | //产品时间戳 4bytes 以2020年1月1日算出的时间戳0.1s为单位 |
| | | //通讯方式 1byte 编号 描述 |
| | | // 01 HDL Bus |
| | | // 02 Zigbee |
| | | // 03 KNX |
| | | // 04 Z-Wave |
| | | |
| | | //产品类别 1byte 编号 描述 |
| | | // 01 调光器 |
| | | // 02 继电器 |
| | | // 03 干接点模块 |
| | | // 04 传感器 |
| | | // 05 面板 |
| | | // 06 RCU |
| | | // 07 网关 |
| | | // 08 红外发射 |
| | | // 09 Android屏 |
| | | // 10 场景 |
| | | // 11 音乐播放器 |
| | | // 12 232/485转换器 |
| | | // 21 自动化 |
| | | // 22 安防防区 |
| | | // 14 窗帘模块 |
| | | // 15 HVAC |
| | | // 16 地热模块 |
| | | //产品时间戳 4bytes 以2020年1月1日算出的时间戳0.1s为单位 |
| | | |
| | | //物模型类型 2bytes 编号 描述 |
| | | // 01 开关类 01 开关 |
| | | // 02 插座 |
| | | // 03 |
| | | // 02 照明 01 开关 |
| | | // 02 调光 |
| | | // 03 色温(CCT) |
| | | // 04 RGB |
| | | // 03 遮阳 01 窗帘控制器 |
| | | // 02 百叶窗 |
| | | // 03 开合帘 |
| | | // 04 卷帘 |
| | | // 05 推窗器 |
| | | // 06 投影幕 |
| | | // 04 面板 01 按键面板 |
| | | // 05 传感器 01 移动探测 |
| | | // 02 温度传感器 |
| | | // 03 湿度传感器 |
| | | // 04 照度传感器 |
| | | // 05 TVOC |
| | | // 06 PM2.5 |
| | | // 07 CO2 |
| | | // 08 毫米波传感器 |
| | | // 09 |
| | | // 10 |
| | | // 11 烟雾传感器 |
| | | // 25 干接点 |
| | | // 07 恒温器 01 空调 |
| | | // 02 风扇 |
| | | // 03 毛细空调 |
| | | // 08 地热 01 地热模块 |
| | | // 09 背景音乐 01 音乐播放器 |
| | | // 02 Sonos |
| | | // 10 场景 01 场景 |
| | | // 02 电影场景 |
| | | // 19 新风 01 新风 |
| | | //产品类别 1byte 编号 描述 |
| | | // 01 调光器 |
| | | // 02 继电器 |
| | | // 03 干接点模块 |
| | | // 04 传感器 |
| | | // 05 面板 |
| | | // 06 RCU |
| | | // 07 网关 |
| | | // 08 红外发射 |
| | | // 09 Android屏 |
| | | // 10 场景 |
| | | // 11 音乐播放器 |
| | | // 12 232/485转换器 |
| | | // 21 自动化 |
| | | // 22 安防防区 |
| | | // 14 窗帘模块 |
| | | // 15 HVAC |
| | | // 16 地热模块 |
| | | |
| | | //13 能源 01 电表 |
| | | // 02 水表 |
| | | // 03 燃气 |
| | | // 16 电器 01 风扇 |
| | | // 02 TV |
| | | // 20 安防 01 安防 |
| | | // 21 自动化 01 自动化 |
| | | //大类别 1bytes (预留) |
| | | //小类别 1byte (预留) |
| | | //物模型类型 2bytes 编号 描述 |
| | | // 01 开关类 01 开关 |
| | | // 02 插座 |
| | | // 03 |
| | | // 02 照明 01 开关 |
| | | // 02 调光 |
| | | // 03 色温(CCT) |
| | | // 04 RGB |
| | | // 03 遮阳 01 窗帘控制器 |
| | | // 02 百叶窗 |
| | | // 03 开合帘 |
| | | // 04 卷帘 |
| | | // 05 推窗器 |
| | | // 06 投影幕 |
| | | // 04 面板 01 按键面板 |
| | | // 05 传感器 01 移动探测 |
| | | // 02 温度传感器 |
| | | // 03 湿度传感器 |
| | | // 04 照度传感器 |
| | | // 05 TVOC |
| | | // 06 PM2.5 |
| | | // 07 CO2 |
| | | // 08 毫米波传感器 |
| | | // 09 |
| | | // 10 |
| | | // 11 烟雾传感器 |
| | | // 25 干接点 |
| | | // 07 恒温器 01 空调 |
| | | // 02 风扇 |
| | | // 03 毛细空调 |
| | | // 08 地热 01 地热模块 |
| | | // 09 背景音乐 01 音乐播放器 |
| | | // 02 Sonos |
| | | // 10 场景 01 场景 |
| | | // 02 电影场景 |
| | | // 19 新风 01 新风 |
| | | |
| | | //13 能源 01 电表 |
| | | // 02 水表 |
| | | // 03 燃气 |
| | | // 16 电器 01 风扇 |
| | | // 02 TV |
| | | // 20 安防 01 安防 |
| | | // 21 自动化 01 自动化 |
| | | //大类别 1bytes (预留) |
| | | //小类别 1byte (预留) |
| | | |
| | | #endregion |
| | | |
| | | |
| | | |
| | | } |