elecfilecore.cpp 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548
  1. #include "elecfilecore.h"
  2. #include "efire.h"
  3. #include "../ytUserInfoProcess/userinfo.h"
  4. #include "../DataPrecessDog/dataprecess.h"
  5. #define UN_REFERENCED_PARAMETER(x) {(x) = (x);}
  6. ElecFileCore::ElecFileCore(QObject *parent) : QObject(parent)
  7. {
  8. mqttIdx = 1;
  9. mqttinfoIdx =1;
  10. timer = new QTimer(this);
  11. logThread = new LogThread(this);
  12. dbThread = new DatabaseThread(this);
  13. // mThread = new MqttThread(this);
  14. msgList.clear();
  15. logThread->start();
  16. // wxThreads = new WeChart2Thread(this,0,"47.98.201.73","/jdxf/wxapp2.php/Home/Waterwarn/message_electrical");
  17. // connect(wxThreads,&WeChart2Thread::wxchart,this,&ElecFileCore::wxchart);
  18. // connect(wxThreads,&WeChart2Thread::finished,this,&ElecFileCore::quit);
  19. // wssThread = new Tts2Thread(this,0,"47.98.201.73","/report",55125);
  20. // connect(wssThread,&Tts2Thread::ttslog,this,&ElecFileCore::ttslog);
  21. // connect(wssThread,&Tts2Thread::finished,this,&ElecFileCore::quit);
  22. // wxThreads->start();
  23. // wssThread->start();
  24. for(quint16 i=0;i<8;i++){
  25. wxThreads[i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/Waterwarn/message_electrical");
  26. connect(wxThreads[i],&WechartThreads::wxchart,this,&ElecFileCore::wxchart);
  27. wssThread[i] = new ttsThreads(this,i,"47.98.201.73","/report",55125);
  28. connect(wssThread[i],&ttsThreads::ttslog,this,&ElecFileCore::ttslog);
  29. wxThreads[i]->start();
  30. wssThread[i]->start();
  31. }
  32. wxcur = 0;
  33. repcur = 0;
  34. connect(timer, &QTimer::timeout, this, &ElecFileCore::timeout);
  35. connect(dbThread, &DatabaseThread::AlarmReport, this, &ElecFileCore::AlarmReport);
  36. connect(dbThread, &DatabaseThread::SqlLog, this, &ElecFileCore::SqlLog);
  37. connect(dbThread, &DatabaseThread::MqttInfo, this, &ElecFileCore::MqttConnect);
  38. dbThread->start();
  39. server = new ElectricFireServer2(this);
  40. connect(server,&ElectricFireServer2::CommData,this,&ElecFileCore::CommData);
  41. connect(server,&ElectricFireServer2::getOnLine,this,&ElecFileCore::getOnLine);
  42. connect(server,&ElectricFireServer2::getAlarm,this,&ElecFileCore::getAlarm);
  43. connect(server,&ElectricFireServer2::getAnalogValue,this,&ElecFileCore::getAnalogValue);
  44. eServer = new ElectricFireServer(this);
  45. connect(eServer,&ElectricFireServer::CommData,this,&ElecFileCore::CommData);
  46. connect(eServer,&ElectricFireServer::getEAlarm,this,&ElecFileCore::getEAlarm);
  47. connect(eServer,&ElectricFireServer::getEAnalogValue,this,&ElecFileCore::getEAnalogValue);
  48. connect(eServer,&ElectricFireServer::getERealtimeValue,this,&ElecFileCore::getERealtimeValue);
  49. server_yada = new ElectricFireServer_Yada(this);
  50. connect(server_yada,&ElectricFireServer_Yada::CommData,this,&ElecFileCore::CommData);
  51. connect(server_yada,&ElectricFireServer_Yada::getOnLine,this,&ElecFileCore::getOnLine);
  52. connect(server_yada,&ElectricFireServer_Yada::getAlarm,this,&ElecFileCore::getAlarm);
  53. connect(server_yada,&ElectricFireServer_Yada::getAnalogValue,this,&ElecFileCore::getYDAnalogValue);
  54. syncInterface = new SyncInterface(this);
  55. // connect(syncInterface,&SyncInterface::comm_data,this,&ElecFileCore::CommData);
  56. wssServer = new WssServer(this);
  57. wssServer->start();
  58. timer->start(1000);
  59. }
  60. ElecFileCore::~ElecFileCore()
  61. {
  62. logThread->stop();
  63. dbThread->stop();
  64. }
  65. void ElecFileCore::MqttConnect(QString ip,QString port,QString name,QString passwd)
  66. {
  67. printf("mqtt init\n");
  68. printf("ip = %s, port = %s, name = %s, passwd = %s\n",ip.toUtf8().data(),port.toUtf8().data(),name.toUtf8().data(),passwd.toUtf8().data());
  69. m_client = new QMQTT::Client(QHostAddress(ip), static_cast<quint16>(port.toInt()), this);
  70. m_client->setUsername(name);
  71. m_client->setPassword(passwd.toLatin1());
  72. connect(m_client,&QMQTT::Client::connected,this,&ElecFileCore::mqconnected);
  73. m_client->connectToHost();
  74. }
  75. void ElecFileCore::mqconnected()
  76. {
  77. printf("mqtt connected\n");
  78. // m_client->publish(QMQTT::Message(mqttIdx++,"/usky/ytDP0007/10012/60001/alarm",QByteArray("mq alarm start")));
  79. // if(mqttIdx>9999)
  80. // mqttIdx = 1;
  81. // m_client->publish(QMQTT::Message(mqttinfoIdx++,"/usky/ytDP0007/10012/60002/info",QByteArray("mq info start")));
  82. // if(mqttinfoIdx>9999)
  83. // mqttinfoIdx = 1;
  84. }
  85. void ElecFileCore::wssclose()
  86. {
  87. wssServer->start();
  88. }
  89. void ElecFileCore::start()
  90. {
  91. server->start();
  92. eServer->start();
  93. server_yada->start();
  94. }
  95. void ElecFileCore::quit()
  96. {
  97. exit(1);
  98. }
  99. void ElecFileCore::timeout()
  100. {
  101. QDateTime dt = QDateTime::currentDateTime();
  102. uint t = dt.toTime_t();
  103. dataProcessShm->processStatus[11].upTime[0].Enabled = 0x01;
  104. dataProcessShm->processStatus[11].upTime[0].t_time = t;
  105. if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
  106. m_client->connectToHost();
  107. }
  108. if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
  109. //msgList.append(QString("{\"devId\":\"00003215010189\",\"connType\":\"G\"}"));
  110. if (msgList.length()>0){
  111. int h1 = msgList.first().indexOf(":",0);
  112. int t1 = msgList.first().indexOf(",",h1);
  113. QString d1 = msgList.first().mid(h1+2,(t1-h1-3));
  114. alarmDevice = d1.toUtf8().data();
  115. for(int i=0;i<10240;i++){
  116. if(QString::compare(eFireList->devs[i].Device_Code,alarmDevice)==0){
  117. alarmCompany = QString(eFireList->devs[i].Company_Code);
  118. break;
  119. }
  120. }
  121. QString topic = QString("/usky/ytDP0007/%1/%2/alarm").arg(alarmCompany).arg(alarmDevice);
  122. m_client->publish(QMQTT::Message(mqttIdx++,topic,msgList.first().toUtf8()));
  123. msgList.removeFirst();
  124. if(mqttIdx>9999)
  125. mqttIdx = 1;
  126. }
  127. }
  128. for(int i=0;i<10240;i++){
  129. if(eFireList->devs[i].Enabled==0x01){
  130. if(eFireList->devs[i].Online_Flag!=0x00){
  131. if((t-eFireList->devs[i].LastCommtime)>21600){
  132. // eFireList->devs[i].Online_Flag=0x00;
  133. // dbThread->appendSql(QString("update sp_devices_status set devicestatus=75, true_status=75, statustime='%1', lastcommtime='%1' where deviceid='%2'")
  134. // .arg(dt.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[i].Device_Code)));
  135. // dbThread->appendAlarm(AlarmRep(QString(eFireList->devs[i].Device_Code),
  136. // QString("insert into sp_ef2017 (id, port, device_code, time, data1, data2, data3, data4) values (NULL,%1,'%2','%3','%4','%5','%6','%7')")
  137. // .arg(9).arg(QString(eFireList->devs[i].Device_Code)).arg(dt.toString("yyyy-MM-dd HH:mm:ss"))
  138. // .arg(QString("EF%1").arg(9))
  139. // .arg("")
  140. // .arg("")
  141. // .arg(""),
  142. // QString("EF%1").arg(9),
  143. // dt.toString("yyyy-MM-dd HH:mm:ss")));
  144. }
  145. }
  146. }
  147. }
  148. }
  149. void ElecFileCore::CommData(QString deviceID, int dir, QString data)
  150. {
  151. logThread->appendData(data);
  152. wssServer->subReport(deviceID,dir,false,false,data);
  153. }
  154. void ElecFileCore::SqlLog(QString log)
  155. {
  156. logThread->appendData(log);
  157. wssServer->subReport("",0,true,false,log);
  158. }
  159. void ElecFileCore::getOnLine(int deviceidx, bool flag, QDateTime t)
  160. {
  161. if(eFireList->devs[deviceidx].Enabled!=0x01)
  162. return;
  163. if(flag)
  164. {
  165. // eFireList->devs[deviceidx].LastCommtime = t.toTime_t();
  166. if(eFireList->devs[deviceidx].Online_Flag!=0x01)
  167. {
  168. eFireList->devs[deviceidx].Online_Flag=0x01;
  169. dbThread->appendSql(QString("update sp_devices_status set devicestatus=0, true_status=0, statustime='%1', lastcommtime='%1' where device_id='%2'")
  170. .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  171. }else{
  172. dbThread->appendSql(QString("update sp_devices_status set devicestatus=0, true_status=0, statustime='%1', lastcommtime='%1' where device_id='%2'")
  173. .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  174. }
  175. }
  176. }
  177. void ElecFileCore::getEAlarm(QString DeviceCode, int point, bool aflag, float v1, float v2, float v3, QDateTime t)
  178. {
  179. logThread->appendData(QString("[ %1 getEAlarm ] 55126 %2, %3, %4, %5, %6, %7 ")
  180. .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(DeviceCode).arg(point).arg(aflag)
  181. .arg(v1).arg(v2).arg(v3));
  182. for(int i=0;i<10240;i++){
  183. if(eFireList->devs[i].Enabled==0x01){
  184. if(QString::compare(QString(eFireList->devs[i].Device_Code),DeviceCode)==0){
  185. // eFireList->devs[i].LastCommtime = t.toTime_t();
  186. if(DeviceCode.indexOf("8000")!=0){
  187. if((eFireList->devs[i].Point[point].Status==0x00)&&aflag){
  188. eFireList->devs[i].Point[point].Status=0x01;
  189. getAlarm(i,point,aflag,v1,v2,v3,t);
  190. }else if((eFireList->devs[i].Point[point].Status==0x01)&&(!aflag)){
  191. eFireList->devs[i].Point[point].Status=0x00;
  192. getAlarm(i,point,aflag,v1,v2,v3,t);
  193. }
  194. }else{
  195. // if(aflag)
  196. if((eFireList->devs[i].Point[point].Status!=(aflag?0x01:0x00))
  197. ||((t.toTime_t()-eFireList->devs[i].LastCommtime)>1800)
  198. ){
  199. eFireList->devs[i].Point[point].Status=(aflag?0x01:0x00);
  200. getAlarm(i,point,aflag,v1,v2,v3,t);
  201. }
  202. eFireList->devs[i].LastCommtime=t.toTime_t();
  203. }
  204. break;
  205. }
  206. }
  207. }
  208. }
  209. void ElecFileCore::getAlarm(int deviceidx, int point, bool aflag, float v1, float v2, float v3, QDateTime t)
  210. {
  211. // eFireList->devs[deviceidx].LastCommtime = t.toTime_t();
  212. if(aflag){
  213. QString pointName;
  214. switch(point){
  215. case 1: pointName = "供电过压";break;
  216. case 2: pointName = "供电低压";break;
  217. case 3: pointName = "供电过流";break;
  218. case 4: pointName = "漏电报警";break;
  219. case 5: pointName = "A相线缆温度超高";break;
  220. case 6: pointName = "B相线缆温度超高";break;
  221. case 7: pointName = "C相线缆温度超高";break;
  222. default: break;
  223. }
  224. msgList.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(eFireList->devs[deviceidx].Device_Code)).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(pointName).arg(point).arg(QString::number(static_cast<double>(v1),'f',3)).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(t.toTime_t()).arg(QString(eFireList->devs[deviceidx].Device_Type)).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(t.toTime_t()));
  225. AlarmRep rep = AlarmRep(QString(eFireList->devs[deviceidx].Device_Code),
  226. QString("insert into sp_ef2017 (id, port, device_code, time, data1, data2, data3, data4) values (NULL,%1,'%2','%3','%4','%5','%6','%7')")
  227. .arg(point).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(t.toString("yyyy-MM-dd HH:mm:ss"))
  228. .arg(QString("EF%1").arg(point))
  229. .arg(QString::number(static_cast<double>(v1),'f',3))
  230. .arg(point<4?QString::number(static_cast<double>(v2),'f',3):"")
  231. .arg(point<4?QString::number(static_cast<double>(v3),'f',3):""),
  232. QString("EF%1").arg(point),
  233. t.toString("yyyy-MM-dd HH:mm:ss"));
  234. dbThread->appendAlarm(rep);
  235. }
  236. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code='%4'")
  237. .arg(aflag?1:0).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point));
  238. if((point==1)||(point==2)){
  239. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=65;")
  240. .arg(QString::number(static_cast<double>(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  241. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=66;")
  242. .arg(QString::number(static_cast<double>(v2),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  243. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=67;")
  244. .arg(QString::number(static_cast<double>(v3),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  245. }else if(point==3){
  246. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=68;")
  247. .arg(QString::number(static_cast<double>(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  248. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=69;")
  249. .arg(QString::number(static_cast<double>(v2),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  250. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=70;")
  251. .arg(QString::number(static_cast<double>(v3),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  252. }else if((point==4)&&(v1>0)){
  253. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=75;")
  254. .arg(QString::number(static_cast<double>(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  255. }else if(point==5){
  256. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=71;")
  257. .arg(QString::number(static_cast<double>(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  258. }else if(point==6){
  259. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=72;")
  260. .arg(QString::number(static_cast<double>(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  261. }else if(point==7){
  262. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=73;")
  263. .arg(QString::number(static_cast<double>(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)));
  264. }
  265. }
  266. void ElecFileCore::AlarmReport(QString addr, quint64 insertid, QString type, QString time)
  267. {
  268. UN_REFERENCED_PARAMETER(time);
  269. QString phonelist = "";
  270. QString companyCode = "";
  271. for(int i=0;i<10240;i++){
  272. if(QString::compare(QString(eFireList->devs[i].Device_Code),addr)==0){
  273. companyCode = QString(eFireList->devs[i].Company_Code);
  274. break;
  275. }
  276. }
  277. QString name = "";
  278. if(type.compare("EF1")==0)
  279. name = "欠压报警";
  280. else if(type.compare("EF2")==0)
  281. name = "过压报警";
  282. else if(type.compare("EF3")==0)
  283. name = "过流报警";
  284. else if(type.compare("EF4")==0)
  285. name = "漏电报警";
  286. else if(type.compare("EF5")==0)
  287. name = "1号线缆温度超高";
  288. else if(type.compare("EF6")==0)
  289. name = "2号线缆温度超高";
  290. else if(type.compare("EF7")==0)
  291. name = "3号线缆温度超高";
  292. QString rep2 = QString("{\"SubType\":7,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":0,\"CompanyCode\":\"%3\",\"evt_name\":\"%4\",\"evt\":0,\"alarm_time\":\"%5\"}")
  293. .arg(addr).arg(insertid).arg(companyCode).arg(name).arg(time);
  294. wssThread[repcur]->appendData(rep2);
  295. repcur++;
  296. repcur &= 0x07;
  297. if(companyCode.length()>0){
  298. for(int i=0;i<102400;i++){
  299. if(companyCode.compare(QString(sysConfShm->userInfo[i].CompanyCode))==0){
  300. QString phone = QString(sysConfShm->userInfo[i].CellPhone);
  301. if(phone.trimmed().length()>0){
  302. if(phonelist.length()==0)
  303. phonelist = phone;
  304. else
  305. phonelist.append(","+phone);
  306. }
  307. }
  308. }
  309. if(phonelist.length()>0){
  310. QString evtType = type;
  311. QString unique_number = QString("%1%2").arg(addr).arg(type.remove(0, 2));
  312. QString data = QString("evt=%4&device_code=%1&phone=%3&insert_id=%2&unique_number=%5&time=%6").arg(addr).arg(insertid).arg(phonelist).arg(evtType).arg(unique_number).arg(time)
  313. .replace(",","%2C").replace(":","%3A").replace(" ","+");
  314. wxThreads[wxcur]->appendData(data);
  315. wxcur++;
  316. wxcur &= 0x07;
  317. }
  318. }
  319. }
  320. void ElecFileCore::wxchart(quint16 idx, QDateTime t, QString data, bool dirflag)
  321. {
  322. UN_REFERENCED_PARAMETER(idx);
  323. logThread->appendData(QString("[ %1 47.98.201.73 (wx) %2 ] %3")
  324. .arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
  325. .arg(dirflag?">>>":"<<<")
  326. .arg(data.replace('\n',"\\n").replace('\r',"\\r")));
  327. }
  328. void ElecFileCore::ttslog(quint16 idx, QDateTime t, QString data, bool dirflag)
  329. {
  330. UN_REFERENCED_PARAMETER(idx);
  331. logThread->appendData(QString("[ %1 47.98.201.73 (wss) %2 ] %3")
  332. .arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
  333. .arg(dirflag?">>>":"<<<")
  334. .arg(data.replace('\n',"\\n").replace('\r',"\\r")));
  335. }
  336. void ElecFileCore::getERealtimeValue(QString DeviceCode, int point, float rtv, QDateTime t)
  337. {
  338. dbThread->appendSql(QString("update sp_devices_status set devicestatus=0, true_status=0, statustime='%1', lastcommtime='%1' where deviceid='%2'")
  339. .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(DeviceCode));
  340. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=%4")
  341. .arg(QString::number(static_cast<double>(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(DeviceCode).arg(point));
  342. dbThread->appendSql(QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,0,'%1',%2,%3,'%4','')")
  343. .arg(DeviceCode).arg(point).arg(QString::number(static_cast<double>(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")));
  344. }
  345. void ElecFileCore::getAnalogValue(int deviceidx, int point, float ave, float rtv, QDateTime t, float maxv, QDateTime maxt, float minv, QDateTime mint)
  346. {
  347. // eFireList->devs[deviceidx].LastCommtime = t.toTime_t();
  348. QString pointName;
  349. switch(point){
  350. case 65: pointName = "A相电压";break;
  351. case 66: pointName = "B相电压";break;
  352. case 67: pointName = "C相电压";break;
  353. case 68: pointName = "A相电流";break;
  354. case 69: pointName = "B相电流";break;
  355. case 70: pointName = "C相电流";break;
  356. case 71: pointName = "A相线缆温度";break;
  357. case 72: pointName = "B相线缆温度";break;
  358. case 73: pointName = "C相线缆温度";break;
  359. default: break;
  360. }
  361. pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\"},").arg(pointName).arg(point).arg(QString::number(static_cast<double>(rtv),'f',3)));
  362. if(point == 73){
  363. if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
  364. m_client->connectToHost();
  365. }
  366. if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
  367. QString infoList;
  368. // QString devPtr;
  369. // if(eFireList->devs[deviceidx].Enabled==0x01){
  370. // QString pointStr;
  371. // for(int j=0;j<256;j++){
  372. // if(eFireList->devs[deviceidx].Point[j].Enabled==0x01){
  373. // QString pointName;
  374. // switch(j){
  375. // case 1: pointName = "供电过压";break;
  376. // case 2: pointName = "供电低压";break;
  377. // case 3: pointName = "供电过流";break;
  378. // case 4: pointName = "漏电报警";break;
  379. // case 5: pointName = "A相线缆温度超高";break;
  380. // case 6: pointName = "B相线缆温度超高";break;
  381. // case 7: pointName = "C相线缆温度超高";break;
  382. // case 65: pointName = "A相电压";break;
  383. // case 66: pointName = "B相电压";break;
  384. // case 67: pointName = "C相电压";break;
  385. // case 68: pointName = "A相电流";break;
  386. // case 69: pointName = "B相电流";break;
  387. // case 70: pointName = "C相电流";break;
  388. // case 71: pointName = "A相线缆温度";break;
  389. // case 72: pointName = "B相线缆温度";break;
  390. // case 73: pointName = "C相线缆温度";break;
  391. // default: break;
  392. // }
  393. // if(j == 73)
  394. // {
  395. // pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\"},").arg(pointName).arg(j).arg(QString::number(static_cast<double>(rtv),'f',3)));
  396. // }else if(eFireList->devs[deviceidx].Point[j].Type == 0x01){
  397. // pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\"},").arg(pointName).arg(j).arg(eFireList->devs[deviceidx].Point[j].IoValue==0x01?1:0));
  398. // }else{
  399. // pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\"},").arg(pointName).arg(j).arg(QString::number(static_cast<double>(eFireList->devs[deviceidx].Point[j].CurrentValue),'f',3)));
  400. // }
  401. // }
  402. // }
  403. pointStr=pointStr.left(pointStr.length()-1);
  404. infoList.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"devs\":[{\"dp\":[%3],\"deviceName\":\"%4\",\"timeStamp\":\"%5\",\"deviceModel\":\"\",\"deviceType\":\"%6\",\"devId\":\"%7\"}],\"type\":\"INFO\",\"timeStamp\":\"%8\"}").arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(pointStr).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(t.toTime_t()).arg(QString(eFireList->devs[deviceidx].Device_Type)).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(t.toTime_t()));
  405. QString infoTopic = QString("/usky/ytDP0007/%1/%2/info").arg(QString(eFireList->devs[deviceidx].Company_Code)).arg(QString(eFireList->devs[deviceidx].Device_Code));
  406. //2021/11/15 山东党校需求 电气火灾推漏电和故障电弧,温度超高
  407. m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,infoList.toUtf8()));
  408. if(mqttinfoIdx>9999)
  409. mqttinfoIdx = 1;
  410. pointStr.clear();
  411. // }
  412. }
  413. }
  414. QString sql;
  415. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=%4")
  416. .arg(QString::number(static_cast<double>(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point));
  417. dbThread->appendSql(QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,0,'%1',%2,%3,'%4','')")
  418. .arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point).arg(QString::number(static_cast<double>(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")));
  419. dbThread->appendSql(QString("insert into sp_e%1 (id, device_id, point_code, point_data, data_time, max_data, max_time, min_data, min_time, ave_data, content) values (NULL, '%1', %2, %3, '%4', %5, '%6', %7, '%8', %9, '')")
  420. .arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point)
  421. .arg(QString::number(static_cast<double>(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss"))
  422. .arg(QString::number(static_cast<double>(maxv),'f',3)).arg(maxt.toString("yyyy-MM-dd HH:mm:ss"))
  423. .arg(QString::number(static_cast<double>(minv),'f',3)).arg(mint.toString("yyyy-MM-dd HH:mm:ss"))
  424. .arg(QString::number(static_cast<double>(ave),'f',3)));
  425. }
  426. void ElecFileCore::getEAnalogValue(QString DeviceCode, int point, float ave, float rtv, QDateTime t, float maxv, QDateTime maxt, float minv, QDateTime mint)
  427. {
  428. if(point==70)
  429. return;
  430. for(int i=0;i<10240;i++){
  431. if(eFireList->devs[i].Enabled==0x01){
  432. if(QString::compare(QString(eFireList->devs[i].Device_Code),DeviceCode)==0){
  433. // eFireList->devs[i].LastCommtime = t.toTime_t();
  434. logThread->appendData(QString("55126 deviceCode:%1, point:%2, ave:%3, max:%4, min:%5").arg(DeviceCode).arg(point).arg(ave).arg(maxv).arg(minv));
  435. getAnalogValue(i,point,ave,rtv,t,maxv,maxt,minv,mint);
  436. break;
  437. }
  438. }
  439. }
  440. }
  441. void ElecFileCore::getYDAnalogValue(int deviceidx, int point, float ave, float rtv, QDateTime t, float maxv, QDateTime maxt, float minv, QDateTime mint)
  442. {
  443. // eFireList->devs[deviceidx].LastCommtime = t.toTime_t();
  444. QString pointName;
  445. switch(point){
  446. case 65: pointName = "A相电压";break;
  447. case 66: pointName = "B相电压";break;
  448. case 67: pointName = "C相电压";break;
  449. case 68: pointName = "A相电流";break;
  450. case 69: pointName = "B相电流";break;
  451. case 70: pointName = "C相电流";break;
  452. case 71: pointName = "A相线缆温度";break;
  453. case 72: pointName = "B相线缆温度";break;
  454. case 73: pointName = "C相线缆温度";break;
  455. default: break;
  456. }
  457. pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\"},").arg(pointName).arg(point).arg(QString::number(static_cast<double>(rtv),'f',3)));
  458. if(point == 73){
  459. if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
  460. m_client->connectToHost();
  461. }
  462. if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
  463. QString infoList;
  464. pointStr=pointStr.left(pointStr.length()-1);
  465. infoList.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"devs\":[{\"dp\":[%3],\"deviceName\":\"%4\",\"timeStamp\":\"%5\",\"deviceModel\":\"\",\"deviceType\":\"%6\",\"devId\":\"%7\"}],\"type\":\"INFO\",\"timeStamp\":\"%8\"}").arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(pointStr).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(t.toTime_t()).arg(QString(eFireList->devs[deviceidx].Device_Type)).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(t.toTime_t()));
  466. QString infoTopic = QString("/usky/ytDP0007/%1/%2/info").arg(QString(eFireList->devs[deviceidx].Company_Code)).arg(QString(eFireList->devs[deviceidx].Device_Code));
  467. //2021/11/15 山东党校需求 电气火灾推漏电和故障电弧,温度超高
  468. m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,infoList.toUtf8(),0));
  469. if(mqttinfoIdx>9999)
  470. mqttinfoIdx = 1;
  471. pointStr.clear();
  472. }
  473. }
  474. QString sql;
  475. dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=%4")
  476. .arg(QString::number(static_cast<double>(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point));
  477. dbThread->appendSql(QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,0,'%1',%2,%3,'%4','')")
  478. .arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point).arg(QString::number(static_cast<double>(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")));
  479. dbThread->appendSql(QString("insert into sp_e%1 (id, device_id, point_code, point_data, data_time, max_data, max_time, min_data, min_time, ave_data, content) values (NULL, '%1', %2, %3, '%4', %5, '%6', %7, '%8', %9, '')")
  480. .arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point)
  481. .arg(QString::number(static_cast<double>(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss"))
  482. .arg(QString::number(static_cast<double>(maxv),'f',3)).arg(maxt.toString("yyyy-MM-dd HH:mm:ss"))
  483. .arg(QString::number(static_cast<double>(minv),'f',3)).arg(mint.toString("yyyy-MM-dd HH:mm:ss"))
  484. .arg(QString::number(static_cast<double>(ave),'f',3)));
  485. }