浏览代码

广西设备status推送、redis回滚

James 3 年之前
父节点
当前提交
4b96c3d255
共有 42 个文件被更改,包括 905 次插入2371 次删除
  1. 54 42
      DataProcessService/ytElectricFire/databasethread.cpp
  2. 8 3
      DataProcessService/ytElectricFire/efcommthread2.cpp
  3. 2 2
      DataProcessService/ytElectricFire/elecfilecore.cpp
  4. 37 2
      DataProcessService/ytRTUProcess/databasethread.cpp
  5. 27 0
      DataProcessService/ytRTUProcess/databasethread.h
  6. 152 33
      DataProcessService/ytRTUProcess/porcesscore.cpp
  7. 3 1
      DataProcessService/ytRTUProcess/porcesscore.h
  8. 17 3
      DataProcessService/ytRTUProcess/rtucommthread.cpp
  9. 5 2
      DataProcessService/ytUserInfoProcess/databasethread.cpp
  10. 1 1
      DataProcessService/ytUserInfoProcess/databasethread.h
  11. 6 1
      DataProcessService/ytUserInfoProcess/userinfoprocesscore.cpp
  12. 2 1
      DataProcessService/ytUserInfoProcess/userinfoprocesscore.h
  13. 17 211
      DataProcessService/ytWarterMkProcess/databasethread.cpp
  14. 0 8
      DataProcessService/ytWarterMkProcess/databasethread.h
  15. 7 7
      DataProcessService/ytWarterMkProcess/main.cpp
  16. 261 431
      DataProcessService/ytWarterMkProcess/mkcore.cpp
  17. 0 8
      DataProcessService/ytWarterMkProcess/mkcore.h
  18. 9 192
      DataProcessService/ytWarterMkProcess/nbsensorthread.cpp
  19. 0 8
      DataProcessService/ytWarterMkProcess/nbsensorthread.h
  20. 1 1
      DataProcessService/ytWarterMkProcess/waterMk01.h
  21. 1 3
      DataProcessService/ytWarterMkProcess/ytWarterMkProcess.pro
  22. 29 242
      DataProcessService/ytWaterProcess/databasethread.cpp
  23. 0 8
      DataProcessService/ytWaterProcess/databasethread.h
  24. 14 14
      DataProcessService/ytWaterProcess/main.cpp
  25. 19 203
      DataProcessService/ytWaterProcess/sensorthread3.cpp
  26. 3 12
      DataProcessService/ytWaterProcess/sensorthread3.h
  27. 46 230
      DataProcessService/ytWaterProcess/sersorthread.cpp
  28. 3 11
      DataProcessService/ytWaterProcess/sersorthread.h
  29. 2 2
      DataProcessService/ytWaterProcess/water.h
  30. 1 1
      DataProcessService/ytWaterProcess/waterServer4.cpp
  31. 122 251
      DataProcessService/ytWaterProcess/watercore.cpp
  32. 6 11
      DataProcessService/ytWaterProcess/watercore.h
  33. 6 6
      DataProcessService/ytWaterProcess/waterserver.cpp
  34. 6 6
      DataProcessService/ytWaterProcess/waterserver.h
  35. 6 6
      DataProcessService/ytWaterProcess/waterserver3.cpp
  36. 6 6
      DataProcessService/ytWaterProcess/waterserver3.h
  37. 2 2
      DataProcessService/ytWaterProcess/waterserver4.h
  38. 9 189
      DataProcessService/ytWaterProcess/wateruserver.cpp
  39. 2 9
      DataProcessService/ytWaterProcess/wateruserver.h
  40. 10 190
      DataProcessService/ytWaterProcess/wateruserver2.cpp
  41. 2 9
      DataProcessService/ytWaterProcess/wateruserver2.h
  42. 1 3
      DataProcessService/ytWaterProcess/ytWaterProcess.pro

+ 54 - 42
DataProcessService/ytElectricFire/databasethread.cpp

@@ -49,18 +49,18 @@ void DatabaseThread::appendAlarm(AlarmRep rep)
 
 void DatabaseThread::chktab4dev(QString deviceid)
 {
-    bool tablefound = false;
+//    bool tablefound = false;
     QString tbname = QString("sp_e%1").arg(deviceid);
-    QStringList tables = db.tables();
-    for(int i=0;i<tables.length();i++){
-        if(QString::compare(tbname,tables.at(i))==0){
-            tablefound = true;
-            break;
-        }
-    }
-    if(!tablefound){
-        db.exec(QString("create table %1 (id bigint(20) unsigned not null auto_increment primary key, device_id varchar(60) not null, point_code varchar(30) not null, point_data varchar(20) not null, data_time datetime not null, max_data varchar(20) not null, max_time datetime not null, min_data varchar(20) not null, min_time datetime not null, ave_data varchar(20), content varchar(255) not null)").arg(tbname));
-    }
+//    QStringList tables = db.tables();
+//    for(int i=0;i<tables.length();i++){
+//        if(QString::compare(tbname,tables.at(i))==0){
+//            tablefound = true;
+//            break;
+//        }
+//    }
+//    if(!tablefound){
+//        db.exec(QString("create table %1 (id bigint(20) unsigned not null auto_increment primary key, device_id varchar(60) not null, point_code varchar(30) not null, point_data varchar(20) not null, data_time datetime not null, max_data varchar(20) not null, max_time datetime not null, min_data varchar(20) not null, min_time datetime not null, ave_data varchar(20), content varchar(255) not null)").arg(tbname));
+//    }
 }
 
 void DatabaseThread::chktab4dev2(QString deviceid)
@@ -68,17 +68,22 @@ void DatabaseThread::chktab4dev2(QString deviceid)
     bool tablefound = false;
     QString sql;
     QString tbname = QString("sp_e%1").arg(deviceid);
-    QStringList tables = db.tables();
-    for(int i=0;i<tables.length();i++){
-        if(QString::compare(tbname,tables.at(i))==0){
+//    QStringList tables = db.tables();
+//    for(int i=0;i<tables.length();i++){
+//        if(QString::compare(tbname,tables.at(i))==0){
+//            tablefound = true;
+//            break;
+//        }
+//    }
+    QSqlQuery qry = db.exec(QString("select count(*) from sp_owner_status where device_id='%1' and dwtype=7").arg(deviceid));
+    if(qry.next()){
+        if(qry.value(0).toInt()!=0)
             tablefound = true;
-            break;
-        }
     }
     if(!tablefound){
-        sql = QString("create table %1 (id bigint(20) unsigned not null auto_increment primary key, device_id varchar(60) not null, point_code varchar(30) not null, point_data varchar(20) not null, data_time datetime not null, max_data varchar(20) not null, max_time datetime not null, min_data varchar(20) not null, min_time datetime not null, ave_data varchar(20), content varchar(255) not null);").arg(tbname);
-        sql.append(QString("insert into sp_devices_status (id, deviceid, deviceno, devicestatus, statustime, f_evt, c_evt, w_evt, true_status, lastcommtime) values (NULL, '%1' ,0 ,0, '1970-01-01 08:00:00', '40', '00', '', 0, '1970-01-01 08:00:00');").arg(deviceid));
-        sql.append(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time) values (NULL, '%1', 7, '漏电报警', 4, 0, '1970-01-01 08:00:00');").arg(deviceid));
+//        sql = QString("create table %1 (id bigint(20) unsigned not null auto_increment primary key, device_id varchar(60) not null, point_code varchar(30) not null, point_data varchar(20) not null, data_time datetime not null, max_data varchar(20) not null, max_time datetime not null, min_data varchar(20) not null, min_time datetime not null, ave_data varchar(20), content varchar(255) not null);").arg(tbname);
+//        sql.append(QString("insert into sp_devices_status (id, deviceid, deviceno, devicestatus, statustime, f_evt, c_evt, w_evt, true_status, lastcommtime) values (NULL, '%1' ,0 ,0, '1970-01-01 08:00:00', '40', '00', '', 0, '1970-01-01 08:00:00');").arg(deviceid));
+        sql = QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time) values (NULL, '%1', 7, '漏电报警', 4, 0, '1970-01-01 08:00:00');").arg(deviceid);
         sql.append(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time) values (NULL, '%1', 7, 'A相线缆温度超高', 5, 0, '1970-01-01 08:00:00');").arg(deviceid));
         sql.append(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time) values (NULL, '%1', 7, 'B相线缆温度超高', 6, 0, '1970-01-01 08:00:00');").arg(deviceid));
         sql.append(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time) values (NULL, '%1', 7, 'C相线缆温度超高', 7, 0, '1970-01-01 08:00:00');").arg(deviceid));
@@ -99,17 +104,22 @@ void DatabaseThread::chktab4dev3(QString deviceid)
     bool tablefound = false;
     QString sql;
     QString tbname = QString("sp_e%1").arg(deviceid);
-    QStringList tables = db.tables();
-    for(int i=0;i<tables.length();i++){
-        if(QString::compare(tbname,tables.at(i))==0){
+//    QStringList tables = db.tables();
+//    for(int i=0;i<tables.length();i++){
+//        if(QString::compare(tbname,tables.at(i))==0){
+//            tablefound = true;
+//            break;
+//        }
+//    }
+    QSqlQuery qry = db.exec(QString("select count(*) from sp_owner_status where device_id='%1' and dwtype=7").arg(deviceid));
+    if(qry.next()){
+        if(qry.value(0).toInt()!=0)
             tablefound = true;
-            break;
-        }
     }
     if(!tablefound){
-        sql = QString("create table %1 (id bigint(20) unsigned not null auto_increment primary key, device_id varchar(60) not null, point_code varchar(30) not null, point_data varchar(20) not null, data_time datetime not null, max_data varchar(20) not null, max_time datetime not null, min_data varchar(20) not null, min_time datetime not null, ave_data varchar(20), content varchar(255) not null);").arg(tbname);
-        sql.append(QString("insert into sp_devices_status (id, deviceid, deviceno, devicestatus, statustime, f_evt, c_evt, w_evt, true_status, lastcommtime) values (NULL, '%1' ,0 ,0, '1970-01-01 08:00:00', '40', '00', '', 0, '1970-01-01 08:00:00');").arg(deviceid));
-        sql.append(QString("delete from sp_owner_status where device_id=%1;").arg(deviceid));
+//        sql = QString("create table %1 (id bigint(20) unsigned not null auto_increment primary key, device_id varchar(60) not null, point_code varchar(30) not null, point_data varchar(20) not null, data_time datetime not null, max_data varchar(20) not null, max_time datetime not null, min_data varchar(20) not null, min_time datetime not null, ave_data varchar(20), content varchar(255) not null);").arg(tbname);
+//        sql.append(QString("insert into sp_devices_status (id, deviceid, deviceno, devicestatus, statustime, f_evt, c_evt, w_evt, true_status, lastcommtime) values (NULL, '%1' ,0 ,0, '1970-01-01 08:00:00', '40', '00', '', 0, '1970-01-01 08:00:00');").arg(deviceid));
+        sql = QString("delete from sp_owner_status where device_id=%1;").arg(deviceid);
         sql.append(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time) values (NULL, '%1', 7, '供电过压', 1, 0, '1970-01-01 08:00:00');").arg(deviceid));
         sql.append(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time) values (NULL, '%1', 7, '供电低压', 2, 0, '1970-01-01 08:00:00');").arg(deviceid));
         sql.append(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time) values (NULL, '%1', 7, '供电过流', 3, 0, '1970-01-01 08:00:00');").arg(deviceid));
@@ -128,30 +138,30 @@ void DatabaseThread::chktab4dev3(QString deviceid)
 
 void DatabaseThread::chktab4dev4(QString deviceid)
 {
-    bool tablefound = false;
+//    bool tablefound = false;
     bool needcreatesta = false;
     QString sql;
     QString tbname = QString("sp_e%1").arg(deviceid);
-    QStringList tables = db.tables();
-    for(int i=0;i<tables.length();i++){
-        if(QString::compare(tbname,tables.at(i))==0){
-            tablefound = true;
-            break;
-        }
-    }
+//    QStringList tables = db.tables();
+//    for(int i=0;i<tables.length();i++){
+//        if(QString::compare(tbname,tables.at(i))==0){
+//            tablefound = true;
+//            break;
+//        }
+//    }
     QSqlQuery qry = db.exec(QString("select count(*) from sp_owner_status where device_id='%1' and dwtype=7").arg(deviceid));
     if(qry.next()){
         if(qry.value(0).toInt()!=33)
             needcreatesta = true;
     }
-    if(!tablefound){
-        sql = QString("create table %1 (id bigint(20) unsigned not null auto_increment primary key, device_id varchar(60) not null, point_code varchar(30) not null, point_data varchar(20) not null, data_time datetime not null, max_data varchar(20) not null, max_time datetime not null, min_data varchar(20) not null, min_time datetime not null, ave_data varchar(20), content varchar(255) not null);").arg(tbname);
-        db.exec(sql);
-#ifdef sql_debug
-        emit SqlLog(QString("[ %1 sql ] ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz"))+sqlList.first());
-#endif
+//    if(!tablefound){
+//        sql = QString("create table %1 (id bigint(20) unsigned not null auto_increment primary key, device_id varchar(60) not null, point_code varchar(30) not null, point_data varchar(20) not null, data_time datetime not null, max_data varchar(20) not null, max_time datetime not null, min_data varchar(20) not null, min_time datetime not null, ave_data varchar(20), content varchar(255) not null);").arg(tbname);
+//        db.exec(sql);
+//#ifdef sql_debug
+//        emit SqlLog(QString("[ %1 sql ] ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz"))+sqlList.first());
+//#endif
 
-    }
+//    }
     if(needcreatesta){
         sql = QString("delete from sp_owner_status where device_id=%1;").arg(deviceid);
         sql.append(QString("insert into sp_devices_status (id, deviceid, deviceno, devicestatus, statustime, f_evt, c_evt, w_evt, true_status, lastcommtime) values (NULL, '%1' ,0 ,0, '1970-01-01 08:00:00', '40', '00', '', 0, '1970-01-01 08:00:00');").arg(deviceid));
@@ -281,6 +291,7 @@ void DatabaseThread::check_devicelist()
             eFireList->devs[nrow].Ratio = static_cast<float>(1.0);
         else
             eFireList->devs[nrow].Ratio = qry.value(5).toFloat();
+
         nrow++;
         if(hour==255){
             sql = QString("select true_status from sp_devices_status where deviceid='%1'")
@@ -308,6 +319,7 @@ void DatabaseThread::check_devicelist()
     qry.clear();
     for(int i=nrow;i<10240;i++)
         eFireList->devs[i].Enabled=0x00;
+
     nrow=0;
     sql = QString("select V_GATEWAY_ID, V_DEVICE_ID, V_PNO, V_SN, V_PNOVALUE, F_ALARMH, F_ALARML, F_OFFSET, V_AD, F_PNOMAX, F_PNOMIN from sp_sfere_conf");
     qry = db.exec(sql);

+ 8 - 3
DataProcessService/ytElectricFire/efcommthread2.cpp

@@ -219,7 +219,12 @@ void EFCommThread2::chk_data(QByteArray data, QDateTime t)
                     &&(d2.length()==57)&&((d2.at(2)&0xff)==52)
                     &&(d3.length()==9)&&((d3.at(2)&0xff)==4)){
                 float leakc = static_cast<float>((static_cast<qint16>(((d1.at(13)&0x00ff)<<8)|(d1.at(14)&0x00ff)))*0.1);
-                float temp1 = static_cast<float>((static_cast<qint16>(((d1.at(15)&0x00ff)<<8)|(d1.at(16)&0x00ff)))*0.1);
+                float temp1=0.00;
+                if(QString::compare(eFireList->devs[DevIdx].Device_Type,QString("ARCM300D"))==0){//吸收有功电能
+                    temp1 = static_cast<float>((static_cast<qint32>(((d3.at(3)&0x000000ff)<<24)|((d3.at(4)&0x000000ff)<<16)|((d3.at(5)&0x000000ff)<<8)|(d3.at(6)&0x000000ff)))*0.001*pt*ct);
+                }else{
+                    temp1 = static_cast<float>((static_cast<qint16>(((d1.at(15)&0x00ff)<<8)|(d1.at(16)&0x00ff)))*0.1);
+                }
                 float temp2 = static_cast<float>((static_cast<qint16>(((d1.at(17)&0x00ff)<<8)|(d1.at(18)&0x00ff)))*0.1);
                 float temp3 = static_cast<float>((static_cast<qint16>(((d1.at(19)&0x00ff)<<8)|(d1.at(20)&0x00ff)))*0.1);
                 float ALeak = static_cast<float>((static_cast<qint16>(((d1.at(45)&0x00ff)<<8)|(d1.at(46)&0x00ff)))*0.1);
@@ -229,8 +234,8 @@ void EFCommThread2::chk_data(QByteArray data, QDateTime t)
                 float volt1 = static_cast<float>((static_cast<qint16>(((d2.at(3)&0x00ff)<<8)|(d2.at(4)&0x00ff)))*0.1*pt);
                 float volt2 = static_cast<float>((static_cast<qint16>(((d2.at(5)&0x00ff)<<8)|(d2.at(6)&0x00ff)))*0.1*pt);
                 float volt3 = static_cast<float>((static_cast<qint16>(((d2.at(7)&0x00ff)<<8)|(d2.at(8)&0x00ff)))*0.1*pt);
-                bool LVoltSta = ((d2.at(18)&0xff)==0x01)?true:false;
-                bool HVoltSta = ((d2.at(19)&0xff)==0x01)?true:false;
+                bool HVoltSta = ((d2.at(21)&0xff)==0x01)?true:false;
+                bool LVoltSta = ((d2.at(22)&0xff)==0x01)?true:false;
                 float AHVolt1 = static_cast<float>((static_cast<qint16>(((d2.at(23)&0x00ff)<<8)|(d2.at(24)&0x00ff)))*0.1*pt);
                 float AHVolt2 = static_cast<float>((static_cast<qint16>(((d2.at(25)&0x00ff)<<8)|(d2.at(26)&0x00ff)))*0.1*pt);
                 float AHVolt3 = static_cast<float>((static_cast<qint16>(((d2.at(27)&0x00ff)<<8)|(d2.at(28)&0x00ff)))*0.1*pt);

+ 2 - 2
DataProcessService/ytElectricFire/elecfilecore.cpp

@@ -306,9 +306,9 @@ void ElecFileCore::AlarmReport(QString addr, quint64 insertid, QString type, QSt
     }
     QString name = "";
     if(type.compare("EF1")==0)
-        name = "压报警";
+        name = "压报警";
     else if(type.compare("EF2")==0)
-        name = "压报警";
+        name = "压报警";
     else if(type.compare("EF3")==0)
         name = "过流报警";
     else if(type.compare("EF4")==0)

+ 37 - 2
DataProcessService/ytRTUProcess/databasethread.cpp

@@ -19,6 +19,7 @@ DatabaseThread::DatabaseThread(QObject *parent) :
     hour = 255;
     sqlList.clear();
     alarmRepList.clear();
+    apTableList.clear();
     db = QSqlDatabase::addDatabase("QMYSQL","rtu_db");
     db.setHostName(QString(HostName));
     db.setPort(HostPort);
@@ -37,6 +38,12 @@ void DatabaseThread::appendAlarm(AlarmRep rep)
     alarmRepList.append(rep);
 }
 
+void DatabaseThread::appendTable(ApTable t)
+{
+    apTableList.append(t);
+}
+
+
 void DatabaseThread::check_devicelist()
 {
     printf("database thread check_devicelist()\n");
@@ -58,9 +65,9 @@ void DatabaseThread::check_devicelist()
         sprintf(rtuList->rtus[nrow].Device_Type,"%s",qry.value(3).toString().toUtf8().data());
         sprintf(rtuList->rtus[nrow].Company_Code,"%s",qry.value(4).toString().toUtf8().data());
         if(qry2.next()){
-            if(qry2.value(0).toInt()==0)
+            if(qry2.value(0).toInt()==0){
                 rtuList->rtus[nrow].Online_Flag = 0x01;
-            else{
+            }else{
                 rtuList->rtus[nrow].Online_Flag = 0x00;
                 rtuList->rtus[nrow].LastCommtime = nowTime;
             }
@@ -93,6 +100,21 @@ void DatabaseThread::check_devicelist()
                     sprintf(rtuList->rtus[nrow].Port[portnum].NameOfIOon,"%s",qry2.value(8).toString().toUtf8().data());
                     sprintf(rtuList->rtus[nrow].Port[portnum].NameOfIOOff,"%s",qry2.value(7).toString().toUtf8().data());
                 }
+                //sp_owner_port 端口配置表 systype高低电平现在只有 1 高电平状态;当设备对应状态点位配置表sp_owner_port
+                //高电平名称为 "打开"、"告警"、"报警"、"联动"、"合闸"、"开启"、"启动"、"短路"、"故障"、"手动"、"运行"、"接线" 时,状态位value值是0、1还是保持一样0、1,
+                //否则状态位value值0、1取相反值1、0,同步更新 sp_owner_status 设备实时数据表 和 sp_owner_sync_data两个表,
+                //但sp_d 设备数据表还是保存从设备采集上来的原始状态数据值,不参与更新;
+                QString upName = "";
+                upName.append(qry2.value(7).toString().toUtf8().data());
+                if((upName.compare(QString::fromUtf8("打开"))==0)||(upName.compare(QString::fromUtf8("告警"))==0)||(upName.compare(QString::fromUtf8("报警"))==0)
+                 ||(upName.compare(QString::fromUtf8("联动"))==0)||(upName.compare(QString::fromUtf8("合闸"))==0)||(upName.compare(QString::fromUtf8("开启"))==0)
+                 ||(upName.compare(QString::fromUtf8("启动"))==0)||(upName.compare(QString::fromUtf8("短路"))==0)||(upName.compare(QString::fromUtf8("故障"))==0)
+                 ||(upName.compare(QString::fromUtf8("手动"))==0)||(upName.compare(QString::fromUtf8("运行"))==0)||(upName.compare(QString::fromUtf8("接线"))==0)){
+                    rtuList->rtus[nrow].Port[portnum].OffSet = 0.00;
+                }else{
+                    rtuList->rtus[nrow].Port[portnum].OffSet = 1.00;
+                }
+
             }
             sprintf(rtuList->rtus[nrow].Port[portnum].PortName,"%s",qry2.value(6).toString().toUtf8().data());
             rtuList->rtus[nrow].Port[portnum].Enabled = 0x01;
@@ -161,6 +183,19 @@ void DatabaseThread::run()
                     usleep(1000);
                 }
             }
+            if(apTableList.length()>0){
+                while (apTableList.length()>0) {
+                    ApTable ap = apTableList.first();
+                    QSqlQuery qry1 = db.exec(ap.Sql);
+
+                    quint64 lastid = qry1.lastInsertId().toULongLong()&0xffffffffffffffff;
+                    if(lastid >0){
+                        emit TableReport(ap.DeviceId,lastid,ap.Time,ap.Status,ap.Port,ap.nCmd,ap.pName,ap.Data1,ap.Content);
+                    }
+                    apTableList.removeFirst();
+                    usleep(1000);
+                }
+            }
         }
         usleep(50000);
     }

+ 27 - 0
DataProcessService/ytRTUProcess/databasethread.h

@@ -11,6 +11,30 @@
 #include <QList>
 #include "AlarmReport.h"
 
+class ApTable {
+public:
+    ApTable(QString deviceid,QString sql,QString time,QString status,QString port,QString ncmd,QString pname,QString data1,QString content){
+        DeviceId = deviceid;
+        Sql = sql;
+        Time = time;
+        Status = status;
+        Port = port;
+        nCmd = ncmd;
+        pName = pname;
+        Data1 = data1;
+        Content = content;
+    }
+    QString DeviceId;
+    QString Sql;
+    QString Time;
+    QString Status;
+    QString Port;
+    QString nCmd;
+    QString pName;
+    QString Data1;
+    QString Content;
+};
+
 class DatabaseThread : public QThread
 {
     Q_OBJECT
@@ -18,11 +42,13 @@ public:
     explicit DatabaseThread(QObject *parent = nullptr);
     void appendSql(QString sql);
     void appendAlarm(AlarmRep rep);
+    void appendTable(ApTable tab);
     void run();
     void check_devicelist();
     void stop();
 signals:
     void AlarmReport(QString addr, quint64 insertid, QString type, QString time, QString ptype, QString pnumber);
+    void TableReport(QString deviceid,quint64 insertid,QString time,QString status,QString port,QString ncmd,QString pname,QString data1,QString content);
     void SqlLog(QString log);
     void MqttInfo(QString ip,QString port,QString name,QString passwd);
 public slots:
@@ -32,6 +58,7 @@ private:
     QSqlDatabase db;
     QStringList sqlList;
     QList<AlarmRep> alarmRepList;
+    QList<ApTable> apTableList;
     bool keep;
 };
 

+ 152 - 33
DataProcessService/ytRTUProcess/porcesscore.cpp

@@ -9,7 +9,9 @@ PorcessCore::PorcessCore(QObject *parent) : QObject(parent)
 {
     mqttIdx = 1;
     mqttinfoIdx =1;
+    statusIdx = 1;
     alarmData = "";
+    statusStr = "";
 
     timer = new QTimer(this);
     logThread = new LogThread(this);
@@ -33,6 +35,7 @@ PorcessCore::PorcessCore(QObject *parent) : QObject(parent)
     repcur = 0;
     connect(timer, &QTimer::timeout, this, &PorcessCore::timeout);
     connect(dbThread, &DatabaseThread::AlarmReport, this, &PorcessCore::AlarmReport);
+    connect(dbThread,&DatabaseThread::TableReport,this,&PorcessCore::TableReport);
     connect(dbThread, &DatabaseThread::SqlLog, this, &PorcessCore::SqlLog);
     connect(dbThread, &DatabaseThread::MqttInfo, this, &PorcessCore::MqttConnect);
     dbThread->start();
@@ -89,16 +92,9 @@ void PorcessCore::timeout()
     for(int i=0;i<10240;i++){
         if(rtuList->rtus[i].Enabled==0x01){
             if((t-rtuList->rtus[i].LastCommtime)>3600){
+                rtuList->rtus[i].LastCommtime = QDateTime::currentDateTime().toTime_t();
                 if(rtuList->rtus[i].Online_Flag!=0x00){
                     rtuList->rtus[i].Online_Flag = 0x00;
-                    dbThread->appendSql(QString("update sp_devices_status set devicestatus=%1, true_status=%1, statustime='%2' where deviceid='%3'")
-                                        .arg(75).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rtuList->rtus[i].Device_Code));
-                    dbThread->appendSql(QString("insert into sp_rtu2017 (id, device_code, time, status, data2, data4) values (NULL, '%1', '%2', 44, '%3', '%4')")
-                                          .arg(QString::fromUtf8(rtuList->rtus[i].Device_Code)).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))
-                                          .arg(QString::fromUtf8("离线")).arg(QString::fromUtf8(rtuList->rtus[i].Device_Name)));
-                    dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, time, status, data2, data4) values (NULL, '%1', '%2', 44, '%3', '%4')")
-                                        .arg(QString::fromUtf8(rtuList->rtus[i].Device_Code)).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))
-                                        .arg(QString::fromUtf8("离线")).arg(QString::fromUtf8(rtuList->rtus[i].Device_Name)));
 
                     if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
                             m_client->connectToHost();
@@ -113,6 +109,33 @@ void PorcessCore::timeout()
                         if(mqttIdx>9999)
                             mqttIdx = 1;
                     }
+
+                    dbThread->appendSql(QString("update sp_devices_status set devicestatus=%1, true_status=%1, statustime='%2' where deviceid='%3'")
+                                        .arg(75).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rtuList->rtus[i].Device_Code));
+                    dbThread->appendSql(QString("insert into sp_rtu2017 (id, device_code, time, status, data2, data4) values (NULL, '%1', '%2', 44, '%3', '%4')")
+                                          .arg(QString::fromUtf8(rtuList->rtus[i].Device_Code)).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))
+                                          .arg(QString::fromUtf8("离线")).arg(QString::fromUtf8(rtuList->rtus[i].Device_Name)));
+                    //dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, time, status, data2, data4) values (NULL, '%1', '%2', 44, '%3', '%4')")
+                    //                    .arg(QString::fromUtf8(rtuList->rtus[i].Device_Code)).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))
+                    //                    .arg(QString::fromUtf8("离线")).arg(QString::fromUtf8(rtuList->rtus[i].Device_Name)));
+                    QString sql = QString("insert into sp_d%1 (id, device_code, time, status, data2, data4) values (NULL, '%1', '%2', 44, '%3', '%4')")
+                            .arg(QString::fromUtf8(rtuList->rtus[i].Device_Code)).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))
+                            .arg(QString::fromUtf8("离线")).arg(QString::fromUtf8(rtuList->rtus[i].Device_Name));
+
+                    dbThread->appendTable(ApTable(QString::fromUtf8(rtuList->rtus[i].Device_Code),sql,QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"),"44","","","","",QString("%1 %2").arg(QString::fromUtf8("离线")).arg(QString::fromUtf8(rtuList->rtus[i].Device_Name))));
+                }
+
+                if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
+                        m_client->connectToHost();
+                }
+                if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
+                    statusStr.append(QString("{\"devId\":\"%1\",\"devicestatus\":75,\"type\":\"STATUS\",\"timestamp\":\"%2\"}").arg(rtuList->rtus[i].Device_Code).arg(QDateTime::currentDateTime().toTime_t()));
+
+                    QString topic1 = QString("/usky/ytDP0006/%1/%2/status").arg(rtuList->rtus[i].Company_Code).arg(rtuList->rtus[i].Device_Code);
+                    m_client->publish(QMQTT::Message(statusIdx++,topic1,statusStr.toUtf8()));
+                    statusStr.clear();
+                    if(statusIdx>9999)
+                        statusIdx = 1;
                 }
             }
         }
@@ -203,11 +226,17 @@ void PorcessCore::getAnalogReport(int devIdx, int port, QByteArray data, float v
                                    QString("insert into sp_rtu2017 (id, port, device_code, time, status, address, ncmd, data1, data2, data3, data4) values (NULL, 'E6', '%1', '%2', '01', '%3', '%4', %5, '%6', '', '%7' )")
                                    .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(Dat).arg(port&0x0f,2,10,QChar('0')).arg(QString::number(static_cast<double>(value),10,2)).arg(alarmName).arg(portname),
                                    QString("%1 %2").arg(alarmName).arg(portname),t.toString("yyyy-MM-dd HH:mm:ss"),"E6",pnumber));
-    dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, address, ncmd, data1, data2, data3, data4, status) values (NULL, '%1', 'E6', '%2', '%3', '%4', %5, '%6', '%7', '%8', '01')")
-                        .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(Dat).arg(port&0x0f,2,10,QChar('0')).arg(QString::number(static_cast<double>(value),10,2)).arg(alarmName).arg("").arg(portname));
-    dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2', content='%3' where device_id='%4' and point_code=%5")
-                        .arg(QString::number(static_cast<double>(value),10,2)).arg(t.toString("yyyy-MM-dd HH:mm:ss"))
-                        .arg(QString::fromUtf8("%1 %2").arg(alarmName).arg(portname)).arg(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code)).arg(port));
+   //dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, address, ncmd, data1, data2, data3, data4, status) values (NULL, '%1', 'E6', '%2', '%3', '%4', %5, '%6', '%7', '%8', '01')")
+   //                     .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(Dat).arg(port&0x0f,2,10,QChar('0')).arg(QString::number(static_cast<double>(value),10,2)).arg(alarmName).arg("").arg(portname));
+
+    QString sql = QString("insert into sp_d%1 (id, device_code, port, time, address, ncmd, data1, data2, data3, data4, status) values (NULL, '%1', 'E6', '%2', '%3', '%4', %5, '%6', '%7', '%8', '01')")
+            .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(Dat).arg(port&0x0f,2,10,QChar('0')).arg(QString::number(static_cast<double>(value),10,2)).arg(alarmName).arg("").arg(portname);
+
+//    dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2', content='%3' where device_id='%4' and point_code=%5")
+//                        .arg(QString::number(static_cast<double>(value),10,2)).arg(t.toString("yyyy-MM-dd HH:mm:ss"))
+//                        .arg(QString::fromUtf8("%1 %2").arg(alarmName).arg(portname)).arg(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code)).arg(port));
+
+    dbThread->appendTable(ApTable(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code),sql,t.toString("yyyy-MM-dd HH:mm:ss"),"01","E6",QString("%1").arg(port&0x0f,2,10,QChar('0')),portname,QString::number(static_cast<double>(value),10,2),QString("%1 %2").arg(alarmName).arg(portname)));
 
     QString point;
     switch (port&0x0f) {
@@ -243,11 +272,18 @@ void PorcessCore::getAnalogValue(int devIdx, int port, QByteArray data, float va
     QString Dat = "";
     for(int i=0;i<data.length();i++)
         Dat.append(QString("%1").arg(data.at(i)&0xff,2,16,QChar('0')).toUpper());
-    dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, address, ncmd, data1, data2, data3, data4, status) values (NULL, '%1', 'E6', '%2', '%3', '%4', %5, '%6', '%7', '%8', '00')")
-                        .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(Dat).arg(port&0x0f,2,10,QChar('0')).arg(QString::number(static_cast<double>(value),10,2)).arg(QString::fromUtf8("正常")).arg("").arg(rtuList->rtus[devIdx].Port[port].PortName));
-    dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=%4")
-                        .arg(QString::number(static_cast<double>(value),10,2)).arg(t.toString("yyyy-MM-dd HH:mm:ss"))
-                        .arg(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code)).arg(port));
+    //dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, address, ncmd, data1, data2, data3, data4, status) values (NULL, '%1', 'E6', '%2', '%3', '%4', %5, '%6', '%7', '%8', '00')")
+                        //.arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(Dat).arg(port&0x0f,2,10,QChar('0')).arg(QString::number(static_cast<double>(value),10,2)).arg(QString::fromUtf8("正常")).arg("").arg(rtuList->rtus[devIdx].Port[port].PortName));
+//    dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=%4")
+//                        .arg(QString::number(static_cast<double>(value),10,2)).arg(t.toString("yyyy-MM-dd HH:mm:ss"))
+//                        .arg(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code)).arg(port));
+
+    QString sql = QString("insert into sp_d%1 (id, device_code, port, time, address, ncmd, data1, data2, data3, data4, status) values (NULL, '%1', 'E6', '%2', '%3', '%4', %5, '%6', '%7', '%8', '00')")
+            .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(Dat).arg(port&0x0f,2,10,QChar('0')).arg(QString::number(static_cast<double>(value),10,2)).arg(QString::fromUtf8("正常")).arg("").arg(rtuList->rtus[devIdx].Port[port].PortName);
+    
+    dbThread->appendTable(ApTable(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code),sql,t.toString("yyyy-MM-dd HH:mm:ss"),"00","E6",QString("%1").arg(port&0x0f,2,10,QChar('0')),QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName),QString::number(static_cast<double>(value),10,2),QString("%1 %2").arg(QString::fromUtf8("正常")).arg(rtuList->rtus[devIdx].Port[port].PortName)));
+
+    
     if(QString::compare(QString(rtuList->rtus[devIdx].Company_Code),"10318")==0){
         QByteArray post_data;
         //设置发送的数据
@@ -307,13 +343,26 @@ void PorcessCore::getIoReport(int devIdx, int port, QByteArray data, int value,
                                        .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(value==0?"00":"01").arg(Dat).arg(port,2,10,QChar('0'))
                                        .arg(d4)
                                        .arg(portname),QString("%1 %2").arg(portname).arg(d4),t.toString("yyyy-MM-dd HH:mm:ss")));
-        dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, status, address, ncmd, data2, data4) values (NULL, '%1', 'E3', '%2', '%3', '%4', '%5', '%6', '%7')")
-                            .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(value==0?"00":"01").arg(Dat).arg(port,2,10,QChar('0'))
-                            .arg(d4)
-                            .arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName)));
-        dbThread->appendSql(QString("update sp_owner_status set point_data='%1', data_time='%2', content='%3' where device_id='%4' and point_code=%5")
-                            .arg(value==0?"00":"01").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString("%1 %2").arg(d4).arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName)))
-                            .arg(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code)).arg(port));
+//        dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, status, address, ncmd, data2, data4) values (NULL, '%1', 'E3', '%2', '%3', '%4', '%5', '%6', '%7')")
+//                            .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(value==0?"00":"01").arg(Dat).arg(port,2,10,QChar('0'))
+//                            .arg(d4)
+//                            .arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName)));
+        QString sql = QString("insert into sp_d%1 (id, device_code, port, time, status, address, ncmd, data2, data4) values (NULL, '%1', 'E3', '%2', '%3', '%4', '%5', '%6', '%7')")
+                .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(value==0?"00":"01").arg(Dat).arg(port,2,10,QChar('0'))
+                .arg(d4)
+                .arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName));
+
+//        dbThread->appendSql(QString("update sp_owner_status set point_data='%1', data_time='%2', content='%3' where device_id='%4' and point_code=%5")
+//                            .arg(value==0?"00":"01").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString("%1 %2").arg(d4).arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName)))
+//                            .arg(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code)).arg(port));
+
+        if(rtuList->rtus[devIdx].Port[port].OffSet > 0){
+            dbThread->appendTable(ApTable(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code),sql,t.toString("yyyy-MM-dd HH:mm:ss"),value==0?"1":"0","E3",QString("%1").arg(port,2,10,QChar('0')),portname,"",QString("%1 %2").arg(d4).arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName))));
+
+        }else{
+            dbThread->appendTable(ApTable(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code),sql,t.toString("yyyy-MM-dd HH:mm:ss"),value==0?"0":"1","E3",QString("%1").arg(port,2,10,QChar('0')),portname,"",QString("%1 %2").arg(d4).arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName))));
+
+        }
 
         QString point;
         switch (port&0x0f) {
@@ -350,16 +399,72 @@ void PorcessCore::getIOValue(int devIdx, int port, QByteArray data, int value, Q
     QString Dat = "";
     for(int i=0;i<data.length();i++)
         Dat.append(QString("%1").arg(data.at(i)&0xff,2,16,QChar('0')).toUpper());
-    dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, status, address, ncmd, data2, data4) values (NULL, '%1', 'E3', '%2', '%3', '%4', '%5', '%6', '%7')")
-                        .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(value==0?"00":"01").arg(Dat).arg(port,2,10,QChar('0'))
-                        .arg(QString::fromUtf8(value==1?rtuList->rtus[devIdx].Port[port].NameOfIOon:rtuList->rtus[devIdx].Port[port].NameOfIOOff))
-                        .arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName)));
-    dbThread->appendSql(QString("update sp_owner_status set point_data='%1', data_time='%2', content='%3' where device_id='%4' and point_code=%5")
-                        .arg(value==0?"00":"01").arg(t.toString("yyyy-MM-dd HH:mm:ss"))
-                        .arg(QString::fromUtf8("%1 %2").arg(value==1?rtuList->rtus[devIdx].Port[port].NameOfIOon:rtuList->rtus[devIdx].Port[port].NameOfIOOff).arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName)))
-                        .arg(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code)).arg(port));
+//    dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, status, address, ncmd, data2, data4) values (NULL, '%1', 'E3', '%2', '%3', '%4', '%5', '%6', '%7')")
+//                        .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(value==0?"00":"01").arg(Dat).arg(port,2,10,QChar('0'))
+//                        .arg(QString::fromUtf8(value==1?rtuList->rtus[devIdx].Port[port].NameOfIOon:rtuList->rtus[devIdx].Port[port].NameOfIOOff))
+//                        .arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName)));
+    QString sql = QString("insert into sp_d%1 (id, device_code, port, time, status, address, ncmd, data2, data4) values (NULL, '%1', 'E3', '%2', '%3', '%4', '%5', '%6', '%7')")
+            .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(value==0?"00":"01").arg(Dat).arg(port,2,10,QChar('0'))
+            .arg(QString::fromUtf8(value==1?rtuList->rtus[devIdx].Port[port].NameOfIOon:rtuList->rtus[devIdx].Port[port].NameOfIOOff))
+            .arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName));
+
+    if(rtuList->rtus[devIdx].Port[port].OffSet > 0){
+        dbThread->appendTable(ApTable(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code),sql,t.toString("yyyy-MM-dd HH:mm:ss"),value==0?"1":"0","E3",QString("%1").arg(port,2,10,QChar('0')),QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName),"",QString("%1 %2").arg(QString::fromUtf8(value==1?rtuList->rtus[devIdx].Port[port].NameOfIOon:rtuList->rtus[devIdx].Port[port].NameOfIOOff)).arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName))));
+
+    }else{
+        dbThread->appendTable(ApTable(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code),sql,t.toString("yyyy-MM-dd HH:mm:ss"),value==0?"0":"1","E3",QString("%1").arg(port,2,10,QChar('0')),QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName),"",QString("%1 %2").arg(QString::fromUtf8(value==1?rtuList->rtus[devIdx].Port[port].NameOfIOon:rtuList->rtus[devIdx].Port[port].NameOfIOOff)).arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName))));
+
+    }
+
+    
+//    dbThread->appendSql(QString("update sp_owner_status set point_data='%1', data_time='%2', content='%3' where device_id='%4' and point_code=%5")
+//                        .arg(value==0?"00":"01").arg(t.toString("yyyy-MM-dd HH:mm:ss"))
+//                        .arg(QString::fromUtf8("%1 %2").arg(value==1?rtuList->rtus[devIdx].Port[port].NameOfIOon:rtuList->rtus[devIdx].Port[port].NameOfIOOff).arg(QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName)))
+//                        .arg(QString::fromUtf8(rtuList->rtus[devIdx].Device_Code)).arg(port));
 }
 
+
+void PorcessCore::TableReport(QString deviceid,quint64 insertid,QString time,QString status,QString port,QString ncmd,QString pname,QString data1,QString content)
+{
+    if(status.compare("44")==0){
+        dbThread->appendSql(QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','%6')")
+                                                    .arg(insertid).arg(deviceid).arg(0).arg(1).arg(time).arg(content));
+        dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='通信报警',dwtype=%4 where device_id='%5' and point_code='%6';")
+                                                .arg(0).arg(time).arg(content).arg(6).arg(deviceid).arg(0));
+    }else{
+        if(port.length()>0){
+            if(port.compare("E3")==0){
+                int tmpIdx = ncmd.toInt(nullptr,16);
+                if(tmpIdx>0){
+                    dbThread->appendSql(QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','%6')")
+                                                                            .arg(insertid).arg(deviceid).arg(tmpIdx).arg(status).arg(time).arg(content));
+                    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='%4',dwtype=%5 where device_id='%6' and point_code='%7';")
+                                                                        .arg(status).arg(time)
+                                                                        .arg(content).arg(pname)
+                                                                        .arg(6).arg(deviceid).arg(tmpIdx));
+                }
+
+            }else if(port.compare("E6")==0){
+                int tempIdx = ncmd.toInt();
+                dbThread->appendSql(QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','%6')")
+                                                                    .arg(insertid).arg(deviceid).arg(tempIdx+64).arg(data1)
+                                                                    .arg(time)
+                                                                   .arg(content));
+                if(tempIdx > 0){
+                    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3 %4',dwtype=%5 where device_id='%6' and point_code='%7';")
+                                                                        .arg(data1)
+                                                                        .arg(time)
+                                                                        .arg(pname).arg(content)
+                                                                        .arg(6)
+                                                                        .arg(deviceid)
+                                                                        .arg(tempIdx+64));
+                }
+            }
+        }
+    }
+}
+
+
 void PorcessCore::CommData(QString DevicID,int dir,QString data)
 {
     logThread->appendData(data.toUpper());
@@ -381,6 +486,20 @@ void PorcessCore::getOnLine(int devIdx, bool sta)
             rtuList->rtus[devIdx].Online_Flag = 0x01;
             dbThread->appendSql(QString("update sp_devices_status set devicestatus=%1, true_status=%1, statustime='%2', lastcommtime='%2' where deviceid='%3'")
                                 .arg(0).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rtuList->rtus[devIdx].Device_Code));
+
+        }
+
+        if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
+                m_client->connectToHost();
+        }
+        if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
+            statusStr.append(QString("{\"devId\":\"%1\",\"devicestatus\":0,\"type\":\"STATUS\",\"timestamp\":\"%2\"}").arg(rtuList->rtus[devIdx].Device_Code).arg(QDateTime::currentDateTime().toTime_t()));
+
+            QString topic1 = QString("/usky/ytDP0006/%1/%2/status").arg(rtuList->rtus[devIdx].Company_Code).arg(rtuList->rtus[devIdx].Device_Code);
+            m_client->publish(QMQTT::Message(statusIdx++,topic1,statusStr.toUtf8()));
+            statusStr.clear();
+            if(statusIdx>9999)
+                statusIdx = 1;
         }
     }
 }

+ 3 - 1
DataProcessService/ytRTUProcess/porcesscore.h

@@ -35,6 +35,7 @@ public slots:
     void commdata(QString data);
     void CommData(QString DevicID, int dir, QString data);
     void AlarmReport(QString addr, quint64 insertid, QString type, QString time, QString ptype, QString pnumber);
+    void TableReport(QString deviceid,quint64 insertid,QString time,QString status,QString port,QString ncmd,QString pname,QString data1,QString content);
     void wxchart(quint16 idx, QDateTime t, QString data, bool dirflag);
     void repLog(quint16 idx, QDateTime t, QString data, bool dirflag);
     void SqlLog(QString log);
@@ -55,10 +56,11 @@ private:
     QTimer *timer;
     WssServer *wssServer;
     QMQTT::Client *m_client;
-    QString alarmData;
+    QString alarmData,statusStr;
 
     quint16 mqttIdx;
     quint16 mqttinfoIdx;
+    quint16 statusIdx;
 };
 
 #endif // PORCESSCORE_H

+ 17 - 3
DataProcessService/ytRTUProcess/rtucommthread.cpp

@@ -143,10 +143,19 @@ void RtuCommThread::checkIOvalue(QByteArray data, QDateTime t)
                     if((i&0x01)==0x01)
                     {
                         emit getIOValue(DevIdx, i, E3d, ((E3d.at((i-1)/2)>>4)&0x01)==0x01?1:0, t);
-                        pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\",\"type\":\"%4\",\"port\":\"E3\",\"stuname\":\"%5\"},").arg(rtuList->rtus[DevIdx].Port[i].PortName).arg(QString("6%1").arg(i,2,10,QChar('0'))).arg(((E3d.at((i-1)/2)>>4)&0x01)==0x01?"01":"00").arg(((E3d.at((i-1)/2)>>4)&0x01)==0x01?"01":"00").arg(QString::fromUtf8(((E3d.at((i-1)/2)>>4)&0x01)==0x01?rtuList->rtus[DevIdx].Port[i].NameOfIOon:rtuList->rtus[DevIdx].Port[i].NameOfIOOff)));
+                        if(rtuList->rtus[DevIdx].Port[i].OffSet > 0){
+                            pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\",\"type\":\"%4\",\"port\":\"E3\",\"stuname\":\"%5\"},").arg(rtuList->rtus[DevIdx].Port[i].PortName).arg(QString("6%1").arg(i,2,10,QChar('0'))).arg(((E3d.at((i-1)/2)>>4)&0x01)==0x01?"00":"01").arg(((E3d.at((i-1)/2)>>4)&0x01)==0x01?"00":"01").arg(QString::fromUtf8(((E3d.at((i-1)/2)>>4)&0x01)==0x01?rtuList->rtus[DevIdx].Port[i].NameOfIOon:rtuList->rtus[DevIdx].Port[i].NameOfIOOff)));
+                        }else{
+                            pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\",\"type\":\"%4\",\"port\":\"E3\",\"stuname\":\"%5\"},").arg(rtuList->rtus[DevIdx].Port[i].PortName).arg(QString("6%1").arg(i,2,10,QChar('0'))).arg(((E3d.at((i-1)/2)>>4)&0x01)==0x01?"01":"00").arg(((E3d.at((i-1)/2)>>4)&0x01)==0x01?"01":"00").arg(QString::fromUtf8(((E3d.at((i-1)/2)>>4)&0x01)==0x01?rtuList->rtus[DevIdx].Port[i].NameOfIOon:rtuList->rtus[DevIdx].Port[i].NameOfIOOff)));
+                        }
+
                     }else{
                         emit getIOValue(DevIdx, i,E3d, (E3d.at((i-1)/2)&0x01)==0x01?1:0, t);
-                        pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\",\"type\":\"%4\",\"port\":\"E3\",\"stuname\":\"%5\"},").arg(rtuList->rtus[DevIdx].Port[i].PortName).arg(QString("6%1").arg(i,2,10,QChar('0'))).arg((E3d.at((i-1)/2)&0x01)==0x01?"01":"00").arg((E3d.at((i-1)/2)&0x01)==0x01?"01":"00").arg(QString::fromUtf8((E3d.at((i-1)/2)&0x01)==0x01?rtuList->rtus[DevIdx].Port[i].NameOfIOon:rtuList->rtus[DevIdx].Port[i].NameOfIOOff)));
+                        if(rtuList->rtus[DevIdx].Port[i].OffSet > 0){
+                            pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\",\"type\":\"%4\",\"port\":\"E3\",\"stuname\":\"%5\"},").arg(rtuList->rtus[DevIdx].Port[i].PortName).arg(QString("6%1").arg(i,2,10,QChar('0'))).arg((E3d.at((i-1)/2)&0x01)==0x01?"00":"01").arg((E3d.at((i-1)/2)&0x01)==0x01?"00":"01").arg(QString::fromUtf8((E3d.at((i-1)/2)&0x01)==0x01?rtuList->rtus[DevIdx].Port[i].NameOfIOon:rtuList->rtus[DevIdx].Port[i].NameOfIOOff)));
+                        }else{
+                            pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\",\"type\":\"%4\",\"port\":\"E3\",\"stuname\":\"%5\"},").arg(rtuList->rtus[DevIdx].Port[i].PortName).arg(QString("6%1").arg(i,2,10,QChar('0'))).arg((E3d.at((i-1)/2)&0x01)==0x01?"01":"00").arg((E3d.at((i-1)/2)&0x01)==0x01?"01":"00").arg(QString::fromUtf8((E3d.at((i-1)/2)&0x01)==0x01?rtuList->rtus[DevIdx].Port[i].NameOfIOon:rtuList->rtus[DevIdx].Port[i].NameOfIOOff)));
+                        }
                     }
                 }
             }
@@ -156,7 +165,12 @@ void RtuCommThread::checkIOvalue(QByteArray data, QDateTime t)
                 if(rtuList->rtus[DevIdx].Port[i].Enabled==0x01)
                 {
                     emit getIOValue(DevIdx, i,E3d, (E3d.at(i-1)&0x01)==0x01?1:0, t);
-                    pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\",\"type\":\"%4\",\"port\":\"E3\",\"stuname\":\"%5\"},").arg(rtuList->rtus[DevIdx].Port[i].PortName).arg(QString("6%1").arg(i,2,10,QChar('0'))).arg((E3d.at(i-1)&0x01)==0x01?"01":"00").arg((E3d.at(i-1)&0x01)==0x01?"01":"00").arg(QString::fromUtf8((E3d.at(i-1)&0x01)==0x01?rtuList->rtus[DevIdx].Port[i].NameOfIOon:rtuList->rtus[DevIdx].Port[i].NameOfIOOff)));
+
+                    if(rtuList->rtus[DevIdx].Port[i].OffSet > 0){
+                        pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\",\"type\":\"%4\",\"port\":\"E3\",\"stuname\":\"%5\"},").arg(rtuList->rtus[DevIdx].Port[i].PortName).arg(QString("6%1").arg(i,2,10,QChar('0'))).arg((E3d.at(i-1)&0x01)==0x01?"00":"01").arg((E3d.at(i-1)&0x01)==0x01?"00":"01").arg(QString::fromUtf8((E3d.at(i-1)&0x01)==0x01?rtuList->rtus[DevIdx].Port[i].NameOfIOon:rtuList->rtus[DevIdx].Port[i].NameOfIOOff)));
+                    }else{
+                        pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\",\"type\":\"%4\",\"port\":\"E3\",\"stuname\":\"%5\"},").arg(rtuList->rtus[DevIdx].Port[i].PortName).arg(QString("6%1").arg(i,2,10,QChar('0'))).arg((E3d.at(i-1)&0x01)==0x01?"01":"00").arg((E3d.at(i-1)&0x01)==0x01?"01":"00").arg(QString::fromUtf8((E3d.at(i-1)&0x01)==0x01?rtuList->rtus[DevIdx].Port[i].NameOfIOon:rtuList->rtus[DevIdx].Port[i].NameOfIOOff)));
+                    }
                 }
             }
         }else if(len==4){

+ 5 - 2
DataProcessService/ytUserInfoProcess/databasethread.cpp

@@ -366,13 +366,16 @@ void DataBaseThread::run(){
             }
 
 
-            QString infoStr,alarmStr,topic1,topic2;
+            QString infoStr,alarmStr,statusStr,topic1,topic2,topic3;
                 topic1 = QString("/usky/ytDP0001/%1/%2/info").arg(companyCode).arg(rep.DeviceId);
+                topic3 = QString("/usky/ytDP0001/%1/%2/status").arg(companyCode).arg(rep.DeviceId);
                 if(AlarmName.compare("监测连线故障")==0)
                 {
                     infoStr.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"devs\":[{\"dp\":[{\"property\":\"状态\",\"serial\":\"离线\",\"value\":\"0\"}],\"deviceName\":\"%3\",\"timeStamp\":\"%4\",\"deviceModel\":\"\",\"deviceType\":\"%5\",\"devId\":\"%6\"}],\"type\":\"INFO\",\"timeStamp\":\"%7\"}").arg(rep.DeviceId).arg(deviceName).arg(deviceName).arg(QDateTime::currentDateTime().toTime_t()).arg(deviceType).arg(rep.DeviceId).arg(QDateTime::currentDateTime().toTime_t()));
+                    statusStr.append(QString("{\"devId\":\"%1\",\"devicestatus\":75,\"type\":\"STATUS\",\"timestamp\":\"%2\"}").arg(rep.DeviceId).arg(QDateTime::currentDateTime().toTime_t()));
                 }else{
                     infoStr.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"devs\":[{\"dp\":[{\"property\":\"状态\",\"serial\":\"在线\",\"value\":\"1\"}],\"deviceName\":\"%3\",\"timeStamp\":\"%4\",\"deviceModel\":\"\",\"deviceType\":\"%5\",\"devId\":\"%6\"}],\"type\":\"INFO\",\"timeStamp\":\"%7\"}").arg(rep.DeviceId).arg(deviceName).arg(deviceName).arg(QDateTime::currentDateTime().toTime_t()).arg(deviceType).arg(rep.DeviceId).arg(QDateTime::currentDateTime().toTime_t()));
+                    statusStr.append(QString("{\"devId\":\"%1\",\"devicestatus\":0,\"type\":\"STATUS\",\"timestamp\":\"%2\"}").arg(rep.DeviceId).arg(QDateTime::currentDateTime().toTime_t()));
                 }
 
                 QString point;
@@ -433,7 +436,7 @@ void DataBaseThread::run(){
                 topic2 = QString("/usky/ytDP0001/%1/%2/alarm").arg(companyCode).arg(rep.DeviceId);
                 alarmStr.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"alarams\":[{\"dp\":[{\"property\":\"%3\",\"serial\":\"%4\",\"value\":\"%5\",\"status\":\"0\",\"type\":\"%6\",\"address\":\"%7\"}],\"deviceName\":\"%8\",\"timeStamp\":\"%9\",\"deviceModel\":\"\",\"deviceType\":\"%10\",\"devId\":\"%11\"}],\"type\":\"ALARM\",\"timeStamp\":\"%12\"}").arg(rep.DeviceId).arg(deviceName).arg(AlarmName).arg(point).arg(AlarmValue).arg(rep.AlarmType).arg(rep.AlarmAddress).arg(deviceName).arg((QDateTime::fromString(rep.AlarmTime,"yyyy-MM-dd hh:mm:ss")).toTime_t()).arg(deviceType).arg(rep.DeviceId).arg((QDateTime::fromString(rep.AlarmTime,"yyyy-MM-dd hh:mm:ss")).toTime_t()));
 
-                emit MqttInfo(infoStr,alarmStr,topic1,topic2);
+                emit MqttInfo(infoStr,alarmStr,statusStr,topic1,topic2,topic3);
 
 
             alarmRepList.removeFirst();

+ 1 - 1
DataProcessService/ytUserInfoProcess/databasethread.h

@@ -70,7 +70,7 @@ public:
 signals:
     void SqlAction(QString sql);
     void AlarmReport(quint64 addr, quint64 insertid, QString type, QString time, QString name, quint64 port=0, QString address="");
-    void MqttInfo(QString infoStr,QString alarmStr,QString topic1,QString topic2);
+    void MqttInfo(QString infoStr,QString alarmStr,QString statusStr,QString topic1,QString topic2,QString topic3);
     void MqttInit(QString ip,QString port,QString name,QString passwd);
 public slots:
     

+ 6 - 1
DataProcessService/ytUserInfoProcess/userinfoprocesscore.cpp

@@ -16,6 +16,7 @@ UserInfoProcessCore::UserInfoProcessCore(QObject *parent) :
 {
     idx1 = 1;
     idx2 = 1;
+    idx3 = 1;
 
     CurrentIdx = 0;
     logthread = new LogThread(this);
@@ -155,7 +156,7 @@ void UserInfoProcessCore::wsslog(quint16 idx, QDateTime t, QString data, bool di
 }
 
 
-void UserInfoProcessCore::MqttInfo(QString infoStr,QString alarmStr,QString topic1,QString topic2)
+void UserInfoProcessCore::MqttInfo(QString infoStr,QString alarmStr,QString statusStr,QString topic1,QString topic2,QString topic3)
 {
     if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED) || (m_client->connectionState()==QMQTT::STATE_INIT))
     {
@@ -169,6 +170,10 @@ void UserInfoProcessCore::MqttInfo(QString infoStr,QString alarmStr,QString topi
         if(idx1>9999)
             idx1 = 1;
 
+        m_client->publish(QMQTT::Message(idx3++,topic3,statusStr.toUtf8().data()));
+        if(idx3>9999)
+            idx3 = 1;
+
         m_client->publish(QMQTT::Message(idx2++,topic2,alarmStr.toUtf8().data()));
         if(idx2>9999)
             idx2 = 1;

+ 2 - 1
DataProcessService/ytUserInfoProcess/userinfoprocesscore.h

@@ -119,7 +119,7 @@ public slots:
     void replog(quint16 idx, QDateTime t, QString data, bool dirflag);
     void wsslog(quint16 idx, QDateTime t, QString data, bool dirflag);
     void getSyncData(quint64 srcAddr, QByteArray data);
-    void MqttInfo(QString infoStr,QString alarmStr,QString topic1,QString topic2);
+    void MqttInfo(QString infoStr,QString alarmStr,QString statusStr,QString topic1,QString topic2,QString topic3);
     void MqttConnect(QString ip,QString port,QString name,QString passwd);
 
 private:
@@ -138,6 +138,7 @@ private:
     QMQTT::Client *m_client;
     quint16 idx1;
     quint16 idx2;
+    quint16 idx3;
 
 
 #ifdef SubCenter

+ 17 - 211
DataProcessService/ytWarterMkProcess/databasethread.cpp

@@ -1,5 +1,5 @@
 #include "databasethread.h"
-//#include "waterMk01.h"
+#include "waterMk01.h"
 #include "AlarmReport.h"
 
 #define HostName  "47.98.201.187"
@@ -11,12 +11,12 @@
 
 #define sql_debug
 
-//extern MksensorList *mkList;
+extern MksensorList *mkList;
+
 
 DatabaseThread::DatabaseThread(QObject *parent) :
     QThread(parent)
 {
-    c = NULL;
     keep = false;
     hour = 255;
     sqlList.clear();
@@ -34,7 +34,6 @@ DatabaseThread::DatabaseThread(QObject *parent) :
     mcdb.setUserName(QString("root"));
     mcdb.setPassword(QString("Yt2021"));
     mcdb.setDatabaseName(QString("jx_cover"));
-    redisconnected=-1;
 //    mcdb.open();
 }
 
@@ -68,15 +67,6 @@ bool DatabaseThread::chktable(QString tbname)
 
 void DatabaseThread::check_devicelist()
 {
-    if(redisconnected==-1){
-        redisconnected=redis_init();
-        if(redisconnected==-1){
-            printf("redis init failed\n");
-        }
-        redis_save(AUTH);
-        redis_save(DBID);
-    }
-
     printf("database thread check_devicelist()\n");
     uint nowTime = QDateTime::currentDateTime().toTime_t();
     hour=QTime::currentTime().hour();
@@ -98,38 +88,24 @@ void DatabaseThread::check_devicelist()
                 .arg(qry.value(0).toString());
         QSqlQuery qry2 = db.exec(sql);
 
-        uint redistime = 0;
-
-        //mkList->sensors[nrow].Enabled=0x01;
+        mkList->sensors[nrow].Enabled=0x01;
         if(qry2.next()){
-            if(qry2.value(0).toUInt()==0){
-                //mkList->sensors[nrow].LastCommtime = nowTime;
-                redistime = nowTime;
-            }
-
+            if(qry2.value(0).toUInt()==0)
+                mkList->sensors[nrow].LastCommtime = nowTime;
         }
-        //sprintf(mkList->sensors[nrow].Device_Code,"%s",qry.value(0).toString().toUtf8().data());
-        //sprintf(mkList->sensors[nrow].Device_Name,"%s",qry.value(1).toString().toUtf8().data());
-        //sprintf(mkList->sensors[nrow].Device_Info,"%s",qry.value(2).toString().toUtf8().data());
-        //sprintf(mkList->sensors[nrow].Device_Type,"%s",qry.value(5).toString().toUtf8().data());
-        //sprintf(mkList->sensors[nrow].Company_Code,"%s",qry.value(4).toString().toUtf8().data());
-        //printf("Device_Code:%s\n",QString(mkList->sensors[nrow].Device_Code).toUtf8().data());
-        //printf("Device_Code:%s\n",QString(mkList->sensors[nrow].Company_Code).toUtf8().data());
-
-        QString data = QString("hmset %1 row %2 devicecode %3 devicename %4 deviceinfo %5 devicetype %6 companycode %7 enabled %8 onlineflag %9 lastcommtime %10").arg(QString("%1%2").arg("sp_owner8-").arg(qry.value(0).toString().toUtf8().data())).arg(nrow).arg(qry.value(0).toString().toUtf8().data()).arg(qry.value(1).toString().toUtf8().data()).arg(qry.value(2).toString().toUtf8().data()).arg(qry.value(5).toString().toUtf8().data()).arg(qry.value(4).toString().toUtf8().data()).arg(QString("0x01")).arg(QString("0x00")).arg(redistime);
-        redis_save(data.toUtf8());
-
+        sprintf(mkList->sensors[nrow].Device_Code,"%s",qry.value(0).toString().toUtf8().data());
+        sprintf(mkList->sensors[nrow].Device_Name,"%s",qry.value(1).toString().toUtf8().data());
+        sprintf(mkList->sensors[nrow].Device_Info,"%s",qry.value(2).toString().toUtf8().data());
+        sprintf(mkList->sensors[nrow].Device_Type,"%s",qry.value(5).toString().toUtf8().data());
+        sprintf(mkList->sensors[nrow].Company_Code,"%s",qry.value(4).toString().toUtf8().data());
+        printf("Device_Code:%s\n",QString(mkList->sensors[nrow].Device_Code).toUtf8().data());
+        printf("Device_Code:%s\n",QString(mkList->sensors[nrow].Company_Code).toUtf8().data());
         nrow++;
     }
-
-    redis_save((QString("hmset tablelen sp_owner8 %1").arg(nrow)).toUtf8());
-    redis_free();
-    redisconnected = -1;
-
-//    for(int i=nrow;i<10240;i++){
-//        mkList->sensors[i].Enabled=0x00;
-//        mkList->sensors[i].LastCommtime = 0;
-//    }
+    for(int i=nrow;i<10240;i++){
+        mkList->sensors[i].Enabled=0x00;
+        mkList->sensors[i].LastCommtime = 0;
+    }
 
 }
 
@@ -193,173 +169,3 @@ void DatabaseThread::run()
     if(db.isOpen())
         db.close();
 }
-
-int DatabaseThread::redis_init()
-{
-    c = redisConnect(REDIS_HOST, REDIS_PORT);
-    if (NULL == c || c->err) {
-        if(c) {
-            printf("Redis [%s:%d], Error:[%s]\n", REDIS_HOST, REDIS_PORT, c->errstr);
-            redisFree(c);
-        } else {
-            printf("Redis [%s:%d] failure\n", REDIS_HOST, REDIS_PORT);
-        }
-        return -1;
-    }
-
-    return 0;
-}
-
-void DatabaseThread::redis_free()
-{
-    if (c) {
-        redisFree(c);
-    }
-    c = NULL;
-}
-
-int DatabaseThread::redis_save(const char *cmd)
-{
-    int i = 0;
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s, c %p\n", cmd,c);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return 0;
-}
-
-QString DatabaseThread::redis_qstring(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return "error";
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return "error";
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    QString data = r->str;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}
-
-int DatabaseThread::redis_int(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    int data = r->integer;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}

+ 0 - 8
DataProcessService/ytWarterMkProcess/databasethread.h

@@ -10,7 +10,6 @@
 #include <QStringList>
 #include <QList>
 #include "AlarmReport.h"
-#include "redis.h"
 
 
 class DatabaseThread : public QThread
@@ -24,11 +23,6 @@ public:
     void check_devicelist();
     bool chktable(QString tbname);
     void stop();
-    int redis_init();
-    int redis_save(const char *cmd);
-    QString redis_qstring(const char *cmd);
-    int redis_int(const char *cmd);
-    void redis_free();
 signals:
     void AlarmReport(QString addr, quint64 insertid, QString type, QString time);
     void SqlLog(QString log);
@@ -41,8 +35,6 @@ private:
     QStringList sqlList,mcsqlList;
     QList<AlarmRep> alarmRepList,mcalarmRepList;
     bool keep;
-    int redisconnected;
-    redisContext *c;
 };
 
 #endif // DATABASETHREAD_H

+ 7 - 7
DataProcessService/ytWarterMkProcess/main.cpp

@@ -1,6 +1,6 @@
 #include <QCoreApplication>
 #include "mkcore.h"
-//#include "waterMk01.h"
+#include "waterMk01.h"
 //#include "../ytUserInfoProcess/UserinfoShm.h"
 #include "../ytUserInfoProcess/userinfo.h"
 #include "../DataPrecessDog/dataprecess.h"
@@ -8,7 +8,7 @@
 UserInfoShm *userinfoShm;
 SysConfShm *sysConfShm;
 DataProcessShm *dataProcessShm;
-//MksensorList *mkList;
+MksensorList *mkList;
 
 bool shm_load(){
     int shmid;
@@ -28,11 +28,11 @@ bool shm_load(){
     if((shmid = shmget(key,sizeof(SysConfShm),IPC_CREAT|0666))==-1)
         return false;
     sysConfShm = static_cast<SysConfShm *>(shmat(shmid,nullptr,0));
-//    if((key=ftok(SSSHM_PATH,static_cast<int>(SSSHM_PORT)))==-1)
-//        return false;
-//    if((shmid=shmget(key,sizeof(MksensorList),IPC_CREAT|0666))==-1)
-//        return false;
-//    mkList = static_cast<MksensorList *>(shmat(shmid,nullptr,0));
+    if((key=ftok(SSSHM_PATH,static_cast<int>(SSSHM_PORT)))==-1)
+        return false;
+    if((shmid=shmget(key,sizeof(MksensorList),IPC_CREAT|0666))==-1)
+        return false;
+    mkList = static_cast<MksensorList *>(shmat(shmid,nullptr,0));
     return true;
 }
 

+ 261 - 431
DataProcessService/ytWarterMkProcess/mkcore.cpp

@@ -3,7 +3,7 @@
 
 #include "../ytUserInfoProcess/userinfo.h"
 #include "../DataPrecessDog/dataprecess.h"
-//#include "waterMk01.h"
+#include "waterMk01.h"
 
 #define comm_debug
 #define UN_REFERENCED_PARAMETER(x) {(x) = (x);}
@@ -12,7 +12,6 @@
 MKCore::MKCore(QObject *parent) :
     QObject(parent)
 {
-    c = NULL;
     logThread = new LogThread(this);
     dbThread = new DatabaseThread(this);
     timer = new QTimer(this);
@@ -48,25 +47,12 @@ MKCore::MKCore(QObject *parent) :
     logThread->start();
     mqttinfoIdx = 1;
     mqttalarmIdx = 1;
-    redisconnected=-1;
-
-
-    if(redisconnected==-1){
-            redisconnected=redis_init();
-            if(redisconnected==-1){
-                printf("redis init failed\n");
-            }
-            redis_save(AUTH);
-            redis_save(DBID);
-    }
 }
 
 MKCore::~MKCore()
 {
     logThread->stop();
     dbThread->stop();
-    redis_free();
-    redisconnected = -1;
 }
 
 void MKCore::mqttConnect(QString ip,QString port,QString name,QString passwd)
@@ -151,17 +137,18 @@ void MKCore::getOnLine(QString deviceidx,bool flag, QDateTime t)
 
     if(flag)
     {
-        if(redis_int((QString("hexists sp_owner8-%1 devicecode").arg(deviceidx)).toUtf8()) == 1){
-            if(QString("0x01").compare(redis_qstring((QString("hget sp_owner8-%1 enabled").arg(deviceidx)).toUtf8()))!=0)
-                return;
-
-            redis_save((QString("hset sp_owner8-%1 lastcommtime %2").arg(deviceidx).arg(t.toTime_t())).toUtf8());
-            if(QString("0x01").compare(redis_qstring((QString("hget sp_owner8-%1 onlineflag").arg(deviceidx)).toUtf8()))!=0)
-            {
-                redis_save((QString("hset sp_owner8-%1 onlineflag 0x01").arg(deviceidx)).toUtf8());
+        for(int i=0;i<10240;i++){
+            if(QString::compare(deviceidx,QString(mkList->sensors[i].Device_Code))==0){
+                if(mkList->sensors[i].Enabled!=0x01)
+                    return;
+                mkList->sensors[i].LastCommtime = t.toTime_t();
+                if(mkList->sensors[i].Online_Flag!=0x01)
+                {
+                    mkList->sensors[i].Online_Flag = 0x01;
+                }
+                dbThread->appendSql(QString("update sp_devices_status set devicestatus=0, true_status=0, statustime='%1', lastcommtime='%1' where deviceid='%2'")
+                                    .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
             }
-            dbThread->appendSql(QString("update sp_devices_status set devicestatus=0, true_status=0, statustime='%1', lastcommtime='%1' where deviceid='%2'")
-                                .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
         }
 
     }
@@ -240,20 +227,14 @@ void MKCore::AlarmReport(QString addr, quint64 insertid, QString type, QString t
     QString phonelist = "";
     QString companyCode = "",eventCode = "",evt = "";
     QString deviceType= "",deviceName= "";//设备类型
-
-
-//    for(int i=0;i<10240;i++){
-//        if(QString::compare(QString(mkList->sensors[i].Device_Code),addr)==0){
-//            companyCode = QString(mkList->sensors[i].Company_Code);
-//            deviceType = QString(mkList->sensors[i].Device_Type);
-//            deviceName = QString(mkList->sensors[i].Device_Name);
-//            break;
-//        }
-//    }
-    companyCode = redis_qstring((QString("hget sp_owner8-%1 companycode").arg(addr)).toUtf8());
-    deviceType = redis_qstring((QString("hget sp_owner8-%1 devicetype").arg(addr)).toUtf8());
-    deviceName = redis_qstring((QString("hget sp_owner8-%1 devicename").arg(addr)).toUtf8());
-
+    for(int i=0;i<10240;i++){
+        if(QString::compare(QString(mkList->sensors[i].Device_Code),addr)==0){
+            companyCode = QString(mkList->sensors[i].Company_Code);
+            deviceType = QString(mkList->sensors[i].Device_Type);
+            deviceName = QString(mkList->sensors[i].Device_Name);
+            break;
+        }
+    }
 //    QString rep2 = QString("{\"SubType\":2,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":0,\"CompanyCode\":\"%3\",\"evt_name\":\"%4\",\"evt\":0,\"alarm_time\":\"%5\"}")
 //            .arg(addr).arg(insertid).arg(companyCode).arg(type).arg(time);
 //    wssThread[repcur]->appendData(rep2);
@@ -290,11 +271,16 @@ void MKCore::AlarmReport(QString addr, quint64 insertid, QString type, QString t
                 wxThreads[2][wxcur&0x0f]->appendData(data1);//井盖告警微信推送
                 wxcur++;
                 wxcur &= 0x0f;
+
+                QString rep = QString("{\"SubType\":128,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":false}").arg(addr).arg(insertid);
+                repThread[repcur]->appendData(rep);
+
                 QString rep2 = QString("{\"SubType\":65535,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":0,\"CompanyCode\":\"%3\",\"evt_name\":\"%4\",\"evt\":\"%6\",\"EventCode\":\"%6\",\"alarm_time\":\"%5\"}")
                         .arg(addr).arg(insertid).arg(companyCode).arg(type).arg(time).arg(evt);
                 printf("rep2:%s\n",rep2.toUtf8().data());
                 wssThread[repcur++]->appendData(rep2);
                 repcur &= 0x0f;
+
             }
         }else {
             QString rep = QString("{\"SubType\":2,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":false}").arg(addr).arg(insertid);
@@ -348,18 +334,20 @@ void MKCore::checkDevice(QString deviceid)
 {
     if((DevIdx3>=0)&&(DevIdx3<10240))
     {
-        if(redis_int((QString("hexists sp_owner8-%1 devicecode").arg(deviceid)).toUtf8())==0)
+        if(QString::compare(deviceid,QString(mkList->sensors[DevIdx3].Device_Code))!=0)
         {
             DevIdx3 = -1;
             DeviceID3 = "";
         }
     }else{
-        if(redis_int((QString("hexists sp_owner8-%1 devicecode").arg(deviceid)).toUtf8())==1)
+        for(int i=0;i<10240;i++)
         {
-            QString row = redis_qstring((QString("hget sp_owner8-%1 row").arg(deviceid)).toUtf8());
-            DevIdx3 = row.toInt();
-            printf("-----------  row.toInt() = %d, deviceid = %s\n",DevIdx3,deviceid.toUtf8().data());
-            DeviceID3 = deviceid;
+            if(QString::compare(deviceid,QString(mkList->sensors[i].Device_Code))==0)
+            {
+                DevIdx3 = i;
+                DeviceID3 = QString(mkList->sensors[i].Device_Code);
+                break;
+            }
         }
     }
     getCommData(QString("DevIdx3=====:%1").arg(DevIdx3));
@@ -484,10 +472,11 @@ void MKCore::check_cover_framedata(QJsonObject jPayload, QString deviceId, long
         QJsonObject hsData1,hsData,hsData21,hsData20;
         QJsonArray flucDatas,flucDatas1,flucDatas20,flucDatas21;
         QJsonObject hsData2,hsData3,hsData4,hsData5,hsData6;
-        if(redis_int((QString("hexists sp_owner8-%1 devicecode").arg(deviceId)).toUtf8())==1){
+        for(int i=0;i<10240;i++){
+            if(QString::compare(QString(mkList->sensors[i].Device_Code),deviceId)==0){
             hsData1.insert("devId", deviceId);
             hsData1.insert("connType", "N");
-            hsData1.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(deviceId)).toUtf8()));
+            hsData1.insert("deviceName",  mkList->sensors[i].Device_Name);
             hsData2.insert("property", "电量");
             hsData2.insert("serial", "12801");
             hsData2.insert("value", (QString::number(battery_voltage,'f',4)).toDouble());
@@ -509,7 +498,7 @@ void MKCore::check_cover_framedata(QJsonObject jPayload, QString deviceId, long
             flucDatas1.append(hsData5);
             flucDatas1.append(hsData6);
             hsData.insert("dp", flucDatas1);
-            hsData.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(deviceId)).toUtf8()));
+            hsData.insert("deviceName", mkList->sensors[i].Device_Name);
             QString dataTimeStamp1=QString("%1").arg(etime);
             hsData.insert("timeStamp", dataTimeStamp1);
             hsData.insert("deviceType", "22");
@@ -522,18 +511,20 @@ void MKCore::check_cover_framedata(QJsonObject jPayload, QString deviceId, long
             QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
             if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
                 QString companyCode = "";
-                QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(deviceId)).toUtf8())).arg(deviceId);
+                QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(deviceId);
                 m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
 
                 if(mqttinfoIdx>9999)
                     mqttinfoIdx = 1;
             }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
                 m_client->connectToHost();
-                QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(deviceId)).toUtf8())).arg(deviceId);
+                QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(deviceId);
                 m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
 
-                if(mqttinfoIdx>9999)
-                    mqttinfoIdx = 1;
+                    if(mqttinfoIdx>9999)
+                        mqttinfoIdx = 1;
+                }
+                break;
             }
         }
 
@@ -644,10 +635,11 @@ void MKCore::check_framedata(QString data, QString jDevicecode, QString ip)
                  QString bjstr = "";
                  QJsonObject hsData1,hsData,hsData21,hsData20;
                  QJsonArray flucDatas,flucDatas1,flucDatas20,flucDatas21;
-                 if(redis_int((QString("hexists sp_owner8-%1 devicecode").arg(jDevicecode)).toUtf8())==1){
+                 for(int i=0;i<10240;i++){
+                     if(QString::compare(QString(mkList->sensors[i].Device_Code),jDevicecode)==0){
                      hsData1.insert("devId", jDevicecode);
                      hsData1.insert("connType", "N");
-                     hsData1.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
+                     hsData1.insert("deviceName", mkList->sensors[i].Device_Name);
                      if(deviceStatus==0){
                          QJsonObject hsData2,hsData3,hsData4,hsData5,hsData6;
                          hsData2.insert("property", "电量");
@@ -671,7 +663,7 @@ void MKCore::check_framedata(QString data, QString jDevicecode, QString ip)
                          flucDatas1.append(hsData5);
                          flucDatas1.append(hsData6);
                          hsData.insert("dp", flucDatas1);
-                         hsData.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
+                         hsData.insert("deviceName", mkList->sensors[i].Device_Name);
                          QString dataTimeStamp1=QString("%1").arg(dataTimeStamp);
                          hsData.insert("timeStamp", dataTimeStamp1);
                          hsData.insert("deviceType", "22");
@@ -684,14 +676,14 @@ void MKCore::check_framedata(QString data, QString jDevicecode, QString ip)
                          QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
                          if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
                              QString companyCode = "";
-                             QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
+                             QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
                              m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
 
                              if(mqttinfoIdx>9999)
                                  mqttinfoIdx = 1;
                          }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
                              m_client->connectToHost();
-                             QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
+                             QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
                              m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
 
                              if(mqttinfoIdx>9999)
@@ -719,7 +711,7 @@ void MKCore::check_framedata(QString data, QString jDevicecode, QString ip)
                          flucDatas21.append(hsData24);
                          flucDatas21.append(hsData25);
                          hsData20.insert("dp", flucDatas21);
-                         hsData20.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
+                         hsData20.insert("deviceName", mkList->sensors[i].Device_Name);
                          QString dataTimeStamp21=QString("%1").arg(dataTimeStamp);
                          hsData20.insert("timeStamp", dataTimeStamp21);
                          hsData20.insert("deviceType", 22);
@@ -732,14 +724,14 @@ void MKCore::check_framedata(QString data, QString jDevicecode, QString ip)
                          QString data2Mqtt = QString(QJsonDocument(hsData21).toJson());
                          if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
                              QString companyCode = "";
-                             QString infoTopic = QString("/usky/%1/%2/info").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
+                             QString infoTopic = QString("/usky/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
                              m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,data2Mqtt.toUtf8()));
 
                              if(mqttinfoIdx>9999)
                                  mqttinfoIdx = 1;
                          }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
                              m_client->connectToHost();
-                             QString infoTopic = QString("/usky/%1/%2/info").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
+                             QString infoTopic = QString("/usky/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
                              m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,data2Mqtt.toUtf8()));
 
                              if(mqttinfoIdx>9999)
@@ -861,7 +853,7 @@ void MKCore::check_framedata(QString data, QString jDevicecode, QString ip)
                              getOnLine(jDevicecode,true,dataTime);
                          }
                          hsData.insert("dp", flucDatas1);
-                         hsData.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
+                         hsData.insert("deviceName", mkList->sensors[i].Device_Name);
                          QString dataTimeStamp1=QString("%1").arg(dataTimeStamp);
                          hsData.insert("timeStamp", dataTimeStamp1);
                          hsData.insert("deviceType", "22");
@@ -883,136 +875,138 @@ void MKCore::check_framedata(QString data, QString jDevicecode, QString ip)
 //                                 if(mqttIdx>9999)
 //                                      mqttIdx = 1;
 //                             }
-                         QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
-                         if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
-                             QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
-                             m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
-                             if(mqttalarmIdx>9999)
-                                  mqttalarmIdx = 1;
-                         }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
-                             m_client->connectToHost();
-                             QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
-                             m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
-                             if(mqttalarmIdx>9999)
-                                  mqttalarmIdx = 1;
-                         }
+                             QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
+                             if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
+                                 QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
+                                 m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
+                                 if(mqttalarmIdx>9999)
+                                      mqttalarmIdx = 1;
+                             }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
+                                 m_client->connectToHost();
+                                 QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
+                                 m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
+                                 if(mqttalarmIdx>9999)
+                                      mqttalarmIdx = 1;
+                             }
+
+
+
+
+
+                             if(str==1){
+                                 QJsonObject hsData2;
+                                 hsData2.insert("property", "液位下限报警");
+                                 hsData2.insert("serial", 3);
+                                 hsData2.insert("value", dataNow1);
+                                 hsData2.insert("status", 0);
+                                 flucDatas21.append(hsData2);
+                                 bjstr += "下限报警  ";
+                                 alarm_state = "下限报警";
+                                 judge = true;
+                                 getAlarm(jDevicecode,"MC1",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("低水位"),dataTime);
+                                 getOnLine(jDevicecode,true,dataTime);
+                             }
+                             if(str1==1){
+                                 QJsonObject hsData2;
+                                 hsData2.insert("property", "液位上限报警");
+                                 hsData2.insert("serial", 3);
+                                 hsData2.insert("value", dataNow1);
+                                 hsData2.insert("status", 0);
+                                 flucDatas21.append(hsData2);
+                                 bjstr += "上限报警  ";
+                                 alarm_state = "上限报警";
+                                 judge = true;
+                                 getAlarm(jDevicecode,"MC2",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("高水位"),dataTime);
+                                 getOnLine(jDevicecode,true,dataTime);
+                             }
+                             if(str2==1){
+                                 QJsonObject hsData2;
+                                 hsData2.insert("property", "电池电量报警");
+                                 hsData2.insert("serial", 4);
+                                 hsData2.insert("value", batteryLevel);
+                                 hsData2.insert("status", 0);
+                                 flucDatas21.append(hsData2);
+                                 bjstr += "电量报警  ";
+                                 alarm_state = "电量报警";
+                                 judge = true;
+                                 getAlarm(jDevicecode,"MC3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("电量报警"),dataTime);
+                                 getOnLine(jDevicecode,true,dataTime);
+                             }
+                             if(str3==1){
+                                 QJsonObject hsData2;
+                                 hsData2.insert("property", "传感器异常");
+                                 hsData2.insert("serial", 32);
+                                 hsData2.insert("value", 1);
+                                 hsData2.insert("status", 0);
+                                 flucDatas21.append(hsData2);
+                                 bjstr += "传感器异常  ";
+                                 alarm_state = "传感器异常";
+                                 judge = true;
+                                 getAlarm(jDevicecode,"MC3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("传感器异常"),dataTime);
+                                 getOnLine(jDevicecode,true,dataTime);
+                             }
+                             if(str7==1){
+                                 QJsonObject hsData2;
+                                 hsData2.insert("property", "井盖状态");
+                                 hsData2.insert("serial", 2);
+                                 hsData2.insert("value", 1);
+                                 hsData2.insert("status", 0);
+                                 flucDatas21.append(hsData2);
+                                 bjstr += "井盖开启  ";
+                                 alarm_state = "井盖开启";
+                                 judge = true;
+                                 getAlarm(jDevicecode,"MC4",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("井盖开启"),dataTime);
+                                 getOnLine(jDevicecode,true,dataTime);
+                             }
+                             if(str4==1){
+                                 bjstr += "网关连接异常  ";
+                                 alarm_state = "网关连接异常";
+                                 judge = true;
+                                 getAlarm(jDevicecode,"MC5",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("网关连接异常"),dataTime);
+                                 getOnLine(jDevicecode,true,dataTime);
+                             }
+                             if(str5==1){
+                                 bjstr += "第二传感器下限报警  ";
+                                 alarm_state = "第二传感器下限报警";
+                                 judge = true;
+                                 getAlarm(jDevicecode,"MC6",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("第二传感器下限报警"),dataTime);
+                                 getOnLine(jDevicecode,true,dataTime);
+                             }
+                             if(str6==1){
+                                 bjstr += "第二传感器上限报警  ";
+                                 alarm_state = "第二传感器上限报警";
+                                 judge = true;
+                                 getAlarm(jDevicecode,"MC7",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("第二传感器上限报警"),dataTime);
+                                 getOnLine(jDevicecode,true,dataTime);
+                             }
+                             hsData20.insert("dp", flucDatas21);
+                             hsData20.insert("deviceName", mkList->sensors[i].Device_Name);
+                             QString dataTimeStamp21=QString("%1").arg(dataTimeStamp);
+                             hsData20.insert("timeStamp", dataTimeStamp21);
+                             hsData20.insert("deviceType", 22);
+                             hsData20.insert("deviceModel", "MEOKON");
+                             hsData20.insert("devId", jDevicecode);
+                             flucDatas20.append(hsData20);
+                             hsData21.insert("alarms", flucDatas20);
+                             hsData21.insert("type", "ALARM");
+                             hsData21.insert("timeStamp", dataTimeStamp21);
+                             QString data2Mqtt = QString(QJsonDocument(hsData21).toJson());
+                             if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
+                                 QString topic = QString("/usky/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
+                                 m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,data2Mqtt.toUtf8()));
+                                 if(mqttalarmIdx>9999)
+                                      mqttalarmIdx = 1;
+                             }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
+                                 m_client->connectToHost();
+                                 QString topic = QString("/usky/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
+                                 m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,data2Mqtt.toUtf8()));
+                                 if(mqttalarmIdx>9999)
+                                      mqttalarmIdx = 1;
+                             }
 
 
-
-
-
-                         if(str==1){
-                             QJsonObject hsData2;
-                             hsData2.insert("property", "液位下限报警");
-                             hsData2.insert("serial", 3);
-                             hsData2.insert("value", dataNow1);
-                             hsData2.insert("status", 0);
-                             flucDatas21.append(hsData2);
-                             bjstr += "下限报警  ";
-                             alarm_state = "下限报警";
-                             judge = true;
-                             getAlarm(jDevicecode,"MC1",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("低水位"),dataTime);
-                             getOnLine(jDevicecode,true,dataTime);
-                         }
-                         if(str1==1){
-                             QJsonObject hsData2;
-                             hsData2.insert("property", "液位上限报警");
-                             hsData2.insert("serial", 3);
-                             hsData2.insert("value", dataNow1);
-                             hsData2.insert("status", 0);
-                             flucDatas21.append(hsData2);
-                             bjstr += "上限报警  ";
-                             alarm_state = "上限报警";
-                             judge = true;
-                             getAlarm(jDevicecode,"MC2",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("高水位"),dataTime);
-                             getOnLine(jDevicecode,true,dataTime);
-                         }
-                         if(str2==1){
-                             QJsonObject hsData2;
-                             hsData2.insert("property", "电池电量报警");
-                             hsData2.insert("serial", 4);
-                             hsData2.insert("value", batteryLevel);
-                             hsData2.insert("status", 0);
-                             flucDatas21.append(hsData2);
-                             bjstr += "电量报警  ";
-                             alarm_state = "电量报警";
-                             judge = true;
-                             getAlarm(jDevicecode,"MC3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("电量报警"),dataTime);
-                             getOnLine(jDevicecode,true,dataTime);
-                         }
-                         if(str3==1){
-                             QJsonObject hsData2;
-                             hsData2.insert("property", "传感器异常");
-                             hsData2.insert("serial", 32);
-                             hsData2.insert("value", 1);
-                             hsData2.insert("status", 0);
-                             flucDatas21.append(hsData2);
-                             bjstr += "传感器异常  ";
-                             alarm_state = "传感器异常";
-                             judge = true;
-                             getAlarm(jDevicecode,"MC3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("传感器异常"),dataTime);
-                             getOnLine(jDevicecode,true,dataTime);
-                         }
-                         if(str7==1){
-                             QJsonObject hsData2;
-                             hsData2.insert("property", "井盖状态");
-                             hsData2.insert("serial", 2);
-                             hsData2.insert("value", 1);
-                             hsData2.insert("status", 0);
-                             flucDatas21.append(hsData2);
-                             bjstr += "井盖开启  ";
-                             alarm_state = "井盖开启";
-                             judge = true;
-                             getAlarm(jDevicecode,"MC4",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("井盖开启"),dataTime);
-                             getOnLine(jDevicecode,true,dataTime);
-                         }
-                         if(str4==1){
-                             bjstr += "网关连接异常  ";
-                             alarm_state = "网关连接异常";
-                             judge = true;
-                             getAlarm(jDevicecode,"MC5",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("网关连接异常"),dataTime);
-                             getOnLine(jDevicecode,true,dataTime);
-                         }
-                         if(str5==1){
-                             bjstr += "第二传感器下限报警  ";
-                             alarm_state = "第二传感器下限报警";
-                             judge = true;
-                             getAlarm(jDevicecode,"MC6",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("第二传感器下限报警"),dataTime);
-                             getOnLine(jDevicecode,true,dataTime);
-                         }
-                         if(str6==1){
-                             bjstr += "第二传感器上限报警  ";
-                             alarm_state = "第二传感器上限报警";
-                             judge = true;
-                             getAlarm(jDevicecode,"MC7",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("第二传感器上限报警"),dataTime);
-                             getOnLine(jDevicecode,true,dataTime);
-                         }
-                         hsData20.insert("dp", flucDatas21);
-                         hsData20.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
-                         QString dataTimeStamp21=QString("%1").arg(dataTimeStamp);
-                         hsData20.insert("timeStamp", dataTimeStamp21);
-                         hsData20.insert("deviceType", 22);
-                         hsData20.insert("deviceModel", "MEOKON");
-                         hsData20.insert("devId", jDevicecode);
-                         flucDatas20.append(hsData20);
-                         hsData21.insert("alarms", flucDatas20);
-                         hsData21.insert("type", "ALARM");
-                         hsData21.insert("timeStamp", dataTimeStamp21);
-                         QString data2Mqtt = QString(QJsonDocument(hsData21).toJson());
-                         if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
-                             QString topic = QString("/usky/%1/%2/alarm").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
-                             m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,data2Mqtt.toUtf8()));
-                             if(mqttalarmIdx>9999)
-                                  mqttalarmIdx = 1;
-                         }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
-                             m_client->connectToHost();
-                             QString topic = QString("/usky/%1/%2/alarm").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
-                             m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,data2Mqtt.toUtf8()));
-                             if(mqttalarmIdx>9999)
-                                  mqttalarmIdx = 1;
                          }
-
-
+                         break;
                      }
                  }
              }else{
@@ -1024,10 +1018,11 @@ void MKCore::check_framedata(QString data, QString jDevicecode, QString ip)
                  QJsonObject hsData1,hsData;
                  QJsonArray flucDatas,flucDatas1;
 
-                 if(redis_int((QString("hexists sp_owner8-%1 devicecode").arg(jDevicecode)).toUtf8())==1){
-                hsData1.insert("devId", jDevicecode);
-                hsData1.insert("connType", "N");
-                hsData1.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
+                 for(int i=0;i<10240;i++){
+                     if(QString::compare(QString(mkList->sensors[i].Device_Code),jDevicecode)==0){
+                    hsData1.insert("devId", jDevicecode);
+                    hsData1.insert("connType", "N");
+                    hsData1.insert("deviceName", mkList->sensors[i].Device_Name);
 
              QString bjstr = "";
              if (deviceStatus == 0) {
@@ -1073,35 +1068,35 @@ void MKCore::check_framedata(QString data, QString jDevicecode, QString ip)
                      hsData5.insert("serial", "504");
                      hsData5.insert("value", "LL0");
 
-                     getOnLine(jDevicecode,true,dataTime);
-                 }
-                 flucDatas1.append(hsData2);
-                 flucDatas1.append(hsData3);
-                 flucDatas1.append(hsData4);
-                 flucDatas1.append(hsData5);
-                 hsData.insert("dp", flucDatas1);
-                 hsData.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
-                 QString dataTimeStamp1=QString("%1").arg(dataTimeStamp);
-                 hsData.insert("timeStamp", dataTimeStamp1);
-                 hsData.insert("deviceType", redis_qstring((QString("hget sp_owner8-%1 devicetype").arg(jDevicecode)).toUtf8()));
-                 hsData.insert("deviceModel", "");
-                 hsData.insert("devId", jDevicecode);
-                 flucDatas.append(hsData);
-                 hsData1.insert("devs", flucDatas);
-                 hsData1.insert("type", "INFO");
-                 hsData1.insert("timeStamp", dataTimeStamp1);
-                 QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
-                 if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
-                     QString companyCode = "";
-                     QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
-                     m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
-
-                     if(mqttinfoIdx>9999)
-                         mqttinfoIdx = 1;
-                 }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
-                     m_client->connectToHost();
-                     QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
-                     m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
+                         getOnLine(jDevicecode,true,dataTime);
+                     }
+                     flucDatas1.append(hsData2);
+                     flucDatas1.append(hsData3);
+                     flucDatas1.append(hsData4);
+                     flucDatas1.append(hsData5);
+                     hsData.insert("dp", flucDatas1);
+                     hsData.insert("deviceName", mkList->sensors[i].Device_Name);
+                     QString dataTimeStamp1=QString("%1").arg(dataTimeStamp);
+                     hsData.insert("timeStamp", dataTimeStamp1);
+                     hsData.insert("deviceType", mkList->sensors[i].Device_Type);
+                     hsData.insert("deviceModel", "");
+                     hsData.insert("devId", jDevicecode);
+                     flucDatas.append(hsData);
+                     hsData1.insert("devs", flucDatas);
+                     hsData1.insert("type", "INFO");
+                     hsData1.insert("timeStamp", dataTimeStamp1);
+                     QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
+                     if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
+                         QString companyCode = "";
+                         QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
+                         m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
+
+                         if(mqttinfoIdx>9999)
+                             mqttinfoIdx = 1;
+                     }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
+                         m_client->connectToHost();
+                         QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
+                         m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
 
                      if(mqttinfoIdx>9999)
                          mqttinfoIdx = 1;
@@ -1212,38 +1207,41 @@ void MKCore::check_framedata(QString data, QString jDevicecode, QString ip)
              }
              table.append( QString("bjstr:%1,").arg(bjstr));
 
-             hsData.insert("dp", flucDatas1);
-             hsData.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
-             QString dataTimeStamp1=QString("%1").arg(dataTimeStamp);
-             hsData.insert("timeStamp", dataTimeStamp1);
-             hsData.insert("deviceType", redis_qstring((QString("hget sp_owner8-%1 devicetype").arg(jDevicecode)).toUtf8()));
-             hsData.insert("deviceModel", "");
-             hsData.insert("devId", jDevicecode);
-             flucDatas.append(hsData);
-             hsData1.insert("alarams", flucDatas);
-             hsData1.insert("type", "ALARM");
-             hsData1.insert("timeStamp", dataTimeStamp1);
-             QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
-             if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
-                 QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
-                 m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
-                 if(mqttalarmIdx>9999)
-                      mqttalarmIdx = 1;
-             }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
-                 m_client->connectToHost();
-                 QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
-                 m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
-                 if(mqttalarmIdx>9999)
-                      mqttalarmIdx = 1;
-             }
+                 hsData.insert("dp", flucDatas1);
+                 hsData.insert("deviceName", mkList->sensors[i].Device_Name);
+                 QString dataTimeStamp1=QString("%1").arg(dataTimeStamp);
+                 hsData.insert("timeStamp", dataTimeStamp1);
+                 hsData.insert("deviceType", mkList->sensors[i].Device_Type);
+                 hsData.insert("deviceModel", "");
+                 hsData.insert("devId", jDevicecode);
+                 flucDatas.append(hsData);
+                 hsData1.insert("alarams", flucDatas);
+                 hsData1.insert("type", "ALARM");
+                 hsData1.insert("timeStamp", dataTimeStamp1);
+                 QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
+                 if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
+                     QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
+                     m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
+                     if(mqttalarmIdx>9999)
+                          mqttalarmIdx = 1;
+                 }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
+                     m_client->connectToHost();
+                     QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
+                     m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
+                     if(mqttalarmIdx>9999)
+                          mqttalarmIdx = 1;
+                 }
 
-             }
-            }
+                 }
+                 break;
+                }
+                }
 
              }
              getCommData(QString("NBtable=====:%1++++++++++++++++++%2----------%3========%4")
                                                   .arg(table).arg(dataTimeStamp).arg(myt).arg(deviceStatuser));
         }
+
 }
 
 void MKCore::check_smokedata(QString data, QString ip){
@@ -1364,10 +1362,11 @@ void MKCore::check_coverdata(QString data, QString ip){
                 QJsonObject hsData1,hsData,hsData21,hsData20;
                 QJsonArray flucDatas,flucDatas1,flucDatas20,flucDatas21;
                 QJsonObject hsData2,hsData3,hsData4,hsData5;
-                if(redis_int((QString("hexists sp_owner8-%1 devicecode").arg(jDevicecode)).toUtf8())==1){
+                for(int i=0;i<10240;i++){
+                    if(QString::compare(QString(mkList->sensors[i].Device_Code),jDevicecode)==0){
                     hsData1.insert("devId", jDevicecode);
                     hsData1.insert("connType", "N");
-                    hsData1.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
+                    hsData1.insert("deviceName", mkList->sensors[i].Device_Name);
                     hsData2.insert("property", "井盖开启");
                     hsData2.insert("serial", "12825");
                     hsData2.insert("value", manhole_cover_position_state);
@@ -1377,7 +1376,7 @@ void MKCore::check_coverdata(QString data, QString ip){
                     hsData2.insert("angle", lean_angle);
                     flucDatas1.append(hsData2);
                     hsData.insert("dp", flucDatas1);
-                    hsData.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
+                    hsData.insert("deviceName", mkList->sensors[i].Device_Name);
                     QString dataTimeStamp1=QString("%1").arg(jEventTime);
                     hsData.insert("timeStamp", dataTimeStamp1);
                     hsData.insert("deviceType", "22");
@@ -1389,17 +1388,18 @@ void MKCore::check_coverdata(QString data, QString ip){
                     hsData1.insert("timeStamp", dataTimeStamp1);
                     QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
                     if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
-                        QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
+                        QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
                         m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
                         if(mqttalarmIdx>9999)
                             mqttalarmIdx = 1;
                     }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
                         m_client->connectToHost();
-                        QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
+                        QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
                         m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
                         if(mqttalarmIdx>9999)
                             mqttalarmIdx = 1;
-                    }
+                    	}
+					}
                 }
             }else if (serviceId==1004) {
                 int water_level_state=0;
@@ -1420,10 +1420,11 @@ void MKCore::check_coverdata(QString data, QString ip){
                 QJsonObject hsData1,hsData,hsData21,hsData20;
                 QJsonArray flucDatas,flucDatas1,flucDatas20,flucDatas21;
                 QJsonObject hsData2,hsData3,hsData4,hsData5;
-                if(redis_int((QString("hexists sp_owner8-%1 devicecode").arg(jDevicecode)).toUtf8())==1){
+                for(int i=0;i<10240;i++){
+                    if(QString::compare(QString(mkList->sensors[i].Device_Code),jDevicecode)==0){
                     hsData1.insert("devId", jDevicecode);
                     hsData1.insert("connType", "N");
-                    hsData1.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
+                    hsData1.insert("deviceName", mkList->sensors[i].Device_Name);
                     hsData2.insert("property", "满溢告警");
                     hsData2.insert("serial", "12826");
                     hsData2.insert("value", water_level_state);
@@ -1433,7 +1434,7 @@ void MKCore::check_coverdata(QString data, QString ip){
                     hsData2.insert("angle", "0");
                     flucDatas1.append(hsData2);
                     hsData.insert("dp", flucDatas1);
-                    hsData.insert("deviceName", redis_qstring((QString("hget sp_owner8-%1 devicename").arg(jDevicecode)).toUtf8()));
+                    hsData.insert("deviceName", mkList->sensors[i].Device_Name);
                     QString dataTimeStamp1=QString("%1").arg(jEventTime);
                     hsData.insert("timeStamp", dataTimeStamp1);
                     hsData.insert("deviceType", "22");
@@ -1445,17 +1446,18 @@ void MKCore::check_coverdata(QString data, QString ip){
                     hsData1.insert("timeStamp", dataTimeStamp1);
                     QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
                     if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
-                        QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
+                        QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
                         m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
                         if(mqttalarmIdx>9999)
                             mqttalarmIdx = 1;
                     }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
                         m_client->connectToHost();
-                        QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(redis_qstring((QString("hget sp_owner8-%1 companycode").arg(jDevicecode)).toUtf8())).arg(jDevicecode);
+                        QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
                         m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
                         if(mqttalarmIdx>9999)
                             mqttalarmIdx = 1;
-                    }
+                    	}
+					}
                 }
             }
         }
@@ -1478,7 +1480,6 @@ void MKCore::check_serverdata(QString data, QString ip){
 }
 
 void MKCore::read_data(){
-
     QTcpSocket *so = (QTcpSocket *)sender();
     QString data = QString(so->readAll());
     QDateTime dt = QDateTime::currentDateTime();
@@ -1486,175 +1487,4 @@ void MKCore::read_data(){
     check_serverdata(data, so->peerAddress().toString());
     so->write("HTTP/1.1 200 OK\r\nAccess-Control-Allow-Origin: *\r\nContent-type: text/plain\r\n\r\n");
     so->close();
-
-}
-
-int MKCore::redis_init()
-{
-    c = redisConnect(REDIS_HOST, REDIS_PORT);
-    if (NULL == c || c->err) {
-        if(c) {
-            printf("Redis [%s:%d], Error:[%s]\n", REDIS_HOST, REDIS_PORT, c->errstr);
-            redisFree(c);
-        } else {
-            printf("Redis [%s:%d] failure\n", REDIS_HOST, REDIS_PORT);
-        }
-        return -1;
-    }
-
-    return 0;
-}
-
-void MKCore::redis_free()
-{
-    if (c) {
-        redisFree(c);
-    }
-    c = NULL;
-}
-
-int MKCore::redis_save(const char *cmd)
-{
-    int i = 0;
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s, c %p\n", cmd,c);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return 0;
-}
-
-QString MKCore::redis_qstring(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return "error";
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return "error";
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    QString data = r->str;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}
-
-int MKCore::redis_int(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    int data = r->integer;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
 }

+ 0 - 8
DataProcessService/ytWarterMkProcess/mkcore.h

@@ -20,7 +20,6 @@
 #include "../ytUserInfoProcess/wechartthreads.h"
 #include "../ytRTUProcess/ttsthreads.h"
 #include <qmqtt.h>
-#include "redis.h"
 
 class MKData {
 public:
@@ -47,11 +46,6 @@ public:
     void check_cover_framedata(QJsonObject jPayload, QString deviceId, long etime, QString ip, int serviceId);
     void checkDevice(QString deviceid);
     quint8 hexstr_to_byte(QString dat);
-    int redis_init();
-    int redis_save(const char *cmd);
-    QString redis_qstring(const char *cmd);
-    int redis_int(const char *cmd);
-    void redis_free();
 signals:
     
 public slots:
@@ -86,8 +80,6 @@ private:
     ttsThreads *repThread[16];
     QMQTT::Client *m_client;
     quint16 mqttinfoIdx,mqttalarmIdx;
-    int redisconnected;
-    redisContext *c;
 };
 
 #endif // MKCORE_H

+ 9 - 192
DataProcessService/ytWarterMkProcess/nbsensorthread.cpp

@@ -1,13 +1,11 @@
 #include "nbsensorthread.h"
-//#include "waterMk01.h"
+#include "waterMk01.h"
 
 #define comm_debug
 #define UN_REFERENCED_PARAMETER(x) {(x) = (x);}
 
-
 MkSensorThread::MkSensorThread(qintptr socketDescriptor, QObject *parent) : QThread(parent)
 {
-    c = NULL;
     DeviceID3 = "";
     DevIdx3 = -1;
     keepcomm = false;
@@ -84,18 +82,20 @@ void MkSensorThread::checkDevice(QString deviceid)
 {
     if((DevIdx3>=0)&&(DevIdx3<10240))
     {
-        if(redis_int((QString("hexists sp_owner8-%1 devicecode").arg(deviceid)).toUtf8())==0)
+        if(QString::compare(deviceid,QString(mkList->sensors[DevIdx3].Device_Code))!=0)
         {
             DevIdx3 = -1;
             DeviceID3 = "";
         }
     }else{
-        if(redis_int((QString("hexists sp_owner8-%1 devicecode").arg(deviceid)).toUtf8())==1)
+        for(int i=0;i<10240;i++)
         {
-            QString row = redis_qstring((QString("hget sp_owner8-%1 row").arg(deviceid)).toUtf8());
-            DevIdx3 = row.toInt();
-            printf("-----------  row.toInt() = %d, deviceid = %s\n",DevIdx3,deviceid.toUtf8().data());
-            DeviceID3 = deviceid;
+            if(QString::compare(deviceid,QString(mkList->sensors[i].Device_Code))==0)
+            {
+                DevIdx3 = i;
+                DeviceID3 = QString(mkList->sensors[i].Device_Code);
+                break;
+            }
         }
     }
 }
@@ -423,15 +423,6 @@ void ProduceCRC(unsigned char* srcArray,int b)
 
 void MkSensorThread::readData(QTcpSocket *so)
 {
-    if(redisconnected==-1){
-            redisconnected=redis_init();
-            if(redisconnected==-1){
-                printf("redis init failed\n");
-            }
-            redis_save(AUTH);
-            redis_save(DBID);
-    }
-
     QByteArray data = so->readAll();
     QDateTime t = QDateTime::currentDateTime();
     quint16 bytesDataArray[] = { 0x48, 0x0A, 0x02, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x75};
@@ -487,178 +478,4 @@ void MkSensorThread::readData(QTcpSocket *so)
     bytesSend.append(bytesDataArray[9]);
 //    check_serverdata(data, so->peerAddress().toString());
     so->write(bytesSend);
-
-    redis_free();
-    redisconnected = -1;
-}
-
-
-int MkSensorThread::redis_init()
-{
-    c = redisConnect(REDIS_HOST, REDIS_PORT);
-    if (NULL == c || c->err) {
-        if(c) {
-            printf("Redis [%s:%d], Error:[%s]\n", REDIS_HOST, REDIS_PORT, c->errstr);
-            redisFree(c);
-        } else {
-            printf("Redis [%s:%d] failure\n", REDIS_HOST, REDIS_PORT);
-        }
-        return -1;
-    }
-
-    return 0;
-}
-
-void MkSensorThread::redis_free()
-{
-    if (c) {
-        redisFree(c);
-    }
-    c = NULL;
-}
-
-int MkSensorThread::redis_save(const char *cmd)
-{
-    int i = 0;
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s, c %p\n", cmd,c);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return 0;
-}
-
-QString MkSensorThread::redis_qstring(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return "error";
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return "error";
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    QString data = r->str;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}
-
-int MkSensorThread::redis_int(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    int data = r->integer;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
 }

+ 0 - 8
DataProcessService/ytWarterMkProcess/nbsensorthread.h

@@ -14,7 +14,6 @@
 #include <QJsonArray>
 #include <QJsonValue>
 #include <QVariant>
-#include "redis.h"
 
 class MkSensorThread : public QThread
 {
@@ -31,11 +30,6 @@ public:
     void check_smokedata(QString data, QString ip);
     void check_framedata(QString data, QString etime, QString ip);
     quint8 hexstr_to_byte(QString dat);
-    int redis_init();
-    int redis_save(const char *cmd);
-    QString redis_qstring(const char *cmd);
-    int redis_int(const char *cmd);
-    void redis_free();
 signals:
     void getOnLine(int deviceidx, bool flag, QDateTime t);
     void getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
@@ -51,8 +45,6 @@ private:
     QString DeviceID3;
     int DevIdx3;
     bool firsttime;
-    int redisconnected;
-    redisContext *c;
 };
 
 #endif // SENSORTHREAD3_H

+ 1 - 1
DataProcessService/ytWarterMkProcess/waterMk01.h

@@ -3,6 +3,6 @@
 
 #include "MkShm.h"
 
-//extern MksensorList *mkList;
+extern MksensorList *mkList;
 
 #endif // SMOKER01_H

+ 1 - 3
DataProcessService/ytWarterMkProcess/ytWarterMkProcess.pro

@@ -36,9 +36,7 @@ HEADERS += \
     nbwaterserver.h \
     nbsensorthread.h \
     AlarmReport.h \
-    ../ytRTUProcess/ttsthreads.h \
-    redis.h
+    ../ytRTUProcess/ttsthreads.h
 
 LIBS += -ljson-c
 LIBS += -lQt5Qmqtt
-LIBS += "/usr/local/lib/libhiredis.a"

+ 29 - 242
DataProcessService/ytWaterProcess/databasethread.cpp

@@ -1,5 +1,5 @@
 #include "databasethread.h"
-//#include "water.h"
+#include "water.h"
 #include "AlarmReport.h"
 
 #define HostName  "47.98.201.187"
@@ -10,13 +10,12 @@
 #define mhDatabaseName "ytapi"
 
 
+
 #define sql_debug
 
 DatabaseThread::DatabaseThread(QObject *parent) :
     QThread(parent)
 {
-    c = NULL;
-    redisconnected = -1;
     keep = false;
     hour = 255;
     sqlList.clear();
@@ -36,178 +35,6 @@ DatabaseThread::DatabaseThread(QObject *parent) :
     db1.setDatabaseName(QString(mhDatabaseName));
 }
 
-
-int DatabaseThread::redis_init()
-{
-    c = redisConnect(REDIS_HOST, REDIS_PORT);
-    if (NULL == c || c->err) {
-        if(c) {
-            printf("Redis [%s:%d], Error:[%s]\n", REDIS_HOST, REDIS_PORT, c->errstr);
-            redisFree(c);
-        } else {
-            printf("Redis [%s:%d] failure\n", REDIS_HOST, REDIS_PORT);
-        }
-        return -1;
-    }
-
-    return 0;
-}
-
-void DatabaseThread::redis_free()
-{
-    if (c) {
-        redisFree(c);
-    }
-    c = NULL;
-}
-
-int DatabaseThread::redis_save(const char *cmd)
-{
-    int i = 0;
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s, c %p\n", cmd,c);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return 0;
-}
-
-QString DatabaseThread::redis_qstring(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return "error";
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return "error";
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    QString data = r->str;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}
-
-int DatabaseThread::redis_int(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    int data = r->integer;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}
-
-
 void DatabaseThread::appendSql(QString sql)
 {
     sqlList.append(sql);
@@ -231,15 +58,6 @@ bool DatabaseThread::chktable(QString tbname)
 
 void DatabaseThread::check_devicelist()
 {
-    if(redisconnected==-1){
-        redisconnected = redis_init();
-        if(redisconnected==-1){
-            printf("redis init failed\n");
-        }
-        redis_save(AUTH);
-        redis_save(DBID);
-    }
-
     uint nowTime = QDateTime::currentDateTime().toTime_t();
     hour=QTime::currentTime().hour();
     QString sql = QString("select owner_code, owner_name, unitinfo, owner_xh, company, dwtype from sp_owner where dwtype in (2,5)");
@@ -260,37 +78,26 @@ void DatabaseThread::check_devicelist()
         sql = QString("select true_status from sp_devices_status where deviceid='%1'")
                 .arg(qry.value(0).toString());
         QSqlQuery qry2 = db.exec(sql);
-        //waterSensorList->sensors[nrow].Enabled=0x01;
-
-        unsigned int t = 0;
+        waterSensorList->sensors[nrow].Enabled=0x01;
         if(qry2.next()){
             if(qry2.value(0).toUInt()==0){
-                //waterSensorList->sensors[nrow].LastCommtime = nowTime;
-                t = nowTime;
+                waterSensorList->sensors[nrow].Online_Flag = 0x01;
+            }else{
+                waterSensorList->sensors[nrow].Online_Flag = 0x00;
             }
-        }
-//        sprintf(waterSensorList->sensors[nrow].Device_Code,"%s",qry.value(0).toString().toUtf8().data());
-//        sprintf(waterSensorList->sensors[nrow].Device_Name,"%s",qry.value(1).toString().toUtf8().data());
-//        sprintf(waterSensorList->sensors[nrow].Device_Info,"%s",qry.value(2).toString().toUtf8().data());
-//        sprintf(waterSensorList->sensors[nrow].Device_Type,"%s",qry.value(5).toString().toUtf8().data());
-//        sprintf(waterSensorList->sensors[nrow].Company_Code,"%s",qry.value(4).toString().toUtf8().data());
-
-        QString data = QString("hmset %1 row %2 devicecode %3 devicename %4 deviceinfo %5 devicetype %6 companycode %7 enabled %8 lastcommtime %9 onlineflag %10")
-                .arg(QString("sp_owner2-%1").arg(qry.value(0).toString().toUtf8().data())).arg(nrow).arg(qry.value(0).toString().toUtf8().data())
-                .arg(qry.value(1).toString().toUtf8().data()).arg(qry.value(2).toString().toUtf8().data()).arg(qry.value(5).toString().toUtf8().data())
-                .arg(qry.value(4).toString().toUtf8().data()).arg("0x01").arg(t).arg("0x00");
-        redis_save(data.toUtf8());
 
+        }
+        sprintf(waterSensorList->sensors[nrow].Device_Code,"%s",qry.value(0).toString().toUtf8().data());
+        sprintf(waterSensorList->sensors[nrow].Device_Name,"%s",qry.value(1).toString().toUtf8().data());
+        sprintf(waterSensorList->sensors[nrow].Device_Info,"%s",qry.value(2).toString().toUtf8().data());
+        sprintf(waterSensorList->sensors[nrow].Device_Type,"%s",qry.value(5).toString().toUtf8().data());
+        sprintf(waterSensorList->sensors[nrow].Company_Code,"%s",qry.value(4).toString().toUtf8().data());
         nrow++;
     }
-
-    redis_save((QString("hset tablelen sp_owner2 %1").arg(nrow)).toUtf8());
-    redis_free();
-    redisconnected = -1;
-//    for(int i=nrow;i<10240;i++){
-//        waterSensorList->sensors[i].Enabled=0x00;
-//        waterSensorList->sensors[i].LastCommtime = 0;
-//    }
+    for(int i=nrow;i<10240;i++){
+        waterSensorList->sensors[i].Enabled=0x00;
+        waterSensorList->sensors[i].LastCommtime = 0;
+    }
 }
 
 void DatabaseThread::stop()
@@ -315,14 +122,6 @@ void DatabaseThread::run()
     mqttqry.clear();
     db.close();
 
-    if(redisconnected==-1){
-        redisconnected = redis_init();
-        if(redisconnected==-1){
-            printf("redis init failed\n");
-        }
-        redis_save(AUTH);
-        redis_save(DBID);
-    }
 
     db1.open();
     QString mhsql = QString("select company_code,company_name,company_address,device_code,device_name, mh_device_code,street,aj_type ,grid,push_status,longitude, latitude from yt_t_mhwater;");
@@ -332,39 +131,27 @@ void DatabaseThread::run()
         if(nrow1>1023)
             break;
 
-//        sprintf(mhwaterSensorList->mhsensors[nrow1].Company_Code,"%s",mhqry.value(0).toString().toUtf8().data());
-//        sprintf(mhwaterSensorList->mhsensors[nrow1].Company_Name,"%s",mhqry.value(1).toString().toUtf8().data());
-//        sprintf(mhwaterSensorList->mhsensors[nrow1].Company_Address,"%s",mhqry.value(2).toString().toUtf8().data());
-//        sprintf(mhwaterSensorList->mhsensors[nrow1].Device_Code,"%s",mhqry.value(3).toString().toUtf8().data());
-//        sprintf(mhwaterSensorList->mhsensors[nrow1].Device_Name,"%s",mhqry.value(4).toString().toUtf8().data());
-//        sprintf(mhwaterSensorList->mhsensors[nrow1].Mh_Device_Code,"%s",mhqry.value(5).toString().toUtf8().data());
-//        sprintf(mhwaterSensorList->mhsensors[nrow1].Street,"%s",mhqry.value(6).toString().toUtf8().data());
-//        sprintf(mhwaterSensorList->mhsensors[nrow1].Aj_Type,"%s",mhqry.value(7).toString().toUtf8().data());
-//        sprintf(mhwaterSensorList->mhsensors[nrow1].Grid,"%s",mhqry.value(8).toString().toUtf8().data());
-//        mhwaterSensorList->mhsensors[nrow1].Push_Status = mhqry.value(9).toInt();
-//        mhwaterSensorList->mhsensors[nrow1].longitude = mhqry.value(10).toDouble();
-//        mhwaterSensorList->mhsensors[nrow1].latitude = mhqry.value(11).toDouble();
-
-        QString data = QString("hmset %1 row %2 companycode %3 companyname %4 companyaddress %5 devicecode %6 devicename %7 mhdevicecode %8 street %9 ajtype %10 grid %11 pushstatus %12 longitude %13 latitude %14")
-                .arg(QString("yt_t_mhwater%1").arg(mhqry.value(3).toString().toUtf8().data())).arg(nrow1).arg(mhqry.value(0).toString().toUtf8().data())
-                .arg(mhqry.value(1).toString().toUtf8().data()).arg(mhqry.value(2).toString().toUtf8().data()).arg(mhqry.value(3).toString().toUtf8().data())
-                .arg(mhqry.value(4).toString().toUtf8().data()).arg(mhqry.value(5).toString().toUtf8().data()).arg(mhqry.value(6).toString().toUtf8().data())
-                .arg(mhqry.value(7).toString().toUtf8().data()).arg(mhqry.value(8).toString().toUtf8().data()).arg(mhqry.value(9).toString().toUtf8().data())
-                .arg(mhqry.value(10).toString().toUtf8().data()).arg(mhqry.value(11).toString().toUtf8().data());
-        redis_save(data.toUtf8());
-
+        sprintf(mhwaterSensorList->mhsensors[nrow1].Company_Code,"%s",mhqry.value(0).toString().toUtf8().data());
+        sprintf(mhwaterSensorList->mhsensors[nrow1].Company_Name,"%s",mhqry.value(1).toString().toUtf8().data());
+        sprintf(mhwaterSensorList->mhsensors[nrow1].Company_Address,"%s",mhqry.value(2).toString().toUtf8().data());
+        sprintf(mhwaterSensorList->mhsensors[nrow1].Device_Code,"%s",mhqry.value(3).toString().toUtf8().data());
+        sprintf(mhwaterSensorList->mhsensors[nrow1].Device_Name,"%s",mhqry.value(4).toString().toUtf8().data());
+        sprintf(mhwaterSensorList->mhsensors[nrow1].Mh_Device_Code,"%s",mhqry.value(5).toString().toUtf8().data());
+        sprintf(mhwaterSensorList->mhsensors[nrow1].Street,"%s",mhqry.value(6).toString().toUtf8().data());
+        sprintf(mhwaterSensorList->mhsensors[nrow1].Aj_Type,"%s",mhqry.value(7).toString().toUtf8().data());
+        sprintf(mhwaterSensorList->mhsensors[nrow1].Grid,"%s",mhqry.value(8).toString().toUtf8().data());
+        mhwaterSensorList->mhsensors[nrow1].Push_Status = mhqry.value(9).toInt();
+        mhwaterSensorList->mhsensors[nrow1].longitude = mhqry.value(10).toDouble();
+        mhwaterSensorList->mhsensors[nrow1].latitude = mhqry.value(11).toDouble();
         nrow1++;
     }
     db1.close();
 
-    redis_save((QString("hset tablelen yt_t_mhwater %1").arg(nrow1)).toUtf8());
-    redis_free();
-    redisconnected = -1;
+
 
     keep = true;
     printf("database thread start\n");
     while(keep){
-
         if(!db.isOpen()){
             db.open();
            printf("database thread open\n");

+ 0 - 8
DataProcessService/ytWaterProcess/databasethread.h

@@ -10,7 +10,6 @@
 #include <QStringList>
 #include <QList>
 #include "AlarmReport.h"
-#include "redis.h"
 
 class DatabaseThread : public QThread
 {
@@ -23,11 +22,6 @@ public:
     void check_devicelist();
     bool chktable(QString tbname);
     void stop();
-    int redis_init();
-    int redis_save(const char *cmd);
-    QString redis_qstring(const char *cmd);
-    int redis_int(const char *cmd);
-    void redis_free();
 signals:
     void AlarmReport(QString addr, quint64 insertid, QString type, QString time);
     void SqlLog(QString log);
@@ -41,8 +35,6 @@ private:
     QStringList sqlList;
     QList<AlarmRep> alarmRepList;
     bool keep;
-    int redisconnected;
-    redisContext *c;
 };
 
 #endif // DATABASETHREAD_H

+ 14 - 14
DataProcessService/ytWaterProcess/main.cpp

@@ -1,5 +1,5 @@
 #include <QCoreApplication>
-//#include "water.h"
+#include "water.h"
 #include "../ytUserInfoProcess/userinfo.h"
 #include "../DataPrecessDog/dataprecess.h"
 #include "watercore.h"
@@ -7,8 +7,8 @@
 UserInfoShm *userinfoShm;
 SysConfShm *sysConfShm;
 DataProcessShm *dataProcessShm;
-//WaterSensorList *waterSensorList;
-//MhWaterSensorList *mhwaterSensorList;
+WaterSensorList *waterSensorList;
+MhWaterSensorList *mhwaterSensorList;
 
 bool load_shm()
 {
@@ -29,18 +29,18 @@ bool load_shm()
     if((shmid = shmget(key,sizeof(SysConfShm),IPC_CREAT|0666))==-1)
         return false;
     sysConfShm = static_cast<SysConfShm *>(shmat(shmid,nullptr,0));
-//    if((key = ftok(WATERSHM_PATH,static_cast<int>(WATERSHM_PORT)))==-1)
-//        return false;
-//    if((shmid = shmget(key,sizeof (WaterSensorList),IPC_CREAT|0666))==-1)
-//        return false;
-//    waterSensorList = static_cast<WaterSensorList *>(shmat(shmid,nullptr,0));
-//    if((key = ftok(WATERSHM_PATH,static_cast<int>(MHWATERSHM_PORT)))==-1)
-//        return false;
-//    if((shmid = shmget(key,sizeof (MhWaterSensorList),IPC_CREAT|0666))==-1)
-//        return false;
+    if((key = ftok(WATERSHM_PATH,static_cast<int>(WATERSHM_PORT)))==-1)
+        return false;
+    if((shmid = shmget(key,sizeof (WaterSensorList),IPC_CREAT|0666))==-1)
+        return false;
+    waterSensorList = static_cast<WaterSensorList *>(shmat(shmid,nullptr,0));
+    if((key = ftok(WATERSHM_PATH,static_cast<int>(MHWATERSHM_PORT)))==-1)
+        return false;
+    if((shmid = shmget(key,sizeof (MhWaterSensorList),IPC_CREAT|0666))==-1)
+        return false;
 
-//    printf("===============shmid = %d\n",shmid);
-//    mhwaterSensorList = static_cast<MhWaterSensorList *>(shmat(shmid,nullptr,0));
+    printf("===============shmid = %d\n",shmid);
+    mhwaterSensorList = static_cast<MhWaterSensorList *>(shmat(shmid,nullptr,0));
     return true;
 }
 

+ 19 - 203
DataProcessService/ytWaterProcess/sensorthread3.cpp

@@ -1,12 +1,10 @@
 #include "sensorthread3.h"
-//#include "water.h"
+#include "water.h"
 
 #define comm3_debug
 
 SensorThread3::SensorThread3(qintptr socketDescriptor, QObject *parent) : QThread(parent)
 {
-    c = NULL;
-    redisconnected = -1;
     DeviceID3 = "";
     DevIdx3 = -1;
     keepcomm = false;
@@ -83,32 +81,26 @@ void SensorThread3::checkDevice(QString deviceid)
 {
     if((DevIdx3>=0)&&(DevIdx3<10240))
     {
-        if(redis_int((QString("hexists sp_owner2-%1 devicecode").arg(deviceid)).toUtf8())==0)
+        if(QString::compare(deviceid,QString(waterSensorList->sensors[DevIdx3].Device_Code))!=0)
         {
             DevIdx3 = -1;
             DeviceID3 = "";
         }
     }else{
-        if(redis_int((QString("hexists sp_owner2-%1 devicecode").arg(deviceid)).toUtf8())==1)
+        for(int i=0;i<10240;i++)
         {
-            QString row = QString("hget sp_owner2-%1 row ").arg(deviceid);
-            DevIdx3 = row.toInt();
-            DeviceID3 = deviceid;
+            if(QString::compare(deviceid,QString(waterSensorList->sensors[i].Device_Code))==0)
+            {
+                DevIdx3 = i;
+                DeviceID3 = QString(waterSensorList->sensors[i].Device_Code);
+                break;
+            }
         }
     }
 }
 
 void SensorThread3::readData(QTcpSocket *so)
 {
-    if(redisconnected==-1){
-        redisconnected=redis_init();
-        if(redisconnected==-1){
-            printf("redis init failed\n");
-        }
-        redis_save(AUTH);
-        redis_save(DBID);
-    }
-
     QByteArray data = so->readAll();
     QDateTime t = QDateTime::currentDateTime();
     if(((data.at(0)&0xff)==0xa0)
@@ -118,12 +110,10 @@ void SensorThread3::readData(QTcpSocket *so)
             DeviceCode1.append( QString("%1").arg(data[i]&0xff,2,16));
         }
         QString DeviceCode = DeviceCode1.replace("\r","").replace("\n","").replace(" ","");
-        printf("thread3  111  devicecode %s, DevIdx %d, DeviceID %s\n",DeviceCode.toUtf8().data(),DevIdx3,DeviceID3.toUtf8().data());
         checkDevice(DeviceCode);
-        printf("thread3  222  devicecode %s, DevIdx %d, DeviceID %s\n",DeviceCode.toUtf8().data(),DevIdx3,DeviceID3.toUtf8().data());
 #ifdef comm3_debug
         QString DStr = QString("[ %1 %2 %3 %4<<< ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
-                .arg(((DevIdx3>=0)&&(DevIdx3<10240))?QString("%1 ").arg(DeviceID3):"")
+                .arg(((DevIdx3>=0)&&(DevIdx3<10240))?QString("%1 ").arg(waterSensorList->sensors[DevIdx3].Device_Code):"")
                 .arg("5009")
                 .arg("ceshi");
         for(int i=0;i<data.length();i++)
@@ -136,7 +126,7 @@ void SensorThread3::readData(QTcpSocket *so)
                 case 0xad:
                 {
                     err_count = 0;
-                    emit getOnLine(DevIdx3,DeviceID3,true,t);
+                    emit getOnLine(DevIdx3,true,t);
                     QByteArray Ret = QByteArray(8,0x00);
                     Ret[0] = static_cast<char>(0x2b);
                     Ret[1] = static_cast<char>(0x54);
@@ -149,7 +139,7 @@ void SensorThread3::readData(QTcpSocket *so)
                     so->write(Ret);
 #ifdef comm3_debug
                     QString RStr = QString("[ %1 %2 %3>>> ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
-                            .arg(((DevIdx3>=0)&&(DevIdx3<10240))?QString("%1 ").arg(DeviceID3):"")
+                            .arg(((DevIdx3>=0)&&(DevIdx3<10240))?QString("%1 ").arg(waterSensorList->sensors[DevIdx3].Device_Code):"")
                             .arg("5009-ad");
                     for(int i=0;i<Ret.length();i++)
                         RStr.append(QString(" %1").arg(Ret.at(i)&0xff,2,16,QChar('0')));
@@ -161,11 +151,11 @@ void SensorThread3::readData(QTcpSocket *so)
                 {
                     err_count = 0;
                     QString DStr2 = QString("[ %1 %2 %3 %4<<< ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
-                            .arg(((DevIdx3>=0)&&(DevIdx3<10240))?QString("%1 ").arg(DeviceID3):"")
+                            .arg(((DevIdx3>=0)&&(DevIdx3<10240))?QString("%1 ").arg(waterSensorList->sensors[DevIdx3].Device_Code):"")
                             .arg("5009")
                             .arg("ceshi12");
                         emit getCommData(DStr2);
-                    emit getOnLine(DevIdx3,DeviceID3,true,t);
+                    emit getOnLine(DevIdx3,true,t);
                         int Battery = data.at(16)&0xff;
                         int Signal = (data.at(17)&0xff)-0x20;
                         Battery = (Battery>99)?99:Battery;
@@ -190,19 +180,19 @@ void SensorThread3::readData(QTcpSocket *so)
                             case 0x00:
                                 if((flag&0x01)!=0x01){
                                     flag = 0x01;
-                                    emit getValue(DevIdx3,DeviceID3,"WP0",Battery,Signal,pressure_value,"15122423833",t);
+                                    emit getValue(DevIdx3,"WP0",Battery,Signal,pressure_value,"15122423833",t);
                                 }
                                 break;
                             case 0xa1:
                                 if((flag&0x02)!=0x02){
                                     flag = 0x02;
-                                    emit getAlarm(DevIdx3,DeviceID3,"WP1",Battery,Signal,pressure_value,"15122423833",QString::fromUtf8("低压"),t);
+                                    emit getAlarm(DevIdx3,"WP1",Battery,Signal,pressure_value,"15122423833",QString::fromUtf8("低压"),t);
                                 }
                                 break;
                             case 0xa2:
                                 if((flag&0x04)!=0x04){
                                     flag = 0x04;
-                                    emit getAlarm(DevIdx3,DeviceID3,"WP2",Battery,Signal,pressure_value,"15122423833",QString::fromUtf8("高压"),t);
+                                    emit getAlarm(DevIdx3,"WP2",Battery,Signal,pressure_value,"15122423833",QString::fromUtf8("高压"),t);
                                 }
                                 break;
                             default:
@@ -220,7 +210,7 @@ void SensorThread3::readData(QTcpSocket *so)
                     so->write(Ret);
 #ifdef comm3_debug
                     QString RStr = QString("[ %1 %2 %3>>> ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
-                            .arg(((DevIdx3>=0)&&(DevIdx3<10240))?QString("%1 ").arg(DeviceID3):"")
+                            .arg(((DevIdx3>=0)&&(DevIdx3<10240))?QString("%1 ").arg(waterSensorList->sensors[DevIdx3].Device_Code):"")
                             .arg("5009-ae");
                     for(int i=0;i<Ret.length();i++)
                         RStr.append(QString(" %1").arg(Ret.at(i)&0xff,2,16,QChar('0')));
@@ -237,184 +227,10 @@ void SensorThread3::readData(QTcpSocket *so)
             err_count = 0;
 #ifdef comm3_debug
         QString DStr = QString("[ %1 %2<<< ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
-                .arg(((DevIdx3>=0)&&(DevIdx3<10240))?QString("%1 ").arg(DeviceID3):"");
+                .arg(((DevIdx3>=0)&&(DevIdx3<10240))?QString("%1 ").arg(waterSensorList->sensors[DevIdx3].Device_Code):"");
         for(int i=0;i<data.length();i++)
             DStr.append(QString(" %1").arg(data.at(i)&0xff,2,16,QChar('0')));
         emit getCommData(DStr);
 #endif
     }
-
-    redis_free();
-    redisconnected = -1;
-}
-
-
-int SensorThread3::redis_init()
-{
-    c = redisConnect(REDIS_HOST, REDIS_PORT);
-    if (NULL == c || c->err) {
-        if(c) {
-            printf("Redis [%s:%d], Error:[%s]\n", REDIS_HOST, REDIS_PORT, c->errstr);
-            redisFree(c);
-        } else {
-            printf("Redis [%s:%d] failure\n", REDIS_HOST, REDIS_PORT);
-        }
-        return -1;
-    }
-
-    return 0;
-}
-
-void SensorThread3::redis_free()
-{
-    if (c) {
-        redisFree(c);
-    }
-    c = NULL;
-}
-
-int SensorThread3::redis_save(const char *cmd)
-{
-    int i = 0;
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s, c %p\n", cmd,c);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return 0;
-}
-
-QString SensorThread3::redis_qstring(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return "error";
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return "error";
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    QString data = r->str;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}
-
-int SensorThread3::redis_int(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    int data = r->integer;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
 }

+ 3 - 12
DataProcessService/ytWaterProcess/sensorthread3.h

@@ -6,7 +6,6 @@
 #include <QTcpSocket>
 #include <QString>
 #include <QDateTime>
-#include "redis.h"
 
 class SensorThread3 : public QThread
 {
@@ -19,16 +18,10 @@ public:
     void readData(QTcpSocket *so);
     QByteArray mkRtn();
     void checkDevice(QString deviceid);
-
-    int redis_init();
-    int redis_save(const char *cmd);
-    QString redis_qstring(const char *cmd);
-    int redis_int(const char *cmd);
-    void redis_free();
 signals:
-    void getOnLine(int deviceidx, QString deviceid, bool flag, QDateTime t);
-    void getValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void getAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void getOnLine(int deviceidx, bool flag, QDateTime t);
+    void getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void getAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void getCommData(QString data);
 
 public slots:
@@ -40,8 +33,6 @@ private:
     QString DeviceID3;
     int DevIdx3;
     bool firsttime;
-    int redisconnected;
-    redisContext *c ;
 };
 
 #endif // SENSORTHREAD3_H

+ 46 - 230
DataProcessService/ytWaterProcess/sersorthread.cpp

@@ -1,13 +1,11 @@
 #include "sersorthread.h"
-//#include "water.h"
+#include "water.h"
 
 #define comm_debug
 
 SersorThread::SersorThread(qintptr socketDescriptor, QObject *parent)
     : QThread (parent)
 {
-    c = NULL;
-    redisconnected = -1;
     DeviceID = "";
     DevIdx = -1;
     keepcomm = false;
@@ -84,32 +82,26 @@ void SersorThread::checkDevice(QString deviceid)
 {
     if((DevIdx>=0)&&(DevIdx<10240))
     {
-        if(redis_int((QString("hexists sp_owner2-%1 devicecode").arg(deviceid)).toUtf8())==0)
+        if(QString::compare(deviceid,QString(waterSensorList->sensors[DevIdx].Device_Code))!=0)
         {
             DevIdx = -1;
             DeviceID = "";
         }
     }else{
-        if(redis_int((QString("hexists sp_owner2-%1 devicecode").arg(deviceid)).toUtf8())==1)
+        for(int i=0;i<10240;i++)
         {
-            QString row = redis_qstring((QString("hget sp_owner2-%1 row").arg(deviceid)).toUtf8());
-            DevIdx = row.toInt();
-            DeviceID = deviceid;
+            if(QString::compare(deviceid,QString(waterSensorList->sensors[i].Device_Code))==0)
+            {
+                DevIdx = i;
+                DeviceID = QString(waterSensorList->sensors[i].Device_Code);
+                break;
+            }
         }
     }
 }
 
 void SersorThread::readData(QTcpSocket *so)
 {
-    if(redisconnected==-1){
-        redisconnected=redis_init();
-        if(redisconnected==-1){
-            printf("redis init failed\n");
-        }
-        redis_save(AUTH);
-        redis_save(DBID);
-    }
-
     QByteArray data = so->readAll();
     QDateTime t = QDateTime::currentDateTime();
     if((data.length()>=40)&&((data.at(0)&0xff)==0x7e)
@@ -119,12 +111,10 @@ void SersorThread::readData(QTcpSocket *so)
         QString DeviceCode = QString(data.mid(4,15));
         QString Name = QString(data.mid(20,15));
         QString Sim = QString(data.mid(20,11));
-        printf("thread  111  devicecode %s, DevIdx %d, DeviceID %s\n",DeviceCode.toUtf8().data(),DevIdx,DeviceID.toUtf8().data());
         checkDevice(DeviceCode);
-        printf("thread  222  devicecode %s, DevIdx %d, DeviceID %s\n",DeviceCode.toUtf8().data(),DevIdx,DeviceID.toUtf8().data());
 #ifdef comm_debug
         QString DStr = QString("[ %1 %2<<< ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
-                .arg(((DevIdx>=0)&&(DevIdx<10240))?QString("%1 ").arg(DeviceID):"");
+                .arg(((DevIdx>=0)&&(DevIdx<10240))?QString("%1 ").arg(waterSensorList->sensors[DevIdx].Device_Code):"");
         for(int i=0;i<data.length();i++)
             DStr.append(QString(" %1").arg(data.at(i)&0xff,2,16,QChar('0')));
         emit getCommData(DStr);
@@ -136,12 +126,12 @@ void SersorThread::readData(QTcpSocket *so)
                 case 0x01:
                 {
                     err_count = 0;
-                    emit getOnLine(DevIdx,DeviceID,true,t);
+                    emit getOnLine(DevIdx,true,t);
                     QByteArray Ret = mkRtn();
                     so->write(Ret);
 #ifdef comm_debug
                     QString RStr = QString("[ %1 %2>>> ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
-                            .arg(((DevIdx>=0)&&(DevIdx<10240))?QString("%1 ").arg(DeviceID):"");
+                            .arg(((DevIdx>=0)&&(DevIdx<10240))?QString("%1 ").arg(waterSensorList->sensors[DevIdx].Device_Code):"");
                     for(int i=0;i<Ret.length();i++)
                         RStr.append(QString(" %1").arg(Ret.at(i)&0xff,2,16,QChar('0')));
                     emit getCommData(RStr);
@@ -151,9 +141,9 @@ void SersorThread::readData(QTcpSocket *so)
                 case 0x09:
                 {
                     err_count = 0;
-                    QString DStrceshi = QString("[ %1 ceshishijian========== %2]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                    QString DStrceshi = QString("[ %1 ceshishijian========== %2]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                     emit getCommData(DStrceshi);
-                    emit getOnLine(DevIdx,DeviceID,true,t);
+                    emit getOnLine(DevIdx,true,t);
                     QByteArray Dat = data.mid(40,MsgLen);
                     if(MsgLen>10){
                         int year = 2000 + ((Dat.at(0)&0xf0)>>4)*10 + (Dat.at(0)&0x0f);
@@ -170,7 +160,7 @@ void SersorThread::readData(QTcpSocket *so)
                         Battery = (Battery>99)?99:Battery;
                         Signal = (Signal<1)?1:((Signal>5)?5:Signal);
                         quint8 flag = 0x10;
-                        QString DStrceshipTime = QString("[ %1 pTime========== %2]").arg(bTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                        QString DStrceshipTime = QString("[ %1 pTime========== %2]").arg(bTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                         emit getCommData(DStrceshipTime);
                         for(int i=0;i<(DataLen/4);i++){
                             QDateTime pTime = bTime.addSecs(step*i);
@@ -185,33 +175,33 @@ void SersorThread::readData(QTcpSocket *so)
                                 case 0x00:
                                     if((flag&0x01)!=0x01){
                                         flag = 0x01;
-                                        QString DStrceshipTime = QString("[ %1 WP0========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP0========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getValue(DevIdx,DeviceID,"WP0",Battery,Signal,v,Sim,pTime);
+                                        emit getValue(DevIdx,"WP0",Battery,Signal,v,Sim,pTime);
                                     }
                                     break;
                                 case 0x01:
                                     if((flag&0x02)!=0x02){
                                         flag = 0x02;
-                                        QString DStrceshipTime = QString("[ %1 WP1========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP1========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getAlarm(DevIdx,DeviceID,"WP1",Battery,Signal,v,Sim,QString::fromUtf8("低压"),pTime);
+                                        emit getAlarm(DevIdx,"WP1",Battery,Signal,v,Sim,QString::fromUtf8("低压"),pTime);
                                     }
                                     break;
                                 case 0x02:
                                     if((flag&0x04)!=0x04){
                                         flag = 0x04;
-                                        QString DStrceshipTime = QString("[ %1 WP2========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP2========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getAlarm(DevIdx,DeviceID,"WP2",Battery,Signal,v,Sim,QString::fromUtf8("高压"),pTime);
+                                        emit getAlarm(DevIdx,"WP2",Battery,Signal,v,Sim,QString::fromUtf8("高压"),pTime);
                                     }
                                     break;
                                 case 0x03:
                                     if((flag&0x08)!=0x08){
                                         flag = 0x08;
-                                        QString DStrceshipTime = QString("[ %1 WP3========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP3========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getAlarm(DevIdx,DeviceID,"WP3",Battery,Signal,v,Sim,QString::fromUtf8("故障"),pTime);
+                                        emit getAlarm(DevIdx,"WP3",Battery,Signal,v,Sim,QString::fromUtf8("故障"),pTime);
                                     }
                                     break;
                                 default:
@@ -224,33 +214,33 @@ void SersorThread::readData(QTcpSocket *so)
                                 case 0x00:
                                     if((flag&0x01)!=0x01){
                                         flag = 0x01;
-                                        QString DStrceshipTime = QString("[ %1 WP0========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP0========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getValue(DevIdx,DeviceID,"WP0",Battery,Signal,v,Sim,pTime);
+                                        emit getValue(DevIdx,"WP0",Battery,Signal,v,Sim,pTime);
                                     }
                                     break;
                                 case 0x01:
                                     if((flag&0x02)!=0x02){
                                         flag = 0x02;
-                                        QString DStrceshipTime = QString("[ %1 WP1========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP1========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getAlarm(DevIdx,DeviceID,"WP1",Battery,Signal,v,Sim,QString::fromUtf8("低压"),pTime);
+                                        emit getAlarm(DevIdx,"WP1",Battery,Signal,v,Sim,QString::fromUtf8("低压"),pTime);
                                     }
                                     break;
                                 case 0x02:
                                     if((flag&0x04)!=0x04){
                                         flag = 0x04;
-                                        QString DStrceshipTime = QString("[ %1 WP2========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP2========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getAlarm(DevIdx,DeviceID,"WP2",Battery,Signal,v,Sim,QString::fromUtf8("高压"),pTime);
+                                        emit getAlarm(DevIdx,"WP2",Battery,Signal,v,Sim,QString::fromUtf8("高压"),pTime);
                                     }
                                     break;
                                 case 0x03:
                                     if((flag&0x08)!=0x08){
                                         flag = 0x08;
-                                        QString DStrceshipTime = QString("[ %1 WP3========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP3========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getAlarm(DevIdx,DeviceID,"WP3",Battery,Signal,v,Sim,QString::fromUtf8("故障"),pTime);
+                                        emit getAlarm(DevIdx,"WP3",Battery,Signal,v,Sim,QString::fromUtf8("故障"),pTime);
                                     }
                                     break;
                                 default:
@@ -263,33 +253,33 @@ void SersorThread::readData(QTcpSocket *so)
                                 case 0x00:
                                     if((flag&0x01)!=0x01){
                                         flag = 0x01;
-                                        QString DStrceshipTime = QString("[ %1 WP0========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP0========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getValue(DevIdx,DeviceID,"WP0",Battery,Signal,v,Sim,pTime);
+                                        emit getValue(DevIdx,"WP0",Battery,Signal,v,Sim,pTime);
                                     }
                                     break;
                                 case 0x01:
                                     if((flag&0x02)!=0x02){
                                         flag = 0x02;
-                                        QString DStrceshipTime = QString("[ %1 WP1========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP1========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getAlarm(DevIdx,DeviceID,"WP1",Battery,Signal,v,Sim,QString::fromUtf8("低压"),pTime);
+                                        emit getAlarm(DevIdx,"WP1",Battery,Signal,v,Sim,QString::fromUtf8("低压"),pTime);
                                     }
                                     break;
                                 case 0x02:
                                     if((flag&0x04)!=0x04){
                                         flag = 0x04;
-                                        QString DStrceshipTime = QString("[ %1 WP2========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP2========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getAlarm(DevIdx,DeviceID,"WP2",Battery,Signal,v,Sim,QString::fromUtf8("高压"),pTime);
+                                        emit getAlarm(DevIdx,"WP2",Battery,Signal,v,Sim,QString::fromUtf8("高压"),pTime);
                                     }
                                     break;
                                 case 0x03:
                                     if((flag&0x08)!=0x08){
                                         flag = 0x08;
-                                        QString DStrceshipTime = QString("[ %1 WP3========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(DeviceID);
+                                        QString DStrceshipTime = QString("[ %1 WP3========== %2]").arg(pTime.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[DevIdx].Device_Code);
                                         emit getCommData(DStrceshipTime);
-                                        emit getAlarm(DevIdx,DeviceID,"WP3",Battery,Signal,v,Sim,QString::fromUtf8("故障"),pTime);
+                                        emit getAlarm(DevIdx,"WP3",Battery,Signal,v,Sim,QString::fromUtf8("故障"),pTime);
                                     }
                                     break;
                                 default:
@@ -303,31 +293,31 @@ void SersorThread::readData(QTcpSocket *so)
                                 case 0x00:
                                     if((flag&0x01)!=0x01){
                                         flag = 0x01;
-                                        emit getValue(DevIdx,DeviceID,"LL0",Battery,Signal,v,Sim,pTime);
+                                        emit getValue(DevIdx,"LL0",Battery,Signal,v,Sim,pTime);
                                     }
                                     break;
                                 case 0x01:
                                     if((flag&0x02)!=0x02){
                                         flag = 0x02;
-                                        emit getAlarm(DevIdx,DeviceID,"LL1",Battery,Signal,v,Sim,QString::fromUtf8("低水位"),pTime);
+                                        emit getAlarm(DevIdx,"LL1",Battery,Signal,v,Sim,QString::fromUtf8("低水位"),pTime);
                                     }
                                     break;
                                 case 0x02:
                                     if((flag&0x04)!=0x04){
                                         flag = 0x04;
-                                        emit getAlarm(DevIdx,DeviceID,"LL2",Battery,Signal,v,Sim,QString::fromUtf8("高水位"),pTime);
+                                        emit getAlarm(DevIdx,"LL2",Battery,Signal,v,Sim,QString::fromUtf8("高水位"),pTime);
                                     }
                                     break;
                                 case 0x03:
                                     if((flag&0x08)!=0x08){
                                         flag = 0x08;
-                                        emit getAlarm(DevIdx,DeviceID,"LL3",Battery,Signal,v,Sim,QString::fromUtf8("故障"),pTime);
+                                        emit getAlarm(DevIdx,"LL3",Battery,Signal,v,Sim,QString::fromUtf8("故障"),pTime);
                                     }
                                     break;
                                 case 0x04:
                                     if((flag&0x09)!=0x09){
                                         flag = 0x09;
-                                        emit getAlarm(DevIdx,DeviceID,"LL5",Battery,Signal,v,Sim,QString::fromUtf8("波动告警"),pTime);
+                                        emit getAlarm(DevIdx,"LL5",Battery,Signal,v,Sim,QString::fromUtf8("波动告警"),pTime);
                                     }
                                     break;
                                 default:
@@ -345,7 +335,7 @@ void SersorThread::readData(QTcpSocket *so)
                     so->write(Ret);
 #ifdef comm_debug
                     QString RStr = QString("[ %1 %2>>> ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
-                            .arg(((DevIdx>=0)&&(DevIdx<10240))?QString("%1 ").arg(DeviceID):"");
+                            .arg(((DevIdx>=0)&&(DevIdx<10240))?QString("%1 ").arg(waterSensorList->sensors[DevIdx].Device_Code):"");
                     for(int i=0;i<Ret.length();i++)
                         RStr.append(QString(" %1").arg(Ret.at(i)&0xff,2,16,QChar('0')));
                     emit getCommData(RStr);
@@ -372,184 +362,10 @@ void SersorThread::readData(QTcpSocket *so)
             err_count = 0;
 #ifdef comm_debug
         QString DStr = QString("[ %1 %2<<< ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
-                .arg(((DevIdx>=0)&&(DevIdx<10240))?QString("%1 ").arg(DeviceID):"");
+                .arg(((DevIdx>=0)&&(DevIdx<10240))?QString("%1 ").arg(waterSensorList->sensors[DevIdx].Device_Code):"");
         for(int i=0;i<data.length();i++)
             DStr.append(QString(" %1").arg(data.at(i)&0xff,2,16,QChar('0')));
         emit getCommData(DStr);
 #endif
     }
-
-    redis_free();
-    redisconnected = -1;
-}
-
-
-int SersorThread::redis_init()
-{
-    c = redisConnect(REDIS_HOST, REDIS_PORT);
-    if (NULL == c || c->err) {
-        if(c) {
-            printf("Redis [%s:%d], Error:[%s]\n", REDIS_HOST, REDIS_PORT, c->errstr);
-            redisFree(c);
-        } else {
-            printf("Redis [%s:%d] failure\n", REDIS_HOST, REDIS_PORT);
-        }
-        return -1;
-    }
-
-    return 0;
-}
-
-void SersorThread::redis_free()
-{
-    if (c) {
-        redisFree(c);
-    }
-    c = NULL;
-}
-
-int SersorThread::redis_save(const char *cmd)
-{
-    int i = 0;
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s, c %p\n", cmd,c);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return 0;
-}
-
-QString SersorThread::redis_qstring(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return "error";
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return "error";
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    QString data = r->str;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}
-
-int SersorThread::redis_int(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    int data = r->integer;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
 }

+ 3 - 11
DataProcessService/ytWaterProcess/sersorthread.h

@@ -6,7 +6,6 @@
 #include <QTcpSocket>
 #include <QString>
 #include <QDateTime>
-#include "redis.h"
 
 class SersorThread : public QThread
 {
@@ -19,15 +18,10 @@ public:
     void readData(QTcpSocket *so);
     QByteArray mkRtn();
     void checkDevice(QString deviceid);
-    int redis_init();
-    int redis_save(const char *cmd);
-    QString redis_qstring(const char *cmd);
-    int redis_int(const char *cmd);
-    void redis_free();
 signals:
-    void getOnLine(int deviceidx, QString deviceid, bool flag, QDateTime t);
-    void getValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void getAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void getOnLine(int deviceidx, bool flag, QDateTime t);
+    void getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void getAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void getCommData(QString data);
 public slots:
 
@@ -38,8 +32,6 @@ private:
     QString DeviceID;
     int DevIdx;
     bool firsttime;
-    int redisconnected;
-    redisContext *c ;
 };
 
 #endif // SERSORTHREAD_H

+ 2 - 2
DataProcessService/ytWaterProcess/water.h

@@ -3,7 +3,7 @@
 
 #include "watershm.h"
 
-//extern WaterSensorList *waterSensorList;
-//extern MhWaterSensorList *mhwaterSensorList;
+extern WaterSensorList *waterSensorList;
+extern MhWaterSensorList *mhwaterSensorList;
 
 #endif // WATER_H

+ 1 - 1
DataProcessService/ytWaterProcess/waterServer4.cpp

@@ -3,7 +3,7 @@
 
 #include "../ytUserInfoProcess/userinfo.h"
 #include "../DataPrecessDog/dataprecess.h"
-//#include "water.h"
+#include "water.h"
 
 #define UN_REFERENCED_PARAMETER(x) {(x) = (x);}
 

+ 122 - 251
DataProcessService/ytWaterProcess/watercore.cpp

@@ -1,5 +1,5 @@
 #include "watercore.h"
-//#include "water.h"
+#include "water.h"
 #include "../ytUserInfoProcess/userinfo.h"
 #include "../DataPrecessDog/dataprecess.h"
 
@@ -7,18 +7,6 @@
 
 WaterCore::WaterCore(QObject *parent) : QObject(parent)
 {
-    c = NULL;
-
-    redisconnected=-1;
-    if(redisconnected==-1){
-        redisconnected=redis_init();
-        if(redisconnected==-1){
-            printf("redis init failed\n");
-        }
-        redis_save(AUTH);
-        redis_save(DBID);
-    }
-
     mqttinfoIdx = 1;
     mqttalarmIdx = 1;
     mqttmhinfoIdx = 1;
@@ -26,6 +14,9 @@ WaterCore::WaterCore(QObject *parent) : QObject(parent)
     mqttmhsta0Idx = 1;
     mqttmhsta1Idx = 1;
 
+    statusIdx = 1;
+    statusStr = "";
+
     timer = new QTimer(this);
     logThread = new LogThread(this);
     dbThread = new DatabaseThread(this);
@@ -86,7 +77,6 @@ WaterCore::~WaterCore()
 {
     logThread->stop();
     dbThread->stop();
-    redis_free();
 }
 
 void WaterCore::start()
@@ -103,6 +93,33 @@ void WaterCore::timeout()
     uint t = QDateTime::currentDateTime().toTime_t();
     dataProcessShm->processStatus[12].upTime[0].Enabled = 0x01;
     dataProcessShm->processStatus[12].upTime[0].t_time = t;
+
+    for(int i=0;i<1024;i++){
+        if(waterSensorList->sensors[i].Enabled==0x01){
+            if((t-waterSensorList->sensors[i].LastCommtime)>72*3600){
+                waterSensorList->sensors[i].LastCommtime =t;
+                if(waterSensorList->sensors[i].Online_Flag!=0x00){
+                    waterSensorList->sensors[i].Online_Flag = 0x00;
+                    dbThread->appendSql(QString("update sp_devices_status set devicestatus=%1, true_status=%1, statustime='%2' where deviceid='%3'")
+                                        .arg(75).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(waterSensorList->sensors[i].Device_Code));
+
+                }
+
+                if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
+                        m_client->connectToHost();
+                }
+                if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
+                    statusStr.append(QString("{\"devId\":\"%1\",\"devicestatus\":75,\"type\":\"STATUS\",\"timestamp\":\"%2\"}").arg(waterSensorList->sensors[i].Device_Code).arg(QDateTime::currentDateTime().toTime_t()));
+
+                    QString topic1 = QString("/usky/ytDP0002/%1/%2/status").arg(waterSensorList->sensors[i].Company_Code).arg(waterSensorList->sensors[i].Device_Code);
+                    m_client->publish(QMQTT::Message(statusIdx++,topic1,statusStr.toUtf8()));
+                    statusStr.clear();
+                    if(statusIdx>9999)
+                        statusIdx = 1;
+                }
+            }
+        }
+    }
 }
 
 void WaterCore::mqttConnect(QString ip,QString port,QString name,QString passwd)
@@ -131,41 +148,50 @@ void WaterCore::SqlLog(QString log)
     logThread->appendData(log);
 }
 
-void WaterCore::getOnLine(int deviceidx, QString deviceid, bool flag, QDateTime t)
+void WaterCore::getOnLine(int deviceidx,bool flag, QDateTime t)
 {
-
     t = QDateTime::currentDateTime();
-    if(QString("0x01").compare(redis_qstring((QString("hget sp_owner2-%1 enabled").arg(deviceid)).toUtf8()))!=0){
-        printf("redis_qstring((QString(hget sp_owner2-%1 enabled).arg(deviceid)).toUtf8()): %s\n",redis_qstring((QString("hget sp_owner2-%1 enabled").arg(deviceid)).toUtf8()).toUtf8().data());
+    if(waterSensorList->sensors[deviceidx].Enabled!=0x01)
         return;
-    }
     if(flag)
     {
-        redis_save((QString("hset sp_owner2-%1 lastcommtime %2").arg(deviceid).arg(t.toTime_t())).toUtf8());
-        if(QString("0x01").compare(redis_qstring((QString("hget sp_owner2-%1 onlineflag").arg(deviceid)).toUtf8()))!=0)
+        waterSensorList->sensors[deviceidx].LastCommtime = t.toTime_t();
+        if(waterSensorList->sensors[deviceidx].Online_Flag!=0x01)
         {
-            redis_save((QString("hset sp_owner2-%1 onlineflag %2").arg(deviceid).arg("0x01")).toUtf8());
+            waterSensorList->sensors[deviceidx].Online_Flag = 0x01;
         }
         dbThread->appendSql(QString("update sp_devices_status set devicestatus=0, true_status=0, statustime='%1', lastcommtime='%1' where deviceid='%2'")
-                            .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceid));
-    }
+                            .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)));
 
+        if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
+            m_client->connectToHost();
+        }
+        if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
+            statusStr.append(QString("{\"devId\":\"%1\",\"devicestatus\":0,\"type\":\"STATUS\",\"timestamp\":\"%2\"}").arg(waterSensorList->sensors[deviceidx].Device_Code).arg(QDateTime::currentDateTime().toTime_t()));
+
+            QString topic1 = QString("/usky/ytDP0002/%1/%2/status").arg(waterSensorList->sensors[deviceidx].Company_Code).arg(waterSensorList->sensors[deviceidx].Device_Code);
+            m_client->publish(QMQTT::Message(statusIdx++,topic1,statusStr.toUtf8()));
+            statusStr.clear();
+            if(statusIdx>9999)
+                statusIdx = 1;
+        }
+    }
 }
 
-void WaterCore::getValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t)
+void WaterCore::getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t)
 {
     QString infoTopic = "";
     QString infoData = "";
     QString mhinfoTopic = QString("mh/water/info");
     QString mhinfoData = "";
-    infoTopic.append(QString("/usky/ytDP0002/%1/%2/info").arg(redis_qstring((QString("hget sp_owner2-%1 companycode").arg(deviceid)).toUtf8())).arg(deviceid));
+    infoTopic.append(QString("/usky/ytDP0002/%1/%2/info").arg(QString(waterSensorList->sensors[deviceidx].Company_Code)).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)));
     QString tmpStr = d1.left(1);
     if(tmpStr.compare("W")==0){
-        infoData.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"devs\":[{\"dp\":[{\"property\":\"电量\",\"serial\":\"201\",\"value\":\"%3\"},{\"property\":\"信号\",\"serial\":\"202\",\"value\":\"%4\"},{\"property\":\"水压\",\"serial\":\"203\",\"value\":\"%5\"},{\"property\":\"状态\",\"serial\":\"204\",\"value\":\"%6\"}],\"deviceName\":\"%7\",\"timeStamp\":\"%8\",\"deviceModel\":\"\",\"deviceType\":\"%9\",\"devId\":\"%10\"}],\"type\":\"INFO\",\"timeStamp\":\"%11\"}").arg(deviceid).arg(redis_qstring((QString("hget sp_owner2-%1 devicename").arg(deviceid)).toUtf8())).arg(d2).arg(d3).arg(d4).arg(d1).arg(redis_qstring((QString("hget sp_owner2-%1 devicename").arg(deviceid)).toUtf8())).arg(t.toTime_t()).arg(redis_qstring((QString("hget sp_owner2-%1 devicetype").arg(deviceid)).toUtf8())).arg(deviceid).arg(t.toTime_t()));
+        infoData.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"devs\":[{\"dp\":[{\"property\":\"电量\",\"serial\":\"201\",\"value\":\"%3\"},{\"property\":\"信号\",\"serial\":\"202\",\"value\":\"%4\"},{\"property\":\"水压\",\"serial\":\"203\",\"value\":\"%5\"},{\"property\":\"状态\",\"serial\":\"204\",\"value\":\"0\"}],\"deviceName\":\"%6\",\"timeStamp\":\"%7\",\"deviceModel\":\"\",\"deviceType\":\"%8\",\"devId\":\"%9\"}],\"type\":\"INFO\",\"timeStamp\":\"%10\"}").arg(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg(QString(waterSensorList->sensors[deviceidx].Device_Name)).arg(d2).arg(d3).arg(d4).arg(QString(waterSensorList->sensors[deviceidx].Device_Name)).arg(t.toTime_t()).arg(QString(waterSensorList->sensors[deviceidx].Device_Type)).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg(t.toTime_t()));
 
     }else if(tmpStr.compare("L")==0){
 
-        infoData.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"devs\":[{\"dp\":[{\"property\":\"电量\",\"serial\":\"501\",\"value\":\"%3\"},{\"property\":\"信号\",\"serial\":\"502\",\"value\":\"%4\"},{\"property\":\"水位\",\"serial\":\"503\",\"value\":\"%5\"},{\"property\":\"状态\",\"serial\":\"504\",\"value\":\"%6\"}],\"deviceName\":\"%7\",\"timeStamp\":\"%8\",\"deviceModel\":\"\",\"deviceType\":\"%9\",\"devId\":\"%10\"}],\"type\":\"INFO\",\"timeStamp\":\"%11\"}").arg(deviceid).arg(redis_qstring((QString("hget sp_owner2-%1 devicename").arg(deviceid)).toUtf8())).arg(d2).arg(d3).arg(d4).arg(d1).arg(redis_qstring((QString("hget sp_owner2-%1 devicename").arg(deviceid)).toUtf8())).arg(t.toTime_t()).arg(redis_qstring((QString("hget sp_owner2-%1 devicetype").arg(deviceid)).toUtf8())).arg(deviceid).arg(t.toTime_t()));
+        infoData.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"devs\":[{\"dp\":[{\"property\":\"电量\",\"serial\":\"501\",\"value\":\"%3\"},{\"property\":\"信号\",\"serial\":\"502\",\"value\":\"%4\"},{\"property\":\"水位\",\"serial\":\"503\",\"value\":\"%5\"},{\"property\":\"状态\",\"serial\":\"504\",\"value\":\"0\"}],\"deviceName\":\"%6\",\"timeStamp\":\"%7\",\"deviceModel\":\"\",\"deviceType\":\"%8\",\"devId\":\"%9\"}],\"type\":\"INFO\",\"timeStamp\":\"%10\"}").arg(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg(QString(waterSensorList->sensors[deviceidx].Device_Name)).arg(d2).arg(d3).arg(d4).arg(QString(waterSensorList->sensors[deviceidx].Device_Name)).arg(t.toTime_t()).arg(QString(waterSensorList->sensors[deviceidx].Device_Type)).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg(t.toTime_t()));
     }
 
     if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED) || (m_client->connectionState()==QMQTT::STATE_INIT))
@@ -178,38 +204,44 @@ void WaterCore::getValue(int deviceidx, QString deviceid, QString d1, int d2, in
         if(mqttinfoIdx>9999)
             mqttinfoIdx = 1;
 
-        if(redis_int((QString("hexists yt_t_mhwater%1 devicecode").arg(deviceid)).toUtf8())==1){
+        for(int i=0;i<1024;i++){
+            QString mhDevCode = QString(mhwaterSensorList->mhsensors[i].Device_Code);
+            if((mhDevCode.compare(QString(waterSensorList->sensors[deviceidx].Device_Code)) == 0)){
 
-            mhinfoData.append(QString("{\"deviceCode\":\"%1\",\"signalLevel\":%2,\"volt\":%3,\"lon\":%4,\"lat\":%5,\"createTime\":%6,\"param\":{\"platform_cy\":\"闵行城运中心-闵行消防支队数字平台系统\",\"scenetype_cy\":\"安全管理\"}}").arg(redis_qstring((QString("hget yt_t_mhwater%1 mhdevicecode").arg(deviceid)).toUtf8())).arg(d3).arg(d2).arg(redis_qstring((QString("hget yt_t_mhwater%1 longitude").arg(deviceid)).toUtf8()).toDouble(),0,'r',6).arg(redis_qstring((QString("hget yt_t_mhwater%1 latitude").arg(deviceid)).toUtf8()).toDouble(),0,'r',6).arg(QDateTime::currentDateTime().toTime_t()));
+                mhinfoData.append(QString("{\"deviceCode\":\"%1\",\"signalLevel\":%2,\"volt\":%3,\"lon\":%4,\"lat\":%5,\"createTime\":%6,\"param\":{\"platform_cy\":\"闵行城运中心-闵行消防支队数字平台系统\",\"scenetype_cy\":\"安全管理\"}}").arg(QString(mhwaterSensorList->mhsensors[i].Mh_Device_Code)).arg(d3).arg(d2).arg(mhwaterSensorList->mhsensors[i].longitude,0,'r',6).arg(mhwaterSensorList->mhsensors[i].latitude,0,'r',6).arg(QDateTime::currentDateTime().toTime_t()));
 
-            m_client->publish(QMQTT::Message(mqttmhinfoIdx++,mhinfoTopic,mhinfoData.toUtf8()));
-            if(mqttmhinfoIdx>9999)
-                mqttmhinfoIdx = 1;
+                m_client->publish(QMQTT::Message(mqttmhinfoIdx++,mhinfoTopic,mhinfoData.toUtf8()));
+                if(mqttmhinfoIdx>9999)
+                    mqttmhinfoIdx = 1;
+
+                break;
+            }
 
         }
 
     }
 
-    QString log = QString("[ %1 getValue========== %2]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(deviceid);
+    QString log = QString("[ %1 getValue========== %2]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(waterSensorList->sensors[deviceidx].Device_Code);
     logThread->appendData(log);
     dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, data1, data2, data3, data4, data5) values (NULL, '%1', '%2', '%3', '%4', %5, %6, %7, '%8')")
-                        .arg(deviceid).arg("tp_water_pressure").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(d1).arg(d2).arg(d3).arg(d4).arg(d5));
-    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=0, data_time='%1', content='正常' where device_id='%2' and point_code=1").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceid));
-    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=2").arg(d2).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceid));
-    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=3").arg(d3).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceid));
-    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=4").arg(d4).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceid));
+                        .arg(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg("tp_water_pressure").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(d1).arg(d2).arg(d3).arg(d4).arg(d5));
+    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=0, data_time='%1', content='正常' where device_id='%2' and point_code=1").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)));
+    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=2").arg(d2).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)));
+    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=3").arg(d3).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)));
+    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=4").arg(d4).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)));
 //    QString rep2 = QString("{\"mqttId\":\"a71c40bb-5b02-4741-881b-24449f699db5\",\"action\":\"transpush\",\"data\":{\"provider\":\"Usky\",\"deviceType\":\"XiaoFangShuiYa\",\"dataType\":\"deviceInfo\",\"softVersion\":\"1.00.00\",\"hardVersion\":\"0.1\",\"sensorList\":[{\"sensorId\":%1,\"status\":%2,\"pointValue\":%3,\"unit\":\"%4\",\"lowThreshold\":%5,\"highThreshold\":%6,\"sendTime\":%7,\"desc\":\"%8\"}]}}")
 //            .arg(addr).arg(insertid).arg(companyCode).arg(type).arg(time);
-    if(QString::compare(redis_qstring((QString("hget sp_owner2-%1 companycode").arg(deviceid)).toUtf8()),"10232")==0 || QString::compare(redis_qstring((QString("hget sp_owner2-%1 companycode").arg(deviceid)).toUtf8()),"10318")==0){
-        QString data = QString("device_code=%1&device_value=%2&user_from=longHuWater").arg(deviceid).arg(d4)
+    if(QString::compare(QString(waterSensorList->sensors[deviceidx].Company_Code),"10232")==0 || QString::compare(QString(waterSensorList->sensors[deviceidx].Company_Code),"10318")==0){
+        QString data = QString("device_code=%1&device_value=%2&user_from=longHuWater").arg(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg(d4)
                 .replace(",","%2C").replace(":","%3A").replace(" ","+");
         wxThreads[2][wxcur&0x0f]->appendData(data);//龙湖定时数据推送
         wxcur++;
         wxcur &= 0x0f;
     }
+
 }
 
-void WaterCore::getAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t)
+void WaterCore::getAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t)
 {
     QString alarmTopic = "";
     QString alarmData = "";
@@ -217,7 +249,7 @@ void WaterCore::getAlarm(int deviceidx, QString deviceid, QString d1, int d2, in
     QString mhalarmData = "";
     QString point = "";
     QString tmpStr1 = d1.left(1);
-    alarmTopic.append(QString("/usky/ytDP0002/%1/%2/alarm").arg(redis_qstring((QString("hget sp_owner2-%1 companycode").arg(deviceid)).toUtf8())).arg(deviceid));
+    alarmTopic.append(QString("/usky/ytDP0002/%1/%2/alarm").arg(QString(waterSensorList->sensors[deviceidx].Company_Code)).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)));
     if(tmpStr1.compare("W")==0){
         if(note.compare("低压")==0){
             point.append("221");
@@ -227,7 +259,7 @@ void WaterCore::getAlarm(int deviceidx, QString deviceid, QString d1, int d2, in
             point.append("223");
         }
 
-        alarmData.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"alarams\":[{\"dp\":[{\"property\":\"%3\",\"serial\":\"%4\",\"value\":\"%5\",\"status\":\"0\",\"type\":\"%6\",\"battery\":\"%7\",\"signal\":\"%8\"}],\"deviceName\":\"%9\",\"timeStamp\":\"%10\",\"deviceModel\":\"\",\"deviceType\":\"%11\",\"devId\":\"%12\"}],\"type\":\"ALARM\",\"timeStamp\":\"%13\"}").arg(deviceid).arg(redis_qstring((QString("hget sp_owner2-%1 devicename").arg(deviceid)).toUtf8())).arg(note).arg(point).arg(d4).arg(d1).arg(d2).arg(d3).arg(redis_qstring((QString("hget sp_owner2-%1 devicename").arg(deviceid)).toUtf8())).arg(t.toTime_t()).arg(redis_qstring((QString("hget sp_owner2-%1 devicetype").arg(deviceid)).toUtf8())).arg(deviceid).arg(t.toTime_t()));
+        alarmData.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(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg(QString(waterSensorList->sensors[deviceidx].Device_Name)).arg(note).arg(point).arg(d4).arg(QString(waterSensorList->sensors[deviceidx].Device_Name)).arg(t.toTime_t()).arg(QString(waterSensorList->sensors[deviceidx].Device_Type)).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg(t.toTime_t()));
 
     }else if(tmpStr1.compare("L")==0){
 
@@ -241,7 +273,7 @@ void WaterCore::getAlarm(int deviceidx, QString deviceid, QString d1, int d2, in
             point.append("524");
         }
 
-        alarmData.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"alarams\":[{\"dp\":[{\"property\":\"%3\",\"serial\":\"%4\",\"value\":\"%5\",\"status\":\"0\",\"type\":\"%6\",\"battery\":\"%7\",\"signal\":\"%8\"}],\"deviceName\":\"%9\",\"timeStamp\":\"%10\",\"deviceModel\":\"\",\"deviceType\":\"%11\",\"devId\":\"%12\"}],\"type\":\"ALARM\",\"timeStamp\":\"%13\"}").arg(deviceid).arg(redis_qstring((QString("hget sp_owner2-%1 devicename").arg(deviceid)).toUtf8())).arg(note).arg(point).arg(d4).arg(d1).arg(d2).arg(d3).arg(redis_qstring((QString("hget sp_owner2-%1 devicename").arg(deviceid)).toUtf8())).arg(t.toTime_t()).arg(redis_qstring((QString("hget sp_owner2-%1 devicetype").arg(deviceid)).toUtf8())).arg(deviceid).arg(t.toTime_t()));
+        alarmData.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(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg(QString(waterSensorList->sensors[deviceidx].Device_Name)).arg(note).arg(point).arg(d4).arg(QString(waterSensorList->sensors[deviceidx].Device_Name)).arg(t.toTime_t()).arg(QString(waterSensorList->sensors[deviceidx].Device_Type)).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg(t.toTime_t()));
 
     }
     if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED) || (m_client->connectionState()==QMQTT::STATE_INIT))
@@ -255,31 +287,34 @@ void WaterCore::getAlarm(int deviceidx, QString deviceid, QString d1, int d2, in
             mqttalarmIdx = 1;
 
 
-        QString pushstatus = redis_qstring((QString("hget yt_t_mhwater%1 pushstatus").arg(deviceid)).toUtf8());
-        if((redis_int((QString("hexists yt_t_mhwater%1 devicecode").arg(deviceid)).toUtf8())==1) && (pushstatus.toInt() == 1)){
+        for(int i=0;i<1024;i++){
+            QString mhDevCode = QString(mhwaterSensorList->mhsensors[i].Device_Code);
+            if((mhDevCode.compare(QString(waterSensorList->sensors[deviceidx].Device_Code)) == 0) && (mhwaterSensorList->mhsensors[i].Push_Status == 1)){
 
-            mhalarmData.append(QString("{\"deviceCode\":\"%1\",\"lon\":%2,\"lat\":%3,\"createTime\":%4,\"addr\":\"上海市\",\"eventCode1\":\"02\",\"eventName1\":\"预警数据\",\"eventCode2\":\"02008\",\"eventName2\":\"水压报警\",\"description\":\"%5\",\"param\":{\"platform_cy\":\"闵行城运中心-闵行消防支队数字平台系统\",\"scenetype_cy\":\"安全管理\"}}").arg(redis_qstring((QString("hget yt_t_mhwater%1 mhdevicecode").arg(deviceid)).toUtf8())).arg(redis_qstring((QString("hget yt_t_mhwater%1 longitude").arg(deviceid)).toUtf8()).toDouble(),0,'r',6).arg(redis_qstring((QString("hget yt_t_mhwater%1 latitude").arg(deviceid)).toUtf8()).toDouble(),0,'r',6).arg(QDateTime::currentDateTime().toTime_t()).arg(""));
-            m_client->publish(QMQTT::Message(mqttmhalertIdx++,mhalarmTopic,mhalarmData.toUtf8()));
-            if(mqttmhalertIdx>9999)
-                mqttmhalertIdx = 1;
+                mhalarmData.append(QString("{\"deviceCode\":\"%1\",\"lon\":%2,\"lat\":%3,\"createTime\":%4,\"addr\":\"上海市\",\"eventCode1\":\"02\",\"eventName1\":\"预警数据\",\"eventCode2\":\"02008\",\"eventName2\":\"水压报警\",\"description\":\"%5\",\"param\":{\"platform_cy\":\"闵行城运中心-闵行消防支队数字平台系统\",\"scenetype_cy\":\"安全管理\"}}").arg(QString(mhwaterSensorList->mhsensors[i].Mh_Device_Code)).arg(mhwaterSensorList->mhsensors[i].longitude,0,'r',6).arg(mhwaterSensorList->mhsensors[i].latitude,0,'r',6).arg(QDateTime::currentDateTime().toTime_t()).arg(""));
+                m_client->publish(QMQTT::Message(mqttmhalertIdx++,mhalarmTopic,mhalarmData.toUtf8()));
+                if(mqttmhalertIdx>9999)
+                    mqttmhalertIdx = 1;
+
+                break;
+            }
 
         }
 
     }
 
-    dbThread->appendAlarm(AlarmRep(deviceid,
+    dbThread->appendAlarm(AlarmRep(QString(waterSensorList->sensors[deviceidx].Device_Code),
                                    QString("insert into sp_sj2017 (id, device_code, port, time, data1, data2, data3, data4, data5) values (NULL, '%1', '%2', '%3', '%4', %5, %6, %7, '%8')")
-                                   .arg(deviceid).arg("tp_water_pressure").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(d1).arg(d2).arg(d3).arg(d4).arg(d5),
+                                   .arg(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg("tp_water_pressure").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(d1).arg(d2).arg(d3).arg(d4).arg(d5),
                                    QString("%1").arg(note),
                                    t.toString("yyyy-MM-dd HH:mm:ss")));
     dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, data1, data2, data3, data4, data5) values (NULL, '%1', '%2', '%3', '%4', %5, %6, %7, '%8')")
-                        .arg(deviceid).arg("tp_water_pressure").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(d1).arg(d2).arg(d3).arg(d4).arg(d5));
+                        .arg(QString(waterSensorList->sensors[deviceidx].Device_Code)).arg("tp_water_pressure").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(d1).arg(d2).arg(d3).arg(d4).arg(d5));
     dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2', content='%3' where device_id='%4' and point_code=1")
-                        .arg(d1.at(2)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(note).arg(deviceid));
-    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=2").arg(d2).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceid));
-    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=3").arg(d3).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceid));
-    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=4").arg(d4).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceid));
-
+                        .arg(d1.at(2)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(note).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)));
+    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=2").arg(d2).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)));
+    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=3").arg(d3).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)));
+    dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=4").arg(d4).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(waterSensorList->sensors[deviceidx].Device_Code)));
 }
 
 void WaterCore::AlarmReport(QString addr, quint64 insertid, QString type, QString time)
@@ -289,9 +324,12 @@ void WaterCore::AlarmReport(QString addr, quint64 insertid, QString type, QStrin
     QString phonelist = "";
     QString companyCode = "";
     QString deviceType= "";//设备类型
-    if(redis_int((QString("hexists sp_owner2-%1 devicecode").arg(addr)).toUtf8())==1){
-        companyCode = redis_qstring((QString("hget sp_owner2-%1 companycode").arg(addr)).toUtf8());
-        deviceType = redis_qstring((QString("hget sp_owner2-%1 devicetype").arg(addr)).toUtf8());
+    for(int i=0;i<10240;i++){
+        if(QString::compare(QString(waterSensorList->sensors[i].Device_Code),addr)==0){
+            companyCode = QString(waterSensorList->sensors[i].Company_Code);
+            deviceType = QString(waterSensorList->sensors[i].Device_Type);
+            break;
+        }
     }
     QString rep = QString("{\"SubType\":2,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":false}").arg(addr).arg(insertid);
     QString rep2 = QString("{\"SubType\":2,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":0,\"CompanyCode\":\"%3\",\"evt_name\":\"%4\",\"evt\":0,\"alarm_time\":\"%5\"}")
@@ -333,28 +371,32 @@ void WaterCore::AlarmReport(QString addr, quint64 insertid, QString type, QStrin
         QString mhstaTopic = QString("mh/water/statistics");
         QString mhstaData0 = "",mhstaData1 = "";
 
-        QString pushstatus = redis_qstring((QString("hget yt_t_mhwater%1 pushstatus").arg(addr)).toUtf8());
-        if((redis_int((QString("hexists yt_t_mhwater%1 devicecode").arg(addr)).toUtf8())==1) && (pushstatus.toInt() == 1)){
+        for(int i=0;i<1024;i++){
+            QString mhDevCode = QString(mhwaterSensorList->mhsensors[i].Device_Code);
+            if((mhDevCode.compare(addr) == 0) && (mhwaterSensorList->mhsensors[i].Push_Status == 1)){
 
-        mhstaData0.append(QString("{\"id\":%1,\"createTime\":\"%2\",\"ajType\":\"%3\",\"street\":\"%4\",\"address\":\"%5\",\"grid\":\"%6\",\"ajDescribe\":\"%7\",\"dutyGroup\":\"%8\",\"ajFlag\":0,\"endTime\":\"%9\"}").arg(insertid).arg(time).arg(redis_qstring((QString("hget yt_t_mhwater%1 ajtype").arg(addr)).toUtf8())).arg(redis_qstring((QString("hget yt_t_mhwater%1 street").arg(addr)).toUtf8())).arg(QString("%1,%2").arg(redis_qstring((QString("hget yt_t_mhwater%1 companyaddress").arg(addr)).toUtf8())).arg(redis_qstring((QString("hget yt_t_mhwater%1 devicename").arg(addr)).toUtf8()))).arg(redis_qstring((QString("hget yt_t_mhwater%1 grid").arg(addr)).toUtf8())).arg(type).arg(redis_qstring((QString("hget yt_t_mhwater%1 companyname").arg(addr)).toUtf8())).arg((QDateTime::fromString(time,"yyyy-MM-dd hh:mm:ss").addDays(3)).toString("yyyy-MM-dd hh:mm:ss")));
-        mhstaData1.append(QString("{\"id\":%1,\"createTime\":\"%2\",\"ajType\":\"%3\",\"street\":\"%4\",\"address\":\"%5\",\"grid\":\"%6\",\"ajDescribe\":\"%7\",\"dutyGroup\":\"%8\",\"ajFlag\":1,\"endTime\":\"%9\"}").arg(insertid).arg(time).arg(redis_qstring((QString("hget yt_t_mhwater%1 ajtype").arg(addr)).toUtf8())).arg(redis_qstring((QString("hget yt_t_mhwater%1 street").arg(addr)).toUtf8())).arg(QString("%1,%2").arg(redis_qstring((QString("hget yt_t_mhwater%1 companyaddress").arg(addr)).toUtf8())).arg(redis_qstring((QString("hget yt_t_mhwater%1 devicename").arg(addr)).toUtf8()))).arg(redis_qstring((QString("hget yt_t_mhwater%1 grid").arg(addr)).toUtf8())).arg(type).arg(redis_qstring((QString("hget yt_t_mhwater%1 companyname").arg(addr)).toUtf8())).arg((QDateTime::fromString(time,"yyyy-MM-dd hh:mm:ss").addDays(3)).toString("yyyy-MM-dd hh:mm:ss")));
+                mhstaData0.append(QString("{\"id\":%1,\"createTime\":\"%2\",\"ajType\":\"%3\",\"street\":\"%4\",\"address\":\"%5\",\"grid\":\"%6\",\"ajDescribe\":\"%7\",\"dutyGroup\":\"%8\",\"ajFlag\":0,\"endTime\":\"%9\"}").arg(insertid).arg(time).arg(mhwaterSensorList->mhsensors[i].Aj_Type).arg(mhwaterSensorList->mhsensors[i].Street).arg(QString("%1,%2").arg(mhwaterSensorList->mhsensors[i].Company_Address).arg(mhwaterSensorList->mhsensors[i].Device_Name)).arg(mhwaterSensorList->mhsensors[i].Grid).arg(type).arg(mhwaterSensorList->mhsensors[i].Company_Name).arg((QDateTime::fromString(time,"yyyy-MM-dd hh:mm:ss").addDays(3)).toString("yyyy-MM-dd hh:mm:ss")));
+                mhstaData1.append(QString("{\"id\":%1,\"createTime\":\"%2\",\"ajType\":\"%3\",\"street\":\"%4\",\"address\":\"%5\",\"grid\":\"%6\",\"ajDescribe\":\"%7\",\"dutyGroup\":\"%8\",\"ajFlag\":1,\"endTime\":\"%9\"}").arg(insertid).arg(time).arg(mhwaterSensorList->mhsensors[i].Aj_Type).arg(mhwaterSensorList->mhsensors[i].Street).arg(QString("%1,%2").arg(mhwaterSensorList->mhsensors[i].Company_Address).arg(mhwaterSensorList->mhsensors[i].Device_Name)).arg(mhwaterSensorList->mhsensors[i].Grid).arg(type).arg(mhwaterSensorList->mhsensors[i].Company_Name).arg((QDateTime::fromString(time,"yyyy-MM-dd hh:mm:ss").addDays(3)).toString("yyyy-MM-dd hh:mm:ss")));
 
-        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(mqttmhalertIdx++,mhstaTopic,mhstaData0.toUtf8()));
-            if(mqttmhsta0Idx>9999)
-                mqttmhsta0Idx = 1;
+                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(mqttmhalertIdx++,mhstaTopic,mhstaData0.toUtf8()));
+                    if(mqttmhsta0Idx>9999)
+                        mqttmhsta0Idx = 1;
+
+                    m_client->publish(QMQTT::Message(mqttmhalertIdx++,mhstaTopic,mhstaData1.toUtf8()));
+                    if(mqttmhsta1Idx>9999)
+                        mqttmhsta1Idx = 1;
+                }
 
-            m_client->publish(QMQTT::Message(mqttmhalertIdx++,mhstaTopic,mhstaData1.toUtf8()));
-            if(mqttmhsta1Idx>9999)
-                mqttmhsta1Idx = 1;
-        }
+                break;
+            }
 
-    }
+        }
 
     }
 }
@@ -377,174 +419,3 @@ void WaterCore::wxchart(quint16 idx, QDateTime t, QString data, bool dirflag)
                           .arg(dirflag?">>>":"<<<")
                           .arg(data.replace('\n',"\\n").replace('\r',"\\r")));
 }
-
-
-int WaterCore::redis_init()
-{
-    c = redisConnect(REDIS_HOST, REDIS_PORT);
-    if (NULL == c || c->err) {
-        if(c) {
-            printf("Redis [%s:%d], Error:[%s]\n", REDIS_HOST, REDIS_PORT, c->errstr);
-            redisFree(c);
-        } else {
-            printf("Redis [%s:%d] failure\n", REDIS_HOST, REDIS_PORT);
-        }
-        return -1;
-    }
-
-    return 0;
-}
-
-void WaterCore::redis_free()
-{
-    if (c) {
-        redisFree(c);
-    }
-    c = NULL;
-}
-
-int WaterCore::redis_save(const char *cmd)
-{
-    int i = 0;
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s, c %p\n", cmd,c);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return 0;
-}
-
-QString WaterCore::redis_qstring(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return "error";
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return "error";
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    QString data = r->str;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}
-
-int WaterCore::redis_int(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    int data = r->integer;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}

+ 6 - 11
DataProcessService/ytWaterProcess/watercore.h

@@ -15,7 +15,6 @@
 #include "logthread.h"
 #include "../ytUserInfoProcess/wechartthreads.h"
 #include "../ytRTUProcess/ttsthreads.h"
-#include "redis.h"
 
 class WaterCore : public QObject
 {
@@ -24,18 +23,13 @@ public:
     explicit WaterCore(QObject *parent = nullptr);
     ~WaterCore();
     void start();
-    int redis_init();
-    int redis_save(const char *cmd);
-    QString redis_qstring(const char *cmd);
-    int redis_int(const char *cmd);
-    void redis_free();
 signals:
 
 public slots:
     void timeout();
-    void getOnLine(int deviceidx, QString deviceid, bool flag, QDateTime t);
-    void getValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void getAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void getOnLine(int deviceidx, bool flag, QDateTime t);
+    void getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void getAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void getCommData(QString data);
     void AlarmReport(QString addr, quint64 insertid, QString type, QString time);
     void wxchart(quint16 idx, QDateTime t, QString data, bool dirflag);
@@ -60,8 +54,9 @@ private:
 
     QMQTT::Client *m_client;
     quint16 mqttinfoIdx,mqttalarmIdx,mqttmhinfoIdx,mqttmhalertIdx,mqttmhsta0Idx,mqttmhsta1Idx;
-    int redisconnected;
-    redisContext *c;
+
+    quint16 statusIdx;
+    QString statusStr;
 };
 
 #endif // WATERCORE_H

+ 6 - 6
DataProcessService/ytWaterProcess/waterserver.cpp

@@ -25,9 +25,9 @@ void WaterServer::incomingConnection(qintptr socketDescriptor)
     thread->start();
 }
 
-void WaterServer::egetOnLine(int deviceidx, QString deviceid, bool flag, QDateTime t)
+void WaterServer::egetOnLine(int deviceidx, bool flag, QDateTime t)
 {
-    emit getOnLine(deviceidx,deviceid,flag,t);
+    emit getOnLine(deviceidx,flag,t);
 }
 
 void WaterServer::egetCommData(QString data)
@@ -35,12 +35,12 @@ void WaterServer::egetCommData(QString data)
     emit getCommData(data);
 }
 
-void WaterServer::egetValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t)
+void WaterServer::egetValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t)
 {
-    emit getValue(deviceidx,deviceid,d1,d2,d3,d4,d5,t);
+    emit getValue(deviceidx,d1,d2,d3,d4,d5,t);
 }
 
-void WaterServer::egetAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t)
+void WaterServer::egetAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t)
 {
-    emit getAlarm(deviceidx,deviceid,d1,d2,d3,d4,d5,note,t);
+    emit getAlarm(deviceidx,d1,d2,d3,d4,d5,note,t);
 }

+ 6 - 6
DataProcessService/ytWaterProcess/waterserver.h

@@ -12,15 +12,15 @@ public:
     explicit WaterServer(QObject *parent = nullptr);
     void start();
 signals:
-    void getOnLine(int deviceidx, QString deviceid, bool flag, QDateTime t);
-    void getValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void getAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void getOnLine(int deviceidx, bool flag, QDateTime t);
+    void getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void getAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void getCommData(QString data);
 public slots:
     void incomingConnection(qintptr socketDescriptor) override;
-    void egetOnLine(int deviceidx, QString deviceid, bool flag, QDateTime t);
-    void egetValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void egetAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void egetOnLine(int deviceidx, bool flag, QDateTime t);
+    void egetValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void egetAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void egetCommData(QString data);
 };
 

+ 6 - 6
DataProcessService/ytWaterProcess/waterserver3.cpp

@@ -24,9 +24,9 @@ void waterserver3::incomingConnection(qintptr socketDescriptor)
     thread->start();
 }
 
-void waterserver3::egetOnLine(int deviceidx, QString deviceid, bool flag, QDateTime t)
+void waterserver3::egetOnLine(int deviceidx, bool flag, QDateTime t)
 {
-    emit getOnLine(deviceidx,deviceid, flag,t);
+    emit getOnLine(deviceidx,flag,t);
 }
 
 void waterserver3::egetCommData(QString data)
@@ -34,12 +34,12 @@ void waterserver3::egetCommData(QString data)
     emit getCommData(data);
 }
 
-void waterserver3::egetValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t)
+void waterserver3::egetValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t)
 {
-    emit getValue(deviceidx,deviceid, d1,d2,d3,d4,d5,t);
+    emit getValue(deviceidx,d1,d2,d3,d4,d5,t);
 }
 
-void waterserver3::egetAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t)
+void waterserver3::egetAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t)
 {
-    emit getAlarm(deviceidx,deviceid, d1,d2,d3,d4,d5,note,t);
+    emit getAlarm(deviceidx,d1,d2,d3,d4,d5,note,t);
 }

+ 6 - 6
DataProcessService/ytWaterProcess/waterserver3.h

@@ -13,15 +13,15 @@ public:
     void start();
 
 signals:
-    void getOnLine(int deviceidx, QString deviceid, bool flag, QDateTime t);
-    void getValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void getAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void getOnLine(int deviceidx, bool flag, QDateTime t);
+    void getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void getAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void getCommData(QString data);
 public slots:
     void incomingConnection(qintptr socketDescriptor) override;
-    void egetOnLine(int deviceidx, QString deviceid, bool flag, QDateTime t);
-    void egetValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void egetAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void egetOnLine(int deviceidx, bool flag, QDateTime t);
+    void egetValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void egetAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void egetCommData(QString data);
 };
 

+ 2 - 2
DataProcessService/ytWaterProcess/waterserver4.h

@@ -39,8 +39,8 @@ public:
     void check_framedata(QString data, QString etime, QString ip);
     quint8 hexstr_to_byte(QString dat);
 signals:
-    void getValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void getAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void getAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void getCommData(QString data);
 public slots:
     void new_incomming();

+ 9 - 189
DataProcessService/ytWaterProcess/wateruserver.cpp

@@ -1,5 +1,5 @@
 #include "wateruserver.h"
-//#include "water.h"
+#include "water.h"
 
 wateruserver::wateruserver(QObject *parent) : QObject(parent)
 {
@@ -18,26 +18,16 @@ void wateruserver::start()
 
 int wateruserver::getDevIdx(QString DeviceCode)
 {
-    c = NULL;
     int idx = -1;
-    int redisconnected = -1;
-    if(redisconnected==-1){
-            redisconnected=redis_init();
-            if(redisconnected==-1){
-                printf("redis init failed\n");
+    for(int i=0;i<10240;i++)
+    {
+        if(waterSensorList->sensors[i].Enabled==0x01){
+            if(QString::compare(DeviceCode,QString(waterSensorList->sensors[i].Device_Code))==0){
+                idx = i;
+                return idx;
             }
-            redis_save(AUTH);
-            redis_save(DBID);
-        }
-
-    if(QString("0x01").compare(redis_qstring((QString("hget sp_owner2-%1 enabled").arg(DeviceCode)).toUtf8()))==0){
-        if(redis_int((QString("hexists sp_owner2-%1 devicecode").arg(DeviceCode)).toUtf8())==1){
-            idx = redis_qstring((QString("hget sp_owner2-%1 row").arg(DeviceCode)).toUtf8()).toInt();
-            return idx;
         }
     }
-
-    redis_free();
     return idx;
 }
 
@@ -106,180 +96,10 @@ void wateruserver::readdata()
             devidx = getDevIdx(DeviceCode);
             if(devidx>=0){
                 if(alarmstatus)
-                    emit getAlarm(devidx,DeviceCode,d1,energy,Signal,pressure_value,"",note,t);
+                    emit getAlarm(devidx,d1,energy,Signal,pressure_value,"",note,t);
                 else
-                    emit getValue(devidx,DeviceCode,d1,energy,Signal,pressure_value,"",t);
+                    emit getValue(devidx,d1,energy,Signal,pressure_value,"",t);
             }
         }
     }
 }
-
-int wateruserver::redis_init()
-{
-    c = redisConnect(REDIS_HOST, REDIS_PORT);
-    if (NULL == c || c->err) {
-        if(c) {
-            printf("Redis [%s:%d], Error:[%s]\n", REDIS_HOST, REDIS_PORT, c->errstr);
-            redisFree(c);
-        } else {
-            printf("Redis [%s:%d] failure\n", REDIS_HOST, REDIS_PORT);
-        }
-        return -1;
-    }
-
-    return 0;
-}
-
-void wateruserver::redis_free()
-{
-    if (c) {
-        redisFree(c);
-    }
-    c = NULL;
-}
-
-int wateruserver::redis_save(const char *cmd)
-{
-    int i = 0;
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s, c %p\n", cmd,c);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return 0;
-}
-
-QString wateruserver::redis_qstring(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return "error";
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return "error";
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    QString data = r->str;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}
-
-int wateruserver::redis_int(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    int data = r->integer;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}

+ 2 - 9
DataProcessService/ytWaterProcess/wateruserver.h

@@ -4,7 +4,6 @@
 #include <QObject>
 #include <QUdpSocket>
 #include <QDateTime>
-#include "redis.h"
 
 class wateruserver : public QObject
 {
@@ -13,21 +12,15 @@ public:
     explicit wateruserver(QObject *parent = nullptr);
     void start();
     int getDevIdx(QString DeviceCode);
-    int redis_init();
-    int redis_save(const char *cmd);
-    QString redis_qstring(const char *cmd);
-    int redis_int(const char *cmd);
-    void redis_free();
 
 signals:
-    void getValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void getAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void getAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void getCommData(QString data);
 public slots:
     void readdata();
 private:
     QUdpSocket *so;
-    redisContext *c ;
 };
 
 #endif // WATERUSERVER_H

+ 10 - 190
DataProcessService/ytWaterProcess/wateruserver2.cpp

@@ -1,5 +1,5 @@
 #include "wateruserver2.h"
-//#include "water.h"
+#include "water.h"
 
 wateruserver2::wateruserver2(QObject *parent) : QObject(parent)
 {
@@ -18,26 +18,17 @@ void wateruserver2::start()
 
 int wateruserver2::getDevIdx(quint64 devcode)
 {
-    c = NULL;
     int idx = -1;
-    int redisconnected = -1;
-    if(redisconnected==-1){
-            redisconnected=redis_init();
-            if(redisconnected==-1){
-                printf("redis init failed\n");
-            }
-            redis_save(AUTH);
-            redis_save(DBID);
-        }
     QString DeviceCode = QString("%1").arg(devcode);
-    if(QString("0x01").compare(redis_qstring((QString("hget sp_owner2-%1 enabled").arg(DeviceCode)).toUtf8()))==0){
-        if(redis_int((QString("hexists sp_owner2-%1 devicecode").arg(DeviceCode)).toUtf8())==1){
-            idx = redis_qstring((QString("hget sp_owner2-%1 row").arg(DeviceCode)).toUtf8()).toInt();
-            return idx;
+    for(int i=0;i<10240;i++)
+    {
+        if(waterSensorList->sensors[i].Enabled==0x01){
+            if(QString::compare(DeviceCode,QString(waterSensorList->sensors[i].Device_Code))==0){
+                idx = i;
+                return idx;
+            }
         }
     }
-
-    redis_free();
     return idx;
 }
 
@@ -144,183 +135,12 @@ void wateruserver2::readdata()
                 imei = (imei*100)+(((data.at(6+i)>>4)&0x0f)*10)+(data.at(6+i)&0x0f);
             }
             devidx = getDevIdx(imei);
-            QString DeviceCode = QString("%1").arg(imei);
             if(devidx>=0){
                 if(alarmstatus)
-                    emit getAlarm(devidx,DeviceCode,d1,energy,s,fdat,"",note,t);
+                    emit getAlarm(devidx,d1,energy,s,fdat,"",note,t);
                 else
-                    emit getValue(devidx,DeviceCode,d1,energy,s,fdat,"",t);
+                    emit getValue(devidx,d1,energy,s,fdat,"",t);
             }
         }
     }
 }
-
-int wateruserver2::redis_init()
-{
-    c = redisConnect(REDIS_HOST, REDIS_PORT);
-    if (NULL == c || c->err) {
-        if(c) {
-            printf("Redis [%s:%d], Error:[%s]\n", REDIS_HOST, REDIS_PORT, c->errstr);
-            redisFree(c);
-        } else {
-            printf("Redis [%s:%d] failure\n", REDIS_HOST, REDIS_PORT);
-        }
-        return -1;
-    }
-
-    return 0;
-}
-
-void wateruserver2::redis_free()
-{
-    if (c) {
-        redisFree(c);
-    }
-    c = NULL;
-}
-
-int wateruserver2::redis_save(const char *cmd)
-{
-    int i = 0;
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s, c %p\n", cmd,c);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return 0;
-}
-
-QString wateruserver2::redis_qstring(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return "error";
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return "error";
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    QString data = r->str;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}
-
-int wateruserver2::redis_int(const char *cmd)
-{
-    redisReply *r = NULL;
-    if (NULL == cmd) {
-        return -1;
-    }
-
-    printf("%s\n", cmd);
-
-    r = (redisReply *)redisCommand(c, cmd);
-    if (NULL == r) {
-        printf("Error[%d:%s]", c->err, c->errstr);
-        return -1;
-    }
-
-    switch(r->type) {
-    case REDIS_REPLY_STATUS:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STATUS", r->len, r->str);
-        break;
-    case REDIS_REPLY_ERROR:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_ERROR", r->len, r->str);
-        break;
-    case REDIS_REPLY_INTEGER:
-        printf("type:%s, reply->integer:%lld\n", "REDIS_REPLY_INTEGER", r->integer);
-        break;
-    case REDIS_REPLY_NIL:
-        printf("type:%s, no data\n", "REDIS_REPLY_NIL");
-        break;
-    case REDIS_REPLY_STRING:
-        printf("type:%s, reply->len:%ld reply->str:%s\n", "REDIS_REPLY_STRING", r->len, r->str);
-        break;
-    case REDIS_REPLY_ARRAY:
-        printf("type:%s, reply->elements:%ld\n", "REDIS_REPLY_ARRAY", r->elements);
-        for (int i = 0; i < r->elements; i++) {
-            printf("%d: %s\n", i, r->element[i]->str);
-        }
-        break;
-    default:
-        printf("unkonwn type:%d\n", r->type);
-        break;
-    }
-
-    int data = r->integer;
-
-    /*release reply and context */
-    freeReplyObject(r);
-    return data;
-}

+ 2 - 9
DataProcessService/ytWaterProcess/wateruserver2.h

@@ -4,7 +4,6 @@
 #include <QObject>
 #include <QUdpSocket>
 #include <QDateTime>
-#include "redis.h"
 
 class wateruserver2 : public QObject
 {
@@ -13,21 +12,15 @@ public:
     explicit wateruserver2(QObject *parent = nullptr);
     void start();
     int getDevIdx(quint64 devcode);
-    int redis_init();
-    int redis_save(const char *cmd);
-    QString redis_qstring(const char *cmd);
-    int redis_int(const char *cmd);
-    void redis_free();
 
 signals:
-    void getValue(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void getAlarm(int deviceidx, QString deviceid, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void getAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void getCommData(QString data);
 public slots:
     void readdata();
 private:
     QUdpSocket *so;
-    redisContext *c ;
 };
 
 #endif // WATERUSERVER2_H

+ 1 - 3
DataProcessService/ytWaterProcess/ytWaterProcess.pro

@@ -45,8 +45,6 @@ HEADERS += \
     waterserver4.h \
     wateruserver.h \
     wateruserver2.h \
-    ../ytRTUProcess/ttsthreads.h \
-    redis.h
+    ../ytRTUProcess/ttsthreads.h
 
 LIBS += -lQt5Qmqtt
-LIBS += "/usr/local/lib/libhiredis.a"