| | |
| | | //using System; |
| | | //using System.Collections.Generic; |
| | | //using Shared; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Shared; |
| | | |
| | | //namespace SmartHome |
| | | //{ |
| | | // /// <summary> |
| | | // /// HDLLink协议 工具类 |
| | | // /// </summary> |
| | | // public class HDLLinkUtlis |
| | | // { |
| | | // #region ■ Current___________________________ |
| | | // /// <summary> |
| | | // /// 通用方法 |
| | | // /// </summary> |
| | | // private static HDLLinkUtlis m_Current = null; |
| | | // /// <summary> |
| | | // /// 通用方法 |
| | | // /// </summary> |
| | | // public static HDLLinkUtlis Current { |
| | | // get { |
| | | // if (m_Current == null) { |
| | | // m_Current = new HDLLinkUtlis (); |
| | | // } |
| | | // return m_Current; |
| | | // } |
| | | // } |
| | | // #endregion |
| | | namespace SmartHome |
| | | { |
| | | /// <summary> |
| | | /// HDLLink协议 工具类 |
| | | /// </summary> |
| | | public class HDLLinkUtlis |
| | | { |
| | | #region ■ Current___________________________ |
| | | /// <summary> |
| | | /// 通用方法 |
| | | /// </summary> |
| | | private static HDLLinkUtlis m_Current = null; |
| | | /// <summary> |
| | | /// 通用方法 |
| | | /// </summary> |
| | | public static HDLLinkUtlis Current { |
| | | get { |
| | | if (m_Current == null) { |
| | | m_Current = new HDLLinkUtlis (); |
| | | } |
| | | return m_Current; |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | |
| | | // /// <summary> |
| | | // /// 将在线设备转换成sid + 属性列表 |
| | | // /// </summary> |
| | | // /// <param name="onlineDevices"></param> |
| | | // /// <returns></returns> |
| | | // public List<Sid> ConvertToSidListToIotCloud (string sOid, Common onlineDevice) |
| | | // { |
| | | // List<Sid> tmpResult = new List<Sid> (); |
| | | // try { |
| | | // if (onlineDevice.bytSimpleParam == null || onlineDevice.bytSimpleParam.Length == 0) { |
| | | // string sSimpleList = DeviceTypeList.GetSimpleFunctionListFromPublicModeGroup (onlineDevice.DeviceType); |
| | | // #region |
| | | // string [] ArayStr = sSimpleList.Trim ().Split (new char [] { ' ' }); |
| | | // List<byte> ArayTmp = new List<byte> (); |
| | | // for (int i = 0; i < ArayStr.Length; i++) { |
| | | // if (ArayStr [i] != null && ArayStr [i] != "" && ArayStr [i].Trim () != "") { |
| | | // ArayTmp.Add (Convert.ToByte (ArayStr [i], 16)); |
| | | // } |
| | | // } |
| | | // onlineDevice.bytSimpleParam = ArayTmp.ToArray (); |
| | | // #endregion |
| | | // } |
| | | // if (onlineDevice.bytSimpleParam != null && onlineDevice.bytSimpleParam.Length > 0) { |
| | | // for (int intI = 0; intI < onlineDevice.bytSimpleParam.Length / 3; intI++) { |
| | | // byte BigType = onlineDevice.bytSimpleParam [0 + intI * 3]; |
| | | // byte SmallType = onlineDevice.bytSimpleParam [1 + intI * 3]; |
| | | // int Count = onlineDevice.bytSimpleParam [2 + intI * 3]; |
| | | // if (Count > 0) { |
| | | // for (int j = 1; j <= Count; j++) { |
| | | // Sid tmpSid = new Sid (); |
| | | // tmpSid.sid = HDLSysPF.FormingNewSid (onlineDevice.Type, sOid, j, false, BigType, SmallType); |
| | | // tmpSid.oid = sOid; |
| | | /// <summary> |
| | | /// 将在线设备转换成sid + 属性列表 |
| | | /// </summary> |
| | | /// <param name="moduleCommon">模块设备</param> |
| | | /// <returns></returns> |
| | | public List<Sid> ConvertToSidListToIotCloud (string sOid, Common moduleCommon) |
| | | { |
| | | List<Sid> tmpResult = new List<Sid> (); |
| | | try { |
| | | if (moduleCommon != null && moduleCommon.LoopCount > 0) { |
| | | for (int intI = 0; intI < moduleCommon.LoopCount; intI++) { |
| | | //byte BigType = moduleCommon.bytSimpleParam [0 + intI * 3]; |
| | | //byte SmallType = moduleCommon.bytSimpleParam [1 + intI * 3]; |
| | | int Count = moduleCommon.LoopCount; |
| | | if (Count > 0) { |
| | | for (int j = 1; j <= Count; j++) { |
| | | //模块里面的单个回路 |
| | | Common deviceCommon = new Common (); |
| | | Sid tmpSid = new Sid (); |
| | | tmpSid.sid = FormingNewSid (sOid, deviceCommon); |
| | | tmpSid.oid = sOid; |
| | | tmpSid.name = deviceCommon.Name; |
| | | |
| | | // try { |
| | | // tmpSid.name = onlineDevice.myEasyDesignChannelRemark [intI] [j - 1]; |
| | | // } catch (Exception ex) { |
| | | // tmpSid.name = ""; |
| | | // } |
| | | // if (tmpSid.name == null || tmpSid.name == "" || tmpSid.name == "Unread") { |
| | | // tmpSid.name = onlineDevice.Remark + CsConst.mstrINIDefault.IniReadValue ("public", "00000", "") + " " + j.Tostring (); |
| | | // if (onlineDevice.Remark == "") { |
| | | // tmpSid.name = onlineDevice.strDescription + CsConst.mstrINIDefault.IniReadValue ("public", "00000", "") + " " + j.Tostring (); |
| | | // } |
| | | // } |
| | | // GateWay.sidObject tmp = HDLSysPF.UpdateSidAttributesToDeviceList (onlineDevice, tmpSid.name, sOid, j, BigType, SmallType, true); |
| | | // tmpSid.attributes = tmp.attributes;//UpdateSidAttributesToDeviceList(onlineDevice.DeviceType, sOid, j, BigType, SmallType, ref spk); |
| | | // tmpSid.spk = tmp.spk; |
| | | // tmpResult.Add (tmpSid); |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // return tmpResult; |
| | | // } catch (Exception) { |
| | | // return tmpResult; |
| | | // //throw; |
| | | // } |
| | | // } |
| | | SidObject tmp = UpdateSidAttributesToDeviceList (deviceCommon, sOid); |
| | | tmpSid.attributes = tmp.attributes;//UpdateSidAttributesToDeviceList(onlineDevice.DeviceType, sOid, j, BigType, SmallType, ref spk); |
| | | tmpSid.spk = tmp.spk; |
| | | tmpResult.Add (tmpSid); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return tmpResult; |
| | | } catch (Exception) { |
| | | return tmpResult; |
| | | } |
| | | } |
| | | |
| | | // /// <summary> |
| | | // /// |
| | | // /// </summary> |
| | | // /// <param name="homeId"></param> |
| | | // /// <param name="onlineDevices"></param> |
| | | // /// <param name="gatewayId"></param> |
| | | // /// <param name="currentProject"></param> |
| | | // public void ConvertOidListToIotStruct (string homeId, List<Common> onlineDevices, string gatewayId, ref IotCloud currentProject) |
| | | // { |
| | | // try { |
| | | // //step 1 ;抓换类型 |
| | | // Sids functionList = currentProject.functions; |
| | | // List<Sid> tmpFunction = new List<Sid> (); |
| | | /// <summary> |
| | | /// 处理本地数据,转换生成Oid和Sid列表 |
| | | /// </summary> |
| | | /// <param name="homeId"></param> |
| | | /// <param name="onlineDevices"></param> |
| | | /// <param name="gatewayId"></param> |
| | | /// <param name="currentProject"></param> |
| | | public void ConvertOidListToIotStruct (string homeId, string gatewayId, List<Common> moduleCommonList, ref IotCloud currentProject) |
| | | { |
| | | try { |
| | | //step 1 转换类型 |
| | | Sids functionList = new Sids(); |
| | | List<Sid> tmpFunction = new List<Sid> (); |
| | | |
| | | // //step 2 转换类型 |
| | | // Oids tmp = ConvertToOidListToIotCloud (onlineDevices, ref tmpFunction); |
| | | // if (currentProject.modules == null || currentProject.modules.devices == null || currentProject.modules.devices.Count == 0) currentProject.modules = tmp; |
| | | // else { |
| | | // foreach (Oid tmpModule in tmp.devices) { |
| | | // Oid tmpFind = currentProject.modules.devices.Find (P => P.mac.Equals (tmpModule.mac)); |
| | | // if (tmpFind == null) currentProject.modules.devices.Add (tmpModule); |
| | | // } |
| | | // } |
| | | // tmp.homeId = homeId; |
| | | //step 2 转换类型 |
| | | Oids mOidList = ConvertToOidListToIotCloud (moduleCommonList, ref tmpFunction); |
| | | if (currentProject.modules == null || currentProject.modules.devices == null || currentProject.modules.devices.Count == 0) { |
| | | currentProject.modules = mOidList; |
| | | } else { |
| | | foreach (Oid tmpModule in mOidList.devices) { |
| | | Oid tmpFind = currentProject.modules.devices.Find (P => P.mac.Equals (tmpModule.mac)); |
| | | if (tmpFind == null) currentProject.modules.devices.Add (tmpModule); |
| | | } |
| | | } |
| | | mOidList.homeId = homeId; |
| | | |
| | | // //上传功能列表 |
| | | // #region |
| | | // //if (functionList == null) |
| | | // //{ |
| | | // functionList = new Sids (); |
| | | // functionList.devices = new List<Sid> (); |
| | | // functionList.devices = tmpFunction; |
| | | // //} |
| | | // functionList.homeId = homeId; |
| | | // functionList.gatewayId = gatewayId; |
| | | // currentProject.modules = tmp; |
| | | // currentProject.functions = functionList; |
| | | // #endregion |
| | | |
| | | // } catch (Exception ex) { |
| | | // //MessageBox.Show (ex.Tostring ()); |
| | | // //throw; |
| | | // } |
| | | // } |
| | | functionList.devices = new List<Sid> (); |
| | | functionList.homeId = homeId; |
| | | functionList.gatewayId = gatewayId; |
| | | if (tmpFunction != null) { |
| | | functionList.devices = tmpFunction; |
| | | } |
| | | |
| | | currentProject.modules = mOidList; |
| | | currentProject.functions = functionList; |
| | | |
| | | // /// <summary> |
| | | // /// |
| | | // /// </summary> |
| | | // /// <param name="homeId"></param> |
| | | // /// <param name="onlineDevices"></param> |
| | | // /// <param name="gatewayId"></param> |
| | | // /// <param name="currentProject"></param> |
| | | // public void ConvertOidListToIotStruct (string homeId, List<Common> onlineDevices, string gatewayId, ref IotCloud currentProject) |
| | | // { |
| | | // try { |
| | | // //step 1 转换类型 |
| | | // Sids functionList = currentProject.functions; |
| | | // List<Sid> tmpFunction = new List<Sid> (); |
| | | } catch (Exception ex) { |
| | | //MessageBox.Show (ex.Tostring ()); |
| | | //throw; |
| | | } |
| | | } |
| | | |
| | | // //step 2 转换类型 |
| | | // Oids tmp = ConvertToOidListToIotCloud (onlineDevices, ref tmpFunction); |
| | | // if (currentProject.modules == null || currentProject.modules.devices == null || currentProject.modules.devices.Count == 0) currentProject.modules = tmp; |
| | | // else { |
| | | // foreach (Oid tmpModule in tmp.devices) { |
| | | // Oid tmpFind = currentProject.modules.devices.Find (P => P.mac.Equals (tmpModule.mac)); |
| | | // if (tmpFind == null) currentProject.modules.devices.Add (tmpModule); |
| | | // } |
| | | // } |
| | | // tmp.homeId = homeId; |
| | | /// <summary> |
| | | /// 转换类型在线设备列表转OID列表 只在上传或者下载时使用 |
| | | /// </summary> |
| | | /// <param name="onlineDevices"></param> |
| | | /// <returns></returns> |
| | | public Oids ConvertToOidListToIotCloud (List<Common> moduleCommonList, ref List<Sid> functionLists) |
| | | { |
| | | Oids tmpResult = new Oids (); |
| | | try { |
| | | tmpResult.devices = new List<Oid> (); |
| | | //HDLSysPF.IniDeviceChannelRemark (); //整理全部设备备注到缓存列表 |
| | | foreach (Common tmp in moduleCommonList) { |
| | | Oid tmpOid = new Oid (); |
| | | tmpOid.protocolType = "bus"; |
| | | tmpOid.device_name = tmp.Name; |
| | | tmpOid.oid = FormingNewOid (tmp.Type); |
| | | tmpOid.addresses = string.Format ("{0}{1}", tmp.SubnetID.ToString ("X2"), tmp.DeviceID.ToString ("X2")); |
| | | tmpOid.device_model = tmp.Type.ToString (); |
| | | tmpOid.fw_version = ""; |
| | | tmpOid.deviceType = tmp.Type.ToString (); |
| | | tmpOid.hw_info = ""; |
| | | tmpOid.mac = tmp.MAC; |
| | | tmpResult.devices.Add (tmpOid); |
| | | |
| | | // //上传功能列表 |
| | | // #region |
| | | // //if (functionList == null) |
| | | // //{ |
| | | // functionList = new Sids (); |
| | | // functionList.devices = new List<Sid> (); |
| | | // functionList.devices = tmpFunction; |
| | | // //} |
| | | // functionList.homeId = homeId; |
| | | // functionList.gatewayId = gatewayId; |
| | | // currentProject.modules = tmp; |
| | | // currentProject.functions = functionList; |
| | | // #endregion |
| | | functionLists.AddRange (ConvertToSidListToIotCloud (tmpOid.oid, tmp)); |
| | | } |
| | | return tmpResult; |
| | | } catch (Exception ex) { |
| | | return tmpResult; |
| | | //throw; |
| | | } |
| | | } |
| | | |
| | | // } catch (Exception ex) { |
| | | // //MessageBox.Show (ex.Tostring ()); |
| | | // //throw; |
| | | // } |
| | | // } |
| | | ///// <summary> |
| | | ///// |
| | | ///// </summary> |
| | | ///// <param name="homeId"></param> |
| | | ///// <param name="onlineDevices"></param> |
| | | ///// <param name="gatewayId"></param> |
| | | ///// <param name="currentProject"></param> |
| | | //public void ConvertOidListToIotStruct (string homeId, List<Common> onlineDevices, string gatewayId, ref IotCloud currentProject) |
| | | //{ |
| | | // try { |
| | | // //step 1 转换类型 |
| | | // Sids functionList = currentProject.functions; |
| | | // List<Sid> tmpFunction = new List<Sid> (); |
| | | |
| | | // /// <summary> |
| | | // /// 生成设备Oid |
| | | // /// </summary> |
| | | // /// <param name="iDeviceType"></param> |
| | | // /// <returns></returns> |
| | | // public string FormingNewOid (DeviceType deviceType) |
| | | // { |
| | | // string sOid = ""; |
| | | // try { |
| | | // //1.生成 厂商 + 通讯方式 |
| | | // string sOidBeginsWith = "000101";//厂商 + 通讯方式 |
| | | // //2.生成产品时间戳 |
| | | // long sTimeSp = ConvertDateTimeLong (); //以2020年1月1日算出的时间戳0.1s为单位 |
| | | // string sTimeSpan = ""; |
| | | // ConvertIntToByteArray (sTimeSp, ref sTimeSpan); |
| | | // if (sTimeSpan.Length != 8) return sOid; |
| | | // //延迟10ms |
| | | // //step 2 转换类型 |
| | | // Oids tmp = ConvertToOidListToIotCloud (onlineDevices, ref tmpFunction); |
| | | // if (currentProject.modules == null || currentProject.modules.devices == null || currentProject.modules.devices.Count == 0) currentProject.modules = tmp; |
| | | |
| | | // //3.生成产品类别 |
| | | // var productType = GetProductType (deviceType); |
| | | // sOid = sOidBeginsWith + sTimeSpan + productType; |
| | | // else { |
| | | // foreach (Oid tmpModule in tmp.devices) { |
| | | // Oid tmpFind = currentProject.modules.devices.Find (P => P.mac.Equals (tmpModule.mac)); |
| | | // if (tmpFind == null) currentProject.modules.devices.Add (tmpModule); |
| | | // } |
| | | // } |
| | | // tmp.homeId = homeId; |
| | | |
| | | // return sOid; |
| | | // } catch { |
| | | // return sOid; |
| | | // } |
| | | // } |
| | | // //上传功能列表 |
| | | // #region |
| | | // //if (functionList == null) |
| | | // //{ |
| | | // functionList = new Sids (); |
| | | // functionList.devices = new List<Sid> (); |
| | | // functionList.devices = tmpFunction; |
| | | // //} |
| | | // functionList.homeId = homeId; |
| | | // functionList.gatewayId = gatewayId; |
| | | // currentProject.modules = tmp; |
| | | // currentProject.functions = functionList; |
| | | // #endregion |
| | | |
| | | // /// <summary> |
| | | // /// 获取产品类别 |
| | | // //产品类别 1byte |
| | | // //编号 描述 |
| | | // //01 调光器 |
| | | // //02 继电器 |
| | | // //03 干接点模块 |
| | | // //04 传感器 |
| | | // //05 面板 |
| | | // //06 RCU |
| | | // //07 网关 |
| | | // //08 红外发射 |
| | | // //09 Android屏 |
| | | // //10 场景 |
| | | // //11 音乐播放器 |
| | | // //12 232/485转换器 |
| | | // //21 自动化 |
| | | // //22 安防防区 |
| | | // //14 窗帘模块 |
| | | // //15 HVAC |
| | | // //16 地热模块 |
| | | // /// </summary> |
| | | // /// <param name="deviceType"></param> |
| | | // /// <returns></returns> |
| | | // public string GetProductType (DeviceType deviceType) |
| | | // { |
| | | // string productType = ""; |
| | | // switch (deviceType) { |
| | | // case DeviceType.LightDimming: |
| | | // productType = "01";//01 调光器 |
| | | // break; |
| | | // case DeviceType.LightSwitch: |
| | | // productType = "02";//02 继电器类 |
| | | // break; |
| | | // case DeviceType.CurtainModel: |
| | | // case DeviceType.CurtainRoller: |
| | | // case DeviceType.CurtainTrietex: |
| | | // productType = "03";//03 遮阳类(窗帘) |
| | | // break; |
| | | // case DeviceType.SensorWindSpeed: |
| | | // productType = "04";//04 传感器) |
| | | // break; |
| | | // case DeviceType.OnePortWirelessFR: |
| | | // case DeviceType.OnePortBus: |
| | | // case DeviceType.RCU: |
| | | // case DeviceType.SuperWireless: |
| | | // case DeviceType.OnePortMqttFR: |
| | | // productType = "07";//07 网关类 |
| | | // break; |
| | | // case DeviceType.ACPanel: |
| | | // case DeviceType.ACDevice: |
| | | // case DeviceType.ACInfrared: |
| | | // case DeviceType.ACCoolmaster: |
| | | // case DeviceType.CustomAC: |
| | | // case DeviceType.HVAC: |
| | | // case DeviceType.FoolHeat: |
| | | // case DeviceType.FoolHeatPanel: |
| | | // productType = "12";//12 恒温器(空调、地热) |
| | | // break; |
| | | |
| | | // } |
| | | // } catch (Exception ex) { |
| | | // //MessageBox.Show (ex.Tostring ()); |
| | | // //throw; |
| | | // } |
| | | //} |
| | | |
| | | // return productType; |
| | | // } |
| | | /// <summary> |
| | | /// 生成设备Oid |
| | | /// </summary> |
| | | /// <param name="iDeviceType"></param> |
| | | /// <returns></returns> |
| | | public string FormingNewOid (DeviceType deviceType) |
| | | { |
| | | string sOid = ""; |
| | | try { |
| | | //1.生成 厂商 + 通讯方式 |
| | | string sOidBeginsWith = "000101";//厂商 + 通讯方式 |
| | | //2.生成产品时间戳 |
| | | long sTimeSp = ConvertDateTimeLong (); //以2020年1月1日算出的时间戳0.1s为单位 |
| | | string sTimeSpan = ""; |
| | | ConvertIntToByteArray (sTimeSp, ref sTimeSpan); |
| | | if (sTimeSpan.Length != 8) return sOid; |
| | | //延迟10ms |
| | | |
| | | |
| | | //3.生成产品类别 |
| | | var productType = GetProductType (deviceType); |
| | | sOid = sOidBeginsWith + sTimeSpan + productType; |
| | | |
| | | // /// <summary> |
| | | // /// 获取生成物理模型参数 |
| | | return sOid; |
| | | } catch { |
| | | return sOid; |
| | | } |
| | | } |
| | | |
| | | // /// </summary> |
| | | // /// <param name="deviceType"></param> |
| | | // /// <returns></returns> |
| | | // public string GetPhysicalModelType (DeviceType deviceType) |
| | | // { |
| | | // string productType = ""; |
| | | // switch (deviceType) { |
| | | // case DeviceType.LightDimming: |
| | | // productType = "0101"; |
| | | // break; |
| | | // } |
| | | /// <summary> |
| | | /// 获取产品类别 |
| | | /// 产品类别目前没有规范的文档,没有确定的标准 |
| | | /// 暂时和buspro软件规则一致 |
| | | /// |
| | | ///文档规则,但是不是正确的版本 |
| | | //产品类别 1byte |
| | | //编号 描述 |
| | | //01 调光器 |
| | | //02 继电器 |
| | | //03 干接点模块 |
| | | //04 传感器 |
| | | //05 面板 |
| | | //06 RCU |
| | | //07 网关 |
| | | //08 红外发射 |
| | | //09 Android屏 |
| | | //10 场景 |
| | | //11 音乐播放器 |
| | | //12 232/485转换器 |
| | | //21 自动化 |
| | | //22 安防防区 |
| | | //14 窗帘模块 |
| | | //15 HVAC |
| | | //16 地热模块 |
| | | /// </summary> |
| | | /// <param name="deviceType"></param> |
| | | /// <returns></returns> |
| | | public string GetProductType (DeviceType deviceType) |
| | | { |
| | | string productType = ""; |
| | | switch (deviceType) { |
| | | case DeviceType.LightDimming: |
| | | case DeviceType.LightCCT: |
| | | case DeviceType.LightDALI: |
| | | case DeviceType.LightRGB: |
| | | case DeviceType.LightRGBW: |
| | | case DeviceType.LightLogic: |
| | | case DeviceType.LightRGBandCCT: |
| | | case DeviceType.DMX48: |
| | | productType = "01";//01 调光器 |
| | | break; |
| | | case DeviceType.LightSwitch: |
| | | case DeviceType.LightEnergySwitch: |
| | | case DeviceType.LightEnergySocket: |
| | | case DeviceType.LightSwitchSocket: |
| | | case DeviceType.LightMixSwitch: |
| | | productType = "02";//02 继电器类 |
| | | break; |
| | | case DeviceType.CurtainModel: |
| | | case DeviceType.CurtainRoller: |
| | | case DeviceType.CurtainTrietex: |
| | | productType = "03";//03 遮阳类(窗帘) |
| | | break; |
| | | case DeviceType.SensorWindSpeed: |
| | | productType = "04";//04 传感器) |
| | | break; |
| | | case DeviceType.OnePortWirelessFR: |
| | | case DeviceType.OnePortBus: |
| | | case DeviceType.RCU: |
| | | case DeviceType.SuperWireless: |
| | | case DeviceType.OnePortMqttFR: |
| | | productType = "07";//07 网关类 |
| | | break; |
| | | case DeviceType.ACPanel: |
| | | case DeviceType.ACDevice: |
| | | case DeviceType.ACInfrared: |
| | | case DeviceType.ACCoolmaster: |
| | | case DeviceType.CustomAC: |
| | | case DeviceType.HVAC: |
| | | case DeviceType.FoolHeat: |
| | | case DeviceType.FoolHeatPanel: |
| | | productType = "12";//12 恒温器(空调、地热) |
| | | break; |
| | | case DeviceType.MusicModel: |
| | | case DeviceType.MusicPanel: |
| | | case DeviceType.MusicA31: |
| | | productType = "0B"; |
| | | break; |
| | | default: |
| | | productType = "00"; |
| | | break; |
| | | } |
| | | |
| | | // return productType; |
| | | // } |
| | | |
| | | return productType; |
| | | } |
| | | |
| | | |
| | | |
| | | // /// <summary> |
| | | // /// 生成功能设备Sid |
| | | // /// </summary> |
| | | // /// <param name="iDeviceType"></param> |
| | | // /// <param name="sOid"></param> |
| | | // /// <param name="iChnId"></param> |
| | | // /// <param name="isUseE548ReturnBigSmallType"></param> |
| | | // /// <param name="BigType"></param> |
| | | // /// <param name="SmallType"></param> |
| | | // /// <returns></returns> |
| | | // public string FormingNewSid (int iDeviceType, string sOid, int iChnId, bool isUseE548ReturnBigSmallType, byte BigType, byte SmallType) |
| | | // { |
| | | // if (sOid == null || sOid == "") return ""; |
| | | // try { |
| | | // string sSid = ""; |
| | | // if (DimmerDeviceTypeList.HDLDimmerDeviceTypeList.Contains (iDeviceType)) { |
| | | // if (DimmerDeviceTypeList.DALIDimmerDeviceTypeLists.Contains (iDeviceType)) { |
| | | // BigType = 1; |
| | | // SmallType = 7; |
| | | // sSid += "0203"; |
| | | // } else { |
| | | // sSid += "0202"; |
| | | // } |
| | | // } else if (RelayDeviceTypeList.HDLRelayDeviceTypeList.Contains (iDeviceType)) { |
| | | // sSid += "0201"; |
| | | // } else if (CurtainDeviceType.HDLCurtainModuleDeviceType.Contains (iDeviceType)) { |
| | | /// <summary> |
| | | /// 获取生成物理模型参数 |
| | | /// 2021-01-22 目前物模还不完善 |
| | | /// </summary> |
| | | /// <param name="deviceType"></param> |
| | | /// <returns></returns> |
| | | public string GetPhysicalModelType (DeviceType deviceType) |
| | | { |
| | | string productType = ""; |
| | | switch (deviceType) { |
| | | case DeviceType.LightEnergySwitch: |
| | | productType = "0101"; |
| | | break; |
| | | case DeviceType.LightEnergySocket: |
| | | case DeviceType.LightSwitchSocket: |
| | | productType = "0102"; |
| | | break; |
| | | case DeviceType.LightSwitch: |
| | | case DeviceType.LightMixSwitch: |
| | | productType = "0201"; |
| | | break; |
| | | case DeviceType.LightDimming: |
| | | productType = "0202"; |
| | | break; |
| | | case DeviceType.LightCCT: |
| | | case DeviceType.LightDALI: |
| | | productType = "0203"; |
| | | break; |
| | | case DeviceType.LightRGB: |
| | | case DeviceType.LightRGBW: |
| | | case DeviceType.LightLogic: |
| | | case DeviceType.LightRGBandCCT: |
| | | case DeviceType.DMX48: |
| | | productType = "0204"; |
| | | break; |
| | | //窗帘 |
| | | case DeviceType.CurtainModel: |
| | | productType = "0301"; |
| | | break; |
| | | case DeviceType.CurtainTrietex: |
| | | productType = "0303"; |
| | | break; |
| | | case DeviceType.CurtainRoller: |
| | | productType = "0304"; |
| | | break; |
| | | case DeviceType.ACPanel: |
| | | case DeviceType.ACDevice: |
| | | case DeviceType.ACInfrared: |
| | | case DeviceType.ACCoolmaster: |
| | | case DeviceType.CustomAC: |
| | | case DeviceType.HVAC: |
| | | productType = "0701"; |
| | | break; |
| | | case DeviceType.FoolHeat: |
| | | case DeviceType.FoolHeatPanel: |
| | | productType = "0801"; |
| | | break; |
| | | case DeviceType.MusicModel: |
| | | case DeviceType.MusicPanel: |
| | | case DeviceType.MusicA31: |
| | | productType = "0901"; |
| | | break; |
| | | case DeviceType.FanModule: |
| | | productType = "1001"; |
| | | break; |
| | | default: |
| | | productType = ((int)deviceType).ToString ("X4"); |
| | | break; |
| | | } |
| | | |
| | | // if (CurtainDeviceType.NormalMotorCurtainDeviceType.Contains (iDeviceType) || (iDeviceType == 9700)) //所有开合帘 //0 2020 05 24创明开合帘 |
| | | // { |
| | | // sSid += "0303"; |
| | | // } else if (CurtainDeviceType.RollerCurtainDeviceType.Contains (iDeviceType) |
| | | // || (iDeviceType == 9701))//所有 卷帘控制器 |
| | | // { |
| | | // sSid += "0304"; |
| | | // } else { |
| | | // sSid += "0301"; |
| | | // } |
| | | // } else if (HVACModuleDeviceTypeList.HDLHVACModuleDeviceTypeLists.Contains (iDeviceType)) { |
| | | // sSid += "0401"; |
| | | // } else if (Eightin1DeviceTypeList.HDL8in1DeviceType.Contains (iDeviceType) |
| | | // || Sevenin1DeviceTypeList.HDL7in1DeviceType.Contains (iDeviceType) |
| | | // || HaikeSensorDeviceTypeList.HaikeSensorDeviceType.Contains (iDeviceType) |
| | | // || Twelvein1DeviceTypeList.HDL12in1DeviceType.Contains (iDeviceType) |
| | | // || Rs232DeviceTypeList.HDLRs232DeviceType.Contains (iDeviceType)) { |
| | | // if (BigType == 19 && SmallType == 0) { |
| | | // sSid += "1301"; |
| | | // } else if (BigType == 5 && SmallType == 0) { |
| | | // sSid += "0519"; |
| | | // } else { |
| | | // sSid += BigType.Tostring ("X2") + SmallType.Tostring ("X2"); |
| | | // } |
| | | // } else if (FloorheatingDeviceTypeList.HDLFloorHeatingDeviceType.Contains (iDeviceType)) { |
| | | // sSid += "0402"; |
| | | // } else if (DMXDeviceTypeList.HDLDMXDeviceTypeList.Contains (iDeviceType)) { |
| | | // sSid += "0204"; |
| | | // } else if (DimmerDeviceTypeList.DALIDimmerDeviceTypeLists.Contains (iDeviceType)) { |
| | | // sSid += "0203"; |
| | | // } else if (AudioDeviceTypeList.AudioBoxDeviceTypeList.Contains (iDeviceType)) { |
| | | // sSid += "0901"; |
| | | // } |
| | | // string sTmpWithE548 = sSid; |
| | | // sSid = sOid + sSid + iChnId.Tostring ("X4"); |
| | | // if (isUseE548ReturnBigSmallType) { |
| | | // sSid += BigType.Tostring ("X2") + SmallType.Tostring ("X2"); |
| | | // } else { |
| | | // sSid += sTmpWithE548; |
| | | // } |
| | | return productType; |
| | | } |
| | | |
| | | // return sSid; |
| | | // } catch { |
| | | // return ""; |
| | | // } |
| | | // } |
| | | |
| | | // 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; |
| | | // } |
| | | |
| | | // 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; |
| | | // } |
| | | |
| | | // } |
| | | |
| | | |
| | | |
| | | // [Serializable] |
| | | // public class Sids : BaseCloudFeedback |
| | | // { |
| | | // public string homeId { get; set; } |
| | | // public string gatewayId { get; set; } |
| | | // public List<Sid> devices { get; set; } |
| | | // } |
| | | |
| | | // [Serializable] |
| | | // public class BaseCloudFeedback |
| | | // { |
| | | // public int code { get; set; } |
| | | // public string timestamp { get; set; } |
| | | // public bool isSuccess { get; set; } |
| | | // public string message { get; set; } |
| | | // } |
| | | /// <summary> |
| | | /// 生成功能设备Sid |
| | | /// </summary> |
| | | /// <param name="iDeviceType"></param> |
| | | /// <param name="sOid"></param> |
| | | /// <param name="iChnId"></param> |
| | | /// <param name="isUseE548ReturnBigSmallType"></param> |
| | | /// <param name="BigType"></param> |
| | | /// <param name="SmallType"></param> |
| | | /// <returns></returns> |
| | | public string FormingNewSid (string sOid, Common loopCommon) |
| | | { |
| | | if (sOid == null || sOid == "") return ""; |
| | | try { |
| | | //物模型类+通道号+大小类别 |
| | | string sSid = ""; |
| | | //1.物模型类 |
| | | string mPhysicalModelType = GetPhysicalModelType (loopCommon.Type); |
| | | //2.通道号 |
| | | string loopIDStr = loopCommon.LoopID.ToString ("X4"); |
| | | //3.大小类别 |
| | | string bigMinStr = loopCommon.BigClass.ToString ("X2") + loopCommon.MinClass.ToString ("X2"); |
| | | //4.拼接 |
| | | sSid = sOid + mPhysicalModelType + loopIDStr + bigMinStr; |
| | | return sSid; |
| | | } catch { |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | |
| | | // [Serializable] |
| | | // public class Oids : BaseCloudFeedback |
| | | // { |
| | | // public string homeId { get; set; } |
| | | // public string gatewayId { get; set; } |
| | | // public List<Oid> devices { get; set; } |
| | | // } |
| | | /// <summary> |
| | | /// 生成SPK属性 |
| | | /// </summary> |
| | | /// <param name="loopCommon"></param> |
| | | /// <param name="iChnRemark"></param> |
| | | /// <param name="sOid"></param> |
| | | /// <param name="iChnId"></param> |
| | | /// <param name="BigType"></param> |
| | | /// <param name="SmallType"></param> |
| | | /// <param name="isUseE548ReturnBigSmallType"></param> |
| | | /// <returns></returns> |
| | | public SidObject UpdateSidAttributesToDeviceList (Common loopCommon, string sOid) |
| | | { |
| | | SidObject tmp = new SidObject (); |
| | | try { |
| | | string sSid = FormingNewSid (sOid, loopCommon); |
| | | tmp.oid = sOid; |
| | | tmp.sid = sSid; |
| | | tmp.name = loopCommon.Name; |
| | | tmp.attributes = new List<Function> (); |
| | | 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"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | } else if (loopCommon.Type == DeviceType.LightDimming |
| | | || loopCommon.Type == DeviceType.LightCCT |
| | | || loopCommon.Type == DeviceType.LightDALI) { |
| | | //调光类 |
| | | tmp.spk = "light.dimming"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | // [Serializable] |
| | | // public class Oid |
| | | // { |
| | | // public string protocolType { get; set; } |
| | | // public string device_name { get; set; } |
| | | // public string oid { get; set; } |
| | | // public string addresses { get; set; } |
| | | // public string device_model { get; set; } |
| | | #region brightness |
| | | Function tempFunction1 = new Function (); |
| | | tempFunction1.key = "brightness"; |
| | | tempFunction1.data_type = "integer"; |
| | | tempFunction1.value = new List<string> (); |
| | | |
| | | // public string fw_version { get; set; } |
| | | // public string hw_info { get; set; } |
| | | // public string mac { get; set; } |
| | | // public string deviceType { get; set; } |
| | | // } |
| | | tempFunction1.max = 100; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | #endregion |
| | | |
| | | // [Serializable] |
| | | // public class Sid |
| | | // { |
| | | // public string sid { get; set; } |
| | | // public string name { get; set; } |
| | | // public string [] uids { get; set; } |
| | | // public string spk { get; set; } |
| | | #region fade_time |
| | | Function tempFunction3 = new Function (); |
| | | tempFunction3.key = "fade_time"; |
| | | tempFunction3.data_type = "integer"; |
| | | tempFunction3.value = new List<string> (); |
| | | //tempFunction1.value.Add("percent"); |
| | | //for (int iPercent = 0; iPercent <= 100; iPercent++) |
| | | //{ |
| | | // tempFunction1.value.Add(iPercent.ToString()); |
| | | //} |
| | | tempFunction3.max = 100; |
| | | tempFunction3.min = 0; |
| | | tmp.attributes.Add (tempFunction3); |
| | | #endregion |
| | | |
| | | // public string oid { get; set; } //设备模块地址 |
| | | // public string omodel { get; set; } //型号 |
| | | // public List<Function> attributes { get; set; } //属性列表 |
| | | // } |
| | | if (loopCommon.Type == DeviceType.LightCCT || loopCommon.Type == DeviceType.LightDALI)//色温类别 |
| | | { |
| | | tmp.spk = "light.cct"; |
| | | #region cct |
| | | Function tempFunction2 = new Function (); |
| | | 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); |
| | | #endregion |
| | | } |
| | | } else if (loopCommon.Type == DeviceType.LightRGB |
| | | || loopCommon.Type == DeviceType.LightRGBW |
| | | || loopCommon.Type == DeviceType.LightLogic |
| | | || loopCommon.Type == DeviceType.LightRGBandCCT |
| | | || loopCommon.Type == DeviceType.DMX48) { |
| | | |
| | | tmp.spk = "light.rgb"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region brightness |
| | | Function tempFunction2 = new Function (); |
| | | tempFunction2.key = "brightness"; |
| | | tempFunction2.data_type = "integer"; |
| | | tempFunction2.value = new List<string> (); |
| | | tempFunction2.max = 100; |
| | | tempFunction2.min = 0; |
| | | tmp.attributes.Add (tempFunction2); |
| | | #endregion |
| | | |
| | | |
| | | // [Serializable] |
| | | // public class Function |
| | | // { |
| | | // //public string name { get; set; } |
| | | // public string key { get; set; } |
| | | // public List<string> value { get; set; } |
| | | // public int max { get; set; } |
| | | // public int min { get; set; } |
| | | // public string data_type { get; set; } |
| | | // } |
| | | |
| | | //} |
| | | if (loopCommon.Type == DeviceType.LightRGBW) { |
| | | tmp.spk = "light.rgbw"; |
| | | #region color |
| | | Function tempFunction3 = new Function (); |
| | | 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); |
| | | #endregion |
| | | } else { |
| | | #region color |
| | | Function tempFunction3 = new Function (); |
| | | tempFunction3.key = "rgb"; |
| | | tempFunction3.data_type = "integer"; |
| | | tempFunction3.value = new List<string> (); |
| | | tempFunction3.min = 0; |
| | | tmp.attributes.Add (tempFunction3); |
| | | #endregion |
| | | |
| | | } |
| | | |
| | | if (loopCommon.Type == DeviceType.LightRGBandCCT) { |
| | | #region CCT |
| | | Function tempFunctionCCT = new Function (); |
| | | 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); |
| | | #endregion |
| | | } |
| | | |
| | | } else if (loopCommon.Type == DeviceType.CurtainModel || loopCommon.Type == DeviceType.CurtainRoller || loopCommon.Type == DeviceType.CurtainTrietex) { |
| | | tmp.spk = "curtain.switch"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | if (loopCommon.Type == DeviceType.CurtainRoller || loopCommon.Type == DeviceType.CurtainTrietex)//所有卷帘控制器 |
| | | { |
| | | tmp.spk = "curtain.trietex"; |
| | | #region openlevel |
| | | Function tempFunction1 = new Function (); |
| | | 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); |
| | | #endregion |
| | | } |
| | | } else if (loopCommon.Type == DeviceType.ACPanel |
| | | || loopCommon.Type == DeviceType.ACDevice |
| | | || loopCommon.Type == DeviceType.ACInfrared |
| | | || loopCommon.Type == DeviceType.ACCoolmaster |
| | | || loopCommon.Type == DeviceType.CustomAC |
| | | || loopCommon.Type == DeviceType.HVAC) { |
| | | |
| | | //空调类 |
| | | tmp.spk = "ac.standard"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region mode |
| | | Function tempFunction1 = new Function (); |
| | | 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"); |
| | | |
| | | tempFunction1.max = 4; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | #endregion |
| | | |
| | | #region fan |
| | | Function tempFunction2 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region temp |
| | | Function tempFunction3 = new Function (); |
| | | tempFunction3.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"; |
| | | //} |
| | | //else |
| | | //{ |
| | | // tempFunction3.data_type = "integer"; |
| | | //} |
| | | tempFunction3.value = new List<string> (); |
| | | tempFunction3.max = 30; |
| | | tempFunction3.min = 16; |
| | | tmp.attributes.Add (tempFunction3); |
| | | #endregion |
| | | |
| | | #region temp_step |
| | | Function tempFunction5 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region room_temp |
| | | Function tempFunction6 = new Function (); |
| | | tempFunction6.key = "room_temp"; |
| | | tempFunction6.data_type = "float"; |
| | | tempFunction6.value = new List<string> (); |
| | | tempFunction6.max = 50; |
| | | tempFunction6.min = -50; |
| | | tmp.attributes.Add (tempFunction6); |
| | | #endregion |
| | | |
| | | #region swing |
| | | Function tempFunction4 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region lock |
| | | |
| | | |
| | | ////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 第三方网关或者平台 |
| | | #endregion |
| | | } else if (loopCommon.Type == DeviceType.FoolHeat |
| | | || loopCommon.Type == DeviceType.FoolHeatPanel) { |
| | | tmp.spk = "floorHeat.standard"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | ////厂商代码 1byte 编号 描述 |
| | | //// 01 HDL |
| | | //// 02 |
| | | #region mode |
| | | Function tempFunction1 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | ////通讯方式 1byte 编号 描述 |
| | | //// 01 HDL Bus |
| | | //// 02 Zigbee |
| | | //// 03 KNX |
| | | //// 04 Z-Wave |
| | | #region temp |
| | | Function tempFunction3 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | ////产品时间戳 4bytes 以2020年1月1日算出的时间戳0.1s为单位 |
| | | #region temp |
| | | Function tempFunction4 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | ////产品类别 1byte 编号 描述 |
| | | //// 01 调光器 |
| | | //// 02 继电器 |
| | | //// 03 干接点模块 |
| | | //// 04 传感器 |
| | | //// 05 面板 |
| | | //// 06 RCU |
| | | //// 07 网关 |
| | | //// 08 红外发射 |
| | | //// 09 Android屏 |
| | | //// 10 场景 |
| | | //// 11 音乐播放器 |
| | | //// 12 232/485转换器 |
| | | //// 21 自动化 |
| | | //// 22 安防防区 |
| | | //// 14 窗帘模块 |
| | | //// 15 HVAC |
| | | //// 16 地热模块 |
| | | #region room_temp |
| | | Function tempFunction5 = new Function (); |
| | | tempFunction5.key = "room_temp"; |
| | | tempFunction5.data_type = "float"; |
| | | tempFunction5.value = new List<string> (); |
| | | tempFunction5.max = 50; |
| | | tempFunction5.min = -50; |
| | | tmp.attributes.Add (tempFunction5); |
| | | #endregion |
| | | |
| | | ////物模型类型 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 新风 |
| | | #region lock |
| | | |
| | | ////13 能源 01 电表 |
| | | //// 02 水表 |
| | | //// 03 燃气 |
| | | //// 16 电器 01 风扇 |
| | | //// 02 TV |
| | | //// 20 安防 01 安防 |
| | | //// 21 自动化 01 自动化 |
| | | ////大类别 1bytes (预留) |
| | | ////小类别 1byte (预留) |
| | | |
| | | #endregion |
| | | } else if (loopCommon.Type == DeviceType.MusicA31 |
| | | || loopCommon.Type == DeviceType.MusicModel |
| | | || loopCommon.Type == DeviceType.MusicPanel) { |
| | | tmp.spk = "music.standard"; |
| | | // on_off volume song_step audio list_channel mode song_num special_song volume_level |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | tempFunction.key = "on_off"; |
| | | tempFunction.data_type = "string"; |
| | | tempFunction.value = new List<string> (); |
| | | tempFunction.value.Add ("play"); |
| | | tempFunction.value.Add ("pause"); |
| | | |
| | | //tempFunction.value.Add("play"); |
| | | //tempFunction.value.Add("stop"); |
| | | //tempFunction.value.Add("pause"); |
| | | //play stop pause |
| | | tempFunction.max = 2; |
| | | tempFunction.min = 0; |
| | | tmp.attributes.Add (tempFunction); |
| | | #endregion |
| | | |
| | | #region volume |
| | | Function tempFunction1 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region volume_step |
| | | Function tempFunction9 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | |
| | | #region volume_level |
| | | Function tempFunction10 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region volume_level_step |
| | | Function tempFunction11 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region treble |
| | | Function tempFunction14 = new Function (); |
| | | tempFunction14.key = "treble"; |
| | | tempFunction14.data_type = "integer"; |
| | | tempFunction14.max = 10; |
| | | tempFunction14.min = -10; |
| | | tmp.attributes.Add (tempFunction14); |
| | | #endregion |
| | | |
| | | #region treble_step |
| | | Function tempFunction12 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | |
| | | #region bass |
| | | Function tempFunction15 = new Function (); |
| | | tempFunction15.key = "bass"; |
| | | tempFunction15.data_type = "integer"; |
| | | tempFunction15.max = 10; |
| | | tempFunction15.min = -10; |
| | | tmp.attributes.Add (tempFunction15); |
| | | #endregion |
| | | |
| | | #region bass_step |
| | | Function tempFunction13 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region mode |
| | | Function tempFunction5 = new Function (); |
| | | tempFunction5.key = "mode"; |
| | | tempFunction5.data_type = "string"; |
| | | tempFunction5.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); |
| | | #endregion |
| | | |
| | | #region source |
| | | //1 = SD, 2 = External Input, 3 = FTP, 4 = Radio |
| | | //sdcard/external_input/ftp/radio |
| | | Function tempFunction3 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region song_step |
| | | Function tempFunction2 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region bass |
| | | Function tempFunction16 = new Function (); |
| | | tempFunction16.key = "playlist_name"; |
| | | tempFunction16.data_type = "string"; |
| | | tmp.attributes.Add (tempFunction16); |
| | | #endregion |
| | | |
| | | #region bass |
| | | Function tempFunction17 = new Function (); |
| | | tempFunction17.key = "song_name"; |
| | | tempFunction17.data_type = "string"; |
| | | tmp.attributes.Add (tempFunction17); |
| | | #endregion |
| | | |
| | | #region bass |
| | | Function tempFunction19 = new Function (); |
| | | tempFunction19.key = "song_time"; |
| | | tempFunction19.data_type = "string"; |
| | | tmp.attributes.Add (tempFunction19); |
| | | #endregion |
| | | |
| | | #region bass |
| | | Function tempFunction20 = new Function (); |
| | | tempFunction20.key = "playing_time"; |
| | | tempFunction20.data_type = "string"; |
| | | tmp.attributes.Add (tempFunction20); |
| | | #endregion |
| | | } else if (loopCommon.BigClass == 5) { |
| | | //传感器 |
| | | if (loopCommon.Type == DeviceType.SensorMobileDetection) { |
| | | tmp.spk = "sensor.pir"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region status |
| | | Function tempFunction1 = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region sensitivity |
| | | Function tempFunction2 = new Function (); |
| | | tempFunction2.key = "sensitivity"; |
| | | tempFunction2.data_type = "integer"; |
| | | tempFunction2.max = 100; |
| | | tempFunction2.min = 0; |
| | | tmp.attributes.Add (tempFunction2); |
| | | #endregion |
| | | }else if (loopCommon.Type == DeviceType.SensorTemperature) { |
| | | tmp.spk = "sensor.temperature"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region temp |
| | | Function tempFunction1 = new Function (); |
| | | tempFunction1.key = "value"; //2020 12 22 |
| | | tempFunction1.data_type = "float"; |
| | | tempFunction1.max = 50; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | #endregion |
| | | |
| | | #region type |
| | | Function tempFunction2 = new Function (); |
| | | 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); |
| | | #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); |
| | | //#endregion |
| | | }else if (loopCommon.Type == DeviceType.SensorIllumination) { |
| | | tmp.spk = "sensor.light"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region lux |
| | | Function tempFunction1 = new Function (); |
| | | tempFunction1.key = "value"; //2020 12 22 |
| | | tempFunction1.data_type = "integer"; |
| | | tmp.attributes.Add (tempFunction1); |
| | | #endregion |
| | | |
| | | #region error_value |
| | | Function tempFunction2 = new Function (); |
| | | tempFunction2.key = "error_value"; |
| | | tempFunction2.data_type = "integer"; |
| | | tmp.attributes.Add (tempFunction2); |
| | | #endregion |
| | | |
| | | #region precision |
| | | Function tempFunction3 = new 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); |
| | | #endregion |
| | | } else if (loopCommon.Type == DeviceType.SensorPM25) { |
| | | tmp.spk = "sensor.pm25"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region value |
| | | Function tempFunction1 = new Function (); |
| | | tempFunction1.key = "value"; |
| | | tempFunction1.data_type = "integer"; |
| | | tmp.attributes.Add (tempFunction1); |
| | | #endregion |
| | | |
| | | #region error_value |
| | | Function tempFunction2 = new Function (); |
| | | tempFunction2.key = "error_value"; |
| | | tempFunction2.data_type = "integer"; |
| | | tmp.attributes.Add (tempFunction2); |
| | | #endregion |
| | | |
| | | #region precision |
| | | Function tempFunction3 = new 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); |
| | | #endregion |
| | | }else if (loopCommon.Type == DeviceType.SensorHumidity) { |
| | | tmp.spk = "sensor.humidity"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | #region value |
| | | Function tempFunction1 = new Function (); |
| | | tempFunction1.key = "value"; |
| | | tempFunction1.data_type = "float"; |
| | | tempFunction1.max = 10000; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | #endregion |
| | | }else if (loopCommon.Type == DeviceType.SensorTVOC) { |
| | | tmp.spk = "sensor.tvoc"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | #region value |
| | | Function tempFunction1 = new Function (); |
| | | tempFunction1.key = "value"; |
| | | tempFunction1.data_type = "integer"; |
| | | tempFunction1.max = 10000; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | #endregion |
| | | }else if (loopCommon.Type == DeviceType.SensorCO2) { |
| | | tmp.spk = "sensor.co2"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | #region value |
| | | Function tempFunction1 = new Function (); |
| | | tempFunction1.key = "value"; |
| | | tempFunction1.data_type = "integer"; |
| | | tempFunction1.max = 10000; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | #endregion |
| | | }else if (loopCommon.Type == DeviceType.Sensor) { |
| | | tmp.spk = "dryContact.standard"; |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | |
| | | #region status |
| | | Function tempFunction1 = new Function (); |
| | | 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); |
| | | #endregion |
| | | } else { |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | #region value |
| | | Function tempFunction1 = new Function (); |
| | | tempFunction1.key = "value"; |
| | | tempFunction1.data_type = "integer"; |
| | | tempFunction1.max = 10000; |
| | | tempFunction1.min = 0; |
| | | tmp.attributes.Add (tempFunction1); |
| | | #endregion |
| | | } |
| | | |
| | | |
| | | |
| | | } else { |
| | | #region on_off |
| | | Function tempFunction = new Function (); |
| | | 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); |
| | | #endregion |
| | | } |
| | | |
| | | } catch { } |
| | | return tmp; |
| | | } |
| | | |
| | | //#region 判断类型 |
| | | ///// <summary> |
| | | ///// 继电器类别 |
| | | ///// </summary> |
| | | ///// <param name="deviceType"></param> |
| | | ///// <returns></returns> |
| | | //public bool IsHDLRelayDeviceType (DeviceType deviceType) |
| | | //{ |
| | | // return false; |
| | | //} |
| | | |
| | | ///// <summary> |
| | | ///// 调光器类别 |
| | | ///// </summary> |
| | | ///// <param name="deviceType"></param> |
| | | ///// <returns></returns> |
| | | //public bool IsHDLDimmerDeviceType (DeviceType deviceType) |
| | | //{ |
| | | // return false; |
| | | //} |
| | | |
| | | ///// <summary> |
| | | ///// 遮阳类别(窗帘、卷帘、开合帘) |
| | | ///// </summary> |
| | | ///// <param name="deviceType"></param> |
| | | ///// <returns></returns> |
| | | //public bool IsHDLCurtainDeviceType (DeviceType deviceType) |
| | | //{ |
| | | // return deviceType == DeviceType.CurtainModel |
| | | // || deviceType == DeviceType.CurtainRoller |
| | | // || deviceType == DeviceType.CurtainTrietex; |
| | | //} |
| | | |
| | | ///// <summary> |
| | | ///// 传感器类别 |
| | | ///// </summary> |
| | | ///// <param name="deviceType"></param> |
| | | ///// <returns></returns> |
| | | //public bool IsHDLSensorDeviceType (DeviceType deviceType) |
| | | //{ |
| | | // return false; |
| | | //} |
| | | |
| | | ///// <summary> |
| | | ///// 网关类别 |
| | | ///// </summary> |
| | | ///// <param name="deviceType"></param> |
| | | ///// <returns></returns> |
| | | //public bool IsHDLGatewayDeviceType (DeviceType deviceType) |
| | | //{ |
| | | // return false; |
| | | //} |
| | | |
| | | ///// <summary> |
| | | ///// 空调 |
| | | ///// </summary> |
| | | ///// <param name="deviceType"></param> |
| | | ///// <returns></returns> |
| | | //public bool IsHDLACDeviceType (DeviceType deviceType) |
| | | //{ |
| | | // return false; |
| | | //} |
| | | |
| | | //#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 |
| | | |
| | | } |
| | | |
| | | [Serializable] |
| | | public class BaseCloudFeedback |
| | | { |
| | | public int code { get; set; } |
| | | public string timestamp { get; set; } |
| | | public bool isSuccess { get; set; } |
| | | public string message { get; set; } |
| | | } |
| | | |
| | | [Serializable] |
| | | public class Sids |
| | | { |
| | | public string homeId { get; set; } |
| | | public string gatewayId { get; set; } |
| | | public List<Sid> devices { get; set; } |
| | | } |
| | | |
| | | [Serializable] |
| | | public class Oids |
| | | { |
| | | public string homeId { get; set; } |
| | | public string gatewayId { get; set; } |
| | | public List<Oid> devices { get; set; } |
| | | } |
| | | |
| | | [Serializable] |
| | | public class Oid |
| | | { |
| | | public string protocolType { get; set; } |
| | | public string device_name { get; set; } |
| | | public string oid { get; set; } |
| | | public string addresses { get; set; } |
| | | public string device_model { get; set; } |
| | | |
| | | public string fw_version { get; set; } |
| | | public string hw_info { get; set; } |
| | | public string mac { get; set; } |
| | | public string deviceType { get; set; } |
| | | } |
| | | |
| | | [Serializable] |
| | | public class Sid |
| | | { |
| | | public string sid { get; set; } |
| | | public string name { get; set; } |
| | | public string [] uids { get; set; } |
| | | public string spk { get; set; } |
| | | |
| | | public string oid { get; set; } //设备模块地址 |
| | | public string omodel { get; set; } //型号 |
| | | public List<Function> attributes { get; set; } //属性列表 |
| | | } |
| | | |
| | | |
| | | [Serializable] |
| | | public class Function |
| | | { |
| | | //public string name { get; set; } |
| | | public string key { get; set; } |
| | | public List<string> value { get; set; } |
| | | public int max { get; set; } |
| | | public int min { get; set; } |
| | | public string data_type { get; set; } |
| | | } |
| | | |
| | | [Serializable] |
| | | public class SidObject : Sid |
| | | { |
| | | |
| | | } |
| | | |
| | | [Serializable] |
| | | public class IotCloud |
| | | { |
| | | public Oids modules { get; set; } //设备列表 |
| | | public Sids functions { get; set; } //功能列表 |
| | | } |
| | | |
| | | ///// <summary> |
| | | ///// 上传Oid列表 |
| | | ///// </summary> |
| | | //[Serializable] |
| | | //public class UploadOids |
| | | //{ |
| | | // public string homeId { get; set; } //住宅ID |
| | | // public Oids devices { get; set; } //设备列表 |
| | | //} |
| | | |
| | | ///// <summary> |
| | | ///// 上传Sid列表 |
| | | ///// </summary> |
| | | //[Serializable] |
| | | //public class UploadSids |
| | | //{ |
| | | // public string homeId { get; set; } //住宅ID |
| | | // public string gatewayId { get; set; } //网关ID |
| | | // 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 |
| | | |
| | | //通讯方式 1byte 编号 描述 |
| | | // 01 HDL Bus |
| | | // 02 Zigbee |
| | | // 03 KNX |
| | | // 04 Z-Wave |
| | | |
| | | //产品时间戳 4bytes 以2020年1月1日算出的时间戳0.1s为单位 |
| | | |
| | | //产品类别 1byte 编号 描述 |
| | | // 01 调光器 |
| | | // 02 继电器 |
| | | // 03 干接点模块 |
| | | // 04 传感器 |
| | | // 05 面板 |
| | | // 06 RCU |
| | | // 07 网关 |
| | | // 08 红外发射 |
| | | // 09 Android屏 |
| | | // 10 场景 |
| | | // 11 音乐播放器 |
| | | // 12 232/485转换器 |
| | | // 21 自动化 |
| | | // 22 安防防区 |
| | | // 14 窗帘模块 |
| | | // 15 HVAC |
| | | // 16 地热模块 |
| | | |
| | | //物模型类型 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 (预留) |