|
@ -11,9 +11,9 @@ using namespace std; |
|
|
***********************************************************************************************************************/ |
|
|
***********************************************************************************************************************/ |
|
|
|
|
|
|
|
|
#define SET_DEVICE_STATE(id, value, uint) \
|
|
|
#define SET_DEVICE_STATE(id, value, uint) \
|
|
|
receipt["deviceState"][index]["id"] = id; \ |
|
|
|
|
|
|
|
|
receipt["deviceState"][index]["id"] = id; \ |
|
|
receipt["deviceState"][index]["value"] = fmt::format("{}", value); \ |
|
|
receipt["deviceState"][index]["value"] = fmt::format("{}", value); \ |
|
|
receipt["deviceState"][index]["unit"] = uint; \ |
|
|
|
|
|
|
|
|
receipt["deviceState"][index]["unit"] = uint; \ |
|
|
index++; |
|
|
index++; |
|
|
|
|
|
|
|
|
/*********************************************************************************************************************
|
|
|
/*********************************************************************************************************************
|
|
@ -24,6 +24,13 @@ void MainControlService::initialize() { |
|
|
GET_TO_SERVICE(m_zwebService); |
|
|
GET_TO_SERVICE(m_zwebService); |
|
|
GET_TO_SERVICE(m_deviceIOService); |
|
|
GET_TO_SERVICE(m_deviceIOService); |
|
|
|
|
|
|
|
|
|
|
|
GET_TO_SERVICE(m_beforeWakeupVoiceProcesser); |
|
|
|
|
|
GET_TO_SERVICE(m_beforeasrVoiceProcesser); |
|
|
|
|
|
GET_TO_SERVICE(m_wakeupProcesser); |
|
|
|
|
|
GET_TO_SERVICE(m_audioRecoderService); |
|
|
|
|
|
GET_TO_SERVICE(m_audioLoggingService); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 监听从webservice来的websocket消息
|
|
|
// 监听从webservice来的websocket消息
|
|
|
m_zwebService->startWork([this](const json& command, json& receipt) { |
|
|
m_zwebService->startWork([this](const json& command, json& receipt) { |
|
|
try { |
|
|
try { |
|
@ -34,6 +41,27 @@ void MainControlService::initialize() { |
|
|
logger->error("process message fail {}", "catch unknown exception"); |
|
|
logger->error("process message fail {}", "catch unknown exception"); |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
m_audioRecoderService->onRecordData.connect([this](shared_ptr<AudioClip> audioClip) { |
|
|
|
|
|
if (!audioClip) { |
|
|
|
|
|
logger->error("onRecordData audioClip is null"); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
logger->info("onRecordData {}", audioClip->size()); |
|
|
|
|
|
m_beforeWakeupVoiceProcesser->writeVoice(audioClip); |
|
|
|
|
|
m_audioLoggingService->loggerMICVoice(audioClip); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
m_beforeWakeupVoiceProcesser->onAfterProcessVoice.connect([this](shared_ptr<AudioClip> audioClip) { |
|
|
|
|
|
if (!audioClip) { |
|
|
|
|
|
logger->error("onAfterProcessVoice audioClip is null"); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
m_audioLoggingService->loggerBeforeWakeupVoice(audioClip); |
|
|
|
|
|
logger->info("onAfterProcessVoice {}", audioClip->size()); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
m_audioRecoderService->startRecord(); |
|
|
}; |
|
|
}; |
|
|
void MainControlService::processReceiveMessage(fromwhere_t fromwhere, const json& in, json& receipt) { |
|
|
void MainControlService::processReceiveMessage(fromwhere_t fromwhere, const json& in, json& receipt) { |
|
|
logger->info("process receive message from {},{}", fromwhere2str(fromwhere), in.dump()); |
|
|
logger->info("process receive message from {},{}", fromwhere2str(fromwhere), in.dump()); |
|
@ -46,8 +74,8 @@ void MainControlService::processReceiveMessage(fromwhere_t fromwhere, const json |
|
|
* ================================================日志动态配置接口================================================= * |
|
|
* ================================================日志动态配置接口================================================= * |
|
|
*********************************************************************************************************************/ |
|
|
*********************************************************************************************************************/ |
|
|
else if (in["command"] == "loggerSetLevel") { |
|
|
else if (in["command"] == "loggerSetLevel") { |
|
|
int loggerLevel = in["loggerLevel"]; |
|
|
|
|
|
string loggerName = in["loggerName"]; |
|
|
|
|
|
|
|
|
int loggerLevel = in["loggerLevel"]; |
|
|
|
|
|
string loggerName = in["loggerName"]; |
|
|
logger->info("loggerSetLevel {} {}", loggerName, loggerLevel); |
|
|
logger->info("loggerSetLevel {} {}", loggerName, loggerLevel); |
|
|
SpdLoggerFactory::Instance().createLogger(loggerName)->set_level((level::level_enum)loggerLevel); |
|
|
SpdLoggerFactory::Instance().createLogger(loggerName)->set_level((level::level_enum)loggerLevel); |
|
|
} else if (in["command"] == "loggerGetAllLoggers") { |
|
|
} else if (in["command"] == "loggerGetAllLoggers") { |
|
@ -70,6 +98,7 @@ void MainControlService::processReceiveMessage(fromwhere_t fromwhere, const json |
|
|
} |
|
|
} |
|
|
#endif
|
|
|
#endif
|
|
|
int index = 0; |
|
|
int index = 0; |
|
|
|
|
|
|
|
|
DeviceIOService::env_sensor_state_t env = m_deviceIOService->getEnvSensorState(); |
|
|
DeviceIOService::env_sensor_state_t env = m_deviceIOService->getEnvSensorState(); |
|
|
SET_DEVICE_STATE("wind_speed", env.wind_speed, "m/s"); |
|
|
SET_DEVICE_STATE("wind_speed", env.wind_speed, "m/s"); |
|
|
SET_DEVICE_STATE("wind_direction", env.wind_direction, "m/s"); |
|
|
SET_DEVICE_STATE("wind_direction", env.wind_direction, "m/s"); |
|
@ -100,49 +129,49 @@ void MainControlService::processReceiveMessage(fromwhere_t fromwhere, const json |
|
|
SET_DEVICE_STATE("waterImmersionSensor", inputdeviceState.getState(DeviceIOService::kWaterImmersionSensor), "-"); |
|
|
SET_DEVICE_STATE("waterImmersionSensor", inputdeviceState.getState(DeviceIOService::kWaterImmersionSensor), "-"); |
|
|
SET_DEVICE_STATE("humanProximitySensor", inputdeviceState.getState(DeviceIOService::kHumanProximitySensor), "-"); |
|
|
SET_DEVICE_STATE("humanProximitySensor", inputdeviceState.getState(DeviceIOService::kHumanProximitySensor), "-"); |
|
|
} else if (in["command"] == "relayControl") { |
|
|
} else if (in["command"] == "relayControl") { |
|
|
int type = in["type"]; |
|
|
|
|
|
|
|
|
int type = in["type"]; |
|
|
bool value = in["value"]; |
|
|
bool value = in["value"]; |
|
|
m_deviceIOService->relayControl((DeviceIOService::relay_device_type_t)type, value); |
|
|
m_deviceIOService->relayControl((DeviceIOService::relay_device_type_t)type, value); |
|
|
} else if (in["command"] == "fanSetState") { |
|
|
} else if (in["command"] == "fanSetState") { |
|
|
int id = in["id"]; |
|
|
|
|
|
|
|
|
int id = in["id"]; |
|
|
float power = in["power"]; |
|
|
float power = in["power"]; |
|
|
m_deviceIOService->fanSetState(id, power); |
|
|
m_deviceIOService->fanSetState(id, power); |
|
|
} else if (in["command"] == "relayStateGet") { |
|
|
} else if (in["command"] == "relayStateGet") { |
|
|
auto relaystate = m_deviceIOService->relayStateGet(); |
|
|
|
|
|
receipt["state"]["rawState"] = StringUtils().bytet2Binary(relaystate.state, 32, false); |
|
|
|
|
|
receipt["state"]["routerPower"] = relaystate.getState(DeviceIOService::kRouterPower); |
|
|
|
|
|
|
|
|
auto relaystate = m_deviceIOService->relayStateGet(); |
|
|
|
|
|
receipt["state"]["rawState"] = StringUtils().bytet2Binary(relaystate.state, 32, false); |
|
|
|
|
|
receipt["state"]["routerPower"] = relaystate.getState(DeviceIOService::kRouterPower); |
|
|
receipt["state"]["touchScreenPower"] = relaystate.getState(DeviceIOService::kTouchScreenPower); |
|
|
receipt["state"]["touchScreenPower"] = relaystate.getState(DeviceIOService::kTouchScreenPower); |
|
|
receipt["state"]["usbChargerPower"] = relaystate.getState(DeviceIOService::kUsbChargerPower); |
|
|
|
|
|
receipt["state"]["cameraPower"] = relaystate.getState(DeviceIOService::kCameraPower); |
|
|
|
|
|
receipt["state"]["lightPower"] = relaystate.getState(DeviceIOService::kLightPower); |
|
|
|
|
|
|
|
|
receipt["state"]["usbChargerPower"] = relaystate.getState(DeviceIOService::kUsbChargerPower); |
|
|
|
|
|
receipt["state"]["cameraPower"] = relaystate.getState(DeviceIOService::kCameraPower); |
|
|
|
|
|
receipt["state"]["lightPower"] = relaystate.getState(DeviceIOService::kLightPower); |
|
|
} else if (in["command"] == "inputStateGet") { |
|
|
} else if (in["command"] == "inputStateGet") { |
|
|
auto inputdeviceState = m_deviceIOService->getinputState(); |
|
|
|
|
|
receipt["state"]["rawState"] = StringUtils().bytet2Binary(inputdeviceState.state, 32, false); |
|
|
|
|
|
receipt["state"]["emergency"] = inputdeviceState.getState(DeviceIOService::kEmergency); |
|
|
|
|
|
|
|
|
auto inputdeviceState = m_deviceIOService->getinputState(); |
|
|
|
|
|
receipt["state"]["rawState"] = StringUtils().bytet2Binary(inputdeviceState.state, 32, false); |
|
|
|
|
|
receipt["state"]["emergency"] = inputdeviceState.getState(DeviceIOService::kEmergency); |
|
|
receipt["state"]["waterImmersionSensor"] = inputdeviceState.getState(DeviceIOService::kWaterImmersionSensor); |
|
|
receipt["state"]["waterImmersionSensor"] = inputdeviceState.getState(DeviceIOService::kWaterImmersionSensor); |
|
|
receipt["state"]["humanProximitySensor"] = inputdeviceState.getState(DeviceIOService::kHumanProximitySensor); |
|
|
receipt["state"]["humanProximitySensor"] = inputdeviceState.getState(DeviceIOService::kHumanProximitySensor); |
|
|
} else if (in["command"] == "idcardread") { |
|
|
} else if (in["command"] == "idcardread") { |
|
|
bool state = false; |
|
|
|
|
|
|
|
|
bool state = false; |
|
|
string info; |
|
|
string info; |
|
|
m_deviceIOService->idcardread(state, info); |
|
|
m_deviceIOService->idcardread(state, info); |
|
|
receipt["state"] = state; |
|
|
receipt["state"] = state; |
|
|
receipt["info"] = info; |
|
|
|
|
|
|
|
|
receipt["info"] = info; |
|
|
} else if (in["command"] == "getInterTemperature") { |
|
|
} else if (in["command"] == "getInterTemperature") { |
|
|
receipt["temperature"] = m_deviceIOService->getInterTemperature(); |
|
|
receipt["temperature"] = m_deviceIOService->getInterTemperature(); |
|
|
} else if (in["command"] == "getEnvSensorState") { |
|
|
} else if (in["command"] == "getEnvSensorState") { |
|
|
DeviceIOService::env_sensor_state_t env = m_deviceIOService->getEnvSensorState(); |
|
|
DeviceIOService::env_sensor_state_t env = m_deviceIOService->getEnvSensorState(); |
|
|
receipt["wind_speed"] = env.wind_speed; |
|
|
|
|
|
receipt["wind_direction"] = env.wind_direction; |
|
|
|
|
|
receipt["temperature"] = env.temperature; |
|
|
|
|
|
receipt["humidity"] = env.humidity; |
|
|
|
|
|
receipt["noise"] = env.noise; |
|
|
|
|
|
receipt["pm2_5"] = env.pm2_5; |
|
|
|
|
|
receipt["pm10"] = env.pm10; |
|
|
|
|
|
receipt["co2"] = env.co2; |
|
|
|
|
|
receipt["atmospheric_pressure"] = env.atmospheric_pressure; |
|
|
|
|
|
receipt["tvoc"] = env.tvoc; |
|
|
|
|
|
receipt["hcho"] = env.hcho; |
|
|
|
|
|
receipt["light_intensity"] = env.light_intensity; |
|
|
|
|
|
|
|
|
receipt["wind_speed"] = env.wind_speed; |
|
|
|
|
|
receipt["wind_direction"] = env.wind_direction; |
|
|
|
|
|
receipt["temperature"] = env.temperature; |
|
|
|
|
|
receipt["humidity"] = env.humidity; |
|
|
|
|
|
receipt["noise"] = env.noise; |
|
|
|
|
|
receipt["pm2_5"] = env.pm2_5; |
|
|
|
|
|
receipt["pm10"] = env.pm10; |
|
|
|
|
|
receipt["co2"] = env.co2; |
|
|
|
|
|
receipt["atmospheric_pressure"] = env.atmospheric_pressure; |
|
|
|
|
|
receipt["tvoc"] = env.tvoc; |
|
|
|
|
|
receipt["hcho"] = env.hcho; |
|
|
|
|
|
receipt["light_intensity"] = env.light_intensity; |
|
|
} else if (in["command"] == "fanGetState") { |
|
|
} else if (in["command"] == "fanGetState") { |
|
|
// int id = in["id"];
|
|
|
// int id = in["id"];
|
|
|
receipt["power"][0] = m_deviceIOService->fanGetState(0); |
|
|
receipt["power"][0] = m_deviceIOService->fanGetState(0); |
|
|