Compare commits
3 Commits
3a5ace4817
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 6196311cb7 | |||
| 1d77141ffe | |||
| e4610f1ffa |
Binary file not shown.
@@ -20,6 +20,7 @@ namespace Common
|
||||
public static CSRedisClient redis3;
|
||||
public static CSRedisClient redis4;
|
||||
public static CSRedisClient redis5;
|
||||
public static CSRedisClient redis6;
|
||||
public static CSRedisClient redis_webchat;
|
||||
//private static readonly string[] redisHosts = null;
|
||||
private static int SessionExpireMinutes = int.Parse(ConfigurationManager.AppSettings["session_expire_minutes"]);
|
||||
@@ -57,7 +58,7 @@ namespace Common
|
||||
|
||||
redis4 = new CSRedisClient(redisHostStr + ",password=,defaultDatabase=4");
|
||||
redis5 = new CSRedisClient(redisHostStr + ",password=,defaultDatabase=5");
|
||||
redis5 = new CSRedisClient(redisHostStr + ",password=,defaultDatabase=5");
|
||||
redis6 = new CSRedisClient(redisHostStr + ",password=,defaultDatabase=6");
|
||||
redis_webchat = new CSRedisClient(string.Format(webchat_redisstr + ",password={0},defaultDatabase=0",webchat_redis_pwd));
|
||||
|
||||
//Native subscribe
|
||||
@@ -200,6 +201,10 @@ namespace Common
|
||||
{
|
||||
client = redis5;
|
||||
}
|
||||
else if (SliceNo == 6)
|
||||
{
|
||||
client = redis6;
|
||||
}
|
||||
else
|
||||
{
|
||||
client = redis;
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace Common
|
||||
public string EndPoint { get; set; }
|
||||
public string CurrentStatus { get; set; }
|
||||
public DateTime CurrentTime { get; set; }
|
||||
public long UnixTime { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,6 +77,9 @@ namespace Common
|
||||
Marshal.Copy(bytes, startIndex, structPtr, size);
|
||||
structObj = Marshal.PtrToStructure(structPtr, type);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
finally
|
||||
{
|
||||
Marshal.FreeHGlobal(structPtr);
|
||||
|
||||
@@ -236,7 +236,7 @@ namespace CommonEntity
|
||||
/// <summary>
|
||||
/// 这个叫是否 取电 取断电状态
|
||||
/// </summary>
|
||||
public bool IsTakeCard { get; set; }
|
||||
public int IsTakeCard { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否插卡
|
||||
@@ -269,6 +269,7 @@ namespace CommonEntity
|
||||
/// 卡身份
|
||||
/// </summary>
|
||||
public int IdentityInfo { get; set; }
|
||||
public int Bright_G { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -293,6 +294,60 @@ namespace CommonEntity
|
||||
public List<KongTiao> air_conditioner { get; set; }
|
||||
public extra_data extra { get; set; }
|
||||
|
||||
|
||||
public int insert_card { get; set; }
|
||||
public int bright_g { get; set; }
|
||||
public int version { get; set; }
|
||||
}
|
||||
|
||||
public class ts_deviceitem
|
||||
{
|
||||
public short dev_type { get; set; }
|
||||
public short dev_addr { get; set; }
|
||||
public short dev_loop { get; set; }
|
||||
public int dev_data { get; set; }
|
||||
}
|
||||
public class ts_faultitem
|
||||
{
|
||||
public short dev_type { get; set; }
|
||||
public short dev_addr { get; set; }
|
||||
public short dev_loop { get; set; }
|
||||
public short error_type { get; set; }
|
||||
public int error_data { get; set; }
|
||||
}
|
||||
public class ts_controlitem
|
||||
{
|
||||
public short dev_type { get; set; }
|
||||
public short dev_addr { get; set; }
|
||||
public short dev_loop { get; set; }
|
||||
public short type_l { get; set; }
|
||||
public int type_h { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 0x36
|
||||
/// </summary>
|
||||
public class DeviceActionData
|
||||
{
|
||||
public long ts_ms { get; set; }
|
||||
public string hotel_id { get; set; }
|
||||
public string room_id { get; set; }
|
||||
public string device_id { get; set; }
|
||||
/// <summary>
|
||||
/// "上报" 或 "下发"
|
||||
/// </summary>
|
||||
public string direction { get; set; }
|
||||
|
||||
public string cmd_word { get; set; }
|
||||
public int frame_id { get; set; }
|
||||
public byte[] udp_raw { get; set; }
|
||||
public int sys_lock_status { get; set; }
|
||||
|
||||
public int report_count { get; set; }
|
||||
public int fault_count { get; set; }
|
||||
public List<ts_deviceitem> device_list { get; set; }
|
||||
public List<ts_faultitem> fault_list { get; set; }
|
||||
public List<ts_controlitem> control_list { get; set; }
|
||||
|
||||
}
|
||||
public class NengHaolog
|
||||
{
|
||||
|
||||
@@ -22,6 +22,12 @@ namespace CommonEntity
|
||||
public string RemoteEndPoint { get; set; }
|
||||
public string HexData { get; set; }
|
||||
public DateTime CurrentTime { get; set; }
|
||||
|
||||
public string MAC { get; set; }
|
||||
public string CurrentStatus { get; set; }
|
||||
public long UnixTime { get; set; }
|
||||
public byte[] LauncherVersion { get; set; }
|
||||
public byte[] RebootReason { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 新版本的设备状态
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DefineConstants>TRACE;DEBUG;AAA;BBB;CCC;</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -97,8 +97,8 @@ namespace ConsoleApplication2
|
||||
{
|
||||
|
||||
NewVersionLog s = new NewVersionLog();
|
||||
var nas= JsonConvert.SerializeObject(s);
|
||||
var data= Encoding.UTF8.GetBytes(nas);
|
||||
var nas = JsonConvert.SerializeObject(s);
|
||||
var data = Encoding.UTF8.GetBytes(nas);
|
||||
|
||||
Encoding.UTF8.GetString(data);
|
||||
|
||||
@@ -250,21 +250,80 @@ namespace ConsoleApplication2
|
||||
}
|
||||
static void RedisTest()
|
||||
{
|
||||
var redis_webchat = new CSRedisClient(string.Format("47.119.147.104:26379" + ",password={0},defaultDatabase=0", "1001^_^lool"));
|
||||
redis_webchat.HMSet("a","b","c");
|
||||
var redis_webchat = new CSRedisClient(string.Format("47.119.147.104:26379" + ",password={0},defaultDatabase=0", "1001^_^lool"));
|
||||
redis_webchat.HMSet("a", "b", "c");
|
||||
}
|
||||
static void AAA()
|
||||
{
|
||||
string nnn = "AA 55 30 00 54 33 53 41 0F 15 71 FF FF FF FF 05 07 01 00 00 00 80 07 02 00 00 00 80 07 03 00 00 00 80 07 04 00 00 00 80 07 05 00 00 00 80 CA 7C";
|
||||
var data = Tools.GetBytesFromString(nnn.Replace(" ", ""));
|
||||
string hostNumber = "233003055055";
|
||||
var cmdtype = data[8];
|
||||
var device_count = data[15];
|
||||
if (cmdtype == 0x0F)
|
||||
{
|
||||
byte[] framenolist = data.Skip(7).Take(2).ToArray();
|
||||
var zhenhao = BitConverter.ToUInt16(framenolist, 0);
|
||||
string RoomNUMBER = CSRedisCacheHelper.HMGet<string>(5, CacheKey.RoomNumber_HostNumber, hostNumber)[0];
|
||||
if (!string.IsNullOrEmpty(RoomNUMBER))
|
||||
{
|
||||
var code = Tools.HostNumberToHotelCode(hostNumber);
|
||||
DeviceActionData d1 = new DeviceActionData();
|
||||
d1.ts_ms = Tools.GetUnixTime();
|
||||
d1.hotel_id = code.ToString();
|
||||
d1.room_id = RoomNUMBER;
|
||||
d1.device_id = hostNumber;
|
||||
d1.frame_id = zhenhao;
|
||||
d1.cmd_word = "0F";
|
||||
//d1.udp_raw = Tools.ByteToString(data);
|
||||
d1.udp_raw = data;
|
||||
d1.direction = "下发";
|
||||
|
||||
List<ts_deviceitem> lll1 = new List<ts_deviceitem>();
|
||||
List<ts_faultitem> lll2 = new List<ts_faultitem>();
|
||||
List<ts_controlitem> lll3 = new List<ts_controlitem>();
|
||||
|
||||
int skip = 16;
|
||||
for (int i = 1; i <= device_count; i++)
|
||||
{
|
||||
var t1 = data.Skip(skip + (i - 1) * 6).Take(6).ToArray();
|
||||
ts_controlitem ts = new ts_controlitem();
|
||||
ts.dev_addr = t1[0];
|
||||
ts.dev_type = t1[1];
|
||||
ts.dev_loop = t1[2];
|
||||
ts.type_h = t1[3];
|
||||
ts.type_l = BitConverter.ToInt16(new byte[] { t1[5], t1[4] }, 0);
|
||||
lll3.Add(ts);
|
||||
}
|
||||
d1.control_list = lll3;
|
||||
}
|
||||
}
|
||||
}
|
||||
static void Main(string[] args)
|
||||
{
|
||||
#if AAA
|
||||
Console.WriteLine("aaaaaaaaaaaaa");
|
||||
#endif
|
||||
|
||||
BitArray bit_a = new BitArray(new byte[] { 0xAA});
|
||||
|
||||
bool bfa= bit_a.Get(0);
|
||||
bool bfaa= bit_a.Get(1);
|
||||
var ggg= BitConverter.ToString(new byte[]{0xaa,0xcc});
|
||||
AAA();
|
||||
string aaa111 = "233003";
|
||||
var bj1 = aaa111.Substring(0, 3);
|
||||
var a1 = int.Parse(bj1);
|
||||
var a2 = int.Parse(aaa111.Substring(3, 3));
|
||||
var a3 = new byte[] { Convert.ToByte(a1), Convert.ToByte(a2) };
|
||||
var uuua = BitConverter.ToUInt16(a3, 0);
|
||||
|
||||
BitArray bit_a = new BitArray(new byte[] { 0xAA });
|
||||
|
||||
bool bfa = bit_a.Get(0);
|
||||
bool bfaa = bit_a.Get(1);
|
||||
|
||||
var DDD = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffffff");
|
||||
Console.WriteLine(DDD);
|
||||
var qqqhj = CSRedisCacheHelper.Get_Partition<HostModal_Cache>("HostModalStatusReceiver_13_000000001");
|
||||
var qq223= JsonConvert.DeserializeObject<HostModal_Cache>(File.ReadAllText("3.txt"));
|
||||
var qq223 = JsonConvert.DeserializeObject<HostModal_Cache>(File.ReadAllText("3.txt"));
|
||||
RedisTest();
|
||||
Data();
|
||||
Console.ReadLine();
|
||||
|
||||
@@ -440,5 +440,9 @@ namespace Domain
|
||||
///// </summary>
|
||||
//public virtual string TCLAppSecret { get; set; }
|
||||
public virtual string ETV_HotelID { get; set; }
|
||||
public virtual int SwitchRoomStatus_PowerOff2 { get; set; }
|
||||
public virtual int SwitchRoomStatus_PowerOff4 { get; set; }
|
||||
public virtual int SwitchRoomStatus_PowerOff8 { get; set; }
|
||||
public virtual int SwitchRoomStatus_PowerOff16 { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,6 +74,10 @@
|
||||
<property name="IsPushPMSData" column="IsPushPMSData" type="bool" />
|
||||
<property name="HeTongNumber" column="HeTongNumber" type="string" />
|
||||
<property name="ETV_HotelID" column="ETV_HotelID" type="string" />
|
||||
<property name="SwitchRoomStatus_PowerOff2" column="SwitchRoomStatus_PowerOff2" type="int"/>
|
||||
<property name="SwitchRoomStatus_PowerOff4" column="SwitchRoomStatus_PowerOff4" type="int"/>
|
||||
<property name="SwitchRoomStatus_PowerOff8" column="SwitchRoomStatus_PowerOff8" type="int"/>
|
||||
<property name="SwitchRoomStatus_PowerOff16" column="SwitchRoomStatus_PowerOff16" type="int"/>
|
||||
<!--<property name="TCLAppId" column="TCLAppId" type="string" />
|
||||
<property name="TCLAppSecret" column="TCLAppSecret" type="string" />-->
|
||||
</class>
|
||||
|
||||
@@ -214,18 +214,72 @@ namespace RCUHost.Implement
|
||||
/// <param name="hostNumber"></param>
|
||||
protected void Send(byte[] data, string hostNumber, string mac)
|
||||
{
|
||||
string ipAndPort = CSRedisCacheHelper.Get<string>(hostNumber, mac);
|
||||
if (!string.IsNullOrEmpty(ipAndPort))
|
||||
try
|
||||
{
|
||||
//if (HostServer!=null)
|
||||
//{
|
||||
// logger.Error("1111111111");
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// logger.Error("222222222222222222222");
|
||||
//}
|
||||
HostServer.Send(data, ipAndPort.ToString().Split(':')[0], int.Parse(ipAndPort.ToString().Split(':')[1]));
|
||||
string ipAndPort = CSRedisCacheHelper.Get<string>(hostNumber, mac);
|
||||
if (!string.IsNullOrEmpty(ipAndPort))
|
||||
{
|
||||
//这里判断0x0F
|
||||
//AA 55 30 00 54 33 53 41 0F 15 71 FF FF FF FF
|
||||
//05
|
||||
//07 01 00 00 00 80
|
||||
//07 02 00 00 00 80
|
||||
//07 03 00 00 00 80
|
||||
//07 04 00 00 00 80
|
||||
//07 05 00 00 00 80 CA 7C
|
||||
//AA 55 11 00 54 33 53 41 0F 15 71 3D 04 92 D0 6B 15
|
||||
|
||||
var cmdtype = data[8];
|
||||
var device_count = data[15];
|
||||
if (cmdtype == 0x0F)
|
||||
{
|
||||
byte[] framenolist = data.Skip(7).Take(2).ToArray();
|
||||
var zhenhao = BitConverter.ToUInt16(framenolist, 0);
|
||||
string RoomNUMBER = CSRedisCacheHelper.HMGet<string>(5, CacheKey.RoomNumber_HostNumber, hostNumber)[0];
|
||||
if (!string.IsNullOrEmpty(RoomNUMBER))
|
||||
{
|
||||
var code = Tools.HostNumberToHotelCode(hostNumber);
|
||||
DeviceActionData d1 = new DeviceActionData();
|
||||
d1.ts_ms = Tools.GetUnixTime();
|
||||
d1.hotel_id = code.ToString();
|
||||
d1.room_id = RoomNUMBER;
|
||||
d1.device_id = hostNumber;
|
||||
d1.frame_id = zhenhao;
|
||||
d1.cmd_word = "0F";
|
||||
d1.udp_raw = data;
|
||||
d1.direction = "下发";
|
||||
|
||||
List<ts_controlitem> lll3 = new List<ts_controlitem>();
|
||||
|
||||
int skip = 16;
|
||||
for (int i = 1; i <= device_count; i++)
|
||||
{
|
||||
var t1 = data.Skip(skip + (i - 1) * 6).Take(6).ToArray();
|
||||
ts_controlitem ts = new ts_controlitem();
|
||||
ts.dev_addr = t1[0];
|
||||
ts.dev_type = t1[1];
|
||||
ts.dev_loop = t1[2];
|
||||
ts.type_h = t1[3];
|
||||
ts.type_l = BitConverter.ToInt16(new byte[] { t1[5], t1[4] }, 0);
|
||||
lll3.Add(ts);
|
||||
}
|
||||
d1.control_list = lll3;
|
||||
d1.report_count = lll3.Count;
|
||||
|
||||
|
||||
string sss = Newtonsoft.Json.JsonConvert.SerializeObject(d1);
|
||||
CSRedisCacheHelper.Publish("redis-0X36-0X0F", sss);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
HostServer.Send(data, ipAndPort.ToString().Split(':')[0], int.Parse(ipAndPort.ToString().Split(':')[1]));
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Error("发送:"+ex.Message);
|
||||
logger.Error(ex.StackTrace);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
|
||||
@@ -357,6 +357,7 @@ namespace RCUHost.Implement
|
||||
/// <param name="needPushCommandQueue">是否需要将命令放入队列</param>
|
||||
public void Send(byte[] data, IPEndPoint endPoint, bool needPushCommandQueue)
|
||||
{
|
||||
|
||||
if (udpClient != null)
|
||||
{
|
||||
#region 去掉lock
|
||||
@@ -405,6 +406,7 @@ namespace RCUHost.Implement
|
||||
DataTongJi.TotalCount.TryAdd(TotalKey, u);
|
||||
}
|
||||
|
||||
//logger.Error("升级拉取指令:" + Tools.ByteToString(data));
|
||||
udpClient.Send(data, data.Length, endPoint);
|
||||
// 使用同一个 Socket 发送回复
|
||||
//udpClient.SendTo(data, endPoint);
|
||||
@@ -831,6 +833,30 @@ namespace RCUHost.Implement
|
||||
reader.BaseStream.Position = originalPosition;
|
||||
//logger.Error("device_count error");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//故障数量,默认0
|
||||
int faultNumber = reader.ReadByte();
|
||||
for (int i = 0; i < faultNumber; i++)
|
||||
{
|
||||
string faultNo = new DeviceAddress(reader.ReadBytes(4)).ToString();//设备类型1、设备地址1、回路地址2
|
||||
byte type = reader.ReadByte();
|
||||
if (!roomStatus.Faults.ContainsKey(faultNo + type.ToString()))
|
||||
{
|
||||
roomStatus.Faults[faultNo + type.ToString()] = new FaultStaus();
|
||||
}
|
||||
roomStatus.Faults[faultNo + type.ToString()].FaultNo = faultNo;
|
||||
roomStatus.Faults[faultNo + type.ToString()].Type = type;//类型:1在线状态(0在线,1离线),2电量(0~100%),3电流,4 1901故障检测次数
|
||||
roomStatus.Faults[faultNo + type.ToString()].Data = reader.ReadByte();//内容
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
return roomStatus;
|
||||
}
|
||||
}
|
||||
@@ -1222,6 +1248,10 @@ namespace RCUHost.Implement
|
||||
|
||||
|
||||
byte cmdType = context111.SystemHeader.Value.CmdType;
|
||||
if (cmdType == 0x68)
|
||||
{
|
||||
logger.Error("收到升级返回:" + Tools.ByteToString(gga.Data));
|
||||
}
|
||||
ushort MyFrameNO = context111.SystemHeader.Value.FrameNo;
|
||||
|
||||
byte[] framenolist = BitConverter.GetBytes(MyFrameNO);
|
||||
@@ -1249,13 +1279,15 @@ namespace RCUHost.Implement
|
||||
o.CurrentStatus = "on";
|
||||
o.CurrentTime = DateTime.Now;
|
||||
o.EndPoint = EndPointStr;
|
||||
o.UnixTime = Tools.GetUnixTime();
|
||||
o.MAC = BitConverter.ToString(gga.Data.Skip(9).Take(2).ToArray());
|
||||
//新来的数据
|
||||
var n = Newtonsoft.Json.JsonConvert.SerializeObject(o);
|
||||
|
||||
|
||||
//上线
|
||||
//string EEE = CSRedisCacheHelper.Get<string>(EndPointStr);
|
||||
var EEE = CSRedisCacheHelper.Get_Partition<string>(EndPointStr, 4);
|
||||
var EEE = CSRedisCacheHelper.Get_Partition<string>(EndPointStr, 6);
|
||||
var dtstart = CSRedisCacheHelper.ForeverGet<string>(CacheKey.ServerStartTime);
|
||||
DateTime SSS = DateTime.Now;
|
||||
DateTime.TryParse(dtstart, out SSS);
|
||||
@@ -1264,7 +1296,8 @@ namespace RCUHost.Implement
|
||||
{
|
||||
CSRedisCacheHelper.Publish("redis-on_off_line", n);
|
||||
}
|
||||
CSRedisCacheHelper.Set_PartitionWithTime(EndPointStr, n, 5, 4);
|
||||
CSRedisCacheHelper.Set_PartitionWithTime(EndPointStr, n, 5, 6);
|
||||
CSRedisCacheHelper.Set_PartitionWithTime(EndPointStr, n, 20, 4);
|
||||
|
||||
|
||||
|
||||
@@ -1320,6 +1353,26 @@ namespace RCUHost.Implement
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cmdType == 0x0F)
|
||||
{
|
||||
string RoomNUMBER = CSRedisCacheHelper.HMGet<string>(5, CacheKey.RoomNumber_HostNumber, HostNNN)[0];
|
||||
if (!string.IsNullOrEmpty(RoomNUMBER))
|
||||
{
|
||||
//控制回复
|
||||
DeviceActionData d1 = new DeviceActionData();
|
||||
d1.ts_ms = Tools.GetUnixTime();
|
||||
d1.hotel_id = hotelCode;
|
||||
d1.room_id = RoomNUMBER;
|
||||
d1.device_id = HostNNN;
|
||||
d1.frame_id = MyFrameNO;
|
||||
d1.cmd_word = "0F";
|
||||
d1.udp_raw = OriginalByte;
|
||||
d1.direction = "上报";
|
||||
string sss = Newtonsoft.Json.JsonConvert.SerializeObject(d1);
|
||||
CSRedisCacheHelper.Publish("redis-0X36-0X0F", sss);
|
||||
|
||||
}
|
||||
}
|
||||
#region 01指令
|
||||
if (cmdType == 0x01)
|
||||
{
|
||||
@@ -1662,9 +1715,14 @@ namespace RCUHost.Implement
|
||||
int length = context111.Data.Length - offset - 2;
|
||||
var data = OriginalByte.Skip(offset).ToArray();
|
||||
|
||||
var LauncherVersion = data.Take(20);
|
||||
var RestartReason = data.Skip(20).Take(1);
|
||||
var LauncherVersion = data.Take(20).ToArray();
|
||||
var RestartReason = data.Skip(20).Take(1).ToArray();
|
||||
|
||||
string RoomNUMBER = CSRedisCacheHelper.HMGet<string>(5, CacheKey.RoomNumber_HostNumber, HostNNN)[0];
|
||||
if (string.IsNullOrEmpty(RoomNUMBER))
|
||||
{
|
||||
return;
|
||||
}
|
||||
NewVersionHexData ns = new NewVersionHexData();
|
||||
ns.CmdType = 0x33;
|
||||
ns.HotelCode = hotelCode;
|
||||
@@ -1672,9 +1730,17 @@ namespace RCUHost.Implement
|
||||
ns.RemoteEndPoint = EndPoint;
|
||||
ns.CurrentTime = DateTime.Now;
|
||||
ns.HexData = Tools.ByteToString(context111.Data);
|
||||
|
||||
ns.RoomNumber = RoomNUMBER;
|
||||
ns.MAC = BitConverter.ToString(OriginalByte.Skip(9).Take(2).ToArray());
|
||||
ns.CurrentStatus = "on";
|
||||
ns.UnixTime = Tools.GetUnixTime();
|
||||
ns.LauncherVersion = LauncherVersion;
|
||||
ns.RebootReason = RestartReason;
|
||||
string mns1 = Newtonsoft.Json.JsonConvert.SerializeObject(ns);
|
||||
CSRedisCacheHelper.Publish("redis-rcu-restart", mns1);
|
||||
}
|
||||
#region 取电
|
||||
if (cmdType == 0x35)
|
||||
{
|
||||
ReplyWithContent(context111, new byte[] { 0x00 }, framenolist);
|
||||
@@ -1755,6 +1821,7 @@ namespace RCUHost.Implement
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
// AA 55 35 00 54 33 53 41 34 10 80 EB 03 6B 24
|
||||
// 01 //协议版本
|
||||
@@ -1792,20 +1859,104 @@ namespace RCUHost.Implement
|
||||
//P30~P33:通道总能耗,单位:Wh(1度电 = 1KWh)
|
||||
|
||||
|
||||
#region 定时上报
|
||||
if (cmdType == 0x36)
|
||||
{
|
||||
//Reply(context111);
|
||||
string hexdata = Tools.ByteToString(context111.Data);
|
||||
|
||||
NewVersionHexData ns = new NewVersionHexData();
|
||||
ns.CmdType = 0x36;
|
||||
ns.HotelCode = hotelCode;
|
||||
ns.HostNumber = HostNNN;
|
||||
ns.RemoteEndPoint = EndPoint;
|
||||
ns.CurrentTime = DateTime.Now;
|
||||
ns.HexData = Tools.ByteToString(context111.Data);
|
||||
string RoomNUMBER = CSRedisCacheHelper.HMGet<string>(5, CacheKey.RoomNumber_HostNumber, HostNNN)[0];
|
||||
if (string.IsNullOrEmpty(RoomNUMBER))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
byte[] OriginalByte = context111.Data;
|
||||
int offset = StructConverter.SizeOf(context111.SystemHeader);
|
||||
int length = context111.Data.Length - offset - 2;
|
||||
|
||||
DeviceActionData d1 = new DeviceActionData();
|
||||
d1.ts_ms = Tools.GetUnixTime();
|
||||
d1.hotel_id = hotelCode;
|
||||
d1.room_id = RoomNUMBER;
|
||||
d1.device_id = HostNNN;
|
||||
d1.frame_id = MyFrameNO;
|
||||
d1.cmd_word = "36";
|
||||
d1.udp_raw = OriginalByte;
|
||||
d1.direction = "上报";
|
||||
|
||||
List<ts_deviceitem> lll1 = new List<ts_deviceitem>();
|
||||
List<ts_faultitem> lll2 = new List<ts_faultitem>();
|
||||
|
||||
|
||||
|
||||
using (MemoryStream stream = new MemoryStream(context111.Data, offset, length))
|
||||
{
|
||||
Status status = NewStatusParse(stream);
|
||||
if (status.SysLock)
|
||||
{
|
||||
d1.sys_lock_status = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
d1.sys_lock_status = 2;
|
||||
}
|
||||
|
||||
if (status != null && status.Devices.Count > 0)
|
||||
{
|
||||
foreach (var item in status.Devices)
|
||||
{
|
||||
string ItemKKK = item.Key;
|
||||
Device VVV = item.Value;
|
||||
|
||||
ts_deviceitem t1 = new ts_deviceitem();
|
||||
|
||||
string dizhi = VVV.Address;
|
||||
t1.dev_type = short.Parse(dizhi.Substring(0, 3));
|
||||
t1.dev_addr = short.Parse(dizhi.Substring(3, 3));
|
||||
t1.dev_loop = short.Parse(dizhi.Substring(6, 3));
|
||||
t1.dev_data = VVV.StatusReceiver;
|
||||
lll1.Add(t1);
|
||||
}
|
||||
}
|
||||
|
||||
if (status.Faults != null && status.Faults.Count > 0)
|
||||
{
|
||||
var F1 = status.Faults;
|
||||
foreach (var item in F1)
|
||||
{
|
||||
string dizhi = item.Value.FaultNo;
|
||||
ts_faultitem t1 = new ts_faultitem();
|
||||
t1.dev_type = short.Parse(dizhi.Substring(0, 3));
|
||||
t1.dev_addr = short.Parse(dizhi.Substring(3, 3));
|
||||
t1.dev_loop = short.Parse(dizhi.Substring(6, 3));
|
||||
t1.error_type = item.Value.Type;
|
||||
t1.error_data = item.Value.Data;
|
||||
lll2.Add(t1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
d1.device_list = lll1;
|
||||
d1.fault_list = lll2;
|
||||
d1.report_count = lll1.Count;
|
||||
d1.fault_count = lll2.Count;
|
||||
|
||||
string sss = Newtonsoft.Json.JsonConvert.SerializeObject(d1);
|
||||
CSRedisCacheHelper.Publish("redis-0X36-0X0F", sss);
|
||||
//Reply(context111);
|
||||
//string hexdata = Tools.ByteToString(context111.Data);
|
||||
|
||||
//NewVersionHexData ns = new NewVersionHexData();
|
||||
//ns.CmdType = 0x36;
|
||||
//ns.HotelCode = hotelCode;
|
||||
//ns.HostNumber = HostNNN;
|
||||
//ns.RemoteEndPoint = EndPoint;
|
||||
//ns.CurrentTime = DateTime.Now;
|
||||
//ns.HexData = Tools.ByteToString(context111.Data);
|
||||
//CSRedisCacheHelper.Publish("redis-rcu-hexdata", Newtonsoft.Json.JsonConvert.SerializeObject(ns));
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 定时上报
|
||||
if (cmdType == 0x34)
|
||||
{
|
||||
ReplyWithContent(context111, new byte[] { 0x00 }, framenolist);
|
||||
@@ -1921,7 +2072,7 @@ namespace RCUHost.Implement
|
||||
bool 是否取电 = false;
|
||||
ushort 是否取电_Int = 0;
|
||||
int 是否插卡 = 0;
|
||||
if (Version == 0x02)
|
||||
if (Version == 0x02 || Version == 0x03)
|
||||
{
|
||||
BitArray bit_a = new BitArray(new byte[] { TakeCardStatus });
|
||||
bool b0 = bit_a.Get(0);
|
||||
@@ -1930,16 +2081,24 @@ namespace RCUHost.Implement
|
||||
bool b3 = bit_a.Get(3);
|
||||
if (b0 == false && b1 == false)
|
||||
{
|
||||
是否取电 = false;
|
||||
//是否取电 = false;
|
||||
是否取电_Int = 0;
|
||||
}
|
||||
else if (b0 == false && b1 == true)
|
||||
{
|
||||
是否取电_Int = 2;
|
||||
}
|
||||
else if (b0 == true && b1 == false)
|
||||
{
|
||||
是否取电 = true;
|
||||
//是否取电 = true;
|
||||
是否取电_Int = 1;
|
||||
}
|
||||
|
||||
if (b2 == false && b3 == false)
|
||||
{
|
||||
是否插卡 = 0;
|
||||
}
|
||||
else if (b2 == false && b3 == true)
|
||||
{
|
||||
是否插卡 = 2;
|
||||
}
|
||||
@@ -1977,11 +2136,10 @@ namespace RCUHost.Implement
|
||||
}
|
||||
|
||||
|
||||
|
||||
//身份
|
||||
var IdentityInfo = reader.ReadByte();
|
||||
|
||||
byte[] nocard_enum = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
|
||||
byte[] nocard_enum = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A };
|
||||
//无卡逻辑状态(对应事件状态)
|
||||
//0x01:开门进入事件
|
||||
//0x02:卡在人离事件
|
||||
@@ -1991,6 +2149,8 @@ namespace RCUHost.Implement
|
||||
//0x06:室内按键触发
|
||||
//0x07:短暂人离事件
|
||||
//0x08:长时间人离事件
|
||||
//0x09:短暂人离超时
|
||||
//0x0A:长时间人离超时
|
||||
var NOCardInfo = reader.ReadByte();
|
||||
var NOCardInfo_NoFilter = NOCardInfo;
|
||||
if (!nocard_enum.Contains(NOCardInfo))
|
||||
@@ -2125,6 +2285,13 @@ namespace RCUHost.Implement
|
||||
//碳达人
|
||||
var CarbonVIP = reader.ReadByte();
|
||||
|
||||
int Bright_Va = -1;
|
||||
if (Version == 0x03)
|
||||
{
|
||||
var LiangDu = reader.ReadBytes(4);
|
||||
Bright_Va = (int)LiangDu[0];
|
||||
}
|
||||
|
||||
var CarbonVIP_NoFilter = CarbonVIP;
|
||||
byte[] carbon_enum = new byte[] { 0x01, 0x02 };
|
||||
if (!carbon_enum.Contains(CarbonVIP))
|
||||
@@ -2332,7 +2499,7 @@ namespace RCUHost.Implement
|
||||
Mac = "",
|
||||
EndPoint = EndPoint,
|
||||
Version = ((int)Version).ToString(),
|
||||
IsTakeCard = 是否取电,
|
||||
IsTakeCard = 是否取电_Int,
|
||||
IsInsertCard = 是否插卡,
|
||||
CarbonVIP = CarbonVIP,
|
||||
NengHaoList = nenghaoList,
|
||||
@@ -2347,7 +2514,8 @@ namespace RCUHost.Implement
|
||||
IdentityInfo = IdentityInfo,
|
||||
//CardID = IdentityInfo,
|
||||
CardEvent = NOCardInfo,
|
||||
PMS_Status = PMS_CurrentStatus
|
||||
PMS_Status = PMS_CurrentStatus,
|
||||
Bright_G = Bright_Va
|
||||
};
|
||||
|
||||
string mns = Newtonsoft.Json.JsonConvert.SerializeObject(ns2);
|
||||
@@ -2358,11 +2526,14 @@ namespace RCUHost.Implement
|
||||
#region TSlog
|
||||
NewVersionLog tslog = new NewVersionLog()
|
||||
{
|
||||
version = (int)Version,
|
||||
hotel_id = hotelCode,
|
||||
room_id = RoomNUMBER,
|
||||
device_id = HostNNN,
|
||||
ip = EndPoint,
|
||||
power_state = 是否取电_Int,
|
||||
insert_card = 是否插卡,
|
||||
bright_g = Bright_Va,
|
||||
cardless_state = Convert.ToUInt16(NOCardInfo_NoFilter),
|
||||
guest_type = Convert.ToUInt16(IdentityInfo),
|
||||
service_mask = BitConverter.ToUInt64(N, 0),
|
||||
@@ -2389,6 +2560,7 @@ namespace RCUHost.Implement
|
||||
logger.Error("定是上报出错:" + ex.StackTrace);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
//向服务器获取房态
|
||||
if (cmdType == 0x32)
|
||||
|
||||
@@ -827,21 +827,21 @@ namespace RCUHost.Implement
|
||||
#endregion
|
||||
case DeviceType.AirConditioner://空调
|
||||
#region 空调
|
||||
//status = device.Value.StatusReceiver >> 15;//开关
|
||||
//int mode = (device.Value.StatusReceiver >> 13) & 0x03;//模式
|
||||
//int fanSpeed = (device.Value.StatusReceiver >> 11) & 0x03;//风速
|
||||
//int valve = (device.Value.StatusReceiver >> 10) & 0x01;//阀门
|
||||
//int temperature = (device.Value.StatusReceiver >> 5) & 0x1F;//设定温度
|
||||
//int currentTemp = device.Value.StatusReceiver & 0x01F;//当前温度(室内温度)
|
||||
|
||||
|
||||
int StatusReceiver = device.Value.StatusReceiver;
|
||||
status = StatusReceiver >> 15;//开关
|
||||
int mode = (StatusReceiver >> 12) & 0x03;//模式
|
||||
int fanSpeed = (StatusReceiver >> 11) & 0x03;//风速
|
||||
int valve = (StatusReceiver >> 10) & 0x01;//阀门
|
||||
int temperature = (StatusReceiver >> 5) & 0x1F;//设定温度
|
||||
int currentTemp = StatusReceiver & 0x01F;//当前温度(室内温度)
|
||||
status = device.Value.StatusReceiver >> 15;//开关
|
||||
int mode = (device.Value.StatusReceiver >> 13) & 0x03;//模式
|
||||
int fanSpeed = (device.Value.StatusReceiver >> 11) & 0x03;//风速
|
||||
int valve = (device.Value.StatusReceiver >> 10) & 0x01;//阀门
|
||||
int temperature = (device.Value.StatusReceiver >> 5) & 0x1F;//设定温度
|
||||
int currentTemp = device.Value.StatusReceiver & 0x01F;//当前温度(室内温度)
|
||||
|
||||
|
||||
//status = StatusReceiver >> 15;//开关
|
||||
//int mode = (StatusReceiver >> 12) & 0x03;//模式
|
||||
//int fanSpeed = (StatusReceiver >> 11) & 0x03;//风速
|
||||
//int valve = (StatusReceiver >> 10) & 0x01;//阀门
|
||||
//int temperature = (StatusReceiver >> 5) & 0x1F;//设定温度
|
||||
//int currentTemp = StatusReceiver & 0x01F;//当前温度(室内温度)
|
||||
#region 任务
|
||||
if (status == 1)//设备开
|
||||
{
|
||||
|
||||
@@ -157,7 +157,7 @@ namespace RCUHost.Implement
|
||||
//来一个数据,把所有的地址拼接起来
|
||||
string YiJingChuLiGuo = CacheKey.AllReadyDealWith0E_Prefix + "_" + HostNumberOnly;
|
||||
MemoryCacheHelper.Delete(YiJingChuLiGuo);
|
||||
ProcessModal_NEW_NEW(host, status.Devices, isTriggerWelcomeMsg, context.MessageID, context.IsMonitor);//更新灯光及其他回路状态
|
||||
ProcessModal_NEW_NEW(host, status.Devices, isTriggerWelcomeMsg, context.MessageID, context.IsMonitor, context.Data, status);//更新灯光及其他回路状态
|
||||
string nnn = VVV1 + VVV2;
|
||||
if (!string.IsNullOrEmpty(nnn))
|
||||
{
|
||||
@@ -224,7 +224,7 @@ namespace RCUHost.Implement
|
||||
public static string Missionsys_Address = ConfigurationManager.AppSettings["missionsys_address"];
|
||||
public static string MQTTInfo_report_url = ConfigurationManager.AppSettings["debug_log_report_url"].ToString();
|
||||
|
||||
private void ProcessModal_NEW_NEW(Host host, ConcurrentDictionary<string, Device> devices, bool IsTriggerWelcomeMsg, string ContextMessageId, bool ismonitor)
|
||||
private void ProcessModal_NEW_NEW(Host host, ConcurrentDictionary<string, Device> devices, bool IsTriggerWelcomeMsg, string ContextMessageId, bool ismonitor, byte[] OriginalByteList, Status yuanshidata)
|
||||
{
|
||||
string UUID = "9dc6a0ee-dcf1-4385-b05f-09cb463838cd";
|
||||
UUID = host.FCS_locationUUID;
|
||||
@@ -257,6 +257,9 @@ namespace RCUHost.Implement
|
||||
bool isInsert = false;
|
||||
|
||||
StepTongJi.SendInfo(4.3, "Task开始执行设备信息处理", ContextMessageId, ismonitor);
|
||||
|
||||
List<ts_deviceitem> shebei_changeaction_list = new List<ts_deviceitem>();
|
||||
List<ts_faultitem> exception_list = new List<ts_faultitem>();
|
||||
//StringBuilder sbSQL;
|
||||
foreach (var device in devices)
|
||||
{
|
||||
@@ -1845,9 +1848,26 @@ namespace RCUHost.Implement
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
//0关闭设备,
|
||||
//1打开设备且当前设备处于关闭状态,
|
||||
//2打开设备且当前设备处于打开状态
|
||||
if (flag == 0 || flag == 1)
|
||||
{
|
||||
|
||||
ts_deviceitem t1 = new ts_deviceitem();
|
||||
|
||||
string dizhi = device.Value.Address;
|
||||
t1.dev_type = short.Parse(dizhi.Substring(0, 3));
|
||||
t1.dev_addr = short.Parse(dizhi.Substring(3, 3));
|
||||
t1.dev_loop = short.Parse(dizhi.Substring(6, 3));
|
||||
t1.dev_data = device.Value.StatusReceiver;
|
||||
shebei_changeaction_list.Add(t1);
|
||||
}
|
||||
#region 当设备或服务状态发生变化时,推送给指定的第三方接口
|
||||
if ((flag == 0 || flag == 1) && (!string.IsNullOrEmpty(host.SysHotel.DeviceStatusPushURL)))
|
||||
{
|
||||
|
||||
if (host.SysHotel.DeviceStatusPushURL.ToLower().IndexOf("wangjile") > -1)//freego过滤
|
||||
{
|
||||
switch (hostModal.Modal.ModalAddress)
|
||||
@@ -1892,18 +1912,12 @@ namespace RCUHost.Implement
|
||||
}
|
||||
|
||||
MyHttp.SendHttpData(ttt.Item1.SysHotel.DeviceStatusPushURL, resp);
|
||||
//string Key = "HttpRequest_" + resp.code + "_" + resp.roomNumber;
|
||||
//var Data = MemoryCacheHelper.Get(Key);
|
||||
//if (Data != null)
|
||||
//{
|
||||
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// //XuanZhuOperation.ReportService(ttt.Item1.SysHotel.DeviceStatusPushURL, resp);
|
||||
//}
|
||||
}, tup);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1940,6 +1954,7 @@ namespace RCUHost.Implement
|
||||
CSRedisCacheHelper.Publish("Redis-XuanZhuKafka", str111);
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1952,6 +1967,55 @@ namespace RCUHost.Implement
|
||||
}
|
||||
}
|
||||
|
||||
#region 新版本日志队列
|
||||
|
||||
byte[] OriginalByte = OriginalByteList;
|
||||
DeviceActionData d1 = new DeviceActionData();
|
||||
d1.ts_ms = Tools.GetUnixTime();
|
||||
d1.hotel_id = HOTEL_CODE;
|
||||
d1.room_id = ROOMNUMBER;
|
||||
d1.device_id = HOSTNUMBER;
|
||||
d1.frame_id = frameNo;
|
||||
d1.cmd_word = "0E";
|
||||
d1.udp_raw = OriginalByte;
|
||||
d1.direction = "上报";
|
||||
|
||||
|
||||
if (yuanshidata.SysLock)
|
||||
{
|
||||
d1.sys_lock_status = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
d1.sys_lock_status = 2;
|
||||
}
|
||||
|
||||
|
||||
if (yuanshidata.Faults != null && yuanshidata.Faults.Count > 0)
|
||||
{
|
||||
var F1 = yuanshidata.Faults;
|
||||
foreach (var item in F1)
|
||||
{
|
||||
string dizhi = item.Value.FaultNo;
|
||||
ts_faultitem t1 = new ts_faultitem();
|
||||
t1.dev_type = short.Parse(dizhi.Substring(0, 3));
|
||||
t1.dev_addr = short.Parse(dizhi.Substring(3, 3));
|
||||
t1.dev_loop = short.Parse(dizhi.Substring(6, 3));
|
||||
t1.error_type = item.Value.Type;
|
||||
t1.error_data = item.Value.Data;
|
||||
exception_list.Add(t1);
|
||||
}
|
||||
}
|
||||
|
||||
d1.device_list = shebei_changeaction_list;
|
||||
d1.fault_list = exception_list;
|
||||
d1.report_count = shebei_changeaction_list.Count;
|
||||
d1.fault_count = exception_list.Count;
|
||||
|
||||
string sss111 = Newtonsoft.Json.JsonConvert.SerializeObject(d1);
|
||||
CSRedisCacheHelper.Publish("redis-0X36-0X0F", sss111);
|
||||
#endregion
|
||||
|
||||
StepTongJi.SendInfo(5, "Task中的设备处理代码执行完毕", ContextMessageId, ismonitor);
|
||||
devices.Clear();
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@ namespace RCUHost.Implement
|
||||
foreach (var host in hosts)
|
||||
{
|
||||
SendUpdateRequest(host, fileMd5, blockNum, (byte)fileType, fileHref.Substring(fileHref.IndexOf("/")));//发送升级通知
|
||||
Thread.Sleep(300);
|
||||
this.updateHostList.Add(new UpdateHostWorker(host, hostUpdate, MessageIP, fileHref, updateFile));
|
||||
if (hostUpdate == null)//从api获取升级文件方式为null,保存主机表升级状态信息
|
||||
{
|
||||
@@ -84,6 +85,8 @@ namespace RCUHost.Implement
|
||||
public override void Process(ReceiverContext context1)
|
||||
{
|
||||
int startIndex = StructConverter.SizeOf(context1.SystemHeader);
|
||||
//var mydata = Tools.ByteToString(context1.Data);
|
||||
//logger.Error(string.Format("升级返回:{0}", mydata));
|
||||
UpdateHostPacketReply? reply1 = DecodeUpdateHostPacketReply(context1.Data, startIndex);
|
||||
var TTT = new Tuple<ReceiverContext, UpdateHostPacketReply?>(context1, reply1);
|
||||
//logger.Error(string.Format("收到tftp升级回复命令({0}:{1}):{2},解析结果:{3}", context.RemoteEndPoint.Address.ToString(), context.RemoteEndPoint.Port, Tools.ByteToString(context.Data), reply.HasValue));
|
||||
@@ -95,8 +98,8 @@ namespace RCUHost.Implement
|
||||
var context = NNN.Item1;
|
||||
var reply = NNN.Item2;
|
||||
var updateHostWorker = this.updateHostList.FirstOrDefault(r => r.Host.HostNumber == context.SystemHeader.Value.HostNumber.ToString());
|
||||
var data= Tools.ByteToString( context1.Data);
|
||||
logger.Error(string.Format("主机{0}升级返回:{1}", context.SystemHeader.Value.HostNumber.ToString(),data));
|
||||
var data = Tools.ByteToString(context1.Data);
|
||||
logger.Error(string.Format("主机{0}升级返回:{1}", context.SystemHeader.Value.HostNumber.ToString(), data));
|
||||
if (updateHostWorker == null)
|
||||
{
|
||||
return;
|
||||
@@ -214,8 +217,10 @@ namespace RCUHost.Implement
|
||||
/// <param name="updateFileMd5">升级文件MD5值</param>
|
||||
private void SendUpdateRequest(Host host, string updateFileMd5, ushort blockNum, byte fileType, string fileName)
|
||||
{
|
||||
logger.Error("主机升级:"+host.SysHotel.Code+":"+host.RoomNumber);
|
||||
logger.Error("主机升级:" + host.SysHotel.Code + ":" + host.RoomNumber + " FileMd5:" + updateFileMd5 + " FileName:" + fileName);
|
||||
byte[] data = CreateUpdateRequestPacket(updateFileMd5, blockNum, fileType, fileName);
|
||||
logger.Error("升级HostNumber为:" + host.HostNumber);
|
||||
logger.Error("升级指令为:" + Tools.ByteToString(data));
|
||||
Send(data, host.HostNumber, host.MAC);// host.IP, host.Port);
|
||||
}
|
||||
/// <summary>
|
||||
|
||||
@@ -599,6 +599,8 @@ namespace WebSite.Controllers
|
||||
/// </summary>
|
||||
/// <param name="jsonData"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
//public ActionResult GetRoomAirList_Deprecate(string jsonData)
|
||||
public ActionResult GetRoomAirList(string jsonData)
|
||||
{
|
||||
//return Json(new { IsSuccess = false, Result = "接口修改调整" }, JsonRequestBehavior.AllowGet);
|
||||
@@ -927,6 +929,7 @@ namespace WebSite.Controllers
|
||||
/// </summary>
|
||||
/// <param name="jsonData"></param>
|
||||
/// <returns></returns>
|
||||
//public ActionResult GetRoomLightList_Deprecate(string jsonData)
|
||||
public ActionResult GetRoomLightList(string jsonData)
|
||||
{
|
||||
|
||||
@@ -1059,6 +1062,7 @@ namespace WebSite.Controllers
|
||||
/// </summary>
|
||||
/// <param name="jsonData"></param>
|
||||
/// <returns></returns>
|
||||
//public ActionResult GetRoomCurtainList_Deprecate(string jsonData)
|
||||
public ActionResult GetRoomCurtainList(string jsonData)
|
||||
{
|
||||
|
||||
|
||||
@@ -345,12 +345,31 @@ namespace WebSite.Controllers
|
||||
return Json(new { IsSuccess = false, Message = "升级文件不合法!" });
|
||||
}
|
||||
string fileHref = "Uploads/room_type/" + hosts[hosts.Count - 1].RoomType.ID + "/" + fileName;//升级文件相对路径
|
||||
//string fileMd5 = "";
|
||||
//using (Stream stream = System.IO.File.Open(Tools.GetApplicationPath() + fileHref, FileMode.Open))
|
||||
//{
|
||||
// fileMd5 = Tools.ComputeFileHash(stream);
|
||||
// stream.Close();
|
||||
//}
|
||||
|
||||
|
||||
string fileMd5 = "";
|
||||
using (Stream stream = System.IO.File.Open(Tools.GetApplicationPath() + fileHref, FileMode.Open))
|
||||
string FileKey = "FileMD5_" + fileHref;
|
||||
string kkka = CSRedisCacheHelper.Get_Partition<string>(FileKey, 3);
|
||||
if (!string.IsNullOrEmpty(kkka))
|
||||
{
|
||||
fileMd5 = Tools.ComputeFileHash(stream);
|
||||
stream.Close();
|
||||
fileMd5 = kkka;
|
||||
}
|
||||
else
|
||||
{
|
||||
using (Stream stream = System.IO.File.Open(Tools.GetApplicationPath() + fileHref, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
{
|
||||
fileMd5 = Tools.ComputeFileHash(stream);
|
||||
CSRedisCacheHelper.Set_PartitionWithTime<string>(FileKey, fileMd5, 5, 3);
|
||||
stream.Close();
|
||||
}
|
||||
}
|
||||
|
||||
//HostUpdate hostUpdate = HostUpdateManager.Get(fileMd5, CurrentHotelID);
|
||||
//if (null == hostUpdate)
|
||||
//{
|
||||
@@ -423,7 +442,7 @@ namespace WebSite.Controllers
|
||||
using (Stream stream = System.IO.File.Open(Tools.GetApplicationPath() + fileHref, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
{
|
||||
fileMd5 = Tools.ComputeFileHash(stream);
|
||||
CSRedisCacheHelper.Set_PartitionWithTime<string>(FileKey, fileMd5, 60 * 60, 3);
|
||||
CSRedisCacheHelper.Set_PartitionWithTime<string>(FileKey, fileMd5, 5, 3);
|
||||
stream.Close();
|
||||
}
|
||||
}
|
||||
@@ -472,12 +491,30 @@ namespace WebSite.Controllers
|
||||
}
|
||||
//string fileHref = "Uploads/room_type/" + hosts[hosts.Count - 1].RoomType.ID + "/" + fileName;//升级文件相对路径
|
||||
string fileHref = "Uploads/room_type/" + RoomTypeID + "/" + fileName;//升级文件相对路径
|
||||
//string fileMd5 = "";
|
||||
//using (Stream stream = System.IO.File.Open(Tools.GetApplicationPath() + fileHref, FileMode.Open))
|
||||
//{
|
||||
// fileMd5 = Tools.ComputeFileHash(stream);
|
||||
// stream.Close();
|
||||
//}
|
||||
|
||||
string fileMd5 = "";
|
||||
using (Stream stream = System.IO.File.Open(Tools.GetApplicationPath() + fileHref, FileMode.Open))
|
||||
string FileKey = "FileMD5_" + fileHref;
|
||||
string kkka = CSRedisCacheHelper.Get_Partition<string>(FileKey, 3);
|
||||
if (!string.IsNullOrEmpty(kkka))
|
||||
{
|
||||
fileMd5 = Tools.ComputeFileHash(stream);
|
||||
stream.Close();
|
||||
fileMd5 = kkka;
|
||||
}
|
||||
else
|
||||
{
|
||||
using (Stream stream = System.IO.File.Open(Tools.GetApplicationPath() + fileHref, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
{
|
||||
fileMd5 = Tools.ComputeFileHash(stream);
|
||||
CSRedisCacheHelper.Set_PartitionWithTime<string>(FileKey, fileMd5, 6, 3);
|
||||
stream.Close();
|
||||
}
|
||||
}
|
||||
|
||||
HostManager1.UpdateHostC(null, fileType, fileHref, fileMd5, hosts);
|
||||
IList<string> hostNumberList = new List<string>();
|
||||
foreach (Host h in hosts)
|
||||
|
||||
@@ -7433,6 +7433,7 @@ namespace WebSite.Controllers
|
||||
{
|
||||
var action = item.action;
|
||||
var name = item.applianceName;
|
||||
//var area = item.area;
|
||||
List<HostModal> q1 = new List<HostModal>();
|
||||
if (name.Equals("灯"))
|
||||
{
|
||||
@@ -7440,6 +7441,10 @@ namespace WebSite.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
//if (!string.IsNullOrEmpty(area))
|
||||
//{
|
||||
// name = area+ name;
|
||||
//}
|
||||
q1 = hostModals.Where(A => A.Modal.Name.Equals(name) || A.Modal.AliasName.Equals(name)).ToList();
|
||||
}
|
||||
if (q1 != null && q1.Count > 0)
|
||||
@@ -7473,8 +7478,14 @@ namespace WebSite.Controllers
|
||||
{
|
||||
var action = item.action;
|
||||
var name = item.applianceName;
|
||||
//var area = item.area;
|
||||
var value = item.value;
|
||||
var q1 = hostModals.Where(A => A.Modal.Type == DeviceType.AirConditioner && (A.Modal.Name.Equals(name)||A.Modal.AliasName.Equals(name)));
|
||||
//if (!string.IsNullOrEmpty(area))
|
||||
//{
|
||||
// name = area + name;
|
||||
//}
|
||||
|
||||
var q1 = hostModals.Where(A => A.Modal.Type == DeviceType.AirConditioner && (A.Modal.Name.Equals(name) || A.Modal.AliasName.Equals(name)));
|
||||
foreach (var item_inter in q1)
|
||||
{
|
||||
int status = 0;
|
||||
@@ -7553,7 +7564,12 @@ namespace WebSite.Controllers
|
||||
{
|
||||
var action = item.action;
|
||||
var name = item.applianceName;
|
||||
//var area = item.area;
|
||||
int hid = int.Parse(hotelid);
|
||||
//if (!string.IsNullOrEmpty(area))
|
||||
//{
|
||||
// name = area + name;
|
||||
//}
|
||||
var scene = RoomTypeSceneManager.LoadAll().Where(A => A.HotelID == hid && A.Name.Equals(name)).FirstOrDefault();
|
||||
if (scene != null)
|
||||
{
|
||||
@@ -7581,7 +7597,7 @@ namespace WebSite.Controllers
|
||||
i.RequestId = msgid;
|
||||
i.Platform = "ETV";
|
||||
|
||||
i.CommandDescription = "success: 控制设备"+JsonConvert.SerializeObject(lla);
|
||||
i.CommandDescription = "success: 控制设备" + JsonConvert.SerializeObject(lla);
|
||||
SendMQTTData.Send(i);
|
||||
}
|
||||
return Json(new { code = 200, msg = "控制成功" }, JsonRequestBehavior.AllowGet);
|
||||
@@ -7607,6 +7623,7 @@ namespace WebSite.Controllers
|
||||
public string action { get; set; }
|
||||
public string applianceName { get; set; }
|
||||
public string value { get; set; }
|
||||
//public string area { get; set; }
|
||||
}
|
||||
public class TV_ResponseData
|
||||
{
|
||||
|
||||
@@ -306,6 +306,10 @@ namespace WebSite.Controllers
|
||||
sysHotel.IsPushPMSData = entity.IsPushPMSData;
|
||||
sysHotel.HeTongNumber = entity.HeTongNumber;
|
||||
sysHotel.ETV_HotelID = entity.ETV_HotelID;
|
||||
sysHotel.SwitchRoomStatus_PowerOff2 = entity.SwitchRoomStatus_PowerOff2;
|
||||
sysHotel.SwitchRoomStatus_PowerOff4 = entity.SwitchRoomStatus_PowerOff4;
|
||||
sysHotel.SwitchRoomStatus_PowerOff8 = entity.SwitchRoomStatus_PowerOff8;
|
||||
sysHotel.SwitchRoomStatus_PowerOff16 = entity.SwitchRoomStatus_PowerOff16;
|
||||
//sysHotel.TCLAppId = entity.TCLAppId;
|
||||
//sysHotel.TCLAppSecret = entity.TCLAppSecret;
|
||||
SysHotelManager.Update(sysHotel);
|
||||
@@ -390,6 +394,12 @@ namespace WebSite.Controllers
|
||||
TakeOut.SysHotel.IsPushPMSData = entity.IsPushPMSData;
|
||||
TakeOut.SysHotel.HeTongNumber = entity.HeTongNumber;
|
||||
TakeOut.SysHotel.ETV_HotelID = entity.ETV_HotelID;
|
||||
|
||||
|
||||
TakeOut.SysHotel.SwitchRoomStatus_PowerOff2 = entity.SwitchRoomStatus_PowerOff2;
|
||||
TakeOut.SysHotel.SwitchRoomStatus_PowerOff4 = entity.SwitchRoomStatus_PowerOff4;
|
||||
TakeOut.SysHotel.SwitchRoomStatus_PowerOff8 = entity.SwitchRoomStatus_PowerOff8;
|
||||
TakeOut.SysHotel.SwitchRoomStatus_PowerOff16 = entity.SwitchRoomStatus_PowerOff16;
|
||||
//TakeOut.SysHotel.TCLAppId = entity.TCLAppId;
|
||||
//TakeOut.SysHotel.TCLAppSecret = entity.TCLAppSecret;
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ namespace WebSite
|
||||
private IRoomStatusManager RoomStatusManager;
|
||||
private IDeviceControlReceiver DeviceControlReceiver;
|
||||
private IOverviewManager OverviewManager { get; set; }
|
||||
public IHostModalManager HostModalManager { get; set; }
|
||||
|
||||
public static IHostServer hostServer { get; set; }
|
||||
//private IGroupManager GroupManager;
|
||||
@@ -57,7 +58,7 @@ namespace WebSite
|
||||
private object _lock = new object(), _lock1 = new object();
|
||||
//private List<Host> _hosts = null;//西软pms对接使用
|
||||
|
||||
public static int TimeInterval = 10;
|
||||
public static int TimeInterval = 1;
|
||||
public static string IntervalKey = "TimeInterval";
|
||||
/// <summary>
|
||||
/// 凌晨ECO
|
||||
@@ -521,6 +522,7 @@ namespace WebSite
|
||||
RoomStatusManager = (IRoomStatusManager)cxt.GetObject("Manager.RoomStatus");
|
||||
DeviceControlReceiver = (IDeviceControlReceiver)cxt.GetObject("RCUHost.DeviceControlReceiver");
|
||||
OverviewManager = (IOverviewManager)cxt.GetObject("Manager.Overview");
|
||||
HostModalManager = (IHostModalManager)cxt.GetObject("Manager.HostModal");
|
||||
_client = new syncstatus.syncstatusSoapClient();
|
||||
|
||||
Timer timer2 = new Timer(20000);//每20秒扫描一次
|
||||
@@ -735,6 +737,19 @@ namespace WebSite
|
||||
Host host = HostManager.GetByRoomNumber(T1.Item2, T1.Item1);
|
||||
if (host != null)
|
||||
{
|
||||
int status_id2 = host.SysHotel.SwitchRoomStatus_PowerOff2;
|
||||
int status_id4 = host.SysHotel.SwitchRoomStatus_PowerOff4;
|
||||
int status_id8 = host.SysHotel.SwitchRoomStatus_PowerOff8;
|
||||
int status_id16 = host.SysHotel.SwitchRoomStatus_PowerOff16;
|
||||
if (status_id2 != 0 || status_id4 != 0 || status_id8 != 0 || status_id16 != 0)
|
||||
{
|
||||
if (status_id2 == roomStatus.ID||status_id4==roomStatus.ID||status_id8==roomStatus.ID||status_id16==roomStatus.ID)
|
||||
{
|
||||
HostModal h1 = new HostModal();
|
||||
h1.Modal = new RoomTypeModal() { ModalAddress = "004000001", Type = DeviceType.ServiceInfo };
|
||||
HostModalManager.SetDevice(host, h1, 2, 0, 25, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
HostManager.ChangeRoomStatus(host, T1.Item3);
|
||||
string Key = CacheKey.SyncRoomStatus + "_" + host.HostNumber;
|
||||
RoomStatusRequest ddd = new RoomStatusRequest();
|
||||
|
||||
36
WebSite/Resource/en-US.Designer.cs
generated
36
WebSite/Resource/en-US.Designer.cs
generated
@@ -1303,6 +1303,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Apartment for Rent 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ChuZu {
|
||||
get {
|
||||
return ResourceManager.GetString("ChuZu", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Circuit 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1663,6 +1672,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 For Rent 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string DaiZu {
|
||||
get {
|
||||
return ResourceManager.GetString("DaiZu", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Data 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -6028,6 +6046,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Switch RoomStatus To Power Off 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string RoomStatusSwitch {
|
||||
get {
|
||||
return ResourceManager.GetString("RoomStatusSwitch", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 Temp 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -7657,6 +7684,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 CheckOut 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TuiFang {
|
||||
get {
|
||||
return ResourceManager.GetString("TuiFang", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 TV 的本地化字符串。
|
||||
/// </summary>
|
||||
|
||||
@@ -2899,4 +2899,16 @@ Single circuit status</value>
|
||||
<data name="WelcomeBGM" xml:space="preserve">
|
||||
<value>WelcomeBGM</value>
|
||||
</data>
|
||||
<data name="ChuZu" xml:space="preserve">
|
||||
<value>Apartment for Rent</value>
|
||||
</data>
|
||||
<data name="DaiZu" xml:space="preserve">
|
||||
<value>For Rent</value>
|
||||
</data>
|
||||
<data name="TuiFang" xml:space="preserve">
|
||||
<value>CheckOut</value>
|
||||
</data>
|
||||
<data name="RoomStatusSwitch" xml:space="preserve">
|
||||
<value>Switch RoomStatus To Power Off</value>
|
||||
</data>
|
||||
</root>
|
||||
36
WebSite/Resource/zh-CN.Designer.cs
generated
36
WebSite/Resource/zh-CN.Designer.cs
generated
@@ -1302,6 +1302,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 出租 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ChuZu {
|
||||
get {
|
||||
return ResourceManager.GetString("ChuZu", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 回路 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1662,6 +1671,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 待租 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string DaiZu {
|
||||
get {
|
||||
return ResourceManager.GetString("DaiZu", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 数据 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -6045,6 +6063,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 状态更新断电 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string RoomStatusSwitch {
|
||||
get {
|
||||
return ResourceManager.GetString("RoomStatusSwitch", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 客房温度 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -7665,6 +7692,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 退房 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TuiFang {
|
||||
get {
|
||||
return ResourceManager.GetString("TuiFang", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 电视 的本地化字符串。
|
||||
/// </summary>
|
||||
|
||||
@@ -2901,4 +2901,16 @@
|
||||
<data name="WelcomeBGM" xml:space="preserve">
|
||||
<value>欢迎背景乐</value>
|
||||
</data>
|
||||
<data name="ChuZu" xml:space="preserve">
|
||||
<value>出租</value>
|
||||
</data>
|
||||
<data name="DaiZu" xml:space="preserve">
|
||||
<value>待租</value>
|
||||
</data>
|
||||
<data name="RoomStatusSwitch" xml:space="preserve">
|
||||
<value>状态更新断电</value>
|
||||
</data>
|
||||
<data name="TuiFang" xml:space="preserve">
|
||||
<value>退房</value>
|
||||
</data>
|
||||
</root>
|
||||
36
WebSite/Resource/zh-TW.Designer.cs
generated
36
WebSite/Resource/zh-TW.Designer.cs
generated
@@ -1302,6 +1302,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 出租 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string ChuZu {
|
||||
get {
|
||||
return ResourceManager.GetString("ChuZu", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 回路 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -1662,6 +1671,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 待租 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string DaiZu {
|
||||
get {
|
||||
return ResourceManager.GetString("DaiZu", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 數據 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -6045,6 +6063,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 切換狀態即斷電 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string RoomStatusSwitch {
|
||||
get {
|
||||
return ResourceManager.GetString("RoomStatusSwitch", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 客房溫度 的本地化字符串。
|
||||
/// </summary>
|
||||
@@ -7667,6 +7694,15 @@ namespace WebSite.Resource {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 退房 的本地化字符串。
|
||||
/// </summary>
|
||||
internal static string TuiFang {
|
||||
get {
|
||||
return ResourceManager.GetString("TuiFang", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找类似 電視 的本地化字符串。
|
||||
/// </summary>
|
||||
|
||||
@@ -2903,4 +2903,16 @@
|
||||
<data name="WelcomeBGM" xml:space="preserve">
|
||||
<value>歡迎詞背景樂</value>
|
||||
</data>
|
||||
<data name="ChuZu" xml:space="preserve">
|
||||
<value>出租</value>
|
||||
</data>
|
||||
<data name="DaiZu" xml:space="preserve">
|
||||
<value>待租</value>
|
||||
</data>
|
||||
<data name="RoomStatusSwitch" xml:space="preserve">
|
||||
<value>切換狀態即斷電</value>
|
||||
</data>
|
||||
<data name="TuiFang" xml:space="preserve">
|
||||
<value>退房</value>
|
||||
</data>
|
||||
</root>
|
||||
BIN
WebSite/Uploads/V2/room_type/3/C1F_A_L4_43_260102_NM.bin
Normal file
BIN
WebSite/Uploads/V2/room_type/3/C1F_A_L4_43_260102_NM.bin
Normal file
Binary file not shown.
@@ -388,6 +388,17 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="right">
|
||||
<label for="IsPowerOff1"> <%: Html.Language("RoomStatusSwitch")%>: </label>
|
||||
</th>
|
||||
<td>
|
||||
<input id="SwitchRoomStatus_PowerOff2" type="checkbox" name="SwitchRoomStatus_PowerOff2" style="vertical-align: top;" value="2" <%: Model.SwitchRoomStatus_PowerOff2==2 ? "checked='checked'" : "" %> /> <%: Html.Language("ChuZu")%>
|
||||
<input id="SwitchRoomStatus_PowerOff4" type="checkbox" name="SwitchRoomStatus_PowerOff4" style="vertical-align: top;" value="4" <%: Model.SwitchRoomStatus_PowerOff4==4 ? "checked='checked'" : "" %> /> <%: Html.Language("DaiZu")%>
|
||||
<input id="SwitchRoomStatus_PowerOff8" type="checkbox" name="SwitchRoomStatus_PowerOff8" style="vertical-align: top;" value="8" <%: Model.SwitchRoomStatus_PowerOff8==8 ? "checked='checked'" : "" %> /> <%: Html.Language("TuiFang")%>
|
||||
</td>
|
||||
</tr>
|
||||
<%-- TCL 功能--%>
|
||||
<%-- <tr>
|
||||
<th align="right">
|
||||
|
||||
Reference in New Issue
Block a user