| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642 |
- #include "mkcore.h"
- #include <string.h>
- #include "../ytUserInfoProcess/userinfo.h"
- #include "../DataPrecessDog/dataprecess.h"
- #include "waterMk01.h"
- // 1. 提取硬编码魔法值为常量,便于统一修改和维护
- const QString MQTT_ID = "a71c40bb-5b02-4741-881b-24449f699db9";
- const QString ACTION_TYPE = "transpush";
- const QString PROVIDER = "Usky";
- const QString DEVICE_TYPE = "xiaofangshuiya";
- const QString DATA_TYPE = "deviceInfo";
- const QString SOFT_VERSION = "1.00.00";
- const QString HARD_VERSION = "0.1";
- const QString SENSOR_DESC = "";
- const QString SENSOR_UNIT = "MPa";
- const double LOW_THRESHOLD = 0.07;
- const double HIGH_THRESHOLD = 1.2;
- const QString API_URL = "http://47.98.201.73:55126";
- #define comm_debug
- #define UN_REFERENCED_PARAMETER(x) {(x) = (x);}
- MKCore::MKCore(QObject *parent) :
- QObject(parent)
- {
- logThread = new LogThread(this);
- dbThread = new DatabaseThread(this);
- timer = new QTimer(this);
- connect(timer,SIGNAL(timeout()),this,SLOT(timeout()));
- connect(dbThread,SIGNAL(AlarmReport(QString,quint64,QString,QString)),this,SLOT(AlarmReport(QString,quint64,QString,QString)));
- connect(dbThread, &DatabaseThread::SqlLog, this, &MKCore::SqlLog);
- connect(dbThread, &DatabaseThread::mqttInfo,this,&MKCore::mqttConnect);
- svr = new QTcpServer(this);
- connect(svr, SIGNAL(newConnection()),this,SLOT(new_incomming()));
- for(quint16 i=0;i<16;i++){
- wxThreads[3][i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/GeneralPush/voice_alarm");
- wxThreads[2][i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/ManholeCoverwarn/message_manhole_cover");
- wxThreads[1][i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/Waterwarn/message_water");
- wxThreads[0][i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/Yeweiwarn/message_water");
- connect(wxThreads[3][i],SIGNAL(wxchart(quint16,QDateTime,QString,bool)),this,SLOT(wxchart(quint16,QDateTime,QString,bool)));
- connect(wxThreads[2][i],SIGNAL(wxchart(quint16,QDateTime,QString,bool)),this,SLOT(wxchart(quint16,QDateTime,QString,bool)));
- connect(wxThreads[1][i],SIGNAL(wxchart(quint16,QDateTime,QString,bool)),this,SLOT(wxchart(quint16,QDateTime,QString,bool)));
- connect(wxThreads[0][i],SIGNAL(wxchart(quint16,QDateTime,QString,bool)),this,SLOT(wxchart(quint16,QDateTime,QString,bool)));
- repThread[i] = new ttsThreads(this,i,"127.0.0.1","/report",55335);
- connect(repThread[i],&ttsThreads::ttslog,this,&MKCore::repLog);
- wssThread[i] = new ttsThreads(this,i,"47.98.201.73","/report",55125);
- connect(wssThread[i],&ttsThreads::ttslog,this,&MKCore::repLog);
- lhThread[i] = new ttsThreads(this,i,"47.98.201.73","/report",55126);
- connect(lhThread[i],&ttsThreads::ttslog,this,&MKCore::repLog);
- wxThreads[3][i]->start();
- wxThreads[2][i]->start();
- wxThreads[1][i]->start();
- wxThreads[0][i]->start();
- wssThread[i]->start();
- repThread[i]->start();
- lhThread[i]->start();
- }
- wxcur = 0;
- repcur = 0;
- lhcur = 0;
- DevIdx3 = -1;
- mkwaterserver = new Mkwaterserver(this);
- connect(mkwaterserver,&Mkwaterserver::getCommData,this,&MKCore::getCommData);
- connect(mkwaterserver,&Mkwaterserver::getValue,this,&MKCore::getValue);
- connect(mkwaterserver,&Mkwaterserver::getAlarm,this,&MKCore::getAlarm);
- dbThread->start();
- logThread->start();
- mqttinfoIdx = 1;
- mqttalarmIdx = 1;
- }
- MKCore::~MKCore()
- {
- logThread->stop();
- dbThread->stop();
- }
- void MKCore::mqttConnect(QString ip,QString port,QString name,QString passwd)
- {
- printf("mqtt init\n");
- printf("ip=%s, port=%s,name=%s,passwd=%s\n",ip.toUtf8().data(),port.toUtf8().data(),name.toUtf8().data(),passwd.toUtf8().data());
- m_client = new QMQTT::Client(QHostAddress(ip),static_cast<quint16>(port.toInt()),this);
- m_client -> setUsername(name);
- m_client -> setPassword(passwd.toLatin1());
- connect(m_client, &QMQTT::Client::connected,this,&MKCore::mqconnected);
- connect(m_client,&QMQTT::Client::subscribed,this,&MKCore::onSubscribed);
- connect(m_client,&QMQTT::Client::received,this,&MKCore::onReceived);
- m_client->connectToHost();
- }
- void MKCore::mqconnected()
- {
- printf("mqtt connected\n");
- }
- void MKCore::onSubscribed(const QString& topic)
- {
- printf("mqtt onSubscribed\n");
- getCommData(QString("MQTT=====:%1").arg(topic));
- }
- void MKCore::onReceived(const QMQTT::Message& message)
- {
- printf("mqtt onReceived\n");
- getCommData(QString("MQTTMESSAGE=====:%1").arg(QString::fromUtf8(message.payload())));
- }
- void MKCore::start(){
- if(!svr->listen(QHostAddress::Any,55334)){
- printf("55334 listen failed\n");
- exit(-1);
- }
- mkwaterserver->start();
- timer->start(1000);
- }
- void MKCore::timeout()
- {
- uint t = QDateTime::currentDateTime().toTime_t();
- dataProcessShm->processStatus[1].upTime[0].Enabled = 0x01;
- dataProcessShm->processStatus[1].upTime[0].t_time = t;
- }
- void MKCore::getCommData(QString data)
- {
- logThread->appendData(data);
- }
- void MKCore::repLog(quint16 idx, QDateTime t, QString data, bool dirflag)
- {
- //数据推送日志打印
- UN_REFERENCED_PARAMETER(idx);
- logThread->appendData(QString("[ %1 47.98.201.73 (rep) %2 ] %3")
- .arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
- .arg(dirflag?">>>":"<<<")
- .arg(data.replace('\n',"\\n").replace('\r',"\\r")));
- }
- void MKCore::wxchart(quint16 idx, QDateTime t, QString data, bool dirflag)
- {
- UN_REFERENCED_PARAMETER(idx);
- logThread->appendData(QString("[ %1 47.98.201.73 (wx) %2 ] %3")
- .arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
- .arg(dirflag?">>>":"<<<")
- .arg(data.replace('\n',"\\n").replace('\r',"\\r")));
- }
- void MKCore::SqlLog(QString log)
- {
- logThread->appendData(log);
- }
- void MKCore::getOnLine(QString deviceidx,bool flag, QDateTime t)
- {
- t = QDateTime::currentDateTime();
- if(flag)
- {
- for(int i=0;i<10240;i++){
- if(QString::compare(deviceidx,QString(mkList->sensors[i].Device_Code))==0){
- if(mkList->sensors[i].Enabled!=0x01)
- return;
- mkList->sensors[i].LastCommtime = t.toTime_t();
- if(mkList->sensors[i].Online_Flag!=0x01)
- {
- mkList->sensors[i].Online_Flag = 0x01;
- }
- dbThread->appendSql(QString("update sp_devices_status set devicestatus=0, true_status=0, statustime='%1', lastcommtime='%1' where deviceid='%2'")
- .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- }
- }
- }
- }
- void MKCore::getValue(QString deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t)
- {
- dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, data1, data2, data3, data4, data5) values (NULL, '%1', '%2', '%3', '%4', %5, %6, %7, '%8')")
- .arg(deviceidx).arg("mk_pressure").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(d1).arg(d2).arg(d3).arg(d4).arg(d5),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=0, data_time='%1', content='正常' where device_id='%2' and point_code=1").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=2").arg(d2).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=3").arg(d3).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=4").arg(d4).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- QStringList strArray = {"SHYT25100007","SHYT25100006","SHYT25100009","SHYT25100004","SHYT25100005","SHYT25100008","SHYT25100001","SHYT25100002","SHYT25100003"};
- if(strArray.contains(deviceidx)){
- QJsonObject jqhsdata;
- QJsonObject jqhsRTU;
- jqhsRTU.insert("provider", "Usky");
- jqhsRTU.insert("deviceType", "xiaofangshuiya");
- jqhsRTU.insert("dataType", "deviceInfo");
- jqhsRTU.insert("softVersion", "1.00.00");
- jqhsRTU.insert("hardVersion", "0.1");
- QJsonArray jajsonArray;
- QJsonObject jaobjRTU;
- for(int i=0;i<10240;i++){
- if(QString::compare(QString(mkList->sensors[i].Device_Code),deviceidx)==0){
- jaobjRTU.insert("sensorId", mkList->sensors[i].id);
- break;
- }
- }
- jaobjRTU.insert("desc", "");
- jaobjRTU.insert("status", 0);
- jaobjRTU.insert("pointValue", round(d4 * 10000) / 10000.0);
- jaobjRTU.insert("unit", "MPa");
- jaobjRTU.insert("lowThreshold", 0.07);
- jaobjRTU.insert("highThreshold", 1.2);
- jaobjRTU.insert("sendTime", QDateTime::currentDateTimeUtc().toSecsSinceEpoch());
- jajsonArray.append(jaobjRTU);
- jqhsRTU.insert("sensorList", jajsonArray);
- QString rep = QString("{\"mqttId\":\"a71c40bb-5b02-4741-881b-24449f699db9\",\"action\":\"transpush\",\"data\": %1}").arg(QString(QJsonDocument(jqhsRTU).toJson()));
- lhThread[lhcur]->appendData(rep);
- printf("lh rep:%s\n",rep.toUtf8().data());
- lhcur++;
- lhcur &= 0x0f;
- // QJsonObject mainJson; // 优化命名:jqhsdata -> mainJson(见名知义)
- // QJsonObject rtuJson; // 优化命名:jqhsRTU -> rtuJson
- // // 构建RTU基础信息(保留原始赋值逻辑)
- // rtuJson.insert("provider", PROVIDER);
- // rtuJson.insert("deviceType", DEVICE_TYPE);
- // rtuJson.insert("dataType", DATA_TYPE);
- // rtuJson.insert("softVersion", SOFT_VERSION);
- // rtuJson.insert("hardVersion", HARD_VERSION);
- // // 构建主JSON基础信息
- // mainJson.insert("mqttId", MQTT_ID);
- // mainJson.insert("action", ACTION_TYPE);
- // QJsonArray sensorArray; // 优化命名:jajsonArray -> sensorArray
- // QJsonObject sensorJson; // 优化命名:jaobjRTU -> sensorJson
- // // 2. 修复数组越界风险:用传感器实际数量替代固定10240
- // // 若 mkList->sensors 是 QList 类型:
- // for(int i=0;i<10240;i++){
- // if(QString::compare(QString(mkList->sensors[i].Device_Code),deviceidx)==0){
- // sensorJson.insert("sensorId", mkList->sensors[i].id);
- // break;
- // }
- // }
- // // 填充传感器数据(保留原始逻辑)
- // sensorJson.insert("desc", SENSOR_DESC);
- // sensorJson.insert("status", 0);
- // sensorJson.insert("pointValue", d4);
- // sensorJson.insert("unit", SENSOR_UNIT);
- // sensorJson.insert("lowThreshold", LOW_THRESHOLD);
- // sensorJson.insert("highThreshold", HIGH_THRESHOLD);
- // sensorJson.insert("sendTime", QDateTime::currentDateTimeUtc().toSecsSinceEpoch());
- // // 组装传感器数组
- // sensorArray.append(sensorJson);
- // rtuJson.insert("sensorList", sensorArray);
- // mainJson.insert("data", rtuJson);
- // // 3. 修复JSON打印问题:通过QJsonDocument转换后输出
- // QJsonDocument jsonDoc(mainJson);
- // QString debugJsonStr = jsonDoc.toJson(QJsonDocument::Indented); // 格式化输出,便于调试
- // qDebug() << "待发送JSON数据:\n" << debugJsonStr;
- // // 若坚持使用printf(需转换为C风格字符串)
- // printf("jqhsdata %s\n", debugJsonStr.toUtf8().constData());
- // // 4. 修复JSON转QByteArray问题:正确转换为HTTP请求所需数据
- // QByteArray requestData = debugJsonStr.toUtf8(); // 紧凑格式,减少传输体积
- // // 5. 修复内存泄漏:使用栈上QNetworkRequest,无需动态分配
- // QNetworkRequest request;
- // QUrl apiUrl(API_URL);
- // if (!apiUrl.isValid()) { // 增加URL有效性检查,提升健壮性
- // qCritical() << "接口URL无效:" << API_URL;
- // return;
- // }
- // request.setUrl(apiUrl);
- // request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=UTF-8");
- // request.setRawHeader("User-Agent", "QtNetwork/5.15.2"); // 必填
- // request.setRawHeader("Accept", "*/*");
- // request.setRawHeader("Connection", "keep-alive");
- // // 6. 发送POST请求,并处理响应和内存释放
- // QNetworkReply *reply = netAccessManager->post(request, requestData);
- // // 绑定finished信号,使用lambda表达式处理响应,自动释放reply内存
- // QObject::connect(reply, &QNetworkReply::finished, [=]() {
- // reply->deleteLater(); // 自动释放reply,避免内存泄漏
- // // 处理请求结果
- // if (reply->error() != QNetworkReply::NoError) {
- // // 打印错误信息,便于问题排查
- // qCritical() << "HTTP POST请求失败:" << reply->errorString() << "错误码:" << reply->error();
- // return;
- // }
- // // 读取并打印成功响应
- // QByteArray responseData = reply->readAll();
- // qInfo() << "HTTP POST请求成功,响应数据:" << responseData;
- // // 可选:解析响应JSON(增强功能性)
- // QJsonParseError jsonError;
- // QJsonDocument responseDoc = QJsonDocument::fromJson(responseData, &jsonError);
- // if (jsonError.error != QJsonParseError::NoError) {
- // qWarning() << "响应JSON解析失败:" << jsonError.errorString();
- // return;
- // }
- // qDebug() << "解析后的响应JSON:\n" << responseDoc.toJson(QJsonDocument::Indented);
- // });
- }
- }
- void MKCore::getCoverValue(QString deviceidx, QString iotId, int repackage, int sensor_status, int manhole_cover_position_state, int lean_angle, double battery_voltage,int temperature,long etime,int serviceId)
- {
- dbThread->appendSql(QString("insert into sp_iw%1 (id, device_id, iot_id, isRetrans, angleSensorStatus, tempSensorStatus, isRecover, openStatus, angle, rssi, voltage, temp, hum, rsrp, snr, service, addtime, notifytype, serviceId) values (NULL, '%1', '%2', '%3', '%4', %5, %6, %7, '%8', '%9', '%10', '%11', '%12', '%13', '%14', '%15', '%16', '%17', '%18')")
- .arg(deviceidx).arg(iotId).arg(repackage).arg(sensor_status).arg(0).arg(0).arg(manhole_cover_position_state).arg(lean_angle).arg(0).arg(battery_voltage).arg(temperature).arg(0).arg(0).arg(0).arg(0).arg(QDateTime::fromTime_t(etime).toString("yyyy-MM-dd HH:mm:ss")).arg(0).arg(serviceId),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=0, data_time='%1', content='正常' where device_id='%2' and point_code=1").arg(QDateTime::fromTime_t(etime).toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=2").arg(battery_voltage).arg(QDateTime::fromTime_t(etime).toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=3").arg(5).arg(QDateTime::fromTime_t(etime).toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- }
- void MKCore::getAlarm(QString deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t)
- {
- dbThread->appendAlarm(AlarmRep(deviceidx,
- QString("insert into sp_sj2017 (id, device_code, port, time, data1, data2, data3, data4, data5) values (NULL, '%1', '%2', '%3', '%4', %5, %6, %7, '%8')")
- .arg(deviceidx).arg("mk_pressure").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(d1).arg(d2).arg(d3).arg(d4).arg(d5),
- QString("%1").arg(note),
- t.toString("yyyy-MM-dd HH:mm:ss")),1);
- dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, data1, data2, data3, data4, data5) values (NULL, '%1', '%2', '%3', '%4', %5, %6, %7, '%8')")
- .arg(deviceidx).arg("mk_pressure").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(d1).arg(d2).arg(d3).arg(d4).arg(d5),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2', content='%3' where device_id='%4' and point_code=1")
- .arg(d1.at(2)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(note).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=2").arg(d2).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=3").arg(d3).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=4").arg(d4).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- }
- void MKCore::getCoverAlarm(QString deviceidx, long jEventTime, QString ip, int lean_angle, double battery_voltage, int manhole_cover_position_state, QJsonObject jPayload,int serviceId,QString iotId)
- {
- getCommData(QString("[ %1 =============%2] ").arg(deviceidx).arg("ceshiCover123"));
- if(serviceId==1001){
- dbThread->appendAlarm(AlarmRep(deviceidx,
- QString("insert into sp_iw2017 (id, device_code, time, address, device_status,angle,voltage,data1, data3) values (NULL, '%1', '%2', '%3', '%4', '%5', '%6', '%7', '%8')")
- .arg(deviceidx).arg(QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")).arg(ip).arg(manhole_cover_position_state).arg(lean_angle).arg(battery_voltage).arg(manhole_cover_position_state==0?"4":"1").arg(QString(QJsonDocument(jPayload).toJson(QJsonDocument::Compact))),
- QString("%1").arg(QString::fromUtf8(manhole_cover_position_state==0?"打开恢复":"打开告警")),
- QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")),1);
- dbThread->appendSql(QString("insert into sp_iw%1 (id, device_id, iot_id, isRetrans, angleSensorStatus, tempSensorStatus, isRecover, openStatus, angle, rssi, voltage, temp, hum, rsrp, snr, service, addtime, notifytype, serviceId) values (NULL, '%1', '%2', '%3', '%4', %5, %6, %7, '%8', '%9', '%10', '%11', '%12', '%13', '%14', '%15', '%16', '%17', '%18')")
- .arg(deviceidx).arg(iotId).arg(0).arg(0).arg(0).arg(0).arg(manhole_cover_position_state).arg(lean_angle).arg(0).arg(battery_voltage).arg(0).arg(0).arg(0).arg(0).arg(0).arg(QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")).arg(0).arg(serviceId),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2', content='%3' where device_id='%4' and point_code=1")
- .arg(manhole_cover_position_state==0?"4":"1").arg(QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")).arg(QString::fromUtf8(manhole_cover_position_state==0?"打开恢复":"打开告警")).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=2").arg(battery_voltage).arg(QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=3").arg(5).arg(QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- }else if (serviceId==1004) {
- dbThread->appendAlarm(AlarmRep(deviceidx,
- QString("insert into sp_iw2017 (id, device_code, time, address, device_status,angle,voltage,data1, data3) values (NULL, '%1', '%2', '%3', '%4', '%5', '%6', '%7', '%8')")
- .arg(deviceidx).arg(QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")).arg(ip).arg(manhole_cover_position_state==0?2:3).arg(0).arg(battery_voltage).arg(manhole_cover_position_state==0?"6":"7").arg(QString(QJsonDocument(jPayload).toJson(QJsonDocument::Compact))),
- QString("%1").arg(QString::fromUtf8(manhole_cover_position_state==0?"满溢恢复":"满溢告警")),
- QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")),1);
- dbThread->appendSql(QString("insert into sp_iw%1 (id, device_id, iot_id, isRetrans, angleSensorStatus, tempSensorStatus, isRecover, openStatus, angle, rssi, voltage, temp, hum, rsrp, snr, service, addtime, notifytype, serviceId) values (NULL, '%1', '%2', '%3', '%4', %5, %6, %7, '%8', '%9', '%10', '%11', '%12', '%13', '%14', '%15', '%16', '%17', '%18')")
- .arg(deviceidx).arg(iotId).arg(0).arg(0).arg(0).arg(0).arg(manhole_cover_position_state).arg(0).arg(0).arg(battery_voltage).arg(0).arg(0).arg(0).arg(0).arg(0).arg(QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")).arg(0).arg(serviceId),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2', content='%3' where device_id='%4' and point_code=1")
- .arg(manhole_cover_position_state==0?"4":"1").arg(QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")).arg(QString::fromUtf8(manhole_cover_position_state==0?"满溢恢复":"满溢告警")).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=2").arg(battery_voltage).arg(QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=3").arg(5).arg(QDateTime::fromTime_t(jEventTime).toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
- }
- }
- void MKCore::AlarmReport(QString addr, quint64 insertid, QString type, QString time)
- {
- UN_REFERENCED_PARAMETER(time);
- UN_REFERENCED_PARAMETER(type);
- QString phonelist = "";
- QString companyCode = "",eventCode = "",evt = "";
- QString deviceType= "",deviceName= "";//设备类型
- for(int i=0;i<10240;i++){
- if(QString::compare(QString(mkList->sensors[i].Device_Code),addr)==0){
- companyCode = QString(mkList->sensors[i].Company_Code);
- deviceType = QString(mkList->sensors[i].Device_Type);
- deviceName = QString(mkList->sensors[i].Device_Name);
- break;
- }
- }
- // QString rep2 = QString("{\"SubType\":2,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":0,\"CompanyCode\":\"%3\",\"evt_name\":\"%4\",\"evt\":0,\"alarm_time\":\"%5\"}")
- // .arg(addr).arg(insertid).arg(companyCode).arg(type).arg(time);
- // wssThread[repcur]->appendData(rep2);
- // repcur++
- // repcur &= 0x0f;
- if(companyCode.length()>0){
- for(int i=0;i<102400;i++){
- if(companyCode.compare(QString(sysConfShm->userInfo[i].CompanyCode))==0){
- QString phone = QString(sysConfShm->userInfo[i].CellPhone);
- if(phone.trimmed().length()>0){
- if(phonelist.length()==0)
- phonelist = phone;
- else
- phonelist.append(","+phone);
- }
- }
- }
- phonelist="17630065224";
- if(QString::compare(deviceType,"128")==0){
- if(phonelist.length()>0){
- if(QString::compare(type,"打开告警")==0){
- eventCode = "JG02";
- evt = "53";
- }else if(QString::compare(type,"打开恢复")==0){
- eventCode = "JG01";
- evt = "54";
- }else if(QString::compare(type,"满溢告警")==0){
- eventCode = "JG07";
- }else if(QString::compare(type,"满溢恢复")==0){
- eventCode = "JG06";
- }
- QString data1 = QString("device_code=%1&insert_id=%2&phone=%3&time=%4&evt_name=%5&evt=%6&bz=%7&user_from=water_form").arg(addr).arg(insertid).arg(phonelist).arg(time).arg(type).arg(eventCode).arg(deviceName)
- .replace(",","%2C").replace(":","%3A").replace(" ","+");
- wxThreads[2][wxcur&0x0f]->appendData(data1);//井盖告警微信推送
- wxThreads[3][wxcur&0x0f]->appendData(data1);//井盖告警语音推送
- wxcur++;
- wxcur &= 0x0f;
- QString rep = QString("{\"SubType\":128,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":false}").arg(addr).arg(insertid);
- repThread[repcur]->appendData(rep);
- QString rep2 = QString("{\"SubType\":128,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":0,\"CompanyCode\":\"%3\",\"evt_name\":\"%4\",\"evt\":\"%6\",\"EventCode\":\"%6\",\"alarm_time\":\"%5\"}")
- .arg(addr).arg(insertid).arg(companyCode).arg(type).arg(time).arg(evt);
- printf("rep2:%s\n",rep2.toUtf8().data());
- wssThread[repcur++]->appendData(rep2);
- repcur &= 0x0f;
- }
- }else {
- QString rep = QString("{\"SubType\":2,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":false}").arg(addr).arg(insertid);
- QString rep2 = QString("{\"SubType\":2,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":0,\"CompanyCode\":\"%3\",\"evt_name\":\"%4\",\"evt\":0,\"alarm_time\":\"%5\"}")
- .arg(addr).arg(insertid).arg(companyCode).arg(type).arg(time);
- repThread[repcur]->appendData(rep);//数据同步模块告警推送
- wssThread[repcur++]->appendData(rep2);
- repcur &= 0x0f;
- if(phonelist.length()>0){
- if(QString::compare(deviceType,"5")==0){
- QString data1 = QString("IEMI=%1&insert_id=%2&phone=%3&time=%4&evt_c=%5&user_from=water_form").arg(addr).arg(insertid).arg(phonelist).arg(time).arg(type)
- .replace(",","%2C").replace(":","%3A").replace(" ","+");
- wxThreads[0][wxcur&0x0f]->appendData(data1);//液位告警微信推送
- }else if(QString::compare(deviceType,"2")==0){
- QString data = QString("IEMI=%1&insert_id=%2&phone=%3&time=%4&evt_c=%5&user_from=water_form").arg(addr).arg(insertid).arg(phonelist).arg(time).arg(type)
- .replace(",","%2C").replace(":","%3A").replace(" ","+");
- wxThreads[1][wxcur&0x0f]->appendData(data);//水表告警微信推送
- }
- wxcur++;
- wxcur &= 0x0f;
- }
- }
- }
- }
- void MKCore::new_incomming(){
- QTcpSocket *so = svr->nextPendingConnection();
- connect(so,SIGNAL(readyRead()),this,SLOT(read_data()));
- }
- quint8 MKCore::hexstr_to_byte(QString dat)
- {
- quint8 tmp[2];
- QByteArray Dat = dat.toLower().toLatin1();
- quint8 temp;
- temp = Dat.at(0)&0xff;
- if((temp>=0x30)&&(temp<=0x39))
- tmp[0] = temp-0x30;
- else
- tmp[0] = temp-0x37;
- temp = Dat.at(1)&0xff;
- if((temp>=0x30)&&(temp<=0x39))
- tmp[1] = temp-0x30;
- else
- tmp[1] = temp-0x37;
- return static_cast<quint8>(((tmp[0]&0x0f)<<4)|(tmp[1]&0x0f));
- }
- void MKCore::checkDevice(QString deviceid)
- {
- if((DevIdx3>=0)&&(DevIdx3<10240))
- {
- if(QString::compare(deviceid,QString(mkList->sensors[DevIdx3].Device_Code))!=0)
- {
- DevIdx3 = -1;
- DeviceID3 = "";
- }
- }else{
- for(int i=0;i<10240;i++)
- {
- if(QString::compare(deviceid,QString(mkList->sensors[i].Device_Code))==0)
- {
- DevIdx3 = i;
- DeviceID3 = QString(mkList->sensors[i].Device_Code);
- break;
- }
- }
- }
- getCommData(QString("DevIdx3=====:%1").arg(DevIdx3));
- }
- void MKCore::check_cover_framedata(QJsonObject jPayload, QString deviceId, long etime, QString iotId, int serviceId)
- {
- int water_level_state=0,vib_freq=0,temperature=0,sensor_status=0,repackage=0,manhole_cover_position_state=0,lean_angle=0,installation_status=0,gas_type=0,gas_concentration=0;
- int sinr=0,rsrp=0,pci=0,ecl=0,cell_id=0;
- QString soft_ver = "",hardware_ver = "";
- double battery_voltage=0;
- if((!jPayload.value("water_level_state").isUndefined())&&(!jPayload.value("water_level_state").isNull())){
- if(jPayload.value("water_level_state").isString())
- water_level_state = jPayload.value("water_level_state").toString().toInt();
- else
- water_level_state = jPayload.value("water_level_state").toInt();
- }
- if((!jPayload.value("vib_freq").isUndefined())&&(!jPayload.value("vib_freq").isNull())){
- if(jPayload.value("vib_freq").isString())
- vib_freq = jPayload.value("vib_freq").toString().toInt();
- else
- vib_freq = jPayload.value("vib_freq").toInt();
- }
- if((!jPayload.value("temperature").isUndefined())&&(!jPayload.value("temperature").isNull())){
- if(jPayload.value("temperature").isString())
- temperature = jPayload.value("temperature").toString().toInt();
- else
- temperature = jPayload.value("temperature").toInt();
- }
- if((!jPayload.value("soft_ver").isUndefined())&&(!jPayload.value("soft_ver").isNull())){
- if(jPayload.value("soft_ver").isString())
- soft_ver = jPayload.value("soft_ver").toString();
- else
- soft_ver = QString("%1").arg(jPayload.value("soft_ver").toInt());
- }
- if((!jPayload.value("sensor_status").isUndefined())&&(!jPayload.value("sensor_status").isNull())){
- if(jPayload.value("sensor_status").isString())
- sensor_status = jPayload.value("sensor_status").toString().toInt();
- else
- sensor_status = jPayload.value("sensor_status").toInt();
- }
- if((!jPayload.value("repackage").isUndefined())&&(!jPayload.value("repackage").isNull())){
- if(jPayload.value("repackage").isString())
- repackage = jPayload.value("repackage").toString().toInt();
- else
- repackage = jPayload.value("repackage").toInt();
- }
- if((!jPayload.value("manhole_cover_position_state").isUndefined())&&(!jPayload.value("manhole_cover_position_state").isNull())){
- if(jPayload.value("manhole_cover_position_state").isString())
- manhole_cover_position_state = jPayload.value("manhole_cover_position_state").toString().toInt();
- else
- manhole_cover_position_state = jPayload.value("manhole_cover_position_state").toInt();
- }
- if((!jPayload.value("lean_angle").isUndefined())&&(!jPayload.value("lean_angle").isNull())){
- if(jPayload.value("lean_angle").isString())
- lean_angle = jPayload.value("lean_angle").toString().toInt();
- else
- lean_angle = jPayload.value("lean_angle").toInt();
- }
- if((!jPayload.value("installation_status").isUndefined())&&(!jPayload.value("installation_status").isNull())){
- if(jPayload.value("installation_status").isString())
- installation_status = jPayload.value("installation_status").toString().toInt();
- else
- installation_status = jPayload.value("installation_status").toInt();
- }
- if((!jPayload.value("hardware_ver").isUndefined())&&(!jPayload.value("hardware_ver").isNull())){
- if(jPayload.value("hardware_ver").isString())
- hardware_ver = jPayload.value("hardware_ver").toString();
- else
- hardware_ver = QString("%1").arg(jPayload.value("hardware_ver").toInt());
- }
- if((!jPayload.value("gas_type").isUndefined())&&(!jPayload.value("gas_type").isNull())){
- if(jPayload.value("gas_type").isString())
- gas_type = jPayload.value("gas_type").toString().toInt();
- else
- gas_type = jPayload.value("gas_type").toInt();
- }
- if((!jPayload.value("gas_concentration").isUndefined())&&(!jPayload.value("gas_concentration").isNull())){
- if(jPayload.value("gas_concentration").isString())
- gas_concentration = jPayload.value("gas_concentration").toString().toInt();
- else
- gas_concentration = jPayload.value("gas_concentration").toInt();
- }
- if((!jPayload.value("battery_voltage").isUndefined())&&(!jPayload.value("battery_voltage").isNull())){
- if(jPayload.value("battery_voltage").isString())
- battery_voltage = jPayload.value("battery_voltage").toString().toDouble();
- else
- battery_voltage = jPayload.value("battery_voltage").toDouble();
- }
- if((!jPayload.value("sinr").isUndefined())&&(!jPayload.value("sinr").isNull())){
- if(jPayload.value("sinr").isString())
- sinr = jPayload.value("sinr").toString().toInt();
- else
- sinr = jPayload.value("sinr").toInt();
- }
- if((!jPayload.value("rsrp").isUndefined())&&(!jPayload.value("rsrp").isNull())){
- if(jPayload.value("rsrp").isString())
- rsrp = jPayload.value("rsrp").toString().toInt();
- else
- rsrp = jPayload.value("rsrp").toInt();
- }
- if((!jPayload.value("pci").isUndefined())&&(!jPayload.value("pci").isNull())){
- if(jPayload.value("pci").isString())
- pci = jPayload.value("pci").toString().toInt();
- else
- pci = jPayload.value("pci").toInt();
- }
- if((!jPayload.value("ecl").isUndefined())&&(!jPayload.value("ecl").isNull())){
- if(jPayload.value("ecl").isString())
- ecl = jPayload.value("ecl").toString().toInt();
- else
- ecl = jPayload.value("ecl").toInt();
- }
- if((!jPayload.value("cell_id").isUndefined())&&(!jPayload.value("cell_id").isNull())){
- if(jPayload.value("cell_id").isString())
- cell_id = jPayload.value("cell_id").toString().toInt();
- else
- cell_id = jPayload.value("cell_id").toInt();
- }
- if(serviceId==1){
- getCoverValue(deviceId,iotId,repackage,sensor_status, manhole_cover_position_state,lean_angle,battery_voltage,temperature,etime,serviceId);
- QJsonObject hsData1,hsData,hsData21,hsData20;
- QJsonArray flucDatas,flucDatas1,flucDatas20,flucDatas21;
- QJsonObject hsData2,hsData3,hsData4,hsData5,hsData6;
- for(int i=0;i<10240;i++){
- if(QString::compare(QString(mkList->sensors[i].Device_Code),deviceId)==0){
- hsData1.insert("devId", deviceId);
- hsData1.insert("connType", "N");
- hsData1.insert("deviceName", mkList->sensors[i].Device_Name);
- hsData2.insert("property", "电量");
- hsData2.insert("serial", "12801");
- hsData2.insert("value", (QString::number(battery_voltage,'f',4)).toDouble());
- hsData3.insert("property", "信号");
- hsData3.insert("serial", "12802");
- hsData3.insert("value", 5);
- hsData4.insert("property", "液位");
- hsData4.insert("serial", "12803");
- hsData4.insert("value", 0);
- hsData5.insert("property", "井盖状态");
- hsData5.insert("serial", "12804");
- hsData5.insert("value", 0);
- hsData6.insert("property", "角度");
- hsData6.insert("serial", "12805");
- hsData6.insert("value", lean_angle);
- flucDatas1.append(hsData2);
- flucDatas1.append(hsData3);
- flucDatas1.append(hsData4);
- flucDatas1.append(hsData5);
- flucDatas1.append(hsData6);
- hsData.insert("dp", flucDatas1);
- hsData.insert("deviceName", mkList->sensors[i].Device_Name);
- QString dataTimeStamp1=QString("%1").arg(etime);
- hsData.insert("timeStamp", dataTimeStamp1);
- hsData.insert("deviceType", mkList->sensors[i].Device_Type);
- hsData.insert("deviceModel", "AZ-M90118");
- hsData.insert("devId", deviceId);
- flucDatas.append(hsData);
- hsData1.insert("devs", flucDatas);
- hsData1.insert("type", "INFO");
- hsData1.insert("timeStamp", dataTimeStamp1);
- QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- QString companyCode = "";
- QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(deviceId);
- m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
- if(mqttinfoIdx>9999)
- mqttinfoIdx = 1;
- }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(deviceId);
- m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
- if(mqttinfoIdx>9999)
- mqttinfoIdx = 1;
- }
- break;
- }
- }
- }else if(serviceId==2){
- dbThread->appendSql(QString::fromUtf8("update sp_iw%1 set rssi='%2', snr='%3' ORDER BY id DESC LIMIT 1").arg(deviceId).arg(rsrp).arg(sinr),1);
- }
- }
- void MKCore::check_framedata(QString data, QString jDevicecode, QString ip)
- {
- QString table = "";
- bool judge = false;
- int len = data.length()/2;
- QByteArray Dat = QByteArray(len,0x00);
- for(int i=0;i<len;i++){
- Dat[i] = static_cast<char>(hexstr_to_byte(data.mid(i*2,2))&0xff);
- }
- if(((Dat[0]&0xff)==0xa5)&&((Dat[len-1]&0xff)==0xaa)&&((Dat[len-2]&0xff)==0x55)&&((Dat[1]&0xff)==0x5a)){
- getCommData(QString("NBdata3=====:%1")
- .arg(data));
- // QDateTime stime = QDateTime::fromTime_t(static_cast<uint>(((Dat[2]&0x000000ff)<<24)|((Dat[3]&0x000000ff)<<16)|((Dat[4]&0x000000ff)<<8)|(Dat[5]&0x000000ff)));
- quint16 bodyLen = static_cast<quint16>(((Dat[3]&0x00ff)<<8)|(Dat[4]&0x00ff));
- table.append( QString("bodyLen:%1,").arg(bodyLen));
- QString device_code = "";
- for(int i=5;i<17;i++){
- device_code.append( QString("%1").arg(Dat[i]&0xff,2,16,QLatin1Char('0')));
- }
- table.append( QString("device_code:%1,").arg(device_code));
- int batteryLevel = 0;
- batteryLevel = (Dat[17] & 0x1F) * 5;
- table.append( QString("batteryLevel:%1,").arg(batteryLevel));
- if((Dat[17] & 0xE0)==0x00){
- table.append( QString("供电状态:%1,").arg("供电异常"));
- }else if((Dat[17] & 0x80)==0x00){
- table.append( QString("供电状态:%1,").arg("电池供电"));
- }else if((Dat[17] & 0x80)==0x80){
- table.append( QString("供电状态:%1,").arg("外部供电"));
- }else{
- table.append( QString("供电状态:%1,").arg("双供电"));
- }
- int signal = (int)Dat[18];
- table.append( QString("signal:%1,").arg(signal));
- //记录时间间隔
- quint16 recordGap = static_cast<quint16>(((Dat[19]&0x00ff)<<8)|(Dat[20]&0x00ff));
- table.append( QString("recordGap:%1,").arg(recordGap));
- //记录条数
- quint16 recordSize = static_cast<quint16>(((Dat[21]&0x00ff)<<8)|(Dat[22]&0x00ff));
- table.append( QString("recordSize:%1,").arg(recordSize));
- QString sb[] = {"压力表0.1kPa", "压力表0.001MPa", "压力表0.01BAR",
- "压力表0.01PSI", "压力表1Pa", "压力表1mBAR", "压力表0.01Kgf/cm²",
- "压力表0.01mmHg", "液位表0.01m", "液位表0.1cm", "液位表1mm", "温度表0.1℃",
- "温度表0.1℉", "湿度表0.1%RH", "电流表0.1A", "电压表0.1V",
- "差压表(静压0.01MPa、差压0.01kPa)", "温压表(压力0.001MPa、温度0.1℃)",
- "温湿度表(温度0.1℃、湿度0.1%RH)", "振动", "水浸","差压表(差压1kPa、静压0.001MPa)","未知23","未知24","未知25","未知26",
- "未知27","未知28","未知29","未知30","未知31","未知32","未知33","未知34","未知35","未知36","未知37","未知38","未知39","未知40","井盖液位"};
- double sb1[] = { 0.1, 0.001, 0.01, 0.01, 1, 1, 0.01, 0.01, 0.01,
- 0.1, 1, 0.1, 0.1, 0.1, 0.01, 0.01, 0.01, 0.001, 0.1, 1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.001,1,1,1,1,1,0.01 };
- QString deviceTypeStr = QString("%1").arg(Dat[23]&0xff,2,10,QChar('0'));
- int deviceType = deviceTypeStr.toInt();
- QString deviceTypeByte = QString("%1").arg(deviceType,8,2,QChar('0'));
- table.append( QString("deviceType:%1,").arg(sb[deviceType]));
- int alarmLower = static_cast<quint16>(((Dat[25]&0x00ff)<<8)|(Dat[26]&0x00ff));
- int alarmLower1=alarmLower;
- table.append( QString("alarmLower:%1,").arg(alarmLower1*sb1[deviceType]));
- quint16 alarmUpper = static_cast<quint16>(((Dat[27]&0x00ff)<<8)|(Dat[28]&0x00ff));
- int alarmUpper1=alarmUpper;
- table.append( QString("alarmUpper:%1,").arg(alarmUpper1*sb1[deviceType]));
- quint16 dataNow = static_cast<quint16>(((Dat[29]&0x00ff)<<8)|(Dat[30]&0x00ff));
- double dataNow1=dataNow*sb1[deviceType];
- table.append( QString("dataNow:%1,").arg(dataNow1));
- QDateTime dataTime = QDateTime::fromTime_t(static_cast<uint>(((Dat[31]&0x000000ff)<<24)|((Dat[32]&0x000000ff)<<16)|((Dat[33]&0x000000ff)<<8)|(Dat[34]&0x000000ff)));
- time_t dataTimeStamp = dataTime.toTime_t();
- time_t myt=time(NULL);
- time_t timeDiff = myt-dataTimeStamp;
- if(timeDiff>30){
- dataTime=QDateTime::fromTime_t(myt);
- dataTimeStamp=myt;
- }
- table.append( QString("dataTime:%1,").arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")));
- QString dataOver = "";
- for(int i=35;i<(bodyLen-4);i++){
- dataOver.append( QString("%1").arg(Dat[i]&0xff,2,16,QLatin1Char('0')));
- }
- table.append( QString("dataOver:%1,").arg(dataOver));
- QString alarm_state = "";
- QString sensor_state = "";
- QString battery_alarm = "";
- // 报警状态
- quint16 deviceStatus = static_cast<quint16>((Dat[24]&0xff));
- QString deviceStatuser = QString::number(deviceStatus,2);
- QString deviceStatuserStr;
- int len = 8-deviceStatuser.length();
- for(int i=0;i<len;i++){
- deviceStatuser=QString("%1%2").arg(0).arg(deviceStatuser);
- }
- QJsonObject heartBeatData,alarmData;
- if(deviceType==40){
- int str = deviceStatuser.mid(7,1).toInt();
- int str1 = deviceStatuser.mid(6,1).toInt();
- int str2 = deviceStatuser.mid(5,1).toInt();
- int str3 = deviceStatuser.mid(4,1).toInt();
- int str4 = deviceStatuser.mid(3,1).toInt();
- int str5 = deviceStatuser.mid(2,1).toInt();
- int str6 = deviceStatuser.mid(1,1).toInt();
- int str7 = deviceStatuser.mid(0,1).toInt();
- QString bjstr = "";
- QJsonObject hsData1,hsData,hsData21,hsData20;
- QJsonArray flucDatas,flucDatas1,flucDatas20,flucDatas21;
- for(int i=0;i<10240;i++){
- if(QString::compare(QString(mkList->sensors[i].Device_Code),jDevicecode)==0){
- hsData1.insert("devId", jDevicecode);
- hsData1.insert("connType", "N");
- hsData1.insert("deviceName", mkList->sensors[i].Device_Name);
- if(deviceStatus==0){
- QJsonObject hsData2,hsData3,hsData4,hsData5,hsData6;
- hsData2.insert("property", "电量");
- hsData2.insert("serial", "12801");
- hsData2.insert("value", batteryLevel);
- hsData3.insert("property", "信号");
- hsData3.insert("serial", "12802");
- hsData3.insert("value", signal);
- hsData4.insert("property", "液位");
- hsData4.insert("serial", "12803");
- hsData4.insert("value", dataNow1);
- hsData5.insert("property", "井盖状态");
- hsData5.insert("serial", "12804");
- hsData5.insert("value", 0);
- hsData6.insert("property", "角度");
- hsData6.insert("serial", "12805");
- hsData6.insert("value", "");
- flucDatas1.append(hsData2);
- flucDatas1.append(hsData3);
- flucDatas1.append(hsData4);
- flucDatas1.append(hsData5);
- flucDatas1.append(hsData6);
- hsData.insert("dp", flucDatas1);
- hsData.insert("deviceName", mkList->sensors[i].Device_Name);
- QString dataTimeStamp1=QString("%1").arg(dataTimeStamp);
- hsData.insert("timeStamp", dataTimeStamp1);
- hsData.insert("deviceType", mkList->sensors[i].Device_Type);
- hsData.insert("deviceModel", "MEOKON");
- hsData.insert("devId", jDevicecode);
- flucDatas.append(hsData);
- hsData1.insert("devs", flucDatas);
- hsData1.insert("type", "INFO");
- hsData1.insert("timeStamp", dataTimeStamp1);
- QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- QString companyCode = "";
- QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
- if(mqttinfoIdx>9999)
- mqttinfoIdx = 1;
- }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
- if(mqttinfoIdx>9999)
- mqttinfoIdx = 1;
- }
- QJsonObject hsData22,hsData23,hsData24,hsData25;
- hsData22.insert("property", "电池");
- hsData22.insert("serial", "65");
- hsData22.insert("value", batteryLevel);
- hsData23.insert("property", "信号");
- hsData23.insert("serial", "66");
- hsData23.insert("value", signal);
- hsData24.insert("property", "液位");
- hsData24.insert("serial", "67");
- hsData24.insert("value", dataNow1);
- hsData25.insert("property", "井盖状态");
- hsData25.insert("serial", "68");
- hsData25.insert("value", 0);
- flucDatas21.append(hsData22);
- flucDatas21.append(hsData23);
- flucDatas21.append(hsData24);
- flucDatas21.append(hsData25);
- hsData20.insert("dp", flucDatas21);
- hsData20.insert("deviceName", mkList->sensors[i].Device_Name);
- QString dataTimeStamp21=QString("%1").arg(dataTimeStamp);
- hsData20.insert("timeStamp", dataTimeStamp21);
- hsData20.insert("deviceType", 22);
- hsData20.insert("deviceModel", "MEOKON");
- hsData20.insert("devId", jDevicecode);
- flucDatas20.append(hsData20);
- hsData21.insert("devs", flucDatas20);
- hsData21.insert("type", "INFO");
- hsData21.insert("timeStamp", dataTimeStamp21);
- QString data2Mqtt = QString(QJsonDocument(hsData21).toJson());
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- QString companyCode = "";
- QString infoTopic = QString("/usky/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,data2Mqtt.toUtf8()));
- if(mqttinfoIdx>9999)
- mqttinfoIdx = 1;
- }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- QString infoTopic = QString("/usky/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,data2Mqtt.toUtf8()));
- if(mqttinfoIdx>9999)
- mqttinfoIdx = 1;
- }
- bjstr += "正常 ";
- alarm_state = "正常";
- judge = true;
- getValue(jDevicecode,"MC0",batteryLevel,signal,dataNow1,ip,dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }else{
- if(str==1){
- QJsonObject hsData2;
- hsData2.insert("property", "低水位");
- hsData2.insert("serial", "12821");
- hsData2.insert("value", dataNow1);
- hsData2.insert("status", "0");
- hsData2.insert("type", "MC1");
- hsData2.insert("battery", batteryLevel);
- hsData2.insert("signal", signal);
- hsData2.insert("angle", "");
- flucDatas1.append(hsData2);
- bjstr += "下限报警 ";
- alarm_state = "下限报警";
- judge = true;
- getAlarm(jDevicecode,"MC1",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("低水位"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str1==1){
- QJsonObject hsData2;
- hsData2.insert("property", "高水位");
- hsData2.insert("serial", "12822");
- hsData2.insert("value", dataNow1);
- hsData2.insert("status", "0");
- hsData2.insert("type", "MC2");
- hsData2.insert("battery", batteryLevel);
- hsData2.insert("signal", signal);
- hsData2.insert("angle", "");
- flucDatas1.append(hsData2);
- bjstr += "上限报警 ";
- alarm_state = "上限报警";
- judge = true;
- getAlarm(jDevicecode,"MC2",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("高水位"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str2==1){
- QJsonObject hsData2;
- hsData2.insert("property", "电量报警");
- hsData2.insert("serial", "12823");
- hsData2.insert("value", batteryLevel);
- hsData2.insert("status", "0");
- hsData2.insert("type", "MC3");
- hsData2.insert("battery", batteryLevel);
- hsData2.insert("signal", signal);
- hsData2.insert("angle", "");
- flucDatas1.append(hsData2);
- bjstr += "电量报警 ";
- alarm_state = "电量报警";
- judge = true;
- getAlarm(jDevicecode,"MC3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("电量报警"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str3==1){
- QJsonObject hsData2;
- hsData2.insert("property", "传感器异常");
- hsData2.insert("serial", "12824");
- hsData2.insert("value", "1");
- hsData2.insert("status", "0");
- hsData2.insert("type", "MC3");
- hsData2.insert("battery", batteryLevel);
- hsData2.insert("signal", signal);
- hsData2.insert("angle", "");
- flucDatas1.append(hsData2);
- bjstr += "传感器异常 ";
- alarm_state = "传感器异常";
- judge = true;
- getAlarm(jDevicecode,"MC3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("传感器异常"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str7==1){
- QJsonObject hsData2;
- hsData2.insert("property", "井盖开启");
- hsData2.insert("serial", "12825");
- hsData2.insert("value", "1");
- hsData2.insert("status", "0");
- hsData2.insert("type", "MC4");
- hsData2.insert("battery", batteryLevel);
- hsData2.insert("signal", signal);
- hsData2.insert("angle", "");
- flucDatas1.append(hsData2);
- bjstr += "井盖开启 ";
- alarm_state = "井盖开启";
- judge = true;
- getAlarm(jDevicecode,"MC4",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("井盖开启"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str4==1){
- bjstr += "网关连接异常 ";
- alarm_state = "网关连接异常";
- judge = true;
- getAlarm(jDevicecode,"MC5",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("网关连接异常"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str5==1){
- bjstr += "第二传感器下限报警 ";
- alarm_state = "第二传感器下限报警";
- judge = true;
- getAlarm(jDevicecode,"MC6",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("第二传感器下限报警"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str6==1){
- bjstr += "第二传感器上限报警 ";
- alarm_state = "第二传感器上限报警";
- judge = true;
- getAlarm(jDevicecode,"MC7",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("第二传感器上限报警"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- hsData.insert("dp", flucDatas1);
- hsData.insert("deviceName", mkList->sensors[i].Device_Name);
- QString dataTimeStamp1=QString("%1").arg(dataTimeStamp);
- hsData.insert("timeStamp", dataTimeStamp1);
- hsData.insert("deviceType", mkList->sensors[i].Device_Type);
- hsData.insert("deviceModel", "MEOKON");
- hsData.insert("devId", jDevicecode);
- flucDatas.append(hsData);
- hsData1.insert("alarams", flucDatas);
- hsData1.insert("type", "ALARM");
- hsData1.insert("timeStamp", dataTimeStamp1);
- // if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- // QString topic = QString("/usky/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- // m_client->subscribe(topic,0);
- // if(mqttIdx>9999)
- // mqttIdx = 1;
- // }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- // m_client->connectToHost();
- // QString topic = QString("/usky/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- // m_client->subscribe(topic,0);
- // if(mqttIdx>9999)
- // mqttIdx = 1;
- // }
- QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
- if(mqttalarmIdx>9999)
- mqttalarmIdx = 1;
- }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
- if(mqttalarmIdx>9999)
- mqttalarmIdx = 1;
- }
- if(str==1){
- QJsonObject hsData2;
- hsData2.insert("property", "液位下限报警");
- hsData2.insert("serial", 3);
- hsData2.insert("value", dataNow1);
- hsData2.insert("status", 0);
- flucDatas21.append(hsData2);
- bjstr += "下限报警 ";
- alarm_state = "下限报警";
- judge = true;
- getAlarm(jDevicecode,"MC1",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("低水位"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str1==1){
- QJsonObject hsData2;
- hsData2.insert("property", "液位上限报警");
- hsData2.insert("serial", 3);
- hsData2.insert("value", dataNow1);
- hsData2.insert("status", 0);
- flucDatas21.append(hsData2);
- bjstr += "上限报警 ";
- alarm_state = "上限报警";
- judge = true;
- getAlarm(jDevicecode,"MC2",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("高水位"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str2==1){
- QJsonObject hsData2;
- hsData2.insert("property", "电池电量报警");
- hsData2.insert("serial", 4);
- hsData2.insert("value", batteryLevel);
- hsData2.insert("status", 0);
- flucDatas21.append(hsData2);
- bjstr += "电量报警 ";
- alarm_state = "电量报警";
- judge = true;
- getAlarm(jDevicecode,"MC3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("电量报警"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str3==1){
- QJsonObject hsData2;
- hsData2.insert("property", "传感器异常");
- hsData2.insert("serial", 32);
- hsData2.insert("value", 1);
- hsData2.insert("status", 0);
- flucDatas21.append(hsData2);
- bjstr += "传感器异常 ";
- alarm_state = "传感器异常";
- judge = true;
- getAlarm(jDevicecode,"MC3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("传感器异常"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str7==1){
- QJsonObject hsData2;
- hsData2.insert("property", "井盖状态");
- hsData2.insert("serial", 2);
- hsData2.insert("value", 1);
- hsData2.insert("status", 0);
- flucDatas21.append(hsData2);
- bjstr += "井盖开启 ";
- alarm_state = "井盖开启";
- judge = true;
- getAlarm(jDevicecode,"MC4",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("井盖开启"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str4==1){
- bjstr += "网关连接异常 ";
- alarm_state = "网关连接异常";
- judge = true;
- getAlarm(jDevicecode,"MC5",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("网关连接异常"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str5==1){
- bjstr += "第二传感器下限报警 ";
- alarm_state = "第二传感器下限报警";
- judge = true;
- getAlarm(jDevicecode,"MC6",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("第二传感器下限报警"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- if(str6==1){
- bjstr += "第二传感器上限报警 ";
- alarm_state = "第二传感器上限报警";
- judge = true;
- getAlarm(jDevicecode,"MC7",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("第二传感器上限报警"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- hsData20.insert("dp", flucDatas21);
- hsData20.insert("deviceName", mkList->sensors[i].Device_Name);
- QString dataTimeStamp21=QString("%1").arg(dataTimeStamp);
- hsData20.insert("timeStamp", dataTimeStamp21);
- hsData20.insert("deviceType", 22);
- hsData20.insert("deviceModel", "MEOKON");
- hsData20.insert("devId", jDevicecode);
- flucDatas20.append(hsData20);
- hsData21.insert("alarms", flucDatas20);
- hsData21.insert("type", "ALARM");
- hsData21.insert("timeStamp", dataTimeStamp21);
- QString data2Mqtt = QString(QJsonDocument(hsData21).toJson());
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- QString topic = QString("/usky/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,data2Mqtt.toUtf8()));
- if(mqttalarmIdx>9999)
- mqttalarmIdx = 1;
- }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- QString topic = QString("/usky/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,data2Mqtt.toUtf8()));
- if(mqttalarmIdx>9999)
- mqttalarmIdx = 1;
- }
- }
- break;
- }
- }
- }else{
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(Dat[24]);
- QString portString1(Dat1.toHex());
- table.append( QString("deviceStatus:%1,").arg(portString1));
- QJsonObject hsData1,hsData;
- QJsonArray flucDatas,flucDatas1;
- for(int i=0;i<10240;i++){
- if(QString::compare(QString(mkList->sensors[i].Device_Code),jDevicecode)==0){
- hsData1.insert("devId", jDevicecode);
- hsData1.insert("connType", "N");
- hsData1.insert("deviceName", mkList->sensors[i].Device_Name);
- QString bjstr = "";
- if (deviceStatus == 0) {
- QJsonObject hsData2,hsData3,hsData4,hsData5;
- bjstr += "正常 ";
- alarm_state = "状态正常";
- getCommData(QString("NBtable18=====:%1++++++++++++++++++%2")
- .arg("table").arg(deviceType));
- if(deviceType == 1 || deviceType == 34){
- getValue(jDevicecode,"WP0",batteryLevel,signal,dataNow1,ip,dataTime);
- hsData2.insert("property", "电量");
- hsData2.insert("serial", "201");
- hsData2.insert("value", batteryLevel);
- hsData3.insert("property", "信号");
- hsData3.insert("serial", "202");
- hsData3.insert("value", signal);
- hsData4.insert("property", "水压");
- hsData4.insert("serial", "203");
- hsData4.insert("value", dataNow1);
- hsData5.insert("property", "状态");
- hsData5.insert("serial", "204");
- hsData5.insert("value", "WP0");
- getOnLine(jDevicecode,true,dataTime);
- }else if (deviceType == 8){
- getCommData(QString("NBtable8=====:%1++++++++++++++++++%2")
- .arg("table").arg(deviceType));
- getValue(jDevicecode,"LL0",batteryLevel,signal,dataNow1,ip,dataTime);
- hsData2.insert("property", "电量");
- hsData2.insert("serial", "501");
- hsData2.insert("value", batteryLevel);
- hsData3.insert("property", "信号");
- hsData3.insert("serial", "502");
- hsData3.insert("value", signal);
- hsData4.insert("property", "水位");
- hsData4.insert("serial", "503");
- hsData4.insert("value", dataNow1);
- hsData5.insert("property", "状态");
- hsData5.insert("serial", "504");
- hsData5.insert("value", "LL0");
- getOnLine(jDevicecode,true,dataTime);
- }
- flucDatas1.append(hsData2);
- flucDatas1.append(hsData3);
- flucDatas1.append(hsData4);
- flucDatas1.append(hsData5);
- hsData.insert("dp", flucDatas1);
- hsData.insert("deviceName", mkList->sensors[i].Device_Name);
- QString dataTimeStamp1=QString("%1").arg(dataTimeStamp);
- hsData.insert("timeStamp", dataTimeStamp1);
- hsData.insert("deviceType", mkList->sensors[i].Device_Type);
- hsData.insert("deviceModel", "");
- hsData.insert("devId", jDevicecode);
- flucDatas.append(hsData);
- hsData1.insert("devs", flucDatas);
- hsData1.insert("type", "INFO");
- hsData1.insert("timeStamp", dataTimeStamp1);
- QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- QString companyCode = "";
- QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
- if(mqttinfoIdx>9999)
- mqttinfoIdx = 1;
- }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- QString infoTopic = QString("/usky/ytDP0008/%1/%2/info").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,dataMqtt.toUtf8()));
- if(mqttinfoIdx>9999)
- mqttinfoIdx = 1;
- }
- }else{
- if ((Dat[24] & 0x01) == 0x01) {
- bjstr += "下限报警 ";
- alarm_state = "下限报警";
- judge = true;
- if(deviceType==1 || deviceType == 34){
- QJsonObject hsData2;
- hsData2.insert("property", "低压");
- hsData2.insert("serial", "221");
- hsData2.insert("value", dataNow1);
- hsData2.insert("status", "0");
- hsData2.insert("type", "WP1");
- hsData2.insert("battery", batteryLevel);
- hsData2.insert("signal", signal);
- flucDatas1.append(hsData2);
- getAlarm(jDevicecode,"WP1",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("低压"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }else if (deviceType==8){
- QJsonObject hsData2;
- hsData2.insert("property", "低水位");
- hsData2.insert("serial", "521");
- hsData2.insert("value", dataNow1);
- hsData2.insert("status", "0");
- hsData2.insert("type", "LL1");
- hsData2.insert("battery", batteryLevel);
- hsData2.insert("signal", signal);
- flucDatas1.append(hsData2);
- getAlarm(jDevicecode,"LL1",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("低水位"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- } else if ((Dat[24] & 0x02) == 0x02) {
- bjstr += "上限报警 ";
- alarm_state = "上限报警";
- judge = true;
- if(deviceType==1 || deviceType == 34){
- QJsonObject hsData2;
- hsData2.insert("property", "高压");
- hsData2.insert("serial", "222");
- hsData2.insert("value", dataNow1);
- hsData2.insert("status", "0");
- hsData2.insert("type", "WP2");
- hsData2.insert("battery", batteryLevel);
- hsData2.insert("signal", signal);
- flucDatas1.append(hsData2);
- getAlarm(jDevicecode,"WP2",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("高压"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }else if (deviceType==8){
- QJsonObject hsData2;
- hsData2.insert("property", "高水位");
- hsData2.insert("serial", "522");
- hsData2.insert("value", dataNow1);
- hsData2.insert("status", "0");
- hsData2.insert("type", "LL2");
- hsData2.insert("battery", batteryLevel);
- hsData2.insert("signal", signal);
- flucDatas1.append(hsData2);
- getAlarm(jDevicecode,"LL2",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("高水位"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- } else if ((Dat[24] & 0x03) == 0x00) {
- alarm_state = "状态正常";
- }
- if ((Dat[24] & 0x04) == 0x04) {
- bjstr += "电量报警 ";
- battery_alarm = "电量报警";
- judge = true;
- } else if ((Dat[24] & 0x04) == 0x00) {
- battery_alarm = "状态正常";
- }
- if ((Dat[24] & 0x08) == 0x08) {
- bjstr += "传感器异常";
- sensor_state = "传感器异常";
- if(deviceType==1 || deviceType == 34){
- QJsonObject hsData2;
- hsData2.insert("property", "故障");
- hsData2.insert("serial", "223");
- hsData2.insert("value", dataNow1);
- hsData2.insert("status", "0");
- hsData2.insert("type", "WP3");
- hsData2.insert("battery", batteryLevel);
- hsData2.insert("signal", signal);
- flucDatas1.append(hsData2);
- getAlarm(jDevicecode,"WP3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("故障"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }else if (deviceType==8){
- QJsonObject hsData2;
- hsData2.insert("property", "故障");
- hsData2.insert("serial", "523");
- hsData2.insert("value", dataNow1);
- hsData2.insert("status", "0");
- hsData2.insert("type", "LL3");
- hsData2.insert("battery", batteryLevel);
- hsData2.insert("signal", signal);
- flucDatas1.append(hsData2);
- getAlarm(jDevicecode,"LL3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("故障"),dataTime);
- getOnLine(jDevicecode,true,dataTime);
- }
- } else if ((Dat[24] & 0x08) == 0x00) {
- sensor_state = "状态正常";
- }
- if ((Dat[24] & 0x10) == 0x10) {
- bjstr += "服务器异常 ";
- }
- table.append( QString("bjstr:%1,").arg(bjstr));
- hsData.insert("dp", flucDatas1);
- hsData.insert("deviceName", mkList->sensors[i].Device_Name);
- QString dataTimeStamp1=QString("%1").arg(dataTimeStamp);
- hsData.insert("timeStamp", dataTimeStamp1);
- hsData.insert("deviceType", mkList->sensors[i].Device_Type);
- hsData.insert("deviceModel", "");
- hsData.insert("devId", jDevicecode);
- flucDatas.append(hsData);
- hsData1.insert("alarams", flucDatas);
- hsData1.insert("type", "ALARM");
- hsData1.insert("timeStamp", dataTimeStamp1);
- QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
- if(mqttalarmIdx>9999)
- mqttalarmIdx = 1;
- }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
- if(mqttalarmIdx>9999)
- mqttalarmIdx = 1;
- }
- }
- break;
- }
- }
- }
- getCommData(QString("NBtable=====:%1++++++++++++++++++%2----------%3========%4")
- .arg(table).arg(dataTimeStamp).arg(myt).arg(deviceStatuser));
- }
- }
- void MKCore::check_smokedata(QString data, QString ip){
- QJsonParseError json_error;
- QJsonObject jPayload;
- QString productId="",jAPPdata="",jDevicecode="",deviceId="";
- int serviceId=0;
- long jEventTime=0;
- QJsonDocument jsonDoc(QJsonDocument::fromJson(data.toUtf8(),&json_error));
- if(json_error.error==QJsonParseError::NoError){
- QJsonObject root = jsonDoc.object();
- if((!root.value("payload").isUndefined())&&(!root.value("payload").isNull())&&(root.value("payload").isObject())){
- jPayload = root.value("payload").toObject();
- if((!root.value("productId").isUndefined())&&(!root.value("productId").isNull())&&(root.value("productId").isString())){
- productId = root.value("productId").toString();
- }
- if((!root.value("deviceId").isUndefined())&&(!root.value("deviceId").isNull())&&(root.value("deviceId").isString())){
- deviceId = root.value("deviceId").toString();
- }
- if((!root.value("serviceId").isUndefined())&&(!root.value("serviceId").isNull())){
- if(root.value("serviceId").isString())
- serviceId = root.value("serviceId").toString().toInt();
- else
- serviceId = root.value("serviceId").toInt();
- }
- // if((!root.value("timestamp").isUndefined())&&(!root.value("timestamp").isNull())&&(root.value("timestamp").isString()))
- // jEventTime = QString(root.value("timestamp").toInt()/1000);
- if((!root.value("timestamp").isUndefined())&&(!root.value("timestamp").isNull())){
- if(root.value("timestamp").isString()){
- jEventTime = root.value("timestamp").toString().toLongLong()/1000;
- }else{
- jEventTime = QString::number(root.value("timestamp").toDouble(),'f',0).toLongLong()/1000;
- }
- }
- if((!root.value("IMEI").isUndefined())&&(!root.value("IMEI").isNull())&&(root.value("IMEI").isString()))
- jDevicecode = root.value("IMEI").toString();
- if(QString::compare(productId,"10081217")==0){
- if((!jPayload.value("APPdata").isUndefined())&&(!jPayload.value("APPdata").isNull())&&(jPayload.value("APPdata").isString())){
- jAPPdata = jPayload.value("APPdata").toString();
- }
- }else if (QString::compare(productId,"15109452")==0) {
- check_cover_framedata(jPayload,jDevicecode,jEventTime,deviceId,serviceId);
- }
- }
- }
- checkDevice(jDevicecode);
- getCommData(QString("NBjAPPdata1=====:%1---------%2++++++++%3")
- .arg(jAPPdata).arg(jDevicecode).arg(DevIdx3));
- if(jAPPdata.length()>0){
- QByteArray decBase64 = QByteArray::fromBase64(QString(jAPPdata).toLatin1());
- QString DStr = "";
- for(int i=0;i<decBase64.length();i++){
- DStr.append(QString(" %1").arg(decBase64.at(i)&0xff,2,16,QChar('0')));
- }
- QString DStr1=DStr.replace("\r","").replace("\n","").replace(" ","");
- getCommData(QString("NBjAPPdata=====:%1")
- .arg(DStr1));
- check_framedata(DStr1,jDevicecode,ip);
- }
- }
- void MKCore::check_coverdata(QString data, QString ip){
- QJsonParseError json_error;
- QJsonObject jPayload;
- QString productId="",jAPPdata="",jDevicecode="",deviceId="";
- int serviceId=0;
- long jEventTime=0;
- QJsonDocument jsonDoc(QJsonDocument::fromJson(data.toUtf8(),&json_error));
- if(json_error.error==QJsonParseError::NoError){
- QJsonObject root = jsonDoc.object();
- getCommData(QString("[ %1 =============%2] ").arg(data).arg("ceshiCover"));
- if((!root.value("eventContent").isUndefined())&&(!root.value("eventContent").isNull())&&(root.value("eventContent").isObject())){
- jPayload = root.value("eventContent").toObject();
- if((!root.value("productId").isUndefined())&&(!root.value("productId").isNull())&&(root.value("productId").isString())){
- productId = root.value("productId").toString();
- }
- if((!root.value("deviceId").isUndefined())&&(!root.value("deviceId").isNull())&&(root.value("deviceId").isString())){
- deviceId = root.value("deviceId").toString();
- }
- if((!root.value("serviceId").isUndefined())&&(!root.value("serviceId").isNull())){
- if(root.value("serviceId").isString())
- serviceId = root.value("serviceId").toString().toInt();
- else
- serviceId = root.value("serviceId").toInt();
- }
- if((!root.value("timestamp").isUndefined())&&(!root.value("timestamp").isNull())){
- if(root.value("timestamp").isString()){
- jEventTime = root.value("timestamp").toString().toLongLong()/1000;
- }else{
- jEventTime = QString::number(root.value("timestamp").toDouble(),'f',0).toLongLong()/1000;
- }
- }
- if((!root.value("IMEI").isUndefined())&&(!root.value("IMEI").isNull())&&(root.value("IMEI").isString()))
- jDevicecode = root.value("IMEI").toString();
- if(serviceId==1001){
- int lean_angle=0,manhole_cover_position_state=0;
- double battery_voltage=0;
- if((!jPayload.value("lean_angle").isUndefined())&&(!jPayload.value("lean_angle").isNull())){
- if(jPayload.value("lean_angle").isString())
- lean_angle = jPayload.value("lean_angle").toString().toInt();
- else
- lean_angle = jPayload.value("lean_angle").toInt();
- }
- if((!jPayload.value("battery_voltage").isUndefined())&&(!jPayload.value("battery_voltage").isNull())){
- if(jPayload.value("battery_voltage").isString())
- battery_voltage = jPayload.value("battery_voltage").toString().toDouble();
- else
- battery_voltage = jPayload.value("battery_voltage").toDouble();
- }
- if((!jPayload.value("manhole_cover_position_state").isUndefined())&&(!jPayload.value("manhole_cover_position_state").isNull())){
- if(jPayload.value("manhole_cover_position_state").isString())
- manhole_cover_position_state = jPayload.value("manhole_cover_position_state").toString().toInt();
- else
- manhole_cover_position_state = jPayload.value("manhole_cover_position_state").toInt();
- }
- getCoverAlarm(jDevicecode,jEventTime,ip,lean_angle,battery_voltage,manhole_cover_position_state,jPayload,serviceId,deviceId);
- QJsonObject hsData1,hsData,hsData21,hsData20;
- QJsonArray flucDatas,flucDatas1,flucDatas20,flucDatas21;
- QJsonObject hsData2,hsData3,hsData4,hsData5;
- for(int i=0;i<10240;i++){
- if(QString::compare(QString(mkList->sensors[i].Device_Code),jDevicecode)==0){
- hsData1.insert("devId", jDevicecode);
- hsData1.insert("connType", "N");
- hsData1.insert("deviceName", mkList->sensors[i].Device_Name);
- hsData2.insert("property", "井盖开启");
- hsData2.insert("serial", "12825");
- hsData2.insert("value", manhole_cover_position_state);
- hsData2.insert("status", "0");
- hsData2.insert("battery", battery_voltage);
- hsData2.insert("signal", "0");
- hsData2.insert("angle", lean_angle);
- flucDatas1.append(hsData2);
- hsData.insert("dp", flucDatas1);
- hsData.insert("deviceName", mkList->sensors[i].Device_Name);
- QString dataTimeStamp1=QString("%1").arg(jEventTime);
- hsData.insert("timeStamp", dataTimeStamp1);
- hsData.insert("deviceType", mkList->sensors[i].Device_Type);
- hsData.insert("deviceModel", "AZ-M90118");
- hsData.insert("devId", jDevicecode);
- flucDatas.append(hsData);
- hsData1.insert("alarams", flucDatas);
- hsData1.insert("type", "ALARM");
- hsData1.insert("timeStamp", dataTimeStamp1);
- QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
- if(mqttalarmIdx>9999)
- mqttalarmIdx = 1;
- }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
- if(mqttalarmIdx>9999)
- mqttalarmIdx = 1;
- }
- }
- }
- }else if (serviceId==1004) {
- int water_level_state=0;
- double battery_voltage=0;
- if((!jPayload.value("battery_voltage").isUndefined())&&(!jPayload.value("battery_voltage").isNull())){
- if(jPayload.value("battery_voltage").isString())
- battery_voltage = jPayload.value("battery_voltage").toString().toDouble();
- else
- battery_voltage = jPayload.value("battery_voltage").toDouble();
- }
- if((!jPayload.value("water_level_state").isUndefined())&&(!jPayload.value("water_level_state").isNull())){
- if(jPayload.value("water_level_state").isString())
- water_level_state = jPayload.value("water_level_state").toString().toInt();
- else
- water_level_state = jPayload.value("water_level_state").toInt();
- }
- getCoverAlarm(jDevicecode,jEventTime,ip,0,battery_voltage,water_level_state,jPayload,serviceId,deviceId);
- QJsonObject hsData1,hsData,hsData21,hsData20;
- QJsonArray flucDatas,flucDatas1,flucDatas20,flucDatas21;
- QJsonObject hsData2,hsData3,hsData4,hsData5;
- for(int i=0;i<10240;i++){
- if(QString::compare(QString(mkList->sensors[i].Device_Code),jDevicecode)==0){
- hsData1.insert("devId", jDevicecode);
- hsData1.insert("connType", "N");
- hsData1.insert("deviceName", mkList->sensors[i].Device_Name);
- hsData2.insert("property", "满溢告警");
- hsData2.insert("serial", "12826");
- hsData2.insert("value", water_level_state);
- hsData2.insert("status", "0");
- hsData2.insert("battery", battery_voltage);
- hsData2.insert("signal", "0");
- hsData2.insert("angle", "0");
- flucDatas1.append(hsData2);
- hsData.insert("dp", flucDatas1);
- hsData.insert("deviceName", mkList->sensors[i].Device_Name);
- QString dataTimeStamp1=QString("%1").arg(jEventTime);
- hsData.insert("timeStamp", dataTimeStamp1);
- hsData.insert("deviceType", mkList->sensors[i].Device_Type);
- hsData.insert("deviceModel", "AZ-M90118");
- hsData.insert("devId", jDevicecode);
- flucDatas.append(hsData);
- hsData1.insert("alarams", flucDatas);
- hsData1.insert("type", "ALARM");
- hsData1.insert("timeStamp", dataTimeStamp1);
- QString dataMqtt = QString(QJsonDocument(hsData1).toJson());
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
- if(mqttalarmIdx>9999)
- mqttalarmIdx = 1;
- }else if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- QString topic = QString("/usky/ytDP0008/%1/%2/alarm").arg(mkList->sensors[i].Company_Code).arg(jDevicecode);
- m_client->publish(QMQTT::Message(mqttalarmIdx++,topic,dataMqtt.toUtf8()));
- if(mqttalarmIdx>9999)
- mqttalarmIdx = 1;
- }
- }
- }
- }
- }
- }
- checkDevice(jDevicecode);
- }
- void MKCore::check_serverdata(QString data, QString ip){
- QDateTime dt = QDateTime::currentDateTime();
- QStringList dataList = data.split("\r\n");
- for(int i=0;i<dataList.length();i++){
- if(dataList.at(i).indexOf("\"messageType\":\"dataReport\"")>0){
- getCommData(QString("[ %1 ] ").arg(dt.toString("yyyy-MM-dd HH:mm:ss.zzz"))+dataList.at(i));
- check_smokedata(dataList.at(i), ip);
- }else if(dataList.at(i).indexOf("\"messageType\":\"eventReport\"")>0){
- getCommData(QString("5000++++[ %1 ] ").arg(dt.toString("yyyy-MM-dd HH:mm:ss.zzz"))+dataList.at(i));
- check_coverdata(dataList.at(i), ip);
- }
- }
- }
- void MKCore::read_data(){
- QTcpSocket *so = (QTcpSocket *)sender();
- QString data = QString(so->readAll());
- QDateTime dt = QDateTime::currentDateTime();
- getCommData(QString("5090====[ %1 ] ").arg(dt.toString("yyyy-MM-dd HH:mm:ss.zzz"))+data);
- check_serverdata(data, so->peerAddress().toString());
- so->write("HTTP/1.1 200 OK\r\nAccess-Control-Allow-Origin: *\r\nContent-type: text/plain\r\n\r\n");
- so->close();
- }
|