2025-05-19 09:54:33 +08:00
|
|
|
|
#include "Application.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "common/Utils.h"
|
|
|
|
|
|
|
2025-07-18 09:08:09 +08:00
|
|
|
|
#include "Config.h"
|
|
|
|
|
|
#include "app/Dao.h"
|
|
|
|
|
|
#include "app/Device.h"
|
|
|
|
|
|
|
2025-05-19 09:54:33 +08:00
|
|
|
|
void Application::init()
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
Config::init("assets/config/app.json");
|
|
|
|
|
|
|
|
|
|
|
|
// 设置数据库配置
|
|
|
|
|
|
DaoEntity::setOption(Config::option.database.host,
|
|
|
|
|
|
Config::option.database.port,
|
|
|
|
|
|
Config::option.database.user,
|
|
|
|
|
|
Config::option.database.passwd,
|
|
|
|
|
|
Config::option.database.dbname);
|
|
|
|
|
|
XLOGI() << "[APP] set database option: host=" << Config::option.database.host
|
|
|
|
|
|
<< ", port=" << Config::option.database.port
|
|
|
|
|
|
<< ", user=" << Config::option.database.user
|
|
|
|
|
|
<< ", dbname=" << Config::option.database.dbname;
|
|
|
|
|
|
|
|
|
|
|
|
// 连接数据库,读取基础信息
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 读取设备信息,连接设备
|
|
|
|
|
|
this->initDevice();
|
|
|
|
|
|
std::thread([=]() { runThreadDevice(); }).detach();
|
|
|
|
|
|
|
|
|
|
|
|
// 创建主业务循环线程
|
|
|
|
|
|
std::thread([=]() { runThreadMain(); }).detach();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-08-19 17:16:54 +08:00
|
|
|
|
|
|
|
|
|
|
static void addDeviceTest(vector<DataFields>& v, int device_id, int type, std::string name, std::string code, int is_open, std::string attrs = "{}")
|
|
|
|
|
|
{
|
|
|
|
|
|
DataFields fields;
|
|
|
|
|
|
fields.set("device_id", device_id);
|
|
|
|
|
|
fields.set("type", type);
|
|
|
|
|
|
fields.set("name", name);
|
|
|
|
|
|
fields.set("code", code);
|
|
|
|
|
|
fields.set("is_open", is_open);
|
|
|
|
|
|
fields.set("attrs", attrs);
|
|
|
|
|
|
v.push_back(fields);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-18 09:08:09 +08:00
|
|
|
|
void Application::initDevice()
|
|
|
|
|
|
{
|
|
|
|
|
|
DaoEntity dao("");
|
|
|
|
|
|
std::string sql = "select * from device;";
|
|
|
|
|
|
vector<DataFields> result;
|
2025-08-19 17:16:54 +08:00
|
|
|
|
//dao.exec(sql, result);
|
|
|
|
|
|
addDeviceTest(result, 1, 1, "变压器", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 2, 2, "配电柜1", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 3, 3, "电表", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 4, 4, "门禁", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 5, 5, "空调", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 6, 6, "照明", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 7, 7, "消防", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 8, 8, "光照监测设备", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 9, 9, "风速监测设备", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 10, 10, "温湿度监测设备", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 11, 11, "烟感监测设备", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 12, 12, "水浸传感器", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 13, 13, "视频监控", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 14, 101, "逆变器", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 15, 102, "汇流箱", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 16, 103, "光伏板", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 17, 104, "风力发电机", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 18, 105, "储能变流器", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 19, 106, "储能电池", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 20, 107, "BMS", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 21, 108, "充电桩", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 22, 103, "光伏板-1000", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 23, 108, "充电桩-000001", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 24, 103, "光伏板-1001", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 25, 103, "光伏板-1002", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 26, 103, "光伏板-1003", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 27, 103, "光伏板-1004", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 28, 103, "光伏板-1005", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 29, 103, "光伏板-1006", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 30, 103, "光伏板-1007", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 31, 103, "光伏板-1008", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 32, 103, "光伏板-1009", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 33, 103, "光伏板-1010", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 34, 103, "光伏板-1011", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 35, 103, "光伏板-1012", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 36, 106, "储能电池-001", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 37, 106, "储能电池-005", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 38, 106, "储能电池-002", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 39, 106, "储能电池-003", "", 1);
|
|
|
|
|
|
addDeviceTest(result, 40, 106, "储能电池-004", "", 1);
|
|
|
|
|
|
|
2025-07-18 09:08:09 +08:00
|
|
|
|
for (auto& fields: result)
|
|
|
|
|
|
{
|
|
|
|
|
|
Device::add(fields);
|
|
|
|
|
|
}
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Application::runThreadMain()
|
|
|
|
|
|
{
|
2025-07-18 09:08:09 +08:00
|
|
|
|
while (!isQuit())
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Application::runThreadDevice()
|
|
|
|
|
|
{
|
|
|
|
|
|
while (!isQuit())
|
|
|
|
|
|
{
|
|
|
|
|
|
|
2025-05-19 09:54:33 +08:00
|
|
|
|
|
|
|
|
|
|
|
2025-07-18 09:08:09 +08:00
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
|
|
|
|
|
}
|
2025-05-19 09:54:33 +08:00
|
|
|
|
}
|