123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488 |
- /******************************************************************
- ** Copyright (c) 2009 Wuhan xiyun Technology Co., Ltd .
- ** FileName: cmd.c
- ** Author: chw
- ** Mail:
- ** Editor: chw
- ** Date: 2020-12-03 13:34
- ** Version: 2020-12-03
- ** File Description: mqtt 服务发送业务指令实现
- ** Param explain: char* mac : 网关MAC地址
- char* subMac :子节点MAC地址
- MQTTAsync_message *pubmsg : 消息结构体
- MYSQL *_db :数据库连接
- ******************************************************************/
- #include "core.h"
- #include "cmd.h"
- //时间同步
- int SendNTP(char *mac)
- {
- //获取系统时间
- time_t timep;
- struct tm *p;
- time(&timep);
- p = gmtime(&timep);
- int year2 = (p->tm_year+1900)%100;
- int mon = p->tm_mon + 1;
- int day = p->tm_mday;
- int hour = p->tm_hour + 8;
- int minc = p->tm_min;
- int sec = p->tm_sec;
- //debug("%s 2时间同步发送结果",mac);
- //填充报文
- char buf[10] = {0};
- buf[0] = (char)year2;
- buf[1] = (char)mon;
- buf[2] = (char)day;
- buf[3] = (char)hour;
- buf[4] = (char)minc;
- buf[5] = (char)sec;
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- sendData.payload = buf;
- sendData.payloadlen = 6;
- sendData.qos = 0;
- sendData.retained = 0;
- //主题
- char topicName[256];
- if(strcmp(mac,"") == 0)
- {
- sprintf(topicName,"NTP");
- }
- else
- {
- sprintf(topicName,"PP/%s/CFG/NTP",mac);
- }
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送时间同步指令,结果:%d,时间:%d-%d-%d %d:%d:%d,主题:%s \n",ret,buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],topicName);
- return ret;
- }
- //校验协议长度
- int CheckMsgLength(char *topicName,MQTTAsync_message *pubmsg,int protocal_length)
- {
- UNUSED(topicName);
- if(pubmsg->payloadlen != protocal_length)
- {
- unsigned char* p = pubmsg->payload;
- if(pubmsg->payloadlen < 512)
- {
- char pdata[1024] = {0};
- Hex2Str((const char*)p,pdata,pubmsg->payloadlen);
- elog("error len--topicName:%s payloadlen:%d,msg:%s\n",topicName,pubmsg->payloadlen,pdata);
- }
- else
- {
- elog("error len--topicName:%s payloadlen:%d,msg:数据大于512\n",topicName,pubmsg->payloadlen);
- }
- return 1;
- }
- return 0;
- }
- //备份服务器ip发送
- int SendBakIP(char *mac , MYSQL *_db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- char topicName[256];
- char ip[20] = {0};
- int bakport = 0;
- char buf[256] = {0};
- char sendPrint[256] = {0};
-
- //数据库查询
- sprintf(query,"select bak_ip,bak_port from dev_info_gateway where device_mac ='%s'",mac);
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- mysql_free_result(res);
- return 1;
- }
-
- if(!row[0] || !row[1])
- {
- log("%s bak_ip 或者 bak_port 为空 \n",mac);
- mysql_free_result(res);
- return 1;
- }
- strcpy(ip,row[0]);
- bakport = atoi(row[1]);
- mysql_free_result(res);
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/BKS",mac);
- //填充报文
- unsigned long lIP = inet_addr(ip);
- memcpy(buf,&lIP,4);
- buf[4] = ((char*)&bakport)[1];
- buf[5] = ((char*)&bakport)[0];
- sendData.payload = buf;
- sendData.payloadlen = 6;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- Hex2Str(buf,sendPrint,sendData.payloadlen);
- log(" ↓发送备份服务器ip指令,结果:%d,网关:%s,ip:%s,bakport:%d,报文:%s \n",ret,mac,ip,bakport,sendPrint);
-
- return ret;
- }
- //节点信息表发送
- int SendSubInfo(char *mac , MYSQL *_db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- char buf[256] = {0};
- char topicName[256];
- char sendPrint[256] = {0};
- int row_count;
- int ret = 0;
-
- //数据库查询
- sprintf(query,"select device_mac,device_type from dev_info_node where gateway_mac ='%s'",mac);
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- //获取行数
- row_count = mysql_num_rows(res);
- if(row_count<1)
- {
- log("%s 没有查询到子节点 \n",mac);
- mysql_free_result(res);
- return 1;
- }
- //循环取出
- int i = 0;
- buf[0] = row_count;
- for (i = 0; i < row_count; i++)
- {
- char subMac[30] = {0};
- unsigned char nodeMac[30] = {0};
- int noteType = 0;
- row = mysql_fetch_row(res);
- if(!row[0] || !row[1])
- {
- log("%s 节点mac或者类型为空 \n",mac);
- continue;
- }
- strcpy(subMac,row[0]);//子节点
- HexStrToByte(subMac,nodeMac,12);
- noteType = atoi(row[1]);//节点类型
- memcpy(buf+1+7*i,nodeMac,6);
- buf[1+7*i+6] = noteType;
- }
- mysql_free_result(res);
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/NAT",mac);
- //填充报文
- sendData.payload = buf;
- sendData.payloadlen = row_count*7 + 1;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- ret = my_mqqta_sendmsg(topicName, &sendData);
- Hex2Str(buf,sendPrint,sendData.payloadlen);
- log(" ↓发送节点信息表指令,结果:%d,网关:%s,报文:%s \n",ret,mac,sendPrint);
- return ret;
- }
- //额定电压发送
- int SendRatedVoltage(char *mac,char *subMac,MYSQL *_db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- unsigned char buf[256] = {0};
- unsigned char nodeMac[30] = {0};
- char topicName[256];
- int rated_voltage;
- int device_type;
- //数据库查询
- if (strcmp(subMac,"") == 0) //网关
- {
- sprintf(query,"select rated_voltage,device_type from dev_info_gateway where device_mac ='%s'",mac);
- HexStrToByte("0F0000000001",nodeMac,12);
- }
- else
- {
- sprintf(query,"select rated_voltage,device_type from dev_info_node where device_mac ='%s'",subMac);
- HexStrToByte(subMac,nodeMac,12);
- }
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- mysql_free_result(res);
- return 1;
- }
-
- if(!row[0] || !row[1])
- {
- log("%s 额定电压或者设备类型为空 \n",mac);
- mysql_free_result(res);
- return 1;
- }
- rated_voltage = (atof(row[0]))*100;
- if (strcmp(subMac,"") == 0) //网关
- {
- device_type = 2;
- }
- else
- {
- device_type = atoi(row[1]);
- }
- mysql_free_result(res);
- debug("数据库查询:rated_voltage:%d,device_type:%d \n",rated_voltage,device_type);
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/SRV",mac);
- //填充报文
- memcpy(buf,nodeMac,6);
- buf[6] = device_type;
- buf[7] = ((char*)&rated_voltage)[1];
- buf[8] = ((char*)&rated_voltage)[0];
- sendData.payload = buf;
- sendData.payloadlen = 9;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送额定电压设置指令,结果:%d,网关:%s,节点:%s,额定电压:%d,设备类型:%d \n",ret,mac,subMac,rated_voltage,device_type);
- return ret;
- }
- //额定电流发送
- int SendRatedCurrent(char *mac,char *subMac,MYSQL *_db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- unsigned char buf[256] = {0};
- unsigned char nodeMac[30] = {0};
- char topicName[256];
- int rated_current;
- int device_type;
- //数据库查询
- if (strcmp(subMac,"") == 0) //网关
- {
- sprintf(query,"select rated_current,device_type from dev_info_gateway where device_mac ='%s'",mac);
- HexStrToByte("0F0000000001",nodeMac,12);
- }
- else
- {
- sprintf(query,"select rated_current,device_type from dev_info_node where device_mac ='%s'",subMac);
- HexStrToByte(subMac,nodeMac,12);
- }
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- mysql_free_result(res);
- return 1;
- }
-
- if(!row[0] || !row[1])
- {
- log("%s 额定电流或者设备类型为空 \n",mac);
- mysql_free_result(res);
- return 1;
- }
- rated_current = (atof(row[0]))*10000;
- if (strcmp(subMac,"") == 0) //网关
- {
- device_type = 2;
- }
- else
- {
- device_type = atoi(row[1]);
- }
- mysql_free_result(res);
- debug("数据库查询:rated_current:%d,device_type:%d \n",rated_current,device_type);
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/SRC",mac);
- //填充报文
- memcpy(buf,nodeMac,6);
- buf[6] = device_type;
- buf[7] = ((char*)&rated_current)[3];
- buf[8] = ((char*)&rated_current)[2];
- buf[9] = ((char*)&rated_current)[1];
- buf[10] = ((char*)&rated_current)[0];
- sendData.payload = buf;
- sendData.payloadlen = 11;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送额定电流设置指令,结果:%d,网关:%s,节点:%s,额定电流:%d,设备类型:%d \n",ret,mac,subMac,rated_current,device_type);
-
- return ret;
- }
- /*
- //传感器阈值发送
- int SendBakIP(char *mac)
- {
- return 0;
- } */
- //远程重启
- int SendRestart(char *mac)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- char topicName[256];
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CTR/RRS",mac);
- sendData.payload = NULL;
- sendData.payloadlen = 0;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送远程重启指令,结果:%d,网关:%s \n",ret,mac);
-
- return ret;
- }
- //设备恢复出厂设置
- int SendFactoryReset(char *mac)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- char topicName[256];
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CTR/SFR",mac);
- sendData.payload = NULL;
- sendData.payloadlen = 0;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送设备恢复出厂设置指令,结果:%d,网关:%s \n",ret,mac);
- return ret;
- }
- //服务器跳转
- int SendServerJump(char *mac,MYSQL *_db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- char topicName[256];
- char jump_ip[20] = {0};
- int jump_port = 0;
- char buf[256] = {0};
-
- //数据库查询
- sprintf(query,"select jump_ip,jump_port from dev_info_gateway where device_mac ='%s'",mac);
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- mysql_free_result(res);
- return 1;
- }
-
- if(!row[0] || !row[1])
- {
- log("%s jump_ip 或者 jump_port 为空",mac);
- mysql_free_result(res);
- return 1;
- }
- strcpy(jump_ip,row[0]);
- jump_port = atoi(row[1]);
- mysql_free_result(res);
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CTR/RS",mac);
- //填充报文
- unsigned long lIP = inet_addr(jump_ip);
- memcpy(buf,&lIP,4);
- buf[4] = ((char*)&jump_port)[1];
- buf[5] = ((char*)&jump_port)[0];
- sendData.payload = buf;
- sendData.payloadlen = 6;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送服务器跳转指令,结果:%d,网关:%s,jump_ip:%s,jump_port:%d \n",ret,mac,jump_ip,jump_port);
-
- return ret;
- }
- //ota升级
- int SendRemoteUpgrade(char *mac,MYSQL *_db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- char topicName[256];
- char upgrade_ip[20] = {0};
- int upgrade_port = 0;
- char ota_file[256] = {0};
- int ota_mode = 0;
- char buf[256] = {0};
-
- //数据库查询
- sprintf(query,"select upgrade_ip,upgrade_port,file_name,ota_mode from dev_info_gateway where device_mac ='%s'",mac);
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- mysql_free_result(res);
- return 1;
- }
-
- if(!row[0] || !row[1] || !row[3] || !row[4])
- {
- log("%s upgrade_ip 或者 upgrade_port 为空 或者 file_name、ota_mode为空",mac);
- mysql_free_result(res);
- return 1;
- }
- strcpy(upgrade_ip,row[0]);
- upgrade_port = atoi(row[1]);
- strcpy(ota_file,row[2]);
- ota_mode = atoi(row[3]);
- mysql_free_result(res);
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CTR/OTA",mac);
- //填充报文
- unsigned long lIP = inet_addr(upgrade_ip);
- memcpy(buf,&lIP,4);
- buf[4] = ((char*)&upgrade_port)[1];
- buf[5] = ((char*)&upgrade_port)[0];
- sendData.payload = buf;
- sendData.payloadlen = 6;
- sendData.qos = 0;
- sendData.retained = 0;
- //文件加入升级文件链表
- UpgradeFileAddFromDB(file_list,ota_file,_db,ota_mode);
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送服务器远程升级指令,结果:%d,网关:%s,upgrade_ip:%s,upgrade_port:%d,file_name:%s,ota_mode:%d \n",ret,mac,upgrade_ip,upgrade_port,ota_file,ota_mode);
-
- return ret;
- }
- //远程手动调光
- int SendManualDimming(char* mac,int group,int luminance,int dimmingType)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- char topicName[256];
- char buf[256] = {0};
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CTR/RDC",mac);
- //填充报文
- buf[0] = group;
- buf[1] = luminance;
- buf[2] = dimmingType;
- sendData.payload = buf;
- sendData.payloadlen = 3;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送手动调光指令,结果:%d,网关:%s,组号:%d,亮度:%d,调光类型:%d \n",ret,mac,group,luminance,dimmingType);
- return ret;
- }
- //远程开关控制
- int SendSwitchControl(char* mac,char* subMac,int type,int on_off)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- char topicName[256];
- char buf[256] = {0};
- unsigned char nodeMac[30] = {0};
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CTR/RSC",mac);
- //填充报文
- if(strcmp(subMac,"") == 0)
- {
- HexStrToByte("0F0000000001",nodeMac,12);
- memcpy(buf,nodeMac,6);
- buf[6] = 2;
- buf[7] = on_off;
- }
- else
- {
- HexStrToByte(subMac,nodeMac,12);
- memcpy(buf,nodeMac,6);
- buf[6] = type;
- buf[7] = on_off;
- }
- sendData.payload = buf;
- sendData.payloadlen = 8;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送远程开关控制指令,结果:%d,网关:%s,类型:%d,开关动作:%d\n",ret,mac,type,on_off);
- return ret;
- }
- //远程开关编组控制
- int SendSwitchGroupControl(char* mac,int group,int type,int on_off)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- char topicName[256];
- char buf[256] = {0};
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CTR/RGC",mac);
- //填充报文
- buf[0] = group;
- buf[1] = type;
- buf[2] = on_off;
- sendData.payload = buf;
- sendData.payloadlen = 3;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送远程开关编组控制指令,结果:%d,网关:%s,组号:%d,类型:%d,开关动作:%d\n",ret,mac,group,type,on_off);
- return ret;
- }
- //删除子节点
- int SendDeleteNode(char* mac,char* subMac,int nodeType)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- char topicName[256];
- char buf[256] = {0};
- unsigned char nodeMac[30] = {0};
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CTR/RCN",mac);
- //填充报文
- HexStrToByte(subMac,nodeMac,12);
- memcpy(buf,nodeMac,6);
- buf[6] = nodeType;
- sendData.payload = buf;
- sendData.payloadlen = 7;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送删除子节点指令,结果:%d,网关:%s,节点:%s,节点类型:%d \n",ret,mac,subMac,nodeType);
- return ret;
- }
- //设备数据上传间隔设置
- int SendDataInterval(char* mac,MYSQL *_db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- char topicName[256];
- int upload_interval_unit = 0;
- int upload_interval = 0;
- char buf[256] = {0};
-
- //数据库查询
- sprintf(query,"select upload_interval_unit,upload_interval from dev_info_gateway where device_mac ='%s'",mac);
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- mysql_free_result(res);
- return 1;
- }
-
- if(!row[0] || !row[1])
- {
- log("%s upload_interval_unit 或者 upload_interval 为空",mac);
- mysql_free_result(res);
- return 1;
- }
- upload_interval_unit = atoi(row[0]);
- upload_interval = atoi(row[1]);
- mysql_free_result(res);
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/ULI",mac);
- //填充报文
- buf[0] = upload_interval_unit;
- buf[1] = upload_interval;
- sendData.payload = buf;
- sendData.payloadlen = 2;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送设备数据上传间隔设置指令,结果:%d,网关:%s,上传间隔单位:%d,上传间隔:%d \n",ret,mac,upload_interval_unit,upload_interval);
-
- return ret;
- }
- //开关时间段设置
- int SendOnOffTime(char* mac,char* subMac,MYSQL *_db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- char topicName[256];
- int device_type = 0;
- char open_time[10] = {0};
- char close_time[10] = {0};
- int time1 = 0;
- int time2 = 0;
- int time3 = 0;
- int time4 = 0;
- char buf[256] = {0};
- unsigned char dMac[30] = {0};
- //判断网关 子节点
- if(strcmp(subMac,"") == 0) //网关
- {
- sprintf(query,"select device_type,open_time,close_time from dev_info_gateway where device_mac ='%s'",mac);
- HexStrToByte("0F0000000001",dMac,12);
- }
- else
- {
- sprintf(query,"select device_type,open_time,close_time from dev_info_node where device_mac ='%s'",subMac);
- HexStrToByte(subMac,dMac,12);
- }
-
- //数据库查询
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- mysql_free_result(res);
- return 1;
- }
-
- if(!row[0] || !row[1] || !row[2])
- {
- log("%s device_type,open_time,close_time 为空",mac);
- mysql_free_result(res);
- return 1;
- }
- if (strcmp(subMac,"") == 0) //网关
- {
- device_type = 2;
- }
- else
- {
- device_type = atoi(row[0]);
- }
- strcpy(open_time,row[1]);
- strcpy(close_time,row[2]);
- mysql_free_result(res);
- time1 = atoi(strtok(open_time,":"));
- time2 = atoi(strtok(NULL,":"));
- time3 = atoi(strtok(close_time,":"));
- time4 = atoi(strtok(NULL,":"));
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/STS",mac);
- //填充报文
- memcpy(buf,dMac,6);
- buf[6] = device_type;
- buf[7] = time1;
- buf[8] = time2;
- buf[9] = time3;
- buf[10] = time4;
- sendData.payload = buf;
- sendData.payloadlen = 11;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送开关时间段设置指令,结果:%d,网关:%s,节点:%s,设备类型:%d,合闸时间: %02d:%02d,拉闸时间: %02d:%02d \n",ret,mac,subMac,device_type,time1,time2,time3,time4);
-
- return ret;
- }
- //多个开关时间段设置,新增20201228
- int SendOnOffTimeMuilt(char* mac,char* subMac,MYSQL *_db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- char topicName[256];
- int device_type = 0;
- char switch_time1[10] = {0};
- char switch_time2[10] = {0};
- char switch_time3[10] = {0};
- char switch_time4[10] = {0};
- int time1 = 0;
- int time2 = 0;
- int time3 = 0;
- int time4 = 0;
- int time5 = 0;
- int time6 = 0;
- int time7 = 0;
- int time8 = 0;
- int swith_action1 = 0;
- int swith_action2 = 0;
- int swith_action3 = 0;
- int swith_action4 = 0;
- int t1 = 0;
- int t2 = 0;
- int t3 = 0;
- int t4 = 0;
- int time_count = 2;
- char buf[256] = {0};
- unsigned char dMac[30] = {0};
- //判断网关 子节点
- if(strcmp(subMac,"") == 0) //网关
- {
- sprintf(query,"select device_type,swith_time1,swith_time2,swith_time3,swith_time4,swith_action1,swith_action2,swith_action3,swith_action4 "
- "from dev_info_gateway where device_mac ='%s'",mac);
- HexStrToByte("0F0000000001",dMac,12);
- }
- else
- {
- sprintf(query,"select device_type,swith_time1,swith_time2,swith_time3,swith_time4,swith_action1,swith_action2,swith_action3,swith_action4 "
- "from dev_info_node where device_mac ='%s'",subMac);
- HexStrToByte(subMac,dMac,12);
- }
-
- //数据库查询
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- mysql_free_result(res);
- return 1;
- }
-
- //优化 新增对查询字段长度的判断 20210930 chw
- if(!row[0] || !row[1] || !row[2] || !row[5] || !row[6] || strlen(row[1])!=5 || strlen(row[2])!=5 || strlen(row[5])!=1 || strlen(row[6])!=1)
- {
- log("%s,%s 设备类型,第一组时间点、开关动作字段为空 \n",mac,subMac);
- mysql_free_result(res);
- return 1;
- }
- strcpy(switch_time1,row[1]);
- strcpy(switch_time2,row[2]);
- swith_action1 = atoi(row[5]);
- swith_action2 = atoi(row[6]);
- time1 = atoi(strtok(switch_time1,":"));
- time2 = atoi(strtok(NULL,":"));
- time3 = atoi(strtok(switch_time2,":"));
- time4 = atoi(strtok(NULL,":"));
- sendData.payloadlen = 14;
- //处理时间前大后小问题 20230525
- if(time1 > time3 || (time1 == time3 && time2 > time4))
- {
- t1 = time1;
- t2 = time2;
- t3 = time3;
- t4 = time4;
- time1 = t3;
- time2 = t4;
- time3 = t1;
- time4 = t2;
- swith_action1 = 0;
- swith_action2 = 1;
- }
- //优化 新增对查询字段长度的判断 20210930 chw
- if(!row[3] || !row[4] || !row[7] || !row[8] || strlen(row[3])!=5 || strlen(row[4])!=5 || strlen(row[7])!=1 || strlen(row[8])!=1)
- {
- log("%s,%s 设备类型,第二组时间点、开关动作字段为空,只发送第一组 \n",mac,subMac);
- }
- else
- {
- time_count = 4;
- sendData.payloadlen = 20;
- strcpy(switch_time3,row[3]);
- strcpy(switch_time4,row[4]);
- swith_action3 = atoi(row[7]);
- swith_action4 = atoi(row[8]);
- time5 = atoi(strtok(switch_time3,":"));
- time6 = atoi(strtok(NULL,":"));
- time7 = atoi(strtok(switch_time4,":"));
- time8 = atoi(strtok(NULL,":"));
- buf[14] = time5;
- buf[15] = time6;
- buf[16] = swith_action3;
- buf[17] = time7;
- buf[18] = time8;
- buf[19] = swith_action4;
- }
-
- if (strcmp(subMac,"") == 0) //网关
- {
- device_type = 2;
- }
- else
- {
- device_type = atoi(row[0]);
- }
- mysql_free_result(res);
-
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/STS",mac);
- //填充报文
- memcpy(buf,dMac,6);
- buf[6] = device_type;
- buf[7] = time_count;
- buf[8] = time1;
- buf[9] = time2;
- buf[10] = swith_action1;
- buf[11] = time3;
- buf[12] = time4;
- buf[13] = swith_action2;
-
- sendData.payload = buf;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送开关时间段设置指令,结果:%d,网关:%s,节点:%s,设备类型:%d,时间点一:%02d:%02d,时间二:%02d:%02d,时间点三:%02d:%02d,时间点四:%02d:%02d,动作1:%d,动作2:%d,动作3:%d,动作4:%d \n",
- ret,mac,subMac,device_type,time1,time2,time3,time4,time5,time6,time7,time8,swith_action1,swith_action2,swith_action3,swith_action4);
-
- return ret;
- }
- //获取子节点版本号
- int SendGetSubVersion(char* mac,char* subMac)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- char topicName[256];
- char buf[256] = {0};
- unsigned char nodeMac[30] = {0};
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/GNV",mac);
- //填充报文
- if(strcmp(subMac,"") == 0)
- {
- HexStrToByte("0F0000000001",nodeMac,12);
- }
- else
- {
- HexStrToByte(subMac,nodeMac,12);
- }
- memcpy(buf,nodeMac,6);
- sendData.payload = buf;
- sendData.payloadlen = 6;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送获取子节点版本号指令,结果:%d,网关:%s,节点:%s \n",ret,mac,subMac);
- return ret;
- }
- //开关控制模式设置从数据库info表
- int SendSwitchModeFromDB(char* mac,char* subMac,MYSQL* _db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- char topicName[256];
- int device_type = 0;
- int control_mode = 0;
- char buf[256] = {0};
- unsigned char dMac[30] = {0};
- //判断网关 子节点
- if(strcmp(subMac,"") == 0) //网关
- {
- sprintf(query,"select device_type,control_mode from dev_info_gateway where device_mac ='%s'",mac);
- HexStrToByte("0F0000000001",dMac,12);
- }
- else
- {
- sprintf(query,"select device_type,control_mode from dev_info_node where device_mac ='%s'",subMac);
- HexStrToByte(subMac,dMac,12);
- }
-
- //数据库查询
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- mysql_free_result(res);
- return 1;
- }
-
- if(!row[0] || !row[1])
- {
- log("%s device_type,control_mode 为空",dMac);
- mysql_free_result(res);
- return 1;
- }
- if (strcmp(subMac,"") == 0) //网关
- {
- device_type = 2;
- }
- else
- {
- device_type = atoi(row[0]);
- }
- control_mode = atoi(row[1]);
- mysql_free_result(res);
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/SCM",mac);
- //填充报文
- memcpy(buf,dMac,6);
- buf[6] = device_type;
- buf[7] = control_mode;
- sendData.payload = buf;
- sendData.payloadlen = 8;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送开关控制模式指令,结果:%d,网关:%s,节点:%s,节点类型:%d,控制模式:%d \n",ret,mac,subMac,device_type,control_mode);
-
- return ret;
- }
- //调光节点分组设置
- int SendDimmingNodeGroup(char* mac,char* subMac,MYSQL* _db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- char topicName[256];
- int device_type = 0;
- int device_group = 0;
- char time_seg1[10] = {0};
- char time_seg2[10] = {0};
- char time_seg3[10] = {0};
- char time_seg4[10] = {0};
- int time1[2] = {0};
- int time2[2] = {0};
- int time3[2] = {0};
- int time4[2] = {0};
- int dimming_seg1 = 0;
- int dimming_seg2 = 0;
- int dimming_seg3 = 0;
- int dimming_seg4 = 0;
- int dimming_mode = 0;
- int dimming_type = 0;
- char buf[256] = {0};
- unsigned char nodeMac[30] = {0};
- sprintf(query,"select device_type,device_group,time_seg1,time_seg2,time_seg3,time_seg4,dimming_seg1,dimming_seg2,dimming_seg3,dimming_seg4,"
- "dimming_mode,dimming_type from dev_info_node where device_mac ='%s'",subMac);
-
- //数据库查询
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- log("%s 调光节点分组 NULL == res \n",subMac);
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- log("%s 调光节点分组 NULL == row \n",subMac);
- mysql_free_result(res);
- return 1;
- }
-
- if(!row[0] || !row[1] || !row[2] || !row[3] || !row[4] || !row[5] || !row[6] || !row[7] || !row[8] || !row[9] || !row[10] || !row[11])
- {
- log("%s 调光节点分组有字段设置为空! \n",subMac);
- mysql_free_result(res);
- return 1;
- }
- if(strlen(row[0]) == 0 || strlen(row[1]) == 0 || strlen(row[2]) == 0 || strlen(row[3]) == 0 || strlen(row[4]) == 0 \
- || strlen(row[5]) == 0 || strlen(row[6]) == 0 || strlen(row[7]) == 0 || strlen(row[8]) == 0 || strlen(row[9]) == 0 || strlen(row[10]) == 0 || strlen(row[11]) == 0)
- {
- log("%s 调光节点分组有时间设置为空白! \n",subMac);
- mysql_free_result(res);
- return 1;
- }
- device_type = atoi(row[0]);
- device_group = atoi(row[1]);
- strcpy(time_seg1,row[2]);
- strcpy(time_seg2,row[3]);
- strcpy(time_seg3,row[4]);
- strcpy(time_seg4,row[5]);
- dimming_seg1 = atoi(row[6]);
- dimming_seg2 = atoi(row[7]);
- dimming_seg3 = atoi(row[8]);
- dimming_seg4 = atoi(row[9]);
- dimming_mode = atoi(row[10]);
- dimming_type = atoi(row[11]);
- mysql_free_result(res);
- time1[0] = atoi(strtok(time_seg1,":"));
- time1[1] = atoi(strtok(NULL,":"));
- time2[0] = atoi(strtok(time_seg2,":"));
- time2[1] = atoi(strtok(NULL,":"));
- time3[0] = atoi(strtok(time_seg3,":"));
- time3[1] = atoi(strtok(NULL,":"));
- time4[0] = atoi(strtok(time_seg4,":"));
- time4[1] = atoi(strtok(NULL,":"));
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/DGS",mac);
- //填充报文
- HexStrToByte(subMac,nodeMac,12);
- memcpy(buf,nodeMac,6);
- buf[6] = device_type;
- buf[7] = device_group;
- buf[8] = time1[0];
- buf[9] = time1[1];
- buf[10] = dimming_seg1;
- buf[11] = time2[0];
- buf[12] = time2[1];
- buf[13] = dimming_seg2;
- buf[14] = time3[0];
- buf[15] = time3[1];
- buf[16] = dimming_seg3;
- buf[17] = time4[0];
- buf[18] = time4[1];
- buf[19] = dimming_seg4;
- buf[20] = dimming_mode;
- buf[21] = dimming_type;
- sendData.payload = buf;
- sendData.payloadlen = 22;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送调光节点分组设置指令,结果:%d,网关:%s,节点:%s,节点类型:%d,组号:%d,时间1: %02d:%02d,时间2: %02d:%02d,时间3: %02d:%02d,时间4: %02d:%02d,亮度1:%d,,亮度2:%d,"
- "亮度3:%d,亮度4:%d,调光模式:%d,调光类型:%d \n",ret,mac,subMac,device_type,device_group,time1[0],time1[1],time2[0],time2[1],time3[0],time3[1],
- time4[0],time4[1],dimming_seg1,dimming_seg2,dimming_seg3,dimming_seg4,dimming_mode,dimming_type);
- usleep(500000);
- return ret;
- }
- //调光节点分组数据修改
- int SendDimmingNodeGroupModify(char* mac,int group,MYSQL* _db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- char topicName[256];
- int device_group = 0;
- char time_seg1[10] = {0};
- char time_seg2[10] = {0};
- char time_seg3[10] = {0};
- char time_seg4[10] = {0};
- int time1[2] = {0};
- int time2[2] = {0};
- int time3[2] = {0};
- int time4[2] = {0};
- int dimming_seg1 = 0;
- int dimming_seg2 = 0;
- int dimming_seg3 = 0;
- int dimming_seg4 = 0;
- int dimming_mode = 0;
- int dimming_type = 0;
- char buf[256] = {0};
- sprintf(query,"select device_group,time_seg1,time_seg2,time_seg3,time_seg4,dimming_seg1,dimming_seg2,dimming_seg3,dimming_seg4,"
- "dimming_mode,dimming_type from dev_dimming_group where gateway_mac ='%s' and device_group = %d",mac,group);
-
- //数据库查询
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- log("%s 调光节点分组记录为空! \n",mac);
- mysql_free_result(res);
- return 1;
- }
-
- if(!row[0] || !row[1] || !row[2] || !row[3] || !row[4] || !row[5] || !row[6] || !row[7] || !row[8] || !row[9] || !row[10])
- {
- log("%s 调光节点分组有节点为空! \n",mac);
- mysql_free_result(res);
- return 1;
- }
- device_group = atoi(row[0]);
- strcpy(time_seg1,row[1]);
- strcpy(time_seg2,row[2]);
- strcpy(time_seg3,row[3]);
- strcpy(time_seg4,row[4]);
- dimming_seg1 = atoi(row[5]);
- dimming_seg2 = atoi(row[6]);
- dimming_seg3 = atoi(row[7]);
- dimming_seg4 = atoi(row[8]);
- dimming_mode = atoi(row[9]);
- dimming_type = atoi(row[10]);
- mysql_free_result(res);
- time1[0] = atoi(strtok(time_seg1,":"));
- time1[1] = atoi(strtok(NULL,":"));
- time2[0] = atoi(strtok(time_seg2,":"));
- time2[1] = atoi(strtok(NULL,":"));
- time3[0] = atoi(strtok(time_seg3,":"));
- time3[1] = atoi(strtok(NULL,":"));
- time4[0] = atoi(strtok(time_seg4,":"));
- time4[1] = atoi(strtok(NULL,":"));
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/DGM",mac);
- //填充报文
- buf[0] = device_group;
- buf[1] = time1[0];
- buf[2] = time1[1];
- buf[3] = dimming_seg1;
- buf[4] = time2[0];
- buf[5] = time2[1];
- buf[6] = dimming_seg2;
- buf[7] = time3[0];
- buf[8] = time3[1];
- buf[9] = dimming_seg3;
- buf[10] = time4[0];
- buf[11] = time4[1];
- buf[12] = dimming_seg4;
- buf[13] = dimming_mode;
- buf[14] = dimming_type;
- sendData.payload = buf;
- sendData.payloadlen = 15;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- log(" ↓发送调光节点分组数据修改指令,结果:%d,网关:%s,组号:%d,时间1: %02d:%02d,时间2: %02d:%02d,时间3: %02d:%02d,时间4: %02d:%02d,亮度1:%d,,亮度2:%d,"
- "亮度3:%d,亮度4:%d,调光模式:%d,调光类型:%d \n",ret,mac,device_group,time1[0],time1[1],time2[0],time2[1],
- time3[0],time3[1],time4[0],time4[1],dimming_seg1,dimming_seg2,dimming_seg3,dimming_seg4,dimming_mode,dimming_type);
-
- return ret;
- }
- //传感器报警阈值设置
- int SendSensorThreshold(char* mac,MYSQL* _db)
- {
- MQTTAsync_message sendData = MQTTAsync_message_initializer;
- MYSQL_RES* res = NULL;
- MYSQL_ROW row;
- char query[1024] = {0};
- char topicName[256];
- char buf[256] = {0};
- int temperature_min = 0;
- int temperature_max = 100;
- int humidity_min = 0;
- int humidity_max = 100;
- double x_offset_max = 5.0;
- double y_offset_max = 5.0;
- double z_offset_max = 5.0;
- int line_temperature_max = 100;
- int step = 0;
- char sendPrint[256] = {0};
- char vlog[512] = {0};
- sprintf(query,"select temperature_min,temperature_max,humidity_min,humidity_max,x_offset_max,y_offset_max,z_offset_max,line_temperature_max "
- "from dev_info_gateway where device_mac = '%s'",mac);
- excuteSql(_db,query);
- res = mysql_store_result(_db);
- if (NULL == res)
- {
- return 1;
- }
- row = mysql_fetch_row(res);
- if (NULL == row)
- {
- mysql_free_result(res);
- return 1;
- }
- //读取到温湿度配置
- if(row[0] && row[1] && row [2] && row [3])
- {
- temperature_min = atoi(row[0]);
- temperature_max = atoi(row[1]);
- humidity_min = atoi(row[2]);
- humidity_max = atoi(row[3]);
- buf[step] = 1;
- buf[step+1] = temperature_min;
- buf[step+2] = temperature_max;
- buf[step+3] = humidity_min;
- buf[step+4] = humidity_max;
- step += 5;
- sprintf(vlog,"%s温度最小值:%d,温度最大值:%d,湿度最小值:%d,湿度最大值:%d;",vlog,temperature_min,temperature_max,humidity_min,humidity_max);
- }
- //读取陀螺仪配置
- if(row[4] && row[5] && row [6])
- {
- x_offset_max = atof(row[4]);
- y_offset_max = atof(row[5]);
- z_offset_max = atof(row[6]);
- int x_offset_max_i = (int)(x_offset_max*10);
- int y_offset_max_i = (int)(y_offset_max*10);
- int z_offset_max_i = (int)(z_offset_max*10);
- buf[step] = 2;
- buf[step+1] = ((char*)&x_offset_max_i)[1];
- buf[step+2] = ((char*)&x_offset_max_i)[0];
- buf[step+3] = ((char*)&y_offset_max_i)[1];
- buf[step+4] = ((char*)&y_offset_max_i)[0];
- buf[step+5] = ((char*)&z_offset_max_i)[1];
- buf[step+6] = ((char*)&z_offset_max_i)[0];
- step += 7;
- sprintf(vlog,"%sx倾斜角最大值:%f,y倾斜角最大值:%f,z倾斜角最大值:%f;",vlog,x_offset_max,y_offset_max,z_offset_max);
- }
- //读取线温阈值配置
- if(row[7])
- {
- buf[step] = 4;
- line_temperature_max = atoi(row[7]);
- buf[step+1] = line_temperature_max;
- step += 2;
- sprintf(vlog,"%s线温最大值:%d;",vlog,line_temperature_max);
- }
- mysql_free_result(res);
- if(strlen(vlog) == 0)
- {
- log("数据库没有读取到传感器阈值!网关:%s",mac);
- return 1;
- }
- //主题
- if(strcmp(mac,"") == 0)
- {
- return 1;
- }
- sprintf(topicName,"PP/%s/CFG/SAT",mac);
- //填充报文
- sendData.payload = buf;
- sendData.payloadlen = step;
- sendData.qos = 0;
- sendData.retained = 0;
- //发送
- int ret = my_mqqta_sendmsg(topicName, &sendData);
- Hex2Str(buf,sendPrint,sendData.payloadlen);
- log(" ↓发送传感器阈值指令,结果:%d,网关:%s,sendPrint:%s,%s \n",ret,mac,sendPrint,vlog);
- return ret;
- }
- //电表节点分组设置
- //int ()
|