فهرست منبع

新增158网关和176单相数据采集 & 171/173系列设备点表升级和183设备微信端报警名称与客户要求一致优化程序

James 3 سال پیش
والد
کامیت
0783edd10d

+ 1 - 0
ytWG/WGDog/dogcore.cpp

@@ -53,6 +53,7 @@ void dogcore::time_out()
             }
         }
     }
+
 }
 
 

+ 7 - 7
ytWG/qmqtt-master/qmqtt.pro.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.7.2, 2021-09-16T09:19:14. -->
+<!-- Written by QtCreator 4.7.2, 2021-11-23T10:17:17. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -306,8 +306,8 @@
     <value type="int" key="PE.EnvironmentAspect.Base">2</value>
     <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">client</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/yt/Qt/DataProcessService/qmqtt-master/examples/qmqtt/client/client.pro</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">client2</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/yt/Qt/ytWG/qmqtt-master/examples/qmqtt/client/client.pro</value>
     <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">examples/qmqtt/client/client.pro</value>
@@ -363,8 +363,8 @@
     <value type="int" key="PE.EnvironmentAspect.Base">2</value>
     <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">message</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/yt/Qt/DataProcessService/qmqtt-master/tests/benchmarks/message/message.pro</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">message2</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/yt/Qt/ytWG/qmqtt-master/tests/benchmarks/message/message.pro</value>
     <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">tests/benchmarks/message/message.pro</value>
@@ -420,8 +420,8 @@
     <value type="int" key="PE.EnvironmentAspect.Base">2</value>
     <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">tests</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/yt/Qt/DataProcessService/qmqtt-master/tests/gtest/tests/tests.pro</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">tests2</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/yt/Qt/ytWG/qmqtt-master/tests/gtest/tests/tests.pro</value>
     <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">tests/gtest/tests/tests.pro</value>

+ 2 - 2
ytWG/ytWG.pro.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.7.2, 2021-09-22T17:41:21. -->
+<!-- Written by QtCreator 4.7.2, 2022-06-24T10:05:42. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -67,7 +67,7 @@
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ba7ab7ec-e6d7-4239-8d06-20d6c39c5b99}</value>
    <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
    <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">1</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
     <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/yt/Qt</value>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">

+ 151 - 48
ytWG/ytWGElectric/databasethread.cpp

@@ -1,28 +1,5 @@
 #include "databasethread.h"
-
-//#define HostName "124.71.145.219"
-//#define HostPort 3306
-//#define UserName "root"
-//#define PassWord "Wjzn2021Db"
-//#define DatabaseName "smart_electricity"
-
-//#define HostName "124.70.160.158"
-//#define HostPort 3306
-//#define UserName "root"
-//#define PassWord "Y48hD&Eg"
-//#define DatabaseName "smart_electricity"
-
-#define HostName "192.168.0.206"
-#define HostPort 3306
-#define UserName "root"
-#define PassWord "Y48hD&Eg"
-#define DatabaseName "smart_electricity"
-
-//#define HostName "101.133.214.75"
-//#define HostPort 3306
-//#define UserName "usky"
-//#define PassWord "Yt#75Usky"
-//#define DatabaseName "usky-electricity"
+#include "wgcfgshm.h"
 
 #include "wgelectricshm.h"
 #include "../WGDog/dataprecess.h"
@@ -67,32 +44,24 @@ static QString digital[35] = {
     "ResDI4"
 };
 
-static QString digital171[16] = {
+static QString digital171[8] = {
     "commState",
     "busLive",
     "highVoltageAlarm",
     "lowVoltageAlarm",
-    "busLackPhase",
-    "analog1Alarm",
-    "analog2Alarm",
-    "analog3Alarm",
-    "analog4Alarm",
-    "analog5Alarm",
+    "busLackPhase"
     "digitalReserved1",
     "digitalReserved2",
-    "digitalReserved3",
-    "digitalReserved4",
-    "digitalReserved5",
-    "digitalReserved6"
+    "digitalReserved3"
 };
 
-static QString digital173[18] = {
+static QString digital173[16] = {
     "commState",
     "LoadLive",
     "Trip",
     "OverI",
-    "PhaseLoss",
-    "UnderV",
+    "ResDI1",
+    "ResDI2",
     "OverDemandP",
     "OverIr",
     "OverT1",
@@ -102,12 +71,56 @@ static QString digital173[18] = {
     "DI2",
     "DO1",
     "DO2",
-    "ResDI1",
-    "ResDI2",
     "ResDI3"
 };
 
 
+static QString digital176[42] = {
+    "commState",
+    "LoadLiveL1",
+    "TripL1",
+    "OverIL1",
+    "OverVL1",
+    "UnderVL1",
+    "OverTL1",
+    "ArcL1",
+    "ResDI1L1",
+    "ResDI2L1",
+    "LoadLiveL2",
+    "TripL2",
+    "OverIL2",
+    "OverVL2",
+    "UnderVL2",
+    "OverTL2",
+    "ArcL2",
+    "ResDI1L2",
+    "ResDI2L2",
+    "LoadLiveL3",
+    "TripL3",
+    "OverIL3",
+    "OverVL3",
+    "UnderVL3",
+    "OverTL3",
+    "ArcL3",
+    "ResDI1L3",
+    "ResDI2L3",
+    "LoadLiveL4",
+    "TripL4",
+    "OverIL4",
+    "OverVL4",
+    "UnderVL4",
+    "OverTL4",
+    "ArcL4",
+    "ResDI1L4",
+    "ResDI2L4",
+    "UL",
+    "DI2",
+    "DI1",
+    "DO1",
+    "DO2"
+};
+
+
 DatabaseThread::DatabaseThread(QObject *parent) :
     QThread(parent)
 {
@@ -174,6 +187,24 @@ void DatabaseThread::deviceStatus()
                                 db.exec(QString("update device_status set device_status = 77, status_time = '%1' where device_code = '%2';").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(wgdev->devs[i].deviceCode));
                             }
                         }else if(wgdev->devs[i].devicetype == 3){
+                            for(int j=0;j<8;j++){
+                                if((((QString("commState")).compare(wgdev->devs[i].alarm[j].measname)!=0)&&(wgdev->devs[i].alarm[j].digitalvalue == 0))||(((QString("commState")).compare(wgdev->devs[i].alarm[j].measname)==0)&&(wgdev->devs[i].alarm[j].digitalvalue == 1))){
+                                    number++;
+                                }
+
+                                if(((QString("commState")).compare(wgdev->devs[i].alarm[j].measname)==0)&&(wgdev->devs[i].alarm[j].digitalvalue == 0)){ //commState(0为通讯中断,1为运行状态)
+                                    devabvalue = 1;
+                                }
+                            }
+
+                            if(number == 8){
+                                db.exec(QString("update device_status set device_status = 0, status_time = '%1' where device_code = '%2';").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(wgdev->devs[i].deviceCode));
+                            }else if(devabvalue == 1){
+                                db.exec(QString("update device_status set device_status = 4, status_time = '%1' where device_code = '%2';").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(wgdev->devs[i].deviceCode));
+                            }else{
+                                db.exec(QString("update device_status set device_status = 77, status_time = '%1' where device_code = '%2';").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(wgdev->devs[i].deviceCode));
+                            }
+                        }else if(wgdev->devs[i].devicetype == 4){
                             for(int j=0;j<16;j++){
                                 if((((QString("commState")).compare(wgdev->devs[i].alarm[j].measname)!=0)&&(wgdev->devs[i].alarm[j].digitalvalue == 0))||(((QString("commState")).compare(wgdev->devs[i].alarm[j].measname)==0)&&(wgdev->devs[i].alarm[j].digitalvalue == 1))){
                                     number++;
@@ -191,8 +222,11 @@ void DatabaseThread::deviceStatus()
                             }else{
                                 db.exec(QString("update device_status set device_status = 77, status_time = '%1' where device_code = '%2';").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(wgdev->devs[i].deviceCode));
                             }
-                        }else if(wgdev->devs[i].devicetype == 4){
-                            for(int j=0;j<18;j++){
+                        }else if(wgdev->devs[i].devicetype == 5){
+                            db.exec(QString("update device_status set device_status = 0, status_time = '%1' where device_code = '%2';").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(wgdev->devs[i].deviceCode));
+
+                        }else if(wgdev->devs[i].devicetype == 7){
+                            for(int j=0;j<42;j++){
                                 if((((QString("commState")).compare(wgdev->devs[i].alarm[j].measname)!=0)&&(wgdev->devs[i].alarm[j].digitalvalue == 0))||(((QString("commState")).compare(wgdev->devs[i].alarm[j].measname)==0)&&(wgdev->devs[i].alarm[j].digitalvalue == 1))){
                                     number++;
                                 }
@@ -202,7 +236,7 @@ void DatabaseThread::deviceStatus()
                                 }
                             }
 
-                            if(number == 18){
+                            if(number == 42){
                                 db.exec(QString("update device_status set device_status = 0, status_time = '%1' where device_code = '%2';").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(wgdev->devs[i].deviceCode));
                             }else if(devabvalue == 1){
                                 db.exec(QString("update device_status set device_status = 4, status_time = '%1' where device_code = '%2';").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(wgdev->devs[i].deviceCode));
@@ -235,7 +269,7 @@ void DatabaseThread::waveAlarm(devAlarm dev)
 
 void DatabaseThread::initDb()
 {
-    QString sql = QString("select site_id,device_code,device_type from device where device_type = '1' and enable = 1;");
+    QString sql = QString("select site_id,device_code,device_type from device where device_type = '1' and enable = 1;"); //183用电设备
     QSqlQuery qry = db.exec(sql);
     QDateTime t = QDateTime::currentDateTime();
     int nrow= 0;
@@ -279,7 +313,7 @@ void DatabaseThread::initDb()
     qry.clear();
 
     sql.clear();
-    sql = QString("select site_id,device_code,device_type from device where device_type = '3' and enable = 1;");
+    sql = QString("select site_id,device_code,device_type from device where device_type = '3' and enable = 1;");  //171用电设备
     qry = db.exec(sql);
 
     while(qry.next())
@@ -291,7 +325,7 @@ void DatabaseThread::initDb()
         wgdev->devs[nrow].devicetype = qry.value(2).toUInt();
         wgdev->devs[nrow].Enabled = 0x01;
         //wgdev->devs[nrow].LastCommtime = t.toTime_t();
-        for(int i=0;i<16;i++)
+        for(int i=0;i<8;i++)
         {
             sprintf(wgdev->devs[nrow].alarm[i].deviceCode,"%s",qry.value(1).toString().toUtf8().data());
             sprintf(wgdev->devs[nrow].alarm[i].measname,"%s",digital171[i].toUtf8().data());
@@ -321,7 +355,7 @@ void DatabaseThread::initDb()
     qry.clear();
 
     sql.clear();
-    sql = QString("select site_id,device_code,device_type from device where device_type = '4' and enable = 1;");
+    sql = QString("select site_id,device_code,device_type from device where device_type = '4' and enable = 1;");  //173用电设备
     qry = db.exec(sql);
 
     while(qry.next())
@@ -333,7 +367,7 @@ void DatabaseThread::initDb()
         wgdev->devs[nrow].devicetype = qry.value(2).toUInt();
         wgdev->devs[nrow].Enabled = 0x01;
         //wgdev->devs[nrow].LastCommtime = t.toTime_t();
-        for(int i=0;i<18;i++)
+        for(int i=0;i<16;i++)
         {
             sprintf(wgdev->devs[nrow].alarm[i].deviceCode,"%s",qry.value(1).toString().toUtf8().data());
             sprintf(wgdev->devs[nrow].alarm[i].measname,"%s",digital173[i].toUtf8().data());
@@ -360,6 +394,75 @@ void DatabaseThread::initDb()
 
         nrow++;
     }
+    qry.clear();
+
+    sql.clear();
+    sql = QString("select site_id,device_code,device_type from device where device_type = '5' and enable = 1;");  //158智能网关
+    qry = db.exec(sql);
+
+    while(qry.next())
+    {
+        if(nrow >102399)
+            break;
+        wgdev->devs[nrow].siteId = qry.value(0).toUInt();
+        sprintf(wgdev->devs[nrow].deviceCode,"%s",qry.value(1).toString().toUtf8().data());
+        wgdev->devs[nrow].devicetype = qry.value(2).toUInt();
+        wgdev->devs[nrow].Enabled = 0x01;
+
+        QString sql2 = QString("select count(*) from rt_analog_158_data where deviceName = '%1'").arg(qry.value(1).toString());
+        QSqlQuery qry2 = db.exec(sql2);
+        while(qry2.next()){
+            if(qry2.value(0).toInt()==0){
+                db.exec(QString("insert into rt_analog_158_data (id,deviceName,directCurrent,ambientTemperature,ambientHumidity,onDevice1,offDevice1,onDevice2,offDevice2,onDevice3,offDevice3,analogReserved1,analogReserved2,totalAlarm,nbSignal,wifiSignal,storageTime,cpuTemperature,powerSupply,batteryVoltage,exceptionCode1,exceptionCode2,resetTimes,freezingTime,dataTime)values(null,'%1','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','%2','%3');").arg(qry.value(1).toString()).arg((QDateTime::currentDateTime()).toString("yyyy-MM-dd")).arg((QDateTime::currentDateTime()).toString("yyyy-MM-dd HH:mm:ss")));
+            }
+        }
+        qry2.clear();
+
+        nrow++;
+    }
+    qry.clear();
+
+    sql.clear();
+    sql = QString("select site_id,device_code,device_type from device where device_type = '7' and enable = 1;");  //176用电设备
+    qry = db.exec(sql);
+
+    while(qry.next())
+    {
+        if(nrow >102399)
+            break;
+        wgdev->devs[nrow].siteId = qry.value(0).toUInt();
+        sprintf(wgdev->devs[nrow].deviceCode,"%s",qry.value(1).toString().toUtf8().data());
+        wgdev->devs[nrow].devicetype = qry.value(2).toUInt();
+        wgdev->devs[nrow].Enabled = 0x01;
+        //wgdev->devs[nrow].LastCommtime = t.toTime_t();
+        for(int i=0;i<42;i++)
+        {
+            sprintf(wgdev->devs[nrow].alarm[i].deviceCode,"%s",qry.value(1).toString().toUtf8().data());
+            sprintf(wgdev->devs[nrow].alarm[i].measname,"%s",digital176[i].toUtf8().data());
+            //wgdev->devs[nrow].alarm[i].soetime = t.toTime_t();
+        }
+
+        QString sql1 = QString("select count(*) from rt_switch_176_data where deviceName = '%1';").arg(qry.value(1).toString());
+        QSqlQuery qry1 = db.exec(sql1);
+        while(qry1.next()){
+            if(qry1.value(0).toInt()==0){
+                db.exec(QString("insert into rt_switch_176_data (id, deviceName, commState, LoadLiveL1, TripL1, OverIL1, OverVL1, UnderVL1, OverTL1, ArcL1, ResDI1L1, ResDI2L1, LoadLiveL2, TripL2, OverIL2, OverVL2, UnderVL2, OverTL2, ArcL2, ResDI1L2, ResDI2L2, LoadLiveL3, TripL3, OverIL3, OverVL3, UnderVL3, OverTL3, ArcL3, ResDI1L3, ResDI2L3, LoadLiveL4, TripL4, OverIL4, OverVL4, UnderVL4, OverTL4, ArcL4, ResDI1L4, ResDI2L4, UL, DI1, DI2, DO1, DO2, freezingTime, dataTime) values(null,'%1',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'%2','%3');").arg(qry.value(1).toString()).arg((QDateTime::currentDateTime()).toString("yyyy-MM-dd")).arg((QDateTime::currentDateTime()).toString("yyyy-MM-dd HH:mm:ss")));
+            }
+        }
+        qry1.clear();
+
+        QString sql2 = QString("select count(*) from rt_analog_176_data where deviceName = '%1';").arg(qry.value(1).toString());
+        QSqlQuery qry2 = db.exec(sql2);
+        while(qry2.next()){
+            if(qry2.value(0).toInt()==0){
+                db.exec(QString("insert into rt_analog_176_data (id, deviceName, voltageL1, electricCurrentL1, PL1, fdmtReactiveL1, COSL1, EppL1, EqpL1, EpnL1, EqnL1, IhL1, ArcNL1, TL1, analogReserved1L1, analogReserved2L1, voltageL2, electricCurrentL2, PL2, fdmtReactiveL2, COSL2, EppL2, EqpL2, EpnL2, EqnL2, IhL2, ArcNL2, TL2, analogReserved1L2, analogReserved2L2, voltageL3, electricCurrentL3, PL3, fdmtReactiveL3, COSL3, EppL3, EqpL3, EpnL3, EqnL3, IhL3, ArcNL3, TL3, analogReserved1L3, analogReserved2L3, voltageL4, electricCurrentL4, PL4, fdmtReactiveL4, COSL4, EppL4, EqpL4, EpnL4, EqnL4, IhL4, ArcNL4, TL4, analogReserved1L4, analogReserved2L4, F, analogReserved3, analogReserved4, freezingTime, dataTime)values(null,'%1','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00','%2','%3');").arg(qry.value(1).toString()).arg((QDateTime::currentDateTime()).toString("yyyy-MM-dd")).arg((QDateTime::currentDateTime()).toString("yyyy-MM-dd HH:mm:ss")));
+            }
+        }
+        qry2.clear();
+
+        nrow++;
+    }
+
     for(int i=nrow;i<102400;i++){
         wgdev->devs[i].Enabled = 0x00;
     }

+ 6 - 5
ytWG/ytWGElectric/elcommthread.cpp

@@ -1,5 +1,5 @@
 #include "elcommthread.h"
-
+#include "wgcfgshm.h"
 
 ELCommThread::ELCommThread(QObject *parent) : QThread(parent)
 {
@@ -7,10 +7,11 @@ ELCommThread::ELCommThread(QObject *parent) : QThread(parent)
     connect(timer,&QTimer::timeout,this,&ELCommThread::time_out);
     timer->start(1000);
 
-    //m_client = new QMQTT::Client(QHostAddress("124.70.160.158"), 1883, this);
-    m_client = new QMQTT::Client(QHostAddress("123.60.11.86"), 1883, this);
-    m_client->setUsername("admin");
-    m_client->setPassword("a10vE0s73g5");
+    m_client = new QMQTT::Client(QHostAddress(MQTT_IP), MQTT_PORT, this);
+    m_client->setUsername(MQTT_USERNAME);
+    m_client->setPassword(MQTT_PASSWD);
+    m_client->setKeepAlive(180);
+    m_client->setCleanSession(true);
 
     connect(m_client, &QMQTT::Client::connected, this, &ELCommThread::onConnected);
     connect(m_client, &QMQTT::Client::received, this, &ELCommThread::onReceived);

+ 72 - 0
ytWG/ytWGElectric/elcommthread158.cpp

@@ -0,0 +1,72 @@
+#include "elcommthread158.h"
+#include "wgcfgshm.h"
+
+ELCommThread158::ELCommThread158(QObject *parent) : QThread(parent)
+{
+    loginIdx = 1;
+    mqttIdx = 1;
+
+    timer = new QTimer(this);
+    connect(timer,&QTimer::timeout,this,&ELCommThread158::time_out);
+    timer->start(1000);
+
+    m_client = new QMQTT::Client(QHostAddress(MQTT_IP), MQTT_PORT, this);
+    m_client->setUsername(MQTT_USERNAME);
+    m_client->setPassword(MQTT_PASSWD);
+    m_client->setKeepAlive(180);
+    m_client->setCleanSession(true);
+
+    connect(m_client,&QMQTT::Client::connected,this,&ELCommThread158::onConnected);
+    connect(m_client,&QMQTT::Client::received,this,&ELCommThread158::onReceived);
+
+    m_client->connectToHost();
+}
+
+ELCommThread158::~ELCommThread158()
+{
+
+}
+
+void ELCommThread158::run()
+{
+
+}
+
+void ELCommThread158::time_out()
+{
+    if((m_client->connectionState()==QMQTT::STATE_INIT)||(m_client->connectionState()==QMQTT::STATE_DISCONNECTED)){
+        m_client->connectToHost();
+    }
+}
+
+void ELCommThread158::onConnected()
+{
+    m_client->subscribe("/ewoogi/ubqd/data/Hz158EwoogiD/+/property",0);
+    m_client->subscribe("/ewoogi/ubqd/session/Hz158EwoogiD/+/combine/login",0);
+}
+
+void ELCommThread158::onReceived(const QMQTT::Message &message)
+{
+    QString topic = message.topic();
+    QByteArray data = message.payload();
+    QString commData = "";
+    for(int i=0;i<data.length();i++){
+        commData.append(QString("%1").arg(data.at(i)&0xff,2,16,QChar('0')));
+    }
+    printf("158 topic = [%s], commData = [%s]\n",topic.toUtf8().data(),commData.toUtf8().data());
+
+    QString loginStr = (topic.split("/")).last();
+    if(loginStr.compare("login")==0){
+        QString company = (topic.split("/")).at(4);
+        QString deviceid = (topic.split("/")).at(5);
+        QString loginTopic = QString("/ewoogi/ubqd/session/%1/%2/combine/login_reply").arg(company).arg(deviceid);
+        QString data1 = QString("{\"code\":200}");
+        m_client->publish(QMQTT::Message(loginIdx++,loginTopic,data1.toUtf8()));
+        if(loginIdx > 9999)
+            loginIdx = 1;
+    }
+
+    emit sendDevData158(topic,data);
+}
+
+

+ 30 - 0
ytWG/ytWGElectric/elcommthread158.h

@@ -0,0 +1,30 @@
+#ifndef ELCOMMTHREAD158_H
+#define ELCOMMTHREAD158_H
+
+#include <QThread>
+#include <qmqtt.h>
+#include <QTimer>
+
+class ELCommThread158 : public QThread
+{
+    Q_OBJECT
+public:
+    explicit ELCommThread158(QObject *parent = nullptr);
+    ~ELCommThread158();
+    void run();
+
+signals:
+    void sendDevData158(QString topic,QByteArray data);
+
+public slots:
+    void time_out();
+    void onConnected();
+    void onReceived(const QMQTT::Message &message);
+
+private:
+    QTimer *timer;
+    QMQTT::Client *m_client;
+    quint16 loginIdx,mqttIdx;
+};
+
+#endif // ELCOMMTHREAD158_H

+ 6 - 4
ytWG/ytWGElectric/elcommthread171.cpp

@@ -1,4 +1,5 @@
 #include "elcommthread171.h"
+#include "wgcfgshm.h"
 
 ELCommThread171::ELCommThread171(QObject *parent) : QThread(parent)
 {
@@ -8,10 +9,11 @@ ELCommThread171::ELCommThread171(QObject *parent) : QThread(parent)
     connect(timer,&QTimer::timeout,this,&ELCommThread171::time_out);
     timer->start(1000);
 
-    //m_client = new QMQTT::Client(QHostAddress("124.70.160.158"), 1883, this);
-    m_client = new QMQTT::Client(QHostAddress("123.60.11.86"), 1883, this);
-    m_client->setUsername("admin");
-    m_client->setPassword("a10vE0s73g5");
+    m_client = new QMQTT::Client(QHostAddress(MQTT_IP), MQTT_PORT, this);
+    m_client->setUsername(MQTT_USERNAME);
+    m_client->setPassword(MQTT_PASSWD);
+    m_client->setKeepAlive(180);
+    m_client->setCleanSession(true);
     connect(m_client,&QMQTT::Client::connected,this,&ELCommThread171::onConnected);
     connect(m_client,&QMQTT::Client::received,this,&ELCommThread171::onReceived);
     m_client->connectToHost();

+ 6 - 4
ytWG/ytWGElectric/elcommthread173.cpp

@@ -1,4 +1,5 @@
 #include "elcommthread173.h"
+#include "wgcfgshm.h"
 
 ELCommThread173::ELCommThread173(QObject *parent) : QThread(parent)
 {
@@ -9,10 +10,11 @@ ELCommThread173::ELCommThread173(QObject *parent) : QThread(parent)
     connect(timer,&QTimer::timeout,this,&ELCommThread173::time_out);
     timer->start(1000);
 
-    //m_client = new QMQTT::Client(QHostAddress("124.70.160.158"), 1883, this);
-    m_client = new QMQTT::Client(QHostAddress("123.60.11.86"), 1883, this);
-    m_client->setUsername("admin");
-    m_client->setPassword("a10vE0s73g5");
+    m_client = new QMQTT::Client(QHostAddress(MQTT_IP), MQTT_PORT, this);
+    m_client->setUsername(MQTT_USERNAME);
+    m_client->setPassword(MQTT_PASSWD);
+    m_client->setKeepAlive(180);
+    m_client->setCleanSession(true);
     connect(m_client,&QMQTT::Client::connected,this,&ELCommThread173::onConnected);
     connect(m_client,&QMQTT::Client::received,this,&ELCommThread173::onReceived);
 

+ 80 - 0
ytWG/ytWGElectric/elcommthread176.cpp

@@ -0,0 +1,80 @@
+#include "elcommthread176.h"
+
+#include "wgelectric.h"
+#include "wgcfgshm.h"
+
+ELCommThread176::ELCommThread176(QObject *parent) : QThread(parent)
+{
+    loginIdx = 1;
+
+    timer = new QTimer(this);
+    connect(timer,&QTimer::timeout,this,&ELCommThread176::time_out);
+    timer->start(1000);
+
+    //m_client = new QMQTT::Client(QHostAddress("124.70.160.158"), 1883, this);
+    m_client = new QMQTT::Client(QHostAddress(MQTT_IP), MQTT_PORT, this);
+    m_client->setUsername(MQTT_USERNAME);
+    m_client->setPassword(MQTT_PASSWD);
+    m_client->setKeepAlive(180);
+    m_client->setCleanSession(true);
+    connect(m_client,&QMQTT::Client::connected,this,&ELCommThread176::onConnected);
+    connect(m_client,&QMQTT::Client::received,this,&ELCommThread176::onReceived);
+
+    m_client->connectToHost();
+}
+
+void ELCommThread176::run()
+{
+
+}
+
+void ELCommThread176::time_out()
+{
+    if((m_client->connectionState()==QMQTT::STATE_INIT)||(m_client->connectionState()==QMQTT::STATE_DISCONNECTED)){
+        m_client->connectToHost();
+    }
+}
+
+void ELCommThread176::onConnected()
+{
+    m_client->subscribe("/ewoogi/ubqd/data/Hz176EwoogiD/+/property",0);
+    m_client->subscribe("/ewoogi/ubqd/session/Hz158EwoogiD/+/combine/login",0);
+}
+
+void ELCommThread176::onReceived(const QMQTT::Message &message)
+{
+    QString topic = message.topic();
+    QByteArray data = message.payload();
+    QString commData = "";
+    for(int i=0;i<data.length();i++){
+        commData.append(QString("%1").arg(data.at(i)&0xff,2,16,QChar('0')));
+    }
+    printf("176 topic = %s, commData = %s\n",topic.toUtf8().data(),commData.toUtf8().data());
+
+    //subSOE login->login_reply->down_raw
+    QString login = (topic.split("/")).last();
+    if(QString::compare(login,"login")==0){
+        QString company = (topic.split("/")).at(4);
+        QString deviceCode = (topic.split("/")).at(5);
+
+        QString loginTopic = QString("/ewoogi/ubqd/session/%1/%2/combine/login_reply").arg(company).arg(deviceCode);
+        QString data1;
+        data1.append(QString("{\"code\":200}"));
+        m_client->publish(QMQTT::Message(loginIdx++,loginTopic,data1.toUtf8()));
+        if(loginIdx > 9999){
+            loginIdx = 1;
+        }
+
+    }
+
+    emit sendDevData176(topic,data);
+}
+
+
+
+
+
+
+
+
+

+ 30 - 0
ytWG/ytWGElectric/elcommthread176.h

@@ -0,0 +1,30 @@
+#ifndef ELCOMMTHREAD176_H
+#define ELCOMMTHREAD176_H
+
+#include <QThread>
+#include <qmqtt.h>
+#include <QTimer>
+
+class ELCommThread176 : public QThread
+{
+    Q_OBJECT
+public:
+    explicit ELCommThread176(QObject *parent = nullptr);
+    void run();
+
+signals:
+    void sendDevData176(QString topic,QByteArray data);
+
+public slots:
+    void time_out();
+    void onConnected();
+    void onReceived(const QMQTT::Message &message);
+
+private:
+    QTimer *timer;
+    QMQTT::Client *m_client;
+
+    quint16 loginIdx;
+};
+
+#endif // ELCOMMTHREAD176_H

+ 6 - 3
ytWG/ytWGElectric/elcommthreadpub.cpp

@@ -1,12 +1,15 @@
 #include "elcommthreadpub.h"
+#include "wgcfgshm.h"
 
 ELCommThreadPub::ELCommThreadPub(QObject *parent) : QThread(parent)
 {
     mqttIdx=1;
 
-    client = new QMQTT::Client(QHostAddress("123.60.11.86"), 1883, this);
-    client->setUsername("admin");
-    client->setPassword("a10vE0s73g5");
+    client = new QMQTT::Client(QHostAddress(MQTT_IP), MQTT_PORT, this);
+    client->setUsername(MQTT_USERNAME);
+    client->setPassword(MQTT_PASSWD);
+    client->setKeepAlive(180);
+    client->setCleanSession(true);
     connect(client,&QMQTT::Client::connected,this,&ELCommThreadPub::onConnected);
     client->connectToHost();
 

+ 6 - 3
ytWG/ytWGElectric/elcommthreadsub.cpp

@@ -1,4 +1,5 @@
 #include "elcommthreadsub.h"
+#include "wgcfgshm.h"
 
 ELCommThreadSub::ELCommThreadSub(QObject *parent) : QThread(parent)
 {
@@ -9,9 +10,11 @@ ELCommThreadSub::ELCommThreadSub(QObject *parent) : QThread(parent)
     mqttinfoIdx=1;
 
 
-    clientsub = new QMQTT::Client(QHostAddress("123.60.11.86"), 1883, this);
-    clientsub->setUsername("admin");
-    clientsub->setPassword("a10vE0s73g5");
+    clientsub = new QMQTT::Client(QHostAddress(MQTT_IP), MQTT_PORT, this);
+    clientsub->setUsername(MQTT_USERNAME);
+    clientsub->setPassword(MQTT_PASSWD);
+    clientsub->setKeepAlive(180);
+    clientsub->setCleanSession(true);
     connect(clientsub,&QMQTT::Client::connected,this,&ELCommThreadSub::onConnectedSub);
     connect(clientsub,&QMQTT::Client::received,this,&ELCommThreadSub::onReceivedSub);
     clientsub->connectToHost();

+ 6 - 6
ytWG/ytWGElectric/electdata.cpp

@@ -111,14 +111,14 @@ static QString digitalDescTable[35] = {
             "开入3",
             "火灾预警总",
             "线路电气故障总",
-            "缺相",
+            "电压缺相",
             "线路带电",
             "线路开关状态",
-            "过压",
-            "低",
+            "电压高",
+            "电压低",
             "电流越限",
             "过流跳闸",
-            "母线停电",
+            "失压",
             "剩余电流越限",
             "测温点1超温",
             "测温点2超温",
@@ -347,14 +347,14 @@ void Electdata::arrayDataToJason(QString topic,QByteArray data)
                 QString mDesc;
                 qint64 timeStamp=static_cast<qint64>(((static_cast<long int>(data.at(14)&0x00000000000000ff))<<40)|((static_cast<long int>(data.at(13)&0x00000000000000ff))<<32)|((static_cast<long int>(data.at(12)&0x00000000000000ff))<<24)|((static_cast<long int>(data.at(11)&0x00000000000000ff))<<16)|((static_cast<long int>(data.at(10)&0x00000000000000ff))<<8)|(static_cast<long int>(data.at(9)&0x00000000000000ff)));
                 if(digitalValue == 1){
-                    mDesc.append(digitalDescTable[digitalNo]).append("动作");
+                    mDesc.append(digitalDescTable[digitalNo]);
                     paradata.insert("measDesc",mDesc);
 
                     sql.append(QString("insert into alarm_power(id,device_code,alarm_name,sending_time,alarm_type,meas_name,digital_value,meas_desc,soe_time,handling_status) values (NULL,'%1','时间顺序记录','%2','alert','%3',%4,'%5','%6',0);").arg(deviceCode).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(digital[digitalNo]).arg(digitalValue).arg(mDesc).arg((QDateTime::fromMSecsSinceEpoch(timeStamp)).toString("yyyy-MM-dd HH:mm:ss")));
                     emit appendAlarm(deviceCode,sql,(QDateTime::fromMSecsSinceEpoch(timeStamp)).toString("yyyy-MM-dd HH:mm:ss"),mDesc,QString("%1").arg(digitalValue),digital[digitalNo]);
                     sql.clear();
                 }else{
-                    mDesc.append(digitalDescTable[digitalNo]).append("复归");
+                    mDesc.append(digitalDescTable[digitalNo]);
                     paradata.insert("measDesc",mDesc);
 
                     sql.append(QString("insert into alarm_power(id,device_code,alarm_name,sending_time,alarm_type,meas_name,digital_value,meas_desc,soe_time,handling_status) values (NULL,'%1','时间顺序记录','%2','alert','%3',%4,'%5','%6',2);").arg(deviceCode).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(digital[digitalNo]).arg(digitalValue).arg(mDesc).arg((QDateTime::fromMSecsSinceEpoch(timeStamp)).toString("yyyy-MM-dd HH:mm:ss")));

+ 170 - 0
ytWG/ytWGElectric/electdata158.cpp

@@ -0,0 +1,170 @@
+#include "electdata158.h"
+
+#include "wgelectric.h"
+
+static QString analoginfo158[21] = {
+    "directCurrent",
+    "ambientTemperature",
+    "ambientHumidity",
+    "onDevice1",
+    "offDevice1",
+    "onDevice2",
+    "offDevice2",
+    "onDevice3",
+    "offDevice3",
+    "analogReserved1",
+    "analogReserved2",
+    "totalAlarm",
+    "nbSignal",
+    "wifiSignal",
+    "storageTime",
+    "cpuTemperature",
+    "powerSupply",
+    "batteryVoltage",
+    "exceptionCode1",
+    "exceptionCode2",
+    "resetTimes"
+};
+
+
+Electdata158::Electdata158(QObject *parent) : QThread(parent)
+{
+    keep = false;
+    devMsgList.clear();
+}
+
+void Electdata158::run()
+{
+    keep = true;
+    while (keep) {
+        if(devMsgList.length()>0){
+            DevData158 dev = devMsgList.first();
+            this->arraydataToJson(dev.topic,dev.message);
+            devMsgList.removeFirst();
+        }
+        usleep(10000);
+    }
+
+}
+
+void Electdata158::stop()
+{
+    keep = false;
+}
+
+void Electdata158::devMessage(DevData158 dev)
+{
+    devMsgList.append(dev);
+}
+
+void Electdata158::arraydataToJson(QString topic,QByteArray data)
+{
+    QByteArray devBData;
+    QJsonDocument devDoc;
+    QJsonObject devData;
+    QJsonObject devParaData;
+    int startpos=0;
+    QString commData = "";
+    QString column,valueData,setValue;
+
+    QString deviceId = (topic.split("/")).at(5);
+    printf("158 deviceid '%s' \n",deviceId.toUtf8().data());
+
+    for(int i=0;i<data.length();i++){
+        commData.append(QString("%1").arg(data.at(i)&0xff,2,16,QChar('0')));
+    }
+
+    QByteArray Dat = data.mid(2,data.length()-4);
+    quint16 crc = check_sum(Dat,static_cast<quint16>(Dat.length()));
+
+    if(((data.at(data.length()-1)&0xff) == ((crc>>8)&0xff))&&((data.at(data.length()-2)&0xff) == (crc&0xff))){
+        printf("enter into crc\n");
+
+        QString startTime = QString::number((QDateTime::currentDateTime()).toMSecsSinceEpoch(),10);
+        devData.insert("id",startTime);
+        devData.insert("version","1.0");
+
+        for(int j=0;j<102400;j++){
+            if(wgdev->devs[j].Enabled == 0x01){
+                if(deviceId.compare(wgdev->devs[j].deviceCode)==0){
+                    wgdev->devs[j].LastCommtime = QDateTime::currentDateTime().toTime_t();
+                    break;
+                }
+            }
+        }
+
+        if(((data.at(4)&0xff)==0x03)&&((data.at(5)&0xff)==0x10)){
+            devData.insert("method","thing.event.analog.post");
+            int count = static_cast<quint16>(((data.at(7)&0x00ff)<<8)|(data.at(6)&0x00ff));
+            int start = static_cast<quint16>(((data.at(9)&0x00ff)<<8)|(data.at(8)&0x00ff));
+            qint64 timestamp = static_cast<qint64>(((static_cast<long int>(data.at(15)&0x00000000000000ff))<<40)|((static_cast<long int>(data.at(14)&0x00000000000000ff))<<32)|((static_cast<long int>(data.at(13)&0x00000000000000ff))<<24)|((static_cast<long int>(data.at(12)&0x00000000000000ff))<<16)|((static_cast<long int>(data.at(11)&0x00000000000000ff))<<8)|(static_cast<long int>(data.at(10)&0x00000000000000ff)));
+
+            startpos = 16;
+            for(int i=0;i<count;i++){
+                QString str = "";
+                str.append(QString("%1%2%3%4").arg(data.at(startpos+3)&0xff,2,16,QChar('0')).arg(data.at(startpos+2)&0xff,2,16,QChar('0')).arg(data.at(startpos+1)&0xff,2,16,QChar('0')).arg(data.at(startpos)&0xff,2,16,QChar('0')));
+                uint hex = str.toUInt(0,16);
+                float value = *(float*)&hex;
+
+                if((i==1)||(i==15)){
+                    devParaData.insert(analoginfo158[start+i],QJsonValue(value*0.1));
+                    column.append(analoginfo158[start+i]).append(",");
+                    valueData.append(QString("%1").arg(value*0.1)).append(",");
+                    setValue.append(analoginfo158[start+i]).append("=").append(QString("%1").arg(value*0.1)).append(",");
+                }else if((i==16)||(i==17)){
+                    devParaData.insert(analoginfo158[start+i],QJsonValue(value*0.01));
+                    column.append(analoginfo158[start+i]).append(",");
+                    valueData.append(QString("%1").arg(value*0.01)).append(",");
+                    setValue.append(analoginfo158[start+i]).append("=").append(QString("%1").arg(value*0.01)).append(",");
+                }else{
+                    devParaData.insert(analoginfo158[start+i],QJsonValue(value));
+                    column.append(analoginfo158[start+i]).append(",");
+                    valueData.append(QString("%1").arg(value)).append(",");
+                    setValue.append(analoginfo158[start+i]).append("=").append(QString("%1").arg(value)).append(",");
+                }
+
+                startpos += 4;
+            }
+            devParaData.insert("freezingTime",QString::number(timestamp,10));
+            QDateTime t = QDateTime::fromMSecsSinceEpoch(timestamp);
+
+            QString sql = "";
+            sql.append(QString("insert into ht_analog_158_data(id,deviceName,%1freezingTime,dataTime) values (NULL,'%2',%3'%4','%5');").arg(column).arg(deviceId).arg(valueData).arg(t.toString("yyyy-MM-dd")).arg(t.toString("yyyy-MM-dd HH:mm:ss")));
+            appendSql(sql);
+            sql.clear();
+            column.clear();
+            valueData.clear();
+
+            sql.append(QString("update rt_analog_158_data set %1freezingTime='%2',dataTime='%3' where deviceName = '%4';").arg(setValue).arg(t.toString("yyyy-MM-dd")).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceId));
+            appendSql(sql);
+            sql.clear();
+            setValue.clear();
+
+
+        }
+        devData.insert("params",devParaData);
+        devDoc.setObject(devData);
+        devBData=devDoc.toJson(QJsonDocument::Compact);
+    }
+    emit sendLog(topic,commData,devBData);
+}
+
+quint16 Electdata158::check_sum(QByteArray buff,quint16 len)
+{
+    quint16 crc = 0x0000;
+    for(int i=0;i<len;i++){
+        crc += static_cast<quint16>(buff.at(i)&0x00ff);
+    }
+    return crc;
+}
+
+
+
+
+
+
+
+
+
+
+

+ 43 - 0
ytWG/ytWGElectric/electdata158.h

@@ -0,0 +1,43 @@
+#ifndef ELECTDATA158_H
+#define ELECTDATA158_H
+
+#include <QThread>
+#include <QDateTime>
+#include <QJsonDocument>
+#include <QJsonArray>
+#include <QJsonObject>
+
+class DevData158{
+public:
+    explicit DevData158(QString t = "",QByteArray msg = ""){
+        topic = t;
+        message = msg;
+    }
+    QString topic;
+    QByteArray message;
+};
+
+class Electdata158 : public QThread
+{
+    Q_OBJECT
+public:
+    explicit Electdata158(QObject *parent = nullptr);
+    void run();
+    void stop();
+    void devMessage(DevData158 dev);
+    void arraydataToJson(QString topic,QByteArray data);
+    quint16 check_sum(QByteArray buff,quint16 len);
+
+    QList<DevData158> devMsgList;
+
+signals:
+    void sendLog(QString topic,QString devData,QByteArray devBData);
+    void appendSql(QString sql);
+
+public slots:
+
+private:
+    bool keep;
+};
+
+#endif // ELECTDATA158_H

+ 7 - 28
ytWG/ytWGElectric/electdata171.cpp

@@ -4,26 +4,18 @@
 
 extern WGDevList *wgdev;
 
-static QString digital171[16] = {
+static QString digital171[8] = {
     "commState",
     "busLive",
     "highVoltageAlarm",
     "lowVoltageAlarm",
     "busLackPhase",
-    "analog1Alarm",
-    "analog2Alarm",
-    "analog3Alarm",
-    "analog4Alarm",
-    "analog5Alarm",
     "digitalReserved1",
     "digitalReserved2",
-    "digitalReserved3",
-    "digitalReserved4",
-    "digitalReserved5",
-    "digitalReserved6"
+    "digitalReserved3"
 };
 
-static QString analogInfoTable171[20] = {
+static QString analogInfoTable171[15] = {
     "voltageA",
     "voltageB",
     "voltageC",
@@ -31,11 +23,6 @@ static QString analogInfoTable171[20] = {
     "voltageBC",
     "voltageCA",
     "frequency",
-    "analog1",
-    "analog2",
-    "analog3",
-    "analog4",
-    "analog5",
     "voltageATHD",
     "voltageBTHD",
     "voltageCTHD",
@@ -46,23 +33,15 @@ static QString analogInfoTable171[20] = {
     "analogReserved"
 };
 
-static QString digitalDesc171[16] = {
+static QString digitalDesc171[8] = {
     "通信状态",
     "母线带电",
     "电压越上限",
     "电压越下限",
     "缺相",
-    "直流量告警1",
-    "直流量告警2",
-    "直流量告警3",
-    "直流量告警4",
-    "直流量告警5",
     "预留1",
     "预留2",
-    "预留3",
-    "预留4",
-    "预留5",
-    "预留6"
+    "预留3"
 };
 
 
@@ -232,14 +211,14 @@ void Electdata171::arraydataToJson(QString topic,QByteArray data)
                 qint64 timestamp = static_cast<qint64>((static_cast<long int>(data.at(14)&0x00000000000000ff)<<40)|(static_cast<long int>(data.at(13)&0x00000000000000ff)<<32)|(static_cast<long int>(data.at(12)&0x00000000000000ff)<<24)|(static_cast<long int>(data.at(11)&0x00000000000000ff)<<16)|(static_cast<long int>(data.at(10)&0x00000000000000ff)<<8)|static_cast<long int>(data.at(9)&0x00000000000000ff));
 
                 if(digitalValue == 1){
-                    mDesc.append(digitalDesc171[digitalNo]).append("动作");
+                    mDesc.append(digitalDesc171[digitalNo]);
                     paradata.insert("measDesc",mDesc);
                     sql.append(QString("insert into alarm_power(id,device_code,alarm_name,sending_time,alarm_type,meas_name,digital_value,meas_desc,soe_time,handling_status) values (NULL,'%1','时间顺序记录','%2','alert','%3',%4,'%5','%6',0);").arg(deviceCode).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(digital171[digitalNo]).arg(digitalValue).arg(mDesc).arg((QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss")));
                     emit appendAlarm(deviceCode,sql,(QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss"),mDesc,QString("%1").arg(digitalValue),digital171[digitalNo]);
                     sql.clear();
 
                 }else{
-                    mDesc.append(digitalDesc171[digitalNo]).append("复归");
+                    mDesc.append(digitalDesc171[digitalNo]);
                     paradata.insert("measDesc",mDesc);
 
                     sql.append(QString("insert into alarm_power(id,device_code,alarm_name,sending_time,alarm_type,meas_name,digital_value,meas_desc,soe_time,handling_status) values (NULL,'%1','时间顺序记录','%2','alert','%3',%4,'%5','%6',2);").arg(deviceCode).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(digital171[digitalNo]).arg(digitalValue).arg(mDesc).arg((QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss")));

+ 13 - 52
ytWG/ytWGElectric/electdata173.cpp

@@ -4,13 +4,13 @@
 
 extern WGDevList *wgdev;
 
-static QString digital173[18] = {
+static QString digital173[16] = {
     "commState",
     "LoadLive",
     "Trip",
     "OverI",
-    "PhaseLoss",
-    "UnderV",
+    "ResDI1",
+    "ResDI2",
     "OverDemandP",
     "OverIr",
     "OverT1",
@@ -20,15 +20,10 @@ static QString digital173[18] = {
     "DI2",
     "DO1",
     "DO2",
-    "ResDI1",
-    "ResDI2",
     "ResDI3"
 };
 
-static QString analogInfoTable173[55] = {
-  "Ua",
-  "Ub",
-  "Uc",
+static QString analogInfoTable173[20] = {
   "Ia",
   "Ib",
   "Ic",
@@ -42,65 +37,31 @@ static QString analogInfoTable173[55] = {
   "Epn",
   "Eqp",
   "Eqn",
-  "analogReserved1",
-  "unbalanceVoltage",
-  "THDUa",
-  "THDUb",
-  "THDUc",
+  "Ul",
   "IHa",
   "IHb",
   "IHc",
-  "Udt",
-  "Upt",
-  "Ust",
-  "Uab",
-  "Ubc",
-  "Uca",
-  "F",
-  "Pa",
-  "Pb",
-  "Pc",
-  "Qa",
-  "Qb",
-  "Qc",
-  "COSa",
-  "COSb",
-  "COSc",
   "T1",
   "T2",
-  "T3",
-  "Ul",
-  "Epp1",
-  "Epn1",
-  "Epp2",
-  "Epn2",
-  "Epp3",
-  "Epn3",
-  "Epp4",
-  "Epn4",
-  "analogReserved2",
-  "analogReserved3",
-  "analogReserved4"
+  "T3"
 };
 
-static QString digitalDesc173[18] = {
+static QString digitalDesc173[16] = {
     "通信状态",
     "回路带电",
     "回路跳闸",
     "电流越限",
-    "电压缺相",
-    "母线欠压",
+    "备用遥信1",
+    "备用遥信2",
     "需量超限",
     "剩余电流超限",
     "T1超温",
     "T2超温",
     "T3超温",
-    "通用遥信1",
-    "通用遥信2",
+    "外接遥信1状态",
+    "外接遥信2状态",
     "继电器1状态",
     "继电器2状态",
-    "备用遥信1",
-    "备用遥信2",
     "备用遥信3"
 };
 
@@ -272,14 +233,14 @@ void Electdata173::arraydataToJason(QString topic,QByteArray data)
                 qint64 timestamp = static_cast<qint64>((static_cast<long int>(data.at(14)&0x00000000000000ff)<<40)|(static_cast<long int>(data.at(13)&0x00000000000000ff)<<32)|(static_cast<long int>(data.at(12)&0x00000000000000ff)<<24)|(static_cast<long int>(data.at(11)&0x00000000000000ff)<<16)|(static_cast<long int>(data.at(10)&0x00000000000000ff)<<8)|static_cast<long int>(data.at(9)&0x00000000000000ff));
 
                 if(digitalValue == 1){
-                    mDesc.append(digitalDesc173[digitalNo]).append("动作");
+                    mDesc.append(digitalDesc173[digitalNo]);
                     paradata.insert("measDesc",mDesc);
                     sql.append(QString("insert into alarm_power(id,device_code,alarm_name,sending_time,alarm_type,meas_name,digital_value,meas_desc,soe_time,handling_status) values (NULL,'%1','时间顺序记录','%2','alert','%3',%4,'%5','%6',0);").arg(deviceCode).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(digital173[digitalNo]).arg(digitalValue).arg(mDesc).arg((QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss")));
                     emit appendAlarm(deviceCode,sql,(QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss"),mDesc,QString("%1").arg(digitalValue),digital173[digitalNo]);
                     sql.clear();
 
                 }else{
-                    mDesc.append(digitalDesc173[digitalNo]).append("复归");
+                    mDesc.append(digitalDesc173[digitalNo]);
                     paradata.insert("measDesc",mDesc);
 
                     sql.append(QString("insert into alarm_power(id,device_code,alarm_name,sending_time,alarm_type,meas_name,digital_value,meas_desc,soe_time,handling_status) values (NULL,'%1','时间顺序记录','%2','alert','%3',%4,'%5','%6',2);").arg(deviceCode).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(digital173[digitalNo]).arg(digitalValue).arg(mDesc).arg((QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss")));

+ 375 - 0
ytWG/ytWGElectric/electdata176.cpp

@@ -0,0 +1,375 @@
+#include "electdata176.h"
+
+#include "wgelectric.h"
+
+static QString analog176[59] = {
+    "voltageL1",
+    "electricCurrentL1",
+    "PL1",
+    "fdmtReactiveL1",
+    "COSL1",
+    "EppL1",
+    "EqpL1",
+    "EpnL1",
+    "EqnL1",
+    "IhL1",
+    "ArcNL1",
+    "TL1",
+    "analogReserved1L1",
+    "analogReserved2L1",
+    "voltageL2",
+    "electricCurrentL2",
+    "PL2",
+    "fdmtReactiveL2",
+    "COSL2",
+    "EppL2",
+    "EqpL2",
+    "EpnL2",
+    "EqnL2",
+    "IhL2",
+    "ArcNL2",
+    "TL2",
+    "analogReserved1L2",
+    "analogReserved2L2",
+    "voltageL3",
+    "electricCurrentL3",
+    "PL3",
+    "fdmtReactiveL3",
+    "COSL3",
+    "EppL3",
+    "EqpL3",
+    "EpnL3",
+    "EqnL3",
+    "IhL3",
+    "ArcNL3",
+    "TL3",
+    "analogReserved1L3",
+    "analogReserved2L3",
+    "voltageL4",
+    "electricCurrentL4",
+    "PL4",
+    "fdmtReactiveL4",
+    "COSL4",
+    "EppL4",
+    "EqpL4",
+    "EpnL4",
+    "EqnL4",
+    "IhL4",
+    "ArcNL4",
+    "TL4",
+    "analogReserved1L4",
+    "analogReserved2L4",
+    "F",
+    "analogReserved3",
+    "analogReserved4"
+};
+
+static QString digital176[42] = {
+    "commState",
+    "LoadLiveL1",
+    "TripL1",
+    "OverIL1",
+    "OverVL1",
+    "UnderVL1",
+    "OverTL1",
+    "ArcL1",
+    "ResDI1L1",
+    "ResDI2L1",
+    "LoadLiveL2",
+    "TripL2",
+    "OverIL2",
+    "OverVL2",
+    "UnderVL2",
+    "OverTL2",
+    "ArcL2",
+    "ResDI1L2",
+    "ResDI2L2",
+    "LoadLiveL3",
+    "TripL3",
+    "OverIL3",
+    "OverVL3",
+    "UnderVL3",
+    "OverTL3",
+    "ArcL3",
+    "ResDI1L3",
+    "ResDI2L3",
+    "LoadLiveL4",
+    "TripL4",
+    "OverIL4",
+    "OverVL4",
+    "UnderVL4",
+    "OverTL4",
+    "ArcL4",
+    "ResDI1L4",
+    "ResDI2L4",
+    "UL",
+    "DI2",
+    "DI1",
+    "DO1",
+    "DO2"
+};
+
+
+static QString digitalDesc176[42] = {
+    "通信状态",
+    "L1带电",
+    "L1故障跳闸",
+    "L1电流越限",
+    "L1过压",
+    "L1低压",
+    "L1超温",
+    "L1燃弧",
+    "L1备用遥信1",
+    "L1备用遥信2",
+    "L2带电",
+    "L2故障跳闸",
+    "L2电流越限",
+    "L2过压",
+    "L2低压",
+    "L2超温",
+    "L2燃弧",
+    "L2备用遥信1",
+    "L2备用遥信2",
+    "L3带电",
+    "L3故障跳闸",
+    "L3电流越限",
+    "L3过压",
+    "L3低压",
+    "L3超温",
+    "L3燃弧",
+    "L3备用遥信1",
+    "L3备用遥信2",
+    "L4带电",
+    "L4故障跳闸",
+    "L4电流越限",
+    "L4过压",
+    "L4低压",
+    "L4超温",
+    "L4燃弧",
+    "L4备用遥信1",
+    "L4备用遥信2",
+    "出口电压",
+    "通用遥信2",
+    "通用遥信1",
+    "开出1",
+    "开出2"
+};
+
+Electdata176::Electdata176(QObject *parent) : QThread(parent)
+{
+    keep = false;
+    devMsgList.clear();
+}
+
+void Electdata176::stop()
+{
+    keep = false;
+}
+
+void Electdata176::devMessage(DevData176 dev)
+{
+    devMsgList.append(dev);
+}
+
+void Electdata176::run()
+{
+    keep = true;
+    while (keep) {
+        if(devMsgList.length() > 0){
+            DevData176 devData = devMsgList.first();
+            this->arraydataToJson(devData.topic,devData.message);
+
+            devMsgList.removeFirst();
+        }
+
+        usleep(10000);
+    }
+}
+
+void Electdata176::arraydataToJson(QString topic,QByteArray data)
+{
+    QByteArray devBData;
+    QJsonDocument devDoc;
+    QJsonObject devData;
+    QJsonObject paraData;
+    QJsonObject objData;
+    QString sql;
+    int startpos = 0,Idx = 0;
+
+    QString deviceCode = (topic.split("/")).at(5);
+    printf("deviceCode = %s\n",deviceCode.toUtf8().data());
+
+    QString commData = "";
+    for(int i=0;i<data.length();i++){
+        commData.append(QString("%1").arg(data.at(i)&0xff,2,16,QChar('0')));
+    }
+
+    QByteArray Dat = data.mid(2,data.length()-4);
+    quint16 crc = check_sum(Dat,static_cast<quint16>(Dat.length()));
+
+    QString column="",valueData="",setValue="";
+    if((((crc>>8)&0xff)==(data.at(data.length()-1)&0xff))||((crc&0xff) == (data.at(data.length()-2)&0xff))){
+        printf("176 crc enter\n");
+        qint64 starttime = (QDateTime::currentDateTime()).toMSecsSinceEpoch();
+        devData.insert("id",QString::number(starttime,10));
+        devData.insert("version","1.0");
+
+        if((data.at(4)&0xff) == 0x03){
+            switch (data.at(5)&0xff) {
+            case 0x01:{
+                devData.insert("method","thing.event.switch.post");
+
+                for(int i=0;i<102400;i++){
+                    if(wgdev->devs[i].Enabled == 0x01){
+                        if(deviceCode.compare(wgdev->devs[i].deviceCode)==0){
+                            Idx = i;
+                            wgdev->devs[i].LastCommtime = QDateTime::currentDateTime().toTime_t();
+                            break;
+                        }
+                    }
+                }
+                quint16 start = static_cast<quint16>(((data.at(11)&0x00ff)<<8)|(data.at(10)&0x00ff));
+                quint16 num = static_cast<quint16>(((data.at(13)&0x00ff)<<8)|(data.at(12)&0x00ff));
+
+                startpos = 14;
+                for(int i=0;i<num;i++){
+                    paraData.insert(digital176[start+i],static_cast<quint8>(data.at(startpos)&0xff));
+                    column.append(digital176[start+i]).append(",");
+                    valueData.append(QString("%1").arg(static_cast<quint8>(data.at(startpos)&0xff))).append(",");
+                    setValue.append(digital176[start+i]).append("=").append(QString("%1").arg(static_cast<quint8>(data.at(startpos)&0xff))).append(",");
+                    wgdev->devs[Idx].alarm[start+i].digitalvalue = static_cast<quint8>(data.at(startpos)&0xff);
+                    startpos += 1;
+                }
+                sql.clear();
+                sql.append(QString("insert into ht_switch_176_data(id,deviceName,%1freezingTime,dataTime) values(null,'%2',%3'%4','%5');").arg(column).arg(deviceCode).arg(valueData).arg((QDateTime::currentDateTime()).toString("yyyy-MM-dd")).arg((QDateTime::currentDateTime()).toString("yyyy-MM-dd HH:mm:ss")));
+                emit appendSql(sql);
+                column.clear();
+                valueData.clear();
+
+                sql.clear();
+                sql.append(QString("update rt_switch_176_data set %1freezingTime='%2',dataTime='%3' where deviceName = '%4';").arg(setValue).arg((QDateTime::currentDateTime()).toString("yyyy-MM-dd")).arg((QDateTime::currentDateTime()).toString("yyyy-MM-dd HH:mm:ss")).arg(deviceCode));
+                emit appendSql(sql);
+                setValue.clear();
+            }
+                break;
+            case 0x10:{
+                devData.insert("method","thing.event.analog.post");
+                for(int i=0;i<102400;i++){
+                    if(wgdev->devs[i].Enabled == 0x01){
+                        if(deviceCode.compare(wgdev->devs[i].deviceCode)==0){
+                            wgdev->devs[i].LastCommtime = QDateTime::currentDateTime().toTime_t();
+                            break;
+                        }
+                    }
+                }
+
+                quint16 count = static_cast<quint16>(((data.at(7)&0x00ff)<<8)|(data.at(6)&0x00ff));
+                quint16 start = static_cast<quint16>(((data.at(9)&0x00ff)<<8)|(data.at(8)&0x00ff));
+
+                qint64 timestamp = static_cast<qint64>(((static_cast<long int>(data.at(15)&0x00000000000000ff))<<40)|((static_cast<long int>(data.at(14)&0x00000000000000ff))<<32)|((static_cast<long int>(data.at(13)&0x00000000000000ff))<<24)|((static_cast<long int>(data.at(12)&0x00000000000000ff))<<16)|((static_cast<long int>(data.at(11)&0x00000000000000ff))<<8)|static_cast<long int>((data.at(10)&0x00000000000000ff)));
+
+                startpos = 16;
+                for(int i=0;i<count;i++){
+                    QString str = QString("%1%2%3%4").arg(data.at(startpos+3)&0xff,2,16,QChar('0')).arg(data.at(startpos+2)&0xff,2,16,QChar('0')).arg(data.at(startpos+1)&0xff,2,16,QChar('0')).arg(data.at(startpos)&0xff,2,16,QChar('0'));
+                    int hex = str.toUInt(0,16);
+                    float value = *(float*)&hex;
+
+                    paraData.insert(analog176[start+i],QJsonValue(value));
+                    column.append(analog176[start+i]).append(",");
+                    valueData.append(QString("%1").arg(value)).append(",");
+                    setValue.append(analog176[start+i]).append("=").append(QString("%1").arg(value)).append(",");
+
+                    startpos += 4;
+                }
+                paraData.insert("freezingTime",QString::number(timestamp,10));
+
+                QDateTime t = QDateTime::fromMSecsSinceEpoch(timestamp);
+                sql.clear();
+                sql.append(QString("insert into ht_analog_176_data(id,deviceName,%1freezingTime,dataTime) values(null,'%2',%3'%4','%5');").arg(column).arg(deviceCode).arg(valueData).arg(t.toString("yyyy-MM-dd")).arg(t.toString("yyyy-MM-dd HH:mm:ss")));
+                appendSql(sql);
+                column.clear();
+                valueData.clear();
+
+                sql.clear();
+                sql.append(QString("update rt_analog_176_data set %1freezingTime = '%2',dataTime = '%3' where deviceName = '%4';").arg(setValue).arg(t.toString("yyyy-MM-dd")).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceCode));
+                appendSql(sql);
+                setValue.clear();
+            }
+                break;
+            case 0x11:{
+                devData.insert("method","thing.event.SOERecord.post");
+
+                qint16 digitalNo = static_cast<qint16>(((data.at(7)&0x00ff)<<8)|(data.at(6)&0x00ff));
+                paraData.insert("measName",digital176[digitalNo]);
+                qint8 digitalValue = static_cast<qint8>(data.at(8)&0xff);
+                paraData.insert("digitalValue",QJsonValue(digitalValue));
+
+                QString mDesc;
+                qint64 timestamp = static_cast<qint64>((static_cast<long int>(data.at(14)&0x00000000000000ff)<<40)|(static_cast<long int>(data.at(13)&0x00000000000000ff)<<32)|(static_cast<long int>(data.at(12)&0x00000000000000ff)<<24)|(static_cast<long int>(data.at(11)&0x00000000000000ff)<<16)|(static_cast<long int>(data.at(10)&0x00000000000000ff)<<8)|static_cast<long int>(data.at(9)&0x00000000000000ff));
+
+                if(digitalValue == 1){
+                    mDesc.append(digitalDesc176[digitalNo]);
+                    paraData.insert("measDesc",mDesc);
+                    sql.append(QString("insert into alarm_power(id,device_code,alarm_name,sending_time,alarm_type,meas_name,digital_value,meas_desc,soe_time,handling_status) values (NULL,'%1','时间顺序记录','%2','alert','%3',%4,'%5','%6',0);").arg(deviceCode).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(digital176[digitalNo]).arg(digitalValue).arg(mDesc).arg((QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss")));
+                    emit appendAlarm(deviceCode,sql,(QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss"),mDesc,QString("%1").arg(digitalValue),digital176[digitalNo]);
+                    sql.clear();
+
+                }else{
+                    mDesc.append(digitalDesc176[digitalNo]);
+                    paraData.insert("measDesc",mDesc);
+
+                    sql.append(QString("insert into alarm_power(id,device_code,alarm_name,sending_time,alarm_type,meas_name,digital_value,meas_desc,soe_time,handling_status) values (NULL,'%1','时间顺序记录','%2','alert','%3',%4,'%5','%6',2);").arg(deviceCode).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(digital176[digitalNo]).arg(digitalValue).arg(mDesc).arg((QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss")));
+                    emit appendAlarm(deviceCode,sql,(QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss"),mDesc,QString("%1").arg(digitalValue),digital176[digitalNo]);
+                    sql.clear();
+
+                    sql.append(QString("update alarm_power set handling_time = '%1',handling_status = 3 where device_code = '%2' and meas_name = '%3' and digital_value = 1 and handling_status = 0;")
+                               .arg((QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss")).arg(deviceCode).arg(digital176[digitalNo]));
+                    emit appendAlarm(deviceCode,sql,(QDateTime::fromMSecsSinceEpoch(timestamp)).toString("yyyy-MM-dd HH:mm:ss"),mDesc,QString("%1").arg(digitalValue),digital176[digitalNo]);
+                    sql.clear();
+                }
+                paraData.insert("soeTime",QString::number(timestamp));
+
+            }
+                break;
+            default:
+                break;
+
+            }
+            devData.insert("params",paraData);
+            devDoc.setObject(devData);
+            devBData = devDoc.toJson(QJsonDocument::Compact);
+        }
+    }
+    emit appendLog(topic,commData,devBData);
+}
+
+quint16 Electdata176::check_sum(QByteArray buff,quint16 len)
+{
+    quint16 crc = 0x0000;
+    for(int i=0;i<len;i++){
+        crc += static_cast<quint16>(buff.at(i)&0x00ff);
+    }
+    return crc;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 44 - 0
ytWG/ytWGElectric/electdata176.h

@@ -0,0 +1,44 @@
+#ifndef ELECTDATA176_H
+#define ELECTDATA176_H
+
+#include <QThread>
+#include <QDateTime>
+#include <QJsonDocument>
+#include <QJsonArray>
+#include <QJsonObject>
+
+class DevData176 {
+public:
+    explicit DevData176(QString t="",QByteArray msg=""){
+        topic=t;
+        message=msg;
+    }
+
+    QString topic;
+    QByteArray message;
+};
+
+class Electdata176 : public QThread
+{
+    Q_OBJECT
+public:
+    explicit Electdata176(QObject *parent = nullptr);
+    void run();
+    void stop();
+    void devMessage(DevData176 dev);
+    void arraydataToJson(QString topic,QByteArray data);
+    quint16 check_sum(QByteArray buff,quint16 len);
+
+signals:
+    void appendLog(QString topic,QString devData,QByteArray devBData);
+    void appendSql(QString sql);
+    void appendAlarm(QString deviceCode,QString sql,QString soetime,QString mDesc,QString digitalValue,QString measName);
+
+public slots:
+
+private:
+    bool keep;
+    QList<DevData176> devMsgList;
+};
+
+#endif // ELECTDATA176_H

+ 31 - 0
ytWG/ytWGElectric/qreplaytimeout.h

@@ -0,0 +1,31 @@
+#ifndef QREPLAYTIMEOUT_H
+#define QREPLAYTIMEOUT_H
+
+#include <QObject>
+#include <QTimer>
+#include <QNetworkReply>
+#include <stdio.h>
+
+class QReplayTimeout : public QObject {
+    Q_OBJECT
+public:
+    QReplayTimeout(QNetworkReply *reply, const int timeout) :QObject(reply) {
+        Q_ASSERT(reply);
+        if( reply && reply->isRunning()){
+            QTimer::singleShot(timeout,this,SLOT(onTimeout()));
+        }
+    }
+signals:
+    void net_timeout();
+private slots:
+    void onTimeout(){
+        QNetworkReply *reply = static_cast<QNetworkReply *>(parent());
+        if(reply->isRunning()){
+            reply->abort();
+            reply->deleteLater();
+            emit net_timeout();
+        }
+    }
+};
+
+#endif // QREPLAYTIMEOUT_H

+ 44 - 0
ytWG/ytWGElectric/wgcfgshm.h

@@ -0,0 +1,44 @@
+#ifndef WGCFGSHM_H
+#define WGCFGSHM_H
+
+//MQTT
+//#define MQTT_IP "124.70.160.158"
+#define MQTT_IP "123.60.11.86"
+#define MQTT_PORT 1883
+#define MQTT_USERNAME "admin"
+#define MQTT_PASSWD  "a10vE0s73g5"
+
+
+
+//DB
+//#define HostName "124.71.145.219"
+//#define HostPort 3306
+//#define UserName "root"
+//#define PassWord "Wjzn2021Db"
+//#define DatabaseName "smart_electricity"
+
+//#define HostName "124.70.160.158"
+//#define HostPort 3306
+//#define UserName "root"
+//#define PassWord "Y48hD&Eg"
+//#define DatabaseName "smart_electricity"
+
+#define HostName "192.168.0.206"
+#define HostPort 3306
+#define UserName "electric"
+#define PassWord "Y48hD&Eg"
+#define DatabaseName "smart_electricity"
+
+//#define HostName "101.133.214.75"
+//#define HostPort 3306
+//#define UserName "usky"
+//#define PassWord "Yt#75Usky"
+//#define DatabaseName "usky-electricity"
+
+
+
+//WX
+#define URL "https://wx.ewoogi.com/USKYOF/USKYOF.php/Home/Powerwarn/message_dl"
+//#define URL "https://iot.usky.cn/ytapi/admin/Manage/ceShiUrl"
+
+#endif // WGCFGSHM_H

+ 191 - 37
ytWG/ytWGElectric/wgelectcore.cpp

@@ -1,6 +1,7 @@
 #include "wgelectcore.h"
 
 #include "wgelectricshm.h"
+#include "wgcfgshm.h"
 
 extern WGDevList *wgdev;
 
@@ -38,6 +39,21 @@ wgelectcore::wgelectcore(QObject *parent) : QObject(parent)
     connect(electdata173,&Electdata173::appendSql,this,&wgelectcore::appendSql);
     connect(electdata173,&Electdata173::appendAlarm,this,&wgelectcore::appendAlarm);
 
+    elcom158  = new ELCommThread158(this);
+    connect(elcom158,&ELCommThread158::sendDevData158,this,&wgelectcore::ReceiveDevData158);
+
+    electdata158 = new Electdata158(this);
+    connect(electdata158,&Electdata158::sendLog,this,&wgelectcore::ReceiveLog);
+    connect(electdata158,&Electdata158::appendSql,this,&wgelectcore::appendSql);
+
+    elcomthread176 = new ELCommThread176(this);
+    connect(elcomthread176,&ELCommThread176::sendDevData176,this,&wgelectcore::ReceiveDevData176);
+
+    electdata176 = new Electdata176(this);
+    connect(electdata176,&Electdata176::appendLog,this,&wgelectcore::ReceiveLog);
+    connect(electdata176,&Electdata176::appendSql,this,&wgelectcore::appendSql);
+    connect(electdata176,&Electdata176::appendAlarm,this,&wgelectcore::appendAlarm);
+
     elcompub = new ELCommThreadPub(this);
     connect(elcompub,&ELCommThreadPub::SendPubData,this,&wgelectcore::ReceiveLog);
 
@@ -61,12 +77,21 @@ wgelectcore::wgelectcore(QObject *parent) : QObject(parent)
     netAccessManager3 = new QNetworkAccessManager(this);
     connect(netAccessManager3,SIGNAL(finished(QNetworkReply*)),this,SLOT(finishedSlot3(QNetworkReply*)));
 
+    netAccessManager4 = new QNetworkAccessManager(this);
+    connect(netAccessManager4,SIGNAL(finished(QNetworkReply*)),this,SLOT(finishedSlot4(QNetworkReply*)));
+
     timer = new QTimer(this);
     connect(timer,SIGNAL(timeout()),this,SLOT(time_out()));
 
     WXList.clear();
     WXList171.clear();
     WXList173.clear();
+    WXList176.clear();
+
+    isSending = false;
+    isSending2 = false;
+    isSending3 = false;
+    isSending4 = false;
     count =0;
     hour = 255;
 
@@ -79,11 +104,14 @@ wgelectcore::~wgelectcore()
     electdata->stop();
     electdata171->stop();
     electdata173->stop();
+    electdata158->stop();
+    electdata176->stop();
 
     netAccessManager->deleteLater();
     netAccessManager1->deleteLater();
     netAccessManager2->deleteLater();
     netAccessManager3->deleteLater();
+    netAccessManager4->deleteLater();
 }
 
 void wgelectcore::start()
@@ -91,10 +119,12 @@ void wgelectcore::start()
     electdata->start();
     electdata171->start();
     electdata173->start();
+    electdata158->start();
+    electdata176->start();
     elcompub->start();
     elcomsub->start();
     ws->start();
-    timer->start(60000);
+    timer->start(1000);
 
 }
 
@@ -123,6 +153,19 @@ void wgelectcore::time_out()
         req->setHeader(QNetworkRequest::ContentLengthHeader,post_data.length());
         QNetworkReply* reply = netAccessManager1->post(*req,post_data);
     }
+
+    if((!isSending) && (WXList.length()>0)){
+        sendData();
+    }
+    if((!isSending3) && (WXList171.length()>0)){
+        sendData171();
+    }
+    if((!isSending2) && (WXList173.length()>0)){
+        sendData173();
+    }
+    if((!isSending4) && (WXList176.length()>0)){
+        sendData176();
+    }
 }
 
 
@@ -145,6 +188,16 @@ void wgelectcore::ReceiveDevData173(QString topic,QByteArray devdata)
     electdata173->DevMessage(DevData173(topic,devdata));
 }
 
+void wgelectcore::ReceiveDevData158(QString topic,QByteArray devdata)
+{
+    electdata158->devMessage(DevData158(topic,devdata));
+}
+
+void wgelectcore::ReceiveDevData176(QString topic,QByteArray devdata)
+{
+    electdata176->devMessage(DevData176(topic,devdata));
+}
+
 void wgelectcore::ReceiveLog(QString topic,QString devdata,QByteArray devBData)
 {
     logThread->appendData(QString("time: %1, topic: %2, devicedata: %3, \n QJasonArray: %4\r\n").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(topic).arg(devdata).arg(QString(devBData)));
@@ -193,10 +246,6 @@ void wgelectcore::AlarmReport(QString DeviceCode,QString lastid,QString SETime,Q
                                     if((soeTime-busTime0)>60){
                                         WXRep wxrep = WXRep(DeviceCode,lastid,SETime,MeasDesc,DigitalValue,MeasName);
                                         WXList.append(wxrep);
-                                        //推送微信端
-                                        sendData();
-                                        printf("推送微信端 soeTime = %d, busTime0 = %d ,digital[digitalNo] = %s,DigitalValue.toUtf8().data()= %s,DigitalValue.toUInt() = %d \n",soeTime,busTime0,MeasName.toUtf8().data(),DigitalValue.toUtf8().data(),DigitalValue.toUInt());
-
 
                                         wgdev->devs[i].alarm[j].digitalvalue = DigitalValue.toUInt();
                                         wgdev->devs[i].alarm[j].soetime0 = soeTime;
@@ -208,10 +257,6 @@ void wgelectcore::AlarmReport(QString DeviceCode,QString lastid,QString SETime,Q
                                     if((soeTime-busTime1)>60){
                                         WXRep wxrep = WXRep(DeviceCode,lastid,SETime,MeasDesc,DigitalValue,MeasName);
                                         WXList.append(wxrep);
-                                        //推送微信端
-                                        sendData();
-                                        printf("推送微信端 soeTime = %d, busTime1 = %d ,digital[digitalNo] = %s,DigitalValue.toUtf8().data()= %s,DigitalValue.toUInt() = %d \n",soeTime,busTime1,MeasName.toUtf8().data(),DigitalValue.toUtf8().data(),DigitalValue.toUInt());
-
 
                                         wgdev->devs[i].alarm[j].digitalvalue = DigitalValue.toUInt();
                                         wgdev->devs[i].alarm[j].soetime1 = soeTime;
@@ -223,16 +268,12 @@ void wgelectcore::AlarmReport(QString DeviceCode,QString lastid,QString SETime,Q
                         }
                     }
                 }else if(wgdev->devs[i].devicetype == 3){
-                    for(int j=0;j<16;j++){
+                    for(int j=0;j<8;j++){
                         if(MeasName.compare(wgdev->devs[i].alarm[j].measname)==0){
                             if(DigitalValue.compare("0")==0){
                                 if((soeTime-wgdev->devs[i].alarm[j].soetime0)>60){
-                                    WXRep17 wxrep = WXRep17(DeviceCode,lastid,SETime,MeasDesc,DigitalValue);
+                                    WXRep17 wxrep = WXRep17(DeviceCode,lastid,SETime,MeasDesc,DigitalValue,MeasName);
                                     WXList171.append(wxrep);
-                                    //推送微信端
-                                    sendData171();
-                                    printf("推送微信端 soeTime = %d, digital[digitalNo] = %s,DigitalValue.toUtf8().data()= %s,DigitalValue.toUInt() = %d \n",soeTime,MeasName.toUtf8().data(),DigitalValue.toUtf8().data(),DigitalValue.toUInt());
-
 
                                     wgdev->devs[i].alarm[j].digitalvalue = DigitalValue.toUInt();
                                     wgdev->devs[i].alarm[j].soetime0 = soeTime;
@@ -240,12 +281,8 @@ void wgelectcore::AlarmReport(QString DeviceCode,QString lastid,QString SETime,Q
 
                             }else{
                                 if((soeTime-wgdev->devs[i].alarm[j].soetime1)>60){
-                                    WXRep17 wxrep = WXRep17(DeviceCode,lastid,SETime,MeasDesc,DigitalValue);
+                                    WXRep17 wxrep = WXRep17(DeviceCode,lastid,SETime,MeasDesc,DigitalValue,MeasName);
                                     WXList171.append(wxrep);
-                                    //推送微信端
-                                    sendData171();
-                                    printf("推送微信端 soeTime = %d, digital[digitalNo] = %s,DigitalValue.toUtf8().data()= %s,DigitalValue.toUInt() = %d \n",soeTime,MeasName.toUtf8().data(),DigitalValue.toUtf8().data(),DigitalValue.toUInt());
-
 
                                     wgdev->devs[i].alarm[j].digitalvalue = DigitalValue.toUInt();
                                     wgdev->devs[i].alarm[j].soetime1 = soeTime;
@@ -256,16 +293,12 @@ void wgelectcore::AlarmReport(QString DeviceCode,QString lastid,QString SETime,Q
                         }
                     }
                 }else if(wgdev->devs[i].devicetype == 4){
-                    for(int j=0;j<18;j++){
+                    for(int j=0;j<16;j++){
                         if(MeasName.compare(wgdev->devs[i].alarm[j].measname)==0){
                             if(DigitalValue.compare("0")==0){
                                 if((soeTime-wgdev->devs[i].alarm[j].soetime0)>60){
-                                    WXRep17 wxrep = WXRep17(DeviceCode,lastid,SETime,MeasDesc,DigitalValue);
+                                    WXRep17 wxrep = WXRep17(DeviceCode,lastid,SETime,MeasDesc,DigitalValue,MeasName);
                                     WXList173.append(wxrep);
-                                    //推送微信端
-                                    sendData173();
-                                    printf("推送微信端 soeTime = %d, digital[digitalNo] = %s,DigitalValue.toUtf8().data()= %s,DigitalValue.toUInt() = %d \n",soeTime,MeasName.toUtf8().data(),DigitalValue.toUtf8().data(),DigitalValue.toUInt());
-
 
                                     wgdev->devs[i].alarm[j].digitalvalue = DigitalValue.toUInt();
                                     wgdev->devs[i].alarm[j].soetime0 = soeTime;
@@ -273,11 +306,33 @@ void wgelectcore::AlarmReport(QString DeviceCode,QString lastid,QString SETime,Q
 
                             }else{
                                 if((soeTime-wgdev->devs[i].alarm[j].soetime1)>60){
-                                    WXRep17 wxrep = WXRep17(DeviceCode,lastid,SETime,MeasDesc,DigitalValue);
+                                    WXRep17 wxrep = WXRep17(DeviceCode,lastid,SETime,MeasDesc,DigitalValue,MeasName);
                                     WXList173.append(wxrep);
-                                    //推送微信端
-                                    sendData173();
-                                    printf("推送微信端 soeTime = %d, digital[digitalNo] = %s,DigitalValue.toUtf8().data()= %s,DigitalValue.toUInt() = %d \n",soeTime,MeasName.toUtf8().data(),DigitalValue.toUtf8().data(),DigitalValue.toUInt());
+
+                                    wgdev->devs[i].alarm[j].digitalvalue = DigitalValue.toUInt();
+                                    wgdev->devs[i].alarm[j].soetime1 = soeTime;
+                                }
+
+                            }
+
+                        }
+                    }
+                }else if(wgdev->devs[i].devicetype == 7){
+                    for(int j=0;j<42;j++){
+                        if(MeasName.compare(wgdev->devs[i].alarm[j].measname)==0){
+                            if(DigitalValue.compare("0")==0){
+                                if((soeTime-wgdev->devs[i].alarm[j].soetime0)>60){
+                                    WXRep17 wxrep = WXRep17(DeviceCode,lastid,SETime,MeasDesc,DigitalValue,MeasName);
+                                    WXList176.append(wxrep);
+
+                                    wgdev->devs[i].alarm[j].digitalvalue = DigitalValue.toUInt();
+                                    wgdev->devs[i].alarm[j].soetime0 = soeTime;
+                                }
+
+                            }else{
+                                if((soeTime-wgdev->devs[i].alarm[j].soetime1)>60){
+                                    WXRep17 wxrep = WXRep17(DeviceCode,lastid,SETime,MeasDesc,DigitalValue,MeasName);
+                                    WXList176.append(wxrep);
 
 
                                     wgdev->devs[i].alarm[j].digitalvalue = DigitalValue.toUInt();
@@ -327,6 +382,7 @@ void wgelectcore::finishedSlot(QNetworkReply *reply)
     reply->abort();
     reply->close();
     reply->deleteLater();
+    isSending = false;
 }
 
 
@@ -408,6 +464,7 @@ void wgelectcore::finishedSlot2(QNetworkReply *reply)
     reply->abort();
     reply->close();
     reply->deleteLater();
+    isSending2 = false;
 }
 
 void wgelectcore::finishedSlot3(QNetworkReply *reply)
@@ -439,6 +496,32 @@ void wgelectcore::finishedSlot3(QNetworkReply *reply)
     reply->abort();
     reply->close();
     reply->deleteLater();
+    isSending3 = false;
+}
+
+void wgelectcore::finishedSlot4(QNetworkReply *reply)
+{
+    WXList176.removeFirst();
+
+    QVariant status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
+    if(status_code == 200){
+        if(reply->error() == QNetworkReply::NoError){
+            QString message = QString::fromUtf8(reply->readAll());
+            logThread->appendData(QString("%1 WXChartThread send success  message: %2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(message));
+        }else{
+
+            //logThread->appendData(QString("WXChartThread send error 重发次数: %1 InsertId: %2").arg(count).arg(WXList173.first().LastId));
+            logThread->appendData(QString("%1 WXChartThread send error ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
+        }
+
+    }else{
+        logThread->appendData(QString("%1-----WXChartThread::finishedSlot4 fail------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
+    }
+
+    reply->abort();
+    reply->close();
+    reply->deleteLater();
+    isSending4 = false;
 }
 
 
@@ -458,12 +541,14 @@ void wgelectcore::sendData()
     post_data.append(QString("bz=%1").arg("测试阶段"));
 
     QNetworkRequest *req = new QNetworkRequest();
-    req->setUrl(QUrl("https://wx.ewoogi.com/USKYOF/USKYOF.php/Home/Powerwarn/message_dl"));
+    req->setUrl(QUrl(URL));
     req->setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
     req->setHeader(QNetworkRequest::ContentLengthHeader,post_data.length());
     QNetworkReply* reply = netAccessManager->post(*req,post_data);
+    QReplayTimeout *pTimeout = new QReplayTimeout(reply,10000);
+    connect(pTimeout, SIGNAL(net_timeout()),this,SLOT(reply_timeout()));
 
-
+    isSending = true;
 }
 
 
@@ -479,16 +564,18 @@ void wgelectcore::sendData171()
     post_data.append(QString("evt_name=%1&").arg(data.MeasDesc));
     post_data.append(QString("user_from=%1&").arg("CDL1"));
     post_data.append(QString("alarm_status=%1&").arg(data.DigitalValue));
+    post_data.append(QString("meas_name=%1&").arg(data.MeasName));
     post_data.append(QString("bz=%1").arg("测试阶段"));
 
     QNetworkRequest *req = new QNetworkRequest();
-    req->setUrl(QUrl("https://wx.ewoogi.com/USKYOF/USKYOF.php/Home/Powerwarn/message_dl"));
-    //req->setUrl(QUrl("https://iot.usky.cn/ytapi/admin/Manage/ceShiUrl"));
+    req->setUrl(QUrl(URL));
     req->setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
     req->setHeader(QNetworkRequest::ContentLengthHeader,post_data.length());
     QNetworkReply* reply = netAccessManager3->post(*req,post_data);
+    QReplayTimeout *pTimeout = new QReplayTimeout(reply,10000);
+    connect(pTimeout, SIGNAL(net_timeout()),this,SLOT(reply_timeout3()));
 
-
+    isSending3 = true;
 }
 
 void wgelectcore::sendData173()
@@ -503,16 +590,44 @@ void wgelectcore::sendData173()
     post_data.append(QString("evt_name=%1&").arg(data.MeasDesc));
     post_data.append(QString("user_from=%1&").arg("CDL1"));
     post_data.append(QString("alarm_status=%1&").arg(data.DigitalValue));
+    post_data.append(QString("meas_name=%1&").arg(data.MeasName));
     post_data.append(QString("bz=%1").arg("测试阶段"));
 
     QNetworkRequest *req = new QNetworkRequest();
-    req->setUrl(QUrl("https://wx.ewoogi.com/USKYOF/USKYOF.php/Home/Powerwarn/message_dl"));
-    //req->setUrl(QUrl("https://iot.usky.cn/ytapi/admin/Manage/ceShiUrl"));
+    req->setUrl(QUrl(URL));
     req->setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
     req->setHeader(QNetworkRequest::ContentLengthHeader,post_data.length());
     QNetworkReply* reply = netAccessManager2->post(*req,post_data);
+    QReplayTimeout *pTimeout = new QReplayTimeout(reply,10000);
+    connect(pTimeout, SIGNAL(net_timeout()),this,SLOT(reply_timeout2()));
+
+    isSending2 = true;
+}
+
+void wgelectcore::sendData176()
+{
+    WXRep17 data = WXList176.first();
+    //WXList173.removeFirst();
+    QByteArray post_data;
+    post_data.append(QString("device_code=%1&").arg(data.DeviceCode));
+    post_data.append(QString("insert_id=%1&").arg(data.LastId));
+    post_data.append(QString("phone=%1&").arg("17630065224"));
+    post_data.append(QString("time=%1&").arg(data.SoeTime));
+    post_data.append(QString("evt_name=%1&").arg(data.MeasDesc));
+    post_data.append(QString("user_from=%1&").arg("CDL1"));
+    post_data.append(QString("alarm_status=%1&").arg(data.DigitalValue));
+    post_data.append(QString("meas_name=%1&").arg(data.MeasName));
+    post_data.append(QString("bz=%1").arg("测试阶段"));
 
+    QNetworkRequest *req = new QNetworkRequest();
+    req->setUrl(QUrl(URL));
+    req->setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
+    req->setHeader(QNetworkRequest::ContentLengthHeader,post_data.length());
+    QNetworkReply* reply = netAccessManager4->post(*req,post_data);
+    QReplayTimeout *pTimeout = new QReplayTimeout(reply,10000);
+    connect(pTimeout, SIGNAL(net_timeout()),this,SLOT(reply_timeout4()));
 
+    isSending4 = true;
 }
 
 
@@ -523,5 +638,44 @@ void wgelectcore::receivewsdata(QString devicename,QString method,QString faultr
     elcomsub->para(devicename,method,starttime,endtime);
 }
 
+void wgelectcore::reply_timeout()
+{
+    if(WXList.length()>0){
+        WXRep rep = WXList.first();
+        logThread->appendData(QString("%1 reply_timeout send  message: %2 %3 %4").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.DeviceCode).arg(rep.MeasName).arg(rep.SoeTime));
+        WXList.removeFirst();
+    }
+    isSending = false;
+}
+
+void wgelectcore::reply_timeout2()
+{
+    if(WXList173.length()>0){
+        WXRep17 rep = WXList173.first();
+        logThread->appendData(QString("%1 reply_timeout send  message: %2 %3 %4").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.DeviceCode).arg(rep.MeasName).arg(rep.SoeTime));
+        WXList173.removeFirst();
+    }
+    isSending2 = false;
+}
+
+void wgelectcore::reply_timeout3()
+{
+    if(WXList171.length()>0){
+        WXRep17 rep = WXList171.first();
+        logThread->appendData(QString("%1 reply_timeout send  message: %2 %3 %4").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.DeviceCode).arg(rep.MeasName).arg(rep.SoeTime));
+        WXList171.removeFirst();
+    }
+    isSending3 = false;
+}
+
+void wgelectcore::reply_timeout4()
+{
+    if(WXList176.length()>0){
+        WXRep17 rep = WXList176.first();
+        logThread->appendData(QString("%1 reply_timeout send  message: %2 %3 %4").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.DeviceCode).arg(rep.MeasName).arg(rep.SoeTime));
+        WXList176.removeFirst();
+    }
+    isSending4 = false;
+}
 
 

+ 23 - 2
ytWG/ytWGElectric/wgelectcore.h

@@ -13,6 +13,7 @@
 #include <QNetworkAccessManager>
 #include <QNetworkRequest>
 #include <QNetworkReply>
+#include "qreplaytimeout.h"
 #include "logthread.h"
 #include "databasethread.h"
 #include "electdata.h"
@@ -24,6 +25,10 @@
 #include "elcommthread171.h"
 #include "electdata173.h"
 #include "elcommthread173.h"
+#include "electdata158.h"
+#include "elcommthread158.h"
+#include "electdata176.h"
+#include "elcommthread176.h"
 
 
 class WXRep {
@@ -47,12 +52,13 @@ public:
 
 class WXRep17 {
 public:
-    WXRep17(QString devicecode="",QString lastid="",QString soetime="", QString measdesc="", QString digitalvalue=""){
+    WXRep17(QString devicecode="",QString lastid="",QString soetime="", QString measdesc="", QString digitalvalue="", QString measname=""){
         DeviceCode = devicecode;
         LastId = lastid;
         SoeTime = soetime;
         MeasDesc=measdesc;
         DigitalValue=digitalvalue;
+        MeasName=measname;
     }
 
     QString DeviceCode;
@@ -60,6 +66,7 @@ public:
     QString SoeTime;
     QString MeasDesc;
     QString DigitalValue;
+    QString MeasName;
 };
 
 class wgelectcore : public QObject
@@ -72,6 +79,7 @@ public:
     void sendData();
     void sendData171();
     void sendData173();
+    void sendData176();
 
 signals:
 
@@ -79,6 +87,8 @@ public slots:
     void ReceiveDevData(QString topic,QByteArray data);
     void ReceiveDevData171(QString topic,QByteArray data);
     void ReceiveDevData173(QString topic,QByteArray data);
+    void ReceiveDevData158(QString topic,QByteArray data);
+    void ReceiveDevData176(QString topic,QByteArray data);
     void ReceiveLog(QString topic,QString devdata,QByteArray devBData);
     void receivewsdata(QString devicename,QString method,QString faultrecordtype,QString starttime,QString endtime);
     void appendSql(QString sql);
@@ -88,6 +98,11 @@ public slots:
     void finishedSlot1(QNetworkReply *reply);
     void finishedSlot2(QNetworkReply *reply);
     void finishedSlot3(QNetworkReply *reply);
+    void finishedSlot4(QNetworkReply *reply);
+    void reply_timeout();
+    void reply_timeout2();
+    void reply_timeout3();
+    void reply_timeout4();
     void waveAlarm(QString devicecode,QString startDate,QString endDate,QString alarmDate,QString alarmTime,QString cfgPath,QString datpath);
     void time_out();
 
@@ -118,13 +133,19 @@ private:
     Electdata171 *electdata171;
     ELCommThread173 *elcomthread173;
     Electdata173 *electdata173;
+    ELCommThread158 *elcom158;
+    Electdata158 *electdata158;
+    ELCommThread176 *elcomthread176;
+    Electdata176 *electdata176;
 
     QList<WXRep> WXList;
     QList<WXRep17> WXList171;
     QList<WXRep17> WXList173;
-    QNetworkAccessManager *netAccessManager,*netAccessManager1,*netAccessManager2,*netAccessManager3;
+    QList<WXRep17> WXList176;
+    QNetworkAccessManager *netAccessManager,*netAccessManager1,*netAccessManager2,*netAccessManager3,*netAccessManager4;
     bool iswait;
     int count,hour;
+    bool isSending,isSending2,isSending3,isSending4;
 };
 
 

+ 1 - 1
ytWG/ytWGElectric/wgelectricshm.h

@@ -27,7 +27,7 @@ typedef struct {
     unsigned int devicetype;
     unsigned int deviceStatus;
     unsigned char Enabled;
-    ALARM alarm[35];
+    ALARM alarm[42];
     unsigned int LastCommtime;
 }WGDev;
 

+ 12 - 2
ytWG/ytWGElectric/ytWGElectric.pro

@@ -28,7 +28,11 @@ SOURCES += \
     elcommthread173.cpp \
     electdata173.cpp \
     elcommthread171.cpp \
-    electdata171.cpp
+    electdata171.cpp \
+    elcommthread158.cpp \
+    electdata158.cpp \
+    elcommthread176.cpp \
+    electdata176.cpp
 
 # Default rules for deployment.
 qnx: target.path = /tmp/$${TARGET}/bin
@@ -51,6 +55,12 @@ HEADERS += \
     elcommthread173.h \
     electdata173.h \
     elcommthread171.h \
-    electdata171.h
+    electdata171.h \
+    elcommthread158.h \
+    electdata158.h \
+    elcommthread176.h \
+    electdata176.h \
+    wgcfgshm.h \
+    qreplaytimeout.h
 
 LIBS += -lQt5Qmqtt