Files
Web_F305_Mqtt_Prod/MQTTServerSideAPI/Global.asax.cs

342 lines
16 KiB
C#
Raw Normal View History

2025-11-26 11:32:30 +08:00
using FluentScheduler;
using MQTTServerSideAPI.Controllers;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using TencentCloud.Common.Profile;
using TencentCloud.Common;
using WebGrease;
using MySql.Data.MySqlClient;
using TencentCloud.Iotcloud.V20180614;
using TencentCloud.Iotcloud.V20180614.Models;
using System.Net.NetworkInformation;
using System.Threading;
namespace MQTTServerSideAPI
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{ //ע<>붨ʱ<EBB6A8><CAB1><EFBFBD><EFBFBD>
MyRegistry.GoWork();
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
public class MyRegistry : Registry
{
public static string strSqliteConn = @"Server=blv-cloud-db.mysql.rds.aliyuncs.com;Database=mqqtmysql;Uid=blv_rcu;Pwd=fnadiaJDIJ7546;charset=utf8;port=3307;";
//<2F>޲ι<DEB2><CEB9><EFBFBD><ECBAAF>
public MyRegistry()
{
//ÿ30<33><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>豸״̬
Schedule(() =>
{
try
{
// ʵ<><CAB5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD>˻<EFBFBD> SecretId <20><> SecretKey<65><79><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>Կ<EFBFBD>Եı<D4B5><C4B1><EFBFBD>
// <20><><EFBFBD><EFBFBD>й¶<D0B9><C2B6><EFBFBD>ܻᵼ<DCBB><E1B5BC> SecretId <20><> SecretKey й¶<D0B9><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>İ<EFBFBD>ȫ<EFBFBD>ԡ<EFBFBD><D4A1><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><C3B8><EFBFBD>ȫ<EFBFBD>ķ<EFBFBD>ʽ<EFBFBD><CABD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><CEBC><EFBFBD>https://cloud.tencent.com/document/product/1278/85305
// <20><>Կ<EFBFBD><D4BF>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨ https://console.cloud.tencent.com/cam/capi <20><><EFBFBD>л<EFBFBD>ȡ
Credential cred = new Credential
{
SecretId = "AKIDKhz84sbEqFPRK1Uo0zUnwwjNp4884vc4",
SecretKey = "JQ8qZGxgQAtbCfvxb7VqzxujOtFVb1KT"
};
// ʵ<><CAB5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>clientѡ<74><EFBFBD><EEA3AC>ѡ<EFBFBD>ģ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ClientProfile clientProfile = new ClientProfile();
// ʵ<><CAB5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>httpѡ<70><EFBFBD><EEA3AC>ѡ<EFBFBD>ģ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HttpProfile httpProfile = new HttpProfile();
httpProfile.Endpoint = ("iotcloud.tencentcloudapi.com");
clientProfile.HttpProfile = httpProfile;
// ʵ<><CAB5><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7>client<6E><74><EFBFBD><EFBFBD>,clientProfile<6C>ǿ<EFBFBD>ѡ<EFBFBD><D1A1>
IotcloudClient client = new IotcloudClient(cred, "ap-guangzhou", clientProfile);
// ʵ<><CAB5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ÿ<><C3BF><EFBFBD>ӿڶ<D3BF><DAB6><EFBFBD><EFBFBD><EFBFBD>Ӧһ<D3A6><D2BB>request<73><74><EFBFBD><EFBFBD>
DescribeDevicesRequest req = new DescribeDevicesRequest();
req.ProductId = "HICL5RNXAU";
req.Offset = 0;
req.Limit = 250;
// <20><><EFBFBD>ص<EFBFBD>resp<73><70>һ<EFBFBD><D2BB>DescribeDevicesResponse<73><65>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
DescribeDevicesResponse resp = client.DescribeDevicesSync(req);
// <20><><EFBFBD><EFBFBD>json<6F><6E>ʽ<EFBFBD><CABD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ذ<EFBFBD>
var abs = AbstractModel.ToJsonString(resp);
apifanhinfo shujiu = JsonConvert.DeserializeObject<apifanhinfo>(abs);
DataSet ds = new DataSet();
string strSqlCmd = "SELECT DeviceName,Online FROM deviceinformation ";
using (MySqlConnection connection = new MySqlConnection(strSqliteConn))
{
using (MySqlCommand cmd = new MySqlCommand())
{
connection.Open();
cmd.Connection = connection;
MySqlDataAdapter command = new MySqlDataAdapter(strSqlCmd, connection);
command.Fill(ds);
}
}
List<string> devname = new List<string>();
List<int> devOnline = new List<int>();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string namessdd = ds.Tables[0].Rows[i]["DeviceName"].ToString();
int on = int.Parse(ds.Tables[0].Rows[i]["Online"].ToString());
devOnline.Add(on);
devname.Add(namessdd);
}
string sql = "";
List<deviceinformation> list = shujiu.Devices.Where(x => devname.Contains(x.DeviceName)).ToList();
List<deviceinformation> lists = shujiu.Devices.Where(x => !devname.Contains(x.DeviceName)).ToList();
string ip = "";
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
// <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
foreach (NetworkInterface networkInterface in interfaces)
{
// <20><>ȡIP<49><50>ַ
IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();
UnicastIPAddressInformationCollection ipAddresses = ipProperties.UnicastAddresses;
// <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>IP<49><50>ַ
foreach (UnicastIPAddressInformation ipAddress in ipAddresses)
{
// <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>ΪIPv4<76><34>ַ
if (ipAddress.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
//<2F><><EFBFBD>˱<EFBFBD><CBB1><EFBFBD>ip
if (ipAddress.Address.ToString() != "127.0.0.1")
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip
ip = ipAddress.Address.ToString();
}
}
}
}
sql = "insert into programeventlog(eventname,modifycontent,ip,ctime) value(";
sql += "'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>޸ı<DEB8><C4B1><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>豸״̬<D7B4><CCAC>ÿ30<33><30>ִ<EFBFBD><D6B4>һ<EFBFBD><D2BB>',";
sql += "'ȫ<><C8AB><EFBFBD>豸',";
//sql += list[i].Online + ",";
sql += "'" + ip + "',";
sql += "'" + DateTime.Now + "')";
using (MySqlConnection connection = new MySqlConnection(strSqliteConn))
{
using (MySqlCommand cmd = new MySqlCommand())
{
connection.Open();
cmd.Connection = connection;
cmd.CommandText = sql;
int retRecAffected = cmd.ExecuteNonQuery();
}
}
if (list.Count() > 0)
{ //sql<71><6C><EFBFBD><EFBFBD>
//UPDATE deviceinformation set Online = 1 where DeviceName = 'F305-00178'
for (int i = 0; i < list.Count(); i++)
{
sql = "UPDATE deviceinformation set Online = ";
sql += list[i].Online;
sql += " where DeviceName = ";
sql += "'" + list[i].DeviceName + "'";
using (MySqlConnection connection = new MySqlConnection(strSqliteConn))
{
using (MySqlCommand cmd = new MySqlCommand())
{
connection.Open();
cmd.Connection = connection;
var strSql = sql;
cmd.CommandText = strSql;
int retRecAffected = cmd.ExecuteNonQuery();
}
}
if (list[i].Online == 0 || list[i].Online == 3)
{
sql = "UPDATE deviceinformation set districtinfo = ";
sql += "' ',";
sql += "powerintakestatus=";
sql += "' ',";
sql += "Power=";
sql += "' ',";
sql += "pir1status=";
sql += "' ',";
sql += "pir2status=";
sql += "' ',";
sql += "pir3status=";
sql += "' ',";
sql += "pir4status=";
sql += "' ',";
sql += "gatemagnetstatus=";
sql += "' '";
sql += " where DeviceName = ";
sql += "'" + list[i].DeviceName + "'";
using (MySqlConnection connection = new MySqlConnection(strSqliteConn))
{
using (MySqlCommand cmd = new MySqlCommand())
{
connection.Open();
cmd.Connection = connection;
var strSql = sql;
cmd.CommandText = strSql;
int retRecAffected = cmd.ExecuteNonQuery();
}
}
}
}
}
if (lists.Count() > 0)
{
//sql<71><6C><EFBFBD><EFBFBD>
// insert into deviceinformation(DeviceName, Online, LoginTime, Version,
//DeviceCert, DevicePsk, DeviceType, Imei, Isp, ConnIP, LastUpdateTime, LoraDevEui,LoraMoteType, FirstOnlineTime, LastOfflineTime, CreateTime, LogLevel, CertState, EnableState,
//ClientIP, FirmwareUpdateTime, CreateUserId, NBIoTDeviceID)value(
//'1', 1, '1211321', '12331424', '123424242253', 'bdsnnskj', 2, 'daghj', 'safdag', 'vsghs','11', '1213', 1, 'wqewe', 'ahdauf', 'adawd', 12, 2, 3, 'dwda', 'dada', 12, '1221212')
for (int i = 0; i < lists.Count(); i++)
{
sql = "insert into deviceinformation(DeviceName, Online, LoginTime, Version,DeviceCert, DevicePsk, DeviceType, Imei, Isp, ConnIP, LastUpdateTime, LoraDevEui,LoraMoteType, FirstOnlineTime, LastOfflineTime, CreateTime, LogLevel, CertState, EnableState,ClientIP, FirmwareUpdateTime, CreateUserId, NBIoTDeviceID) value(";
sql += "'" + lists[i].DeviceName + "',";
sql += lists[i].Online + ",";
sql += "'" + lists[i].LoginTime + "',";
sql += "'" + lists[i].Version + "',";
sql += "'" + lists[i].DeviceCert + "',";
sql += "'" + lists[i].DevicePsk + "',";
sql += lists[i].DeviceType + ",";
sql += "'" + lists[i].Imei + "',";
sql += "'" + lists[i].Isp + "',";
sql += "'" + lists[i].ConnIP + "',";
sql += "'" + lists[i].LastUpdateTime + "',";
sql += "'" + lists[i].LoraDevEui + "',";
sql += lists[i].LoraMoteType + ",";
sql += "'" + lists[i].FirstOnlineTime + "',";
sql += "'" + lists[i].LastOfflineTime + "',";
sql += "'" + lists[i].CreateTime + "',";
sql += lists[i].LogLevel + ",";
sql += lists[i].CertState + ",";
sql += lists[i].EnableState + ",";
sql += "'" + lists[i].ClientIP + "',";
sql += "'" + lists[i].FirmwareUpdateTime + "',";
sql += lists[i].CreateUserId + ",";
sql += "'" + lists[i].NBIoTDeviceID + "')";
using (MySqlConnection connection = new MySqlConnection(strSqliteConn))
{
using (MySqlCommand cmd = new MySqlCommand())
{
connection.Open();
cmd.Connection = connection;
var strSql = sql;
cmd.CommandText = strSql;
int retRecAffected = cmd.ExecuteNonQuery();
}
}
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
//SQLiteDBHelper.ClearAllCallinRecord();
//if (!SyncHotelServer.SyncHotelGroups())
// Logs.WriteTimingUDPLog("2:00ִ<30>ж<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>--<2D><><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ʧ<EFBFBD><CAA7>~");
}).ToRunNow().AndEvery(30).Seconds();
//<2F><><EFBFBD><EFBFBD>ִ<EFBFBD>У<EFBFBD>֮<EFBFBD><D6AE>ÿ<EFBFBD>µĵ<C2B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ3<D2BB><33><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
//Schedule(() =>
//{
// string sql = "";
// string ip = "";
// // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
// NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
// // <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
// foreach (NetworkInterface networkInterface in interfaces)
// {
// // <20><>ȡIP<49><50>ַ
// IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();
// UnicastIPAddressInformationCollection ipAddresses = ipProperties.UnicastAddresses;
// // <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>IP<49><50>ַ
// foreach (UnicastIPAddressInformation ipAddress in ipAddresses)
// {
// // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD>ΪIPv4<76><34>ַ
// if (ipAddress.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
// {
// //<2F><><EFBFBD>˱<EFBFBD><CBB1><EFBFBD>ip
// if (ipAddress.Address.ToString() != "127.0.0.1")
// {
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip
// ip = ipAddress.Address.ToString();
// }
// }
// }
// }
// sql = "insert into programeventlog(eventname,modifycontent,ip,ctime) value(";
// sql += "'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>uploginfo',";
// sql += "'30<33><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',";
// //sql += list[i].Online + ",";
// sql += "'" + ip + "',";
// sql += "'" + DateTime.Now + "')";
// using (MySqlConnection connection = new MySqlConnection(strSqliteConn))
// {
// using (MySqlCommand cmd = new MySqlCommand())
// {
// connection.Open();
// cmd.Connection = connection;
// cmd.CommandText = sql;
// int retRecAffected = cmd.ExecuteNonQuery();
// }
// }
// //log.LogTrace("job started at " + DateTime.Now);
// //Thread.Sleep(10000);
// //log.LogTrace("job ended at" + DateTime.Now);
//}).ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);
//Schedule(() =>
//{
//}).ToRunNow().AndEvery(30).Seconds();
//.ToRunEvery(0).Days().At(21, 00);
//Schedule(() =>
//{
// SyncHotelServer.SyncAutho();
//}).ToRunEvery(0).Days().At(2, 05);
//ÿ<><C3BF>2<EFBFBD><32>
//Schedule<MyJob>().ToRunEvery(0).Days().At(2, 10);
}
/// <summary>
/// ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>Ȩ
/// </summary>
public static void GoWork()
{
JobManager.Initialize(new MyRegistry());
}
}
}