|
|
@@ -1,4 +1,5 @@
|
|
|
#include "coreobject.h"
|
|
|
+#include <unistd.h>
|
|
|
|
|
|
#define iServerIP "172.19.198.166"
|
|
|
#define oServerIP "47.103.74.123"
|
|
|
@@ -23,10 +24,13 @@ bool had_reg;
|
|
|
int nopic_count;
|
|
|
|
|
|
MyEHomeShm *ytShm;
|
|
|
+MyEHomeMQShm *ytMqShm;
|
|
|
|
|
|
CoreObject::CoreObject(QObject *parent) :
|
|
|
QObject(parent)
|
|
|
{
|
|
|
+ infomqttIdx=1;
|
|
|
+ alarmmqttIdx=1;
|
|
|
nopic_count = 0;
|
|
|
processList.clear();
|
|
|
sqlList.clear();
|
|
|
@@ -42,6 +46,23 @@ CoreObject::CoreObject(QObject *parent) :
|
|
|
db.setHostName("47.98.201.187");
|
|
|
db.setUserName("root");
|
|
|
db.setPassword("Yt2018IoT");
|
|
|
+
|
|
|
+ QString ip="",port="",name="",passwd="";
|
|
|
+ db.open();
|
|
|
+ QSqlQuery mqttqry = db.exec("select ip, port, username, passwd from yt_dataprocessservice_mqtt where type = 'YtCam';");
|
|
|
+ while(mqttqry.next()){
|
|
|
+ ip = mqttqry.value(0).toString();
|
|
|
+ port = mqttqry.value(1).toString();
|
|
|
+ name = mqttqry.value(2).toString();
|
|
|
+ passwd = mqttqry.value(3).toString();
|
|
|
+ }
|
|
|
+ db.close();
|
|
|
+ m_client = new QMQTT::Client(QHostAddress(ip),static_cast<quint16>(port.toInt()),this);
|
|
|
+ m_client->setUsername(name);
|
|
|
+ m_client->setPassword(passwd.toLatin1());
|
|
|
+ connect(m_client,&QMQTT::Client::connected,this,&CoreObject::mqconnected);
|
|
|
+ m_client->connectToHost();
|
|
|
+
|
|
|
NET_ESTREAM_Init();
|
|
|
NET_EALARM_Init();
|
|
|
NET_ECMS_Init();
|
|
|
@@ -111,6 +132,11 @@ CoreObject::~CoreObject()
|
|
|
NET_EALARM_Fini();
|
|
|
}
|
|
|
|
|
|
+void CoreObject::mqconnected()
|
|
|
+{
|
|
|
+ printf("mqtt connected\n");
|
|
|
+}
|
|
|
+
|
|
|
void CoreObject::chkPhoneList()
|
|
|
{
|
|
|
if(db.open()){
|
|
|
@@ -147,7 +173,14 @@ bool CoreObject::shm_load()
|
|
|
return false;
|
|
|
if((shmid = shmget(key,sizeof(MyEHomeShm),IPC_CREAT|0666))==-1)
|
|
|
return false;
|
|
|
+
|
|
|
ytShm = (MyEHomeShm *)shmat(shmid,NULL,0);
|
|
|
+
|
|
|
+ if((key = ftok(SHM_PATH,(int)(SHM_PORT+10)))==-1)
|
|
|
+ return false;
|
|
|
+ if((shmid = shmget(key,sizeof(MyEHomeMQShm),IPC_CREAT|0666))==-1)
|
|
|
+ return false;
|
|
|
+ ytMqShm = (MyEHomeMQShm *)shmat(shmid,NULL,0);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -341,9 +374,31 @@ void ProcessHttpAlarmInfo(void *pXml, unsigned long dwLen, void *pUrl, unsigned
|
|
|
LPNET_EHOME_ALARM_ISAPI_INFO pISAPIAlarm = (NET_EHOME_ALARM_ISAPI_INFO *)(pXml);
|
|
|
NET_EHOME_ALARM_ISAPI_INFO struISAPIAlarm = {0};
|
|
|
memcpy(&struISAPIAlarm,pISAPIAlarm, sizeof(NET_EHOME_ALARM_ISAPI_INFO));
|
|
|
+ obj->appendLog(QString("{ligangceshi5:%1}")
|
|
|
+ .arg(struISAPIAlarm.pAlarmData));
|
|
|
if(struISAPIAlarm.pAlarmData)
|
|
|
{
|
|
|
- if(struISAPIAlarm.byDataType==2){
|
|
|
+ if(struISAPIAlarm.byDataType==2){
|
|
|
+ QByteArray data = QByteArray((const char *)(struISAPIAlarm.pAlarmData));
|
|
|
+ QXmlStreamReader reader;
|
|
|
+ int cur = data.indexOf("--boundary");
|
|
|
+ reader.addData(data.mid(0,cur));
|
|
|
+ while(!reader.atEnd()){
|
|
|
+ if(reader.isStartElement()){
|
|
|
+ if(reader.name()=="eventType"){
|
|
|
+ sprintf(eventType,"%s",reader.readElementText().toUtf8().data());
|
|
|
+ }else if(reader.name()=="deviceID"){
|
|
|
+ sprintf(deviceID,"%s",reader.readElementText().toUtf8().data());
|
|
|
+ }else if(reader.name()=="dateTime"){
|
|
|
+ sprintf(eventTime,"%s",reader.readElementText().replace("T"," ").mid(0,19).toUtf8().data());
|
|
|
+ }else if(reader.name()=="eventState"){
|
|
|
+ sprintf(eventState,"%s",reader.readElementText().toUtf8().data());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ reader.readNext();
|
|
|
+ }
|
|
|
+ obj->appendLog(QString("{ligangceshi3:%1}")
|
|
|
+ .arg(deviceID));
|
|
|
}else if(struISAPIAlarm.byDataType==1){
|
|
|
QByteArray data = QByteArray((const char *)(struISAPIAlarm.pAlarmData));
|
|
|
int cur = data.indexOf("--boundary");
|
|
|
@@ -364,6 +419,8 @@ void ProcessHttpAlarmInfo(void *pXml, unsigned long dwLen, void *pUrl, unsigned
|
|
|
}
|
|
|
reader.readNext();
|
|
|
}
|
|
|
+ obj->appendLog(QString("{ligangceshi4:%1}")
|
|
|
+ .arg(deviceID));
|
|
|
}
|
|
|
}
|
|
|
if(obj->checkAlarmDevTime(deviceID)){
|
|
|
@@ -383,6 +440,14 @@ void ProcessHttpAlarmInfo(void *pXml, unsigned long dwLen, void *pUrl, unsigned
|
|
|
QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','火点/高温检测告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
.arg(2).arg(deviceID).arg(eventTime).arg(1)
|
|
|
.arg(2).arg(eventState).arg(pic[0]).arg(pic[1])));
|
|
|
+ for(int k=0;k<DEVICES_COUNT;k++){
|
|
|
+ QString devid = QString(ytShm->eHomeDevice[k].deviceID);
|
|
|
+ if(QString::compare(deviceID,devid)==0){
|
|
|
+ sprintf(ytShm->eHomeDeviceFtp[k].filePath,"%s",pic[0]);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -400,6 +465,9 @@ BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, voi
|
|
|
switch(dwType)
|
|
|
{
|
|
|
case EHOME_ALARM_UNKNOWN://未知报警信息
|
|
|
+ NET_EHOME_ALARM_INFO struAlarmInfo;
|
|
|
+ obj->appendLog(QString("{ligangceshi1:%1,%2,%3}")
|
|
|
+ .arg(dt.toString("yyyy-MM-dd HH:mm:ss")).arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.szDeviceID));
|
|
|
break;
|
|
|
case EHOME_ALARM://基本报警信息:移动侦测、视频遮盖、视频丢失、PIR报警、人脸侦测、区域入侵等
|
|
|
{
|
|
|
@@ -414,7 +482,7 @@ BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, voi
|
|
|
.arg(struAlarmInfo.szDeviceID).arg(struAlarmInfo.szAlarmTime).arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.dwAlarmAction).arg(struAlarmInfo.dwVideoChannel));
|
|
|
for(idx=0;idx<DEVICES_COUNT;idx++){
|
|
|
if((strcmp(ytShm->eHomeDevice[idx].deviceID,(char*)(struAlarmInfo.szDeviceID))==0)
|
|
|
- &&((ytShm->eHomeDevice[idx].io[8]==0x02)||(ytShm->eHomeDevice[idx].io[8]==0x04))){
|
|
|
+ &&((ytShm->eHomeDevice[idx].io[8]==0x02)||(ytShm->eHomeDevice[idx].io[8]==0x04)||(ytShm->eHomeDevice[idx].io[8]==0x08)||(ytShm->eHomeDevice[idx].io[8]==0x84))){
|
|
|
for(i=0;i>obj->alarmList.length();i++){
|
|
|
if(obj->alarmList.at(i).Device_Code.compare(devId)==0){
|
|
|
if((struAlarmInfo.dwAlarmType==ALARM_TYPE_INTRUSION)&&(struAlarmInfo.dwAlarmAction!=0))
|
|
|
@@ -434,6 +502,9 @@ BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, voi
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ }else{
|
|
|
+ obj->appendLog(QString("{ligangceshi2:%1,%2,%3}")
|
|
|
+ .arg(dt.toString("yyyy-MM-dd HH:mm:ss")).arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.szDeviceID));
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
@@ -441,6 +512,9 @@ BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, voi
|
|
|
ProcessHttpAlarmInfo(pAlarmMsg->pAlarmInfo,pAlarmMsg->dwAlarmInfoLen,pAlarmMsg->pHttpUrl,pAlarmMsg->dwHttpUrlLen,pUserData);
|
|
|
break;
|
|
|
default:
|
|
|
+ NET_EHOME_ALARM_INFO struAlarmInfo1;
|
|
|
+ obj->appendLog(QString("{ligangceshi:%1,%2,%3}")
|
|
|
+ .arg(dt.toString("yyyy-MM-dd HH:mm:ss")).arg(struAlarmInfo1.dwAlarmType).arg(struAlarmInfo.szDeviceID));
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
@@ -633,7 +707,7 @@ QString CoreObject::getCompanyCode(QString addr){
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
-void CoreObject::clear_devalarm(AlarmEvent devAlarm)
|
|
|
+void CoreObject::clear_devalarm(AlarmEvent devAlarm,bool isFtp)
|
|
|
{
|
|
|
for(int i=0;i<DEVICES_COUNT;i++){
|
|
|
if(devAlarm.Device_Code.compare(QString(ytShm->eHomeDevice[i].deviceID))==0){
|
|
|
@@ -649,16 +723,30 @@ void CoreObject::clear_devalarm(AlarmEvent devAlarm)
|
|
|
QFile(tmpfile).remove();
|
|
|
ytShm->eHomeDevice[i].transed = 0x00;
|
|
|
sprintf(ytShm->eHomeDevice[i].filename,"");
|
|
|
- if(ytShm->eHomeDevice[i].io[8]==0x02){
|
|
|
- reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200104"),
|
|
|
- QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','消防占道告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
- .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
|
|
|
- .arg(104).arg(devAlarm.Event_Status).arg("").arg("")));
|
|
|
- }else if(ytShm->eHomeDevice[i].io[8]==0x04){
|
|
|
- reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200105"),
|
|
|
- QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','电动车禁入/区域入侵告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
- .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
|
|
|
- .arg(106).arg(devAlarm.Event_Status).arg("").arg("")));
|
|
|
+ if(isFtp){
|
|
|
+ if(ytShm->eHomeDevice[i].io[8]==0x08){
|
|
|
+ reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200104"),
|
|
|
+ QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','消防占道告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
+ .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
|
|
|
+ .arg(104).arg(devAlarm.Event_Status).arg(ytShm->eHomeDeviceFtp[i].filePath).arg("")));
|
|
|
+ }else if(ytShm->eHomeDevice[i].io[8]==0x84){
|
|
|
+ reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200105"),
|
|
|
+ QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','电动车禁入/区域入侵告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
+ .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
|
|
|
+ .arg(106).arg(devAlarm.Event_Status).arg(ytShm->eHomeDeviceFtp[i].filePath).arg("")));
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if(ytShm->eHomeDevice[i].io[8]==0x02||ytShm->eHomeDevice[i].io[8]==0x08){
|
|
|
+ reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200104"),
|
|
|
+ QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','消防占道告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
+ .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
|
|
|
+ .arg(104).arg(devAlarm.Event_Status).arg("").arg("")));
|
|
|
+ }else if(ytShm->eHomeDevice[i].io[8]==0x04||ytShm->eHomeDevice[i].io[8]==0x84){
|
|
|
+ reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200105"),
|
|
|
+ QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','电动车禁入/区域入侵告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
+ .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
|
|
|
+ .arg(106).arg(devAlarm.Event_Status).arg("").arg("")));
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
@@ -718,6 +806,56 @@ void CoreObject::time_out()
|
|
|
}else if(ytShm->eHomeDevice[i].io[6]==0x01){
|
|
|
// printf("%s io6 on\n",ytShm->eHomeDevice[i].deviceID);
|
|
|
ytShm->eHomeDevice[i].io[0] = 0x01;
|
|
|
+ if(ytShm->eHomeDevice[i].io[8]==0x08||ytShm->eHomeDevice[i].io[8]==0x84){
|
|
|
+ ytShm->eHomeDevice[i].io[0] = 0x00;
|
|
|
+ QDateTime zeroTime = QDateTime::fromTime_t(0);
|
|
|
+ uint t1 = QDateTime::currentDateTime().toTime_t();
|
|
|
+ QDateTime start = QDateTime::currentDateTime();
|
|
|
+ QDateTime now;
|
|
|
+ do{
|
|
|
+ now=QDateTime::currentDateTime();
|
|
|
+ }while(start.secsTo(now)<=5);
|
|
|
+ QString filePath = QString("/var/ftp/pub/%1").arg(QString(ytShm->eHomeDevice[i].deviceID));
|
|
|
+ QDir qd(filePath);
|
|
|
+ QFileInfo subFileList = qd.entryInfoList(QDir::Files | QDir::CaseSensitive).last();
|
|
|
+ QString filePath1 = QString("%1/%2").arg(filePath).arg(subFileList.fileName());
|
|
|
+ QString filePath2 = QString("/usr/local/nginx/html/VideoAlarmPics/%1_%2.jpg").arg(QString(ytShm->eHomeDevice[i].deviceID)).arg(t1);
|
|
|
+ QFile file2(filePath1);
|
|
|
+ uint fileTime = subFileList.created().toTime_t();
|
|
|
+ file2.copy(filePath2);
|
|
|
+ QFile::remove(filePath1);
|
|
|
+ QString picturePath = QString("http://47.103.74.123/VideoAlarmPics/%1_%2.jpg").arg(QString(ytShm->eHomeDevice[i].deviceID)).arg(t1);
|
|
|
+ uint timeDiff = t1-fileTime;
|
|
|
+ appendLog(QString("{filePath1:%1,%2,%3,%4}").arg(filePath1).arg(timeDiff).arg(t1).arg(fileTime));
|
|
|
+ if(timeDiff>120){
|
|
|
+ for(int j=0;j<alarmList.length();j++){
|
|
|
+ if(alarmList.at(j).Device_Code.compare(ytShm->eHomeDevice[i].deviceID)==0){
|
|
|
+ AlarmEvent ftpae = alarmList.at(j);
|
|
|
+ clear_devalarm(ftpae,false);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ ytShm->eHomeDevice[i].io[0] = 0x00;
|
|
|
+ if(QString(ytShm->eHomeDeviceFtp[i].deviceID).compare(QString(ytShm->eHomeDevice[i].deviceID))==0){
|
|
|
+ sprintf(ytShm->eHomeDeviceFtp[i].fileName,"%s",subFileList.fileName().toUtf8().data());
|
|
|
+ sprintf(ytShm->eHomeDeviceFtp[i].filePath,"%s",picturePath.toUtf8().data());
|
|
|
+ setFullTime(&(ytShm->eHomeDeviceFtp[i].alarmTime),zeroTime);
|
|
|
+ }else{
|
|
|
+ sprintf(ytShm->eHomeDeviceFtp[i].deviceID,"%s",QString(ytShm->eHomeDevice[i].deviceID).toUtf8().data());
|
|
|
+ sprintf(ytShm->eHomeDeviceFtp[i].fileName,"%s",subFileList.fileName().toUtf8().data());
|
|
|
+ sprintf(ytShm->eHomeDeviceFtp[i].filePath,"%s",picturePath.toUtf8().data());
|
|
|
+ setFullTime(&(ytShm->eHomeDeviceFtp[i].alarmTime),zeroTime);
|
|
|
+ }
|
|
|
+ for(int j=0;j<alarmList.length();j++){
|
|
|
+ if(alarmList.at(j).Device_Code.compare(ytShm->eHomeDevice[i].deviceID)==0){
|
|
|
+ AlarmEvent ftpae = alarmList.at(j);
|
|
|
+ clear_devalarm(ftpae,true);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
if(ytShm->eHomeDevice[i].io[0]==0x01){
|
|
|
if(ytShm->eHomeDevice[i].SessionId>-1){
|
|
|
@@ -815,11 +953,14 @@ void CoreObject::time_out()
|
|
|
QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','消防占道告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
.arg(2).arg(alarmList.at(j).Device_Code).arg(alarmList.at(j).Event_Time).arg(1)
|
|
|
.arg(104).arg(alarmList.at(j).Event_Status).arg(pic1name).arg("")));
|
|
|
+
|
|
|
+ sprintf(ytShm->eHomeDeviceFtp[i].filePath,"%s",pic1name.toUtf8().data());
|
|
|
}else if(ytShm->eHomeDevice[i].io[8]==0x04){
|
|
|
reportList.append(Alarm_Report(alarmList.at(j).Device_Code,alarmList.at(j).Event_Time,QString::fromUtf8("200105"),
|
|
|
QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','电动车禁入/区域入侵告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
.arg(2).arg(alarmList.at(j).Device_Code).arg(alarmList.at(j).Event_Time).arg(1)
|
|
|
.arg(106).arg(alarmList.at(j).Event_Status).arg(pic1name).arg("")));
|
|
|
+ sprintf(ytShm->eHomeDeviceFtp[i].filePath,"%s",pic1name.toUtf8().data());
|
|
|
}
|
|
|
|
|
|
if(processList.at(i)->pid()>0)
|
|
|
@@ -870,16 +1011,47 @@ void CoreObject::time_out()
|
|
|
appendLog(QString("[ %1 sql(%2) ] %3").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(alarmList.length()).arg(rep.Sql));
|
|
|
QSqlQuery qry = db.exec(rep.Sql);
|
|
|
quint64 insertId = qry.lastInsertId().toULongLong();
|
|
|
- QString type="";
|
|
|
- QString companyCode = getCompanyCode(rep.Device_Code);
|
|
|
- if(rep.Event_Name.toInt()==200104)
|
|
|
+ QString type="",point="";
|
|
|
+ //QString companyCode = getCompanyCode(rep.Device_Code);
|
|
|
+ QString companyCode="",deviceType="",deviceName="",value="";
|
|
|
+ for(int i=0;i<DEVICES_COUNT;i++){
|
|
|
+ QString devid = QString(ytShm->eHomeDevice[i].deviceID);
|
|
|
+ if(QString::compare(rep.Device_Code,devid)==0){
|
|
|
+ companyCode = QString(ytShm->eHomeDevice[i].rtsppath);
|
|
|
+ deviceType.append(QString("%1").arg((ytShm->eHomeDevice[i].io[8]&0xff),2,16,QChar('0')));
|
|
|
+ deviceName = QString(ytMqShm->eHomeDeviceMq[i].deviceName);
|
|
|
+ value = QString(ytShm->eHomeDeviceFtp[i].filePath);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(rep.Event_Name.toInt()==200104){
|
|
|
type=QString::fromUtf8("占道侦测报警");
|
|
|
- else if(rep.Event_Name.toInt()==200001)
|
|
|
+ point.append("1602");
|
|
|
+ }else if(rep.Event_Name.toInt()==200001){
|
|
|
type=QString::fromUtf8("火点侦测报警");
|
|
|
- else if(rep.Event_Name.toInt()==200105)
|
|
|
+ point.append("1601");
|
|
|
+ }else if(rep.Event_Name.toInt()==200105){
|
|
|
type=QString::fromUtf8("电动车禁入/区域入侵告警");
|
|
|
+ point.append("1603");
|
|
|
+ }
|
|
|
// printf("device code:%s\nget company code:%s\n",rep.Device_Code.toUtf8().data(),companyCode.toUtf8().data());
|
|
|
if(companyCode.length()>0){
|
|
|
+
|
|
|
+ QString alarmTopic = QString("/usky/ytCamCore/%1/%2/alarm").arg(companyCode).arg(rep.Device_Code);
|
|
|
+ QString alarmStr = "";
|
|
|
+ alarmStr.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"alarams\":[{\"dp\":[{\"property\":\"%3\",\"serial\":\"%4\",\"value\":\"%5\",\"status\":\"0\"}],\"deviceName\":\"%6\",\"timeStamp\":\"%7\",\"deviceModel\":\"\",\"deviceType\":\"%8\",\"devId\":\"%9\"}],\"type\":\"ALARM\",\"timeStamp\":\"%10\"}").arg(rep.Device_Code).arg(deviceName).arg(type).arg(point).arg(value).arg(deviceName).arg((QDateTime::fromString(rep.Event_Time,"yyyy-MM-dd hh:mm:ss")).toTime_t()).arg(deviceType).arg(rep.Device_Code).arg((QDateTime::fromString(rep.Event_Time,"yyyy-MM-dd hh:mm:ss")).toTime_t()));
|
|
|
+
|
|
|
+ if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED) ||(m_client->connectionState()==QMQTT::STATE_INIT)){
|
|
|
+ m_client->connectToHost();
|
|
|
+ }
|
|
|
+ if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
|
|
|
+ m_client->publish(QMQTT::Message(alarmmqttIdx++,alarmTopic,alarmStr.toUtf8()));
|
|
|
+
|
|
|
+ if(alarmmqttIdx>9999)
|
|
|
+ alarmmqttIdx=1;
|
|
|
+ }
|
|
|
+
|
|
|
QString rep1 = QString("{\"SubType\":16,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":false}").arg(rep.Device_Code).arg(insertId);
|
|
|
spThread[repcur]->appendData(rep1);
|
|
|
QString rep2 = QString("{\"SubType\":16,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":0,\"CompanyCode\":\"%3\",\"evt_name\":\"%4\",\"evt\":0,\"alarm_time\":\"%5\"}")
|
|
|
@@ -933,7 +1105,7 @@ void CoreObject::time_out()
|
|
|
nopic_count++;
|
|
|
a_count++;
|
|
|
appendLog(QString("[ %1 out(%2:%3) ] %4 %5").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(alarmList.length()).arg(a_count).arg(ae.Device_Code).arg(ae.Event_Time));
|
|
|
- clear_devalarm(ae);
|
|
|
+ clear_devalarm(ae,false);
|
|
|
if(nopic_count>5)
|
|
|
exit(1);
|
|
|
}
|