#include "Application.h" #include "common/Utils.h" #include "Config.h" #include "app/Dao.h" #include "app/Device.h" void Application::init() { 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(); } static void addDeviceTest(vector& 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); } void Application::initDevice() { DaoEntity dao(""); std::string sql = "select * from device;"; vector result; //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); for (auto& fields: result) { Device::add(fields); } } void Application::runThreadMain() { while (!isQuit()) { std::this_thread::sleep_for(std::chrono::milliseconds(10)); } } void Application::runThreadDevice() { while (!isQuit()) { std::this_thread::sleep_for(std::chrono::milliseconds(10)); } }