|
@@ -41,6 +41,7 @@ CoreObject::CoreObject(QObject *parent) :
|
|
|
if(shm_load()){
|
|
|
QDateTime zeroTime = QDateTime::fromTime_t(0);
|
|
|
for(int i=0;i<DEVICES_COUNT;i++){
|
|
|
+ alarmTime[i]=0;
|
|
|
ytShm->eHomeDevice[i].LoginId = -1;
|
|
|
ytShm->eHomeDevice[i].SessionId = -1;
|
|
|
ytShm->eHomeDevice[i].listen_preview_handle = -1;
|
|
@@ -304,6 +305,21 @@ BOOL CALLBACK fnPREVIEW_NEWLINK_CB(LONG lPreviewHandle, NET_EHOME_NEWLINK_CB_MSG
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+bool CoreObject::checkAlarmDevTime(QString deviceid){
|
|
|
+// return true;
|
|
|
+ uint t = QDateTime::currentDateTime().toTime_t();
|
|
|
+ for(int i=0;i<DEVICES_COUNT;i++){
|
|
|
+ QString devId = QString(ytShm->eHomeDevice[i].deviceID);
|
|
|
+ if(QString::compare(devId,deviceid)==0){
|
|
|
+ if((t-alarmTime[i])>120){
|
|
|
+ alarmTime[i] = t;
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
void CALLBACK fnPREVIEW_DATA_CB(LONG lPreviewHandle, NET_EHOME_PREVIEW_CB_MSG *pPreviewCBMsg, void *pUserData)
|
|
|
{
|
|
|
if (NULL == pPreviewCBMsg)
|
|
@@ -356,22 +372,24 @@ void ProcessHttpAlarmInfo(void *pXml, unsigned long dwLen, void *pUrl, unsigned
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(struISAPIAlarm.byPicturesNumber>0){
|
|
|
- time_t t = QDateTime::currentDateTime().toTime_t();
|
|
|
- for(int i=0;i<struISAPIAlarm.byPicturesNumber;i++){
|
|
|
- char fname[128];
|
|
|
- sprintf(fname,"/usr/local/nginx/html/VideoAlarmPics/pic_%d_%s_%d.jpg",t,deviceID,i);
|
|
|
- if(i<2)
|
|
|
- sprintf(pic[i],"http://47.103.74.123/VideoAlarmPics/pic_%d_%s_%d.jpg",t,deviceID,i);
|
|
|
- FILE *f = fopen(fname,"w");
|
|
|
- fwrite(((NET_EHOME_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData,1,((NET_EHOME_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen,f);
|
|
|
- fclose(f);
|
|
|
+ if(obj->checkAlarmDevTime(deviceID)){
|
|
|
+ if(struISAPIAlarm.byPicturesNumber>0){
|
|
|
+ time_t t = QDateTime::currentDateTime().toTime_t();
|
|
|
+ for(int i=0;i<struISAPIAlarm.byPicturesNumber;i++){
|
|
|
+ char fname[128];
|
|
|
+ sprintf(fname,"/usr/local/nginx/html/VideoAlarmPics/pic_%d_%s_%d.jpg",t,deviceID,i);
|
|
|
+ if(i<2)
|
|
|
+ sprintf(pic[i],"http://47.103.74.123/VideoAlarmPics/pic_%d_%s_%d.jpg",t,deviceID,i);
|
|
|
+ FILE *f = fopen(fname,"w");
|
|
|
+ fwrite(((NET_EHOME_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData,1,((NET_EHOME_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen,f);
|
|
|
+ fclose(f);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- obj->reportList.append(Alarm_Report(deviceID,eventTime,QString::fromUtf8("200001"),
|
|
|
- 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])));
|
|
|
+ obj->reportList.append(Alarm_Report(deviceID,eventTime,QString::fromUtf8("200001"),
|
|
|
+ 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])));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -396,36 +414,38 @@ BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, voi
|
|
|
{
|
|
|
NET_EHOME_ALARM_INFO struAlarmInfo;
|
|
|
memcpy(&struAlarmInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_ALARM_INFO));
|
|
|
- obj->appendLog(QString("Basic Alarm: Device ID[%1], szAlarmTime[%2], Alarm Type[%3], Action[%4], VideoChannel[%5]!")
|
|
|
- .arg(struAlarmInfo.szDeviceID).arg(struAlarmInfo.szAlarmTime).arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.dwAlarmAction).arg(struAlarmInfo.dwVideoChannel));
|
|
|
// printf("Basic Alarm: Device ID[%s], szAlarmTime[%s], Alarm Type[%d], Action[%d], VideoChannel[%d]!\n", struAlarmInfo.szDeviceID, \
|
|
|
// struAlarmInfo.szAlarmTime, struAlarmInfo.dwAlarmType, struAlarmInfo.dwAlarmAction, struAlarmInfo.dwVideoChannel);
|
|
|
if((struAlarmInfo.dwAlarmType==ALARM_TYPE_INTRUSION)||(struAlarmInfo.dwAlarmType==ALARM_TYPE_LEFT)||(struAlarmInfo.dwAlarmType==ALARM_TYPE_TAKE))
|
|
|
{
|
|
|
QString devId = QString(struAlarmInfo.szDeviceID);
|
|
|
- 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))){
|
|
|
- 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))
|
|
|
- obj->alarmList.removeAt(i);
|
|
|
- else if(struAlarmInfo.dwAlarmType==ALARM_TYPE_TAKE)
|
|
|
- obj->alarmList.removeAt(i);
|
|
|
- break;
|
|
|
+ if(obj->checkAlarmDevTime(devId)){
|
|
|
+ obj->appendLog(QString("Basic Alarm: Device ID[%1], szAlarmTime[%2], Alarm Type[%3], Action[%4], VideoChannel[%5]!")
|
|
|
+ .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))){
|
|
|
+ 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))
|
|
|
+ obj->alarmList.removeAt(i);
|
|
|
+ else if(struAlarmInfo.dwAlarmType==ALARM_TYPE_TAKE)
|
|
|
+ obj->alarmList.removeAt(i);
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
+ QString time1 = QString(struAlarmInfo.szAlarmTime);
|
|
|
+ QString time2 = time1.mid(0,10)+" "+time1.mid(11,8);
|
|
|
+ // QString sql = 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','','','占道检测告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
+ // .arg(1).arg(struAlarmInfo.szDeviceID).arg(time2).arg(struAlarmInfo.dwAlarmAction==0?1:0)
|
|
|
+ // .arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.dwAlarmAction);
|
|
|
+ // obj->sqlList.append(sql);
|
|
|
+ if(struAlarmInfo.dwAlarmType==ALARM_TYPE_INTRUSION)
|
|
|
+ obj->alarmList.append(AlarmEvent(devId,time2,(struAlarmInfo.dwAlarmAction==0?1:0)));
|
|
|
+ else
|
|
|
+ obj->alarmList.append(AlarmEvent(devId,time2,1));
|
|
|
+ ytShm->eHomeDevice[idx].io[6]=0x01;
|
|
|
}
|
|
|
- QString time1 = QString(struAlarmInfo.szAlarmTime);
|
|
|
- QString time2 = time1.mid(0,10)+" "+time1.mid(11,8);
|
|
|
- // QString sql = 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','','','占道检测告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
- // .arg(1).arg(struAlarmInfo.szDeviceID).arg(time2).arg(struAlarmInfo.dwAlarmAction==0?1:0)
|
|
|
- // .arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.dwAlarmAction);
|
|
|
- // obj->sqlList.append(sql);
|
|
|
- if(struAlarmInfo.dwAlarmType==ALARM_TYPE_INTRUSION)
|
|
|
- obj->alarmList.append(AlarmEvent(devId,time2,(struAlarmInfo.dwAlarmAction==0?1:0)));
|
|
|
- else
|
|
|
- obj->alarmList.append(AlarmEvent(devId,time2,1));
|
|
|
- ytShm->eHomeDevice[idx].io[6]=0x01;
|
|
|
}
|
|
|
}
|
|
|
|