Commit dfb98dfd by lixinming

no message

parent aa7bd934
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<imgPath>http://127.0.0.1:13271</imgPath> <imgPath>http://127.0.0.1:13271</imgPath>
<token>73n6124cv7rq614c572x80jma7mj3yhs</token> <token>73n6124cv7rq614c572x80jma7mj3yhs</token>
<userName>1</userName> <userName>1</userName>
<plantId>735608</plantId> <plantId>870209</plantId>
<dataCenterInterface> <dataCenterInterface>
<!-- 获取某电站数据概览 --> <!-- 获取某电站数据概览 -->
<hqmdzsjgl>https://openapi-cn.growatt.com/v1/plant/data</hqmdzsjgl> <hqmdzsjgl>https://openapi-cn.growatt.com/v1/plant/data</hqmdzsjgl>
......
import moment = require("moment");
import { getYJApiData, YiJiaInterficeConfig } from "../../data/interface/chuanGanqi";
/**
* 设备列表
*/
const DeviceListMap = {
"d5266cb1-51f4-11ef-a337-492e02a5a1b5":{id:"d5266cb1-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-025",area:"A2", type:"传感器"},
"6c7ed720-174c-11ef-a337-492e02a5a1b5":{id:"6c7ed720-174c-11ef-a337-492e02a5a1b5",name:"ST-491511",area:"A2", type:"传感器"},
"d51fb5f0-51f4-11ef-a337-492e02a5a1b5":{id:"d51fb5f0-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-004",area:"A2", type:"传感器"},
"d51f8ee1-51f4-11ef-a337-492e02a5a1b5":{id:"d51f8ee1-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-003",area:"A1", type:"传感器"},
"2ec32200-53de-11ef-a337-492e02a5a1b5":{id:"2ec32200-53de-11ef-a337-492e02a5a1b5",name:"st-c91511",area:"A1", type:"传感器"},
"d51f8ee3-51f4-11ef-a337-492e02a5a1b5":{id:"d51f8ee3-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-002",area:"A1",type:"传感器"},
"d5258251-51f4-11ef-a337-492e02a5a1b5":{id:"d5258251-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-026",area:"A3",type:"传感器"},
"d5233860-51f4-11ef-a337-492e02a5a1b5":{id:"d5233860-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-024",area:"A3",type:"传感器"},
"d1414f40-53e1-11ef-a337-492e02a5a1b5":{id:"d1414f40-53e1-11ef-a337-492e02a5a1b5",name:"ST-0c1511",area:"A3",type:"传感器"},
"8ba87ef0-53e0-11ef-a337-492e02a5a1b5":{id:"8ba87ef0-53e0-11ef-a337-492e02a5a1b5",name:"ST-ad9511",area:"A4",type:"传感器"},
"d51fb5f1-51f4-11ef-a337-492e02a5a1b5":{id:"d51fb5f1-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-011",area:"A6",type:"传感器"},
"d51fb5f2-51f4-11ef-a337-492e02a5a1b5":{id:"d51fb5f2-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-009",area:"A6",type:"传感器"},
"5ca890c0-53e2-11ef-a337-492e02a5a1b5":{id:"8ba87ef0-53e0-11ef-a337-492e02a5a1b5",name:"st-7d9511",area:"A6",type:"传感器"},
"d5292bd0-51f4-11ef-a337-492e02a5a1b5":{id:"d5292bd0-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-028",area:"D1",type:"传感器"},
"d5273000-51f4-11ef-a337-492e02a5a1b5":{id:"d5273000-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-027",area:"D1",type:"传感器"},
"12ce3ba0-53e0-11ef-a337-492e02a5a1b5":{id:"12ce3ba0-53e0-11ef-a337-492e02a5a1b5",name:"ST-a41511",area:"D1",type:"传感器"},
"d52497f2-51f4-11ef-a337-492e02a5a1b5":{id:"d52497f2-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-022",area:"D2",type:"传感器"},
"d51f8ee0-51f4-11ef-a337-492e02a5a1b5":{id:"d51f8ee0-51f4-11ef-a337-492e02a5a1b5",name:"环东村-传感器箱-001",area:"D2",type:"传感器"},
"94304ae0-53df-11ef-a337-492e02a5a1b5":{id:"94304ae0-53df-11ef-a337-492e02a5a1b5",name:"ST-d09511",area:"D2",type:"传感器"},
"091eca80-53df-11ef-a337-492e02a5a1b5":{id:"091eca80-53df-11ef-a337-492e02a5a1b5",name:"ST-299511",area:"B1",type:"传感器"},
"36909080-072d-11ed-b9f0-f7bdd02067e7":{id:"36909080-072d-11ed-b9f0-f7bdd02067e7",name:"ST-213316",area:"溢佳日光温室",type:"传感器"},
"7cd8d010-2ce9-11ee-9eac-f5deb6adc4ca":{id:"7cd8d010-2ce9-11ee-9eac-f5deb6adc4ca",name:"ST-973715",area:"溢佳A2",type:"传感器"},
"c0e37f00-0fea-11ea-994a-f7a6b1064873":{id:"c0e37f00-0fea-11ea-994a-f7a6b1064873",name:"ST-831461",area:"溢佳A3",type:"传感器"},
"75b830a0-bc12-11ea-8c3a-3d44e55d0def":{id:"75b830a0-bc12-11ea-8c3a-3d44e55d0def",name:"ST-586508",area:"溢佳B1",type:"传感器"},
"6aa1e760-75fa-11e9-808a-d7e8d615d76f":{id:"6aa1e760-75fa-11e9-808a-d7e8d615d76f",name:"ST-013479",area:"溢佳B2",type:"传感器"},
"c5472180-f4b2-11e9-831b-b909a954a9c3":{id:"c5472180-f4b2-11e9-831b-b909a954a9c3",name:"ST-268492",area:"溢佳B3",type:"传感器"},
"05f82800-072f-11ed-b9f0-f7bdd02067e7":{id:"05f82800-072f-11ed-b9f0-f7bdd02067e7",name:"ST-204745",area:"溢佳C1",type:"传感器"},
"fb3b5460-e05a-11eb-90c2-a9af4fda413b":{id:"fb3b5460-e05a-11eb-90c2-a9af4fda413b",name:"ST-367487",area:"溢佳C2",type:"传感器"},
"63432ea0-e378-11eb-90c2-a9af4fda413b":{id:"63432ea0-e378-11eb-90c2-a9af4fda413b",name:"ST-366513",area:"溢佳C3",type:"传感器"},
"1e1a9700-7a55-11eb-b843-47b4ce12fe03":{id:"1e1a9700-7a55-11eb-b843-47b4ce12fe03",name:"ST-633039",area:"溢佳C4",type:"传感器"},
"6d961e80-53dc-11ef-a337-492e02a5a1b5":{id:"6d961e80-53dc-11ef-a337-492e02a5a1b5",name:"ST-C01511",area:"气象站",type:"传感器"},
};
export async function initDeviceMap() {
}
export async function 获取传感器设备类型分布() {
let map = {};
for (let key in DeviceListMap) {
let {type} = DeviceListMap[key];
if (!map[type]) map[type] = {key:type, value:0};
map[type].value += 1;
}
let dataList = Object.values(map);
return {dataList, count:dataList.length};
}
export async function 温湿度变化趋势变化趋势(chartArea, chartType) {
let key = "";
if (chartType=="温度") key = "airT";
else if (chartType =="湿度") key = "airH";
else if (chartType == "降雨量") key = "rain";
if (key == "rain") {
chartArea = "气象站";
}
let checkList = [];
for (let mapKey in DeviceListMap) {
let {area} = DeviceListMap[mapKey];
if (area == chartArea) {
checkList.push(mapKey);
}
}
let startMs = moment().subtract(7, 'hours').valueOf();
let endMs = moment().valueOf();
let datamMp = {};
for (let i = 0; i < checkList.length; i++) {
let deviceId = checkList[i];
let param = {deviceId, startTs:startMs, endTs:endMs, keys:key};
let data = await getYJApiData(YiJiaInterficeConfig["获取历史遥测的接口"], param);
let list = [];
if ( data.body && data.body[key]) list = data.body[key];
list.forEach(info => {
let time = moment(info.ts).format("HH.MM");
if (!datamMp[time]) datamMp[time] = {count:0, num:0};
datamMp[time].count += 1;
datamMp[time].num = parseFloat(info.value);
});
}
let dataList = [];
for (let mapKey in datamMp) {
let {count, num} = datamMp[mapKey];
dataList.push({
key:mapKey,
value: Math.round(num / count * 100)/100
});
}
let now = dataList[0].value;
return {dataList, now};
}
export async function 光照变化() {
const Key = "ill";
let startMs = moment().subtract(7, 'hours').valueOf();
let endMs = moment().valueOf();
let dataMap = {};
for (let deviceId in DeviceListMap) {
let param = {deviceId, startTs:startMs, endTs:endMs, keys:Key};
let data = await getYJApiData(YiJiaInterficeConfig["获取历史遥测的接口"], param);
let list = [];
if ( data.body && data.body[Key]) list = data.body[Key];
list.forEach(info => {
let time = moment(info.ts).format("HH.MM");
if (!dataMap[time]) dataMap[time] = {count:0, num:0};
dataMap[time].count += 1;
dataMap[time].num = parseFloat(info.value);
});
}
let dataList = [];
let max = 0;
let min = 999999;
for (let mapKey in dataMap) {
let {count, num} = dataMap[mapKey];
let value = Math.round(num / count * 100)/100;
dataList.push({
key:mapKey,
value
});
if (value > max){max = value;}
if (value < min){min = value;}
}
return {dataList, max, min};
}
export async function 土壤检测() {
}
export async function 土壤温度变化趋势() {
let keyList = [
{keyStr:"soilT", keyName:"土壤温度"},
{keyStr:"soilH", keyName:"土壤湿度"},
{keyStr:"dPH", keyName:"土壤PH值"},
{keyStr:"doilC", keyName:"土壤电导率"}
];
let dataMap = {};
for (let key in DeviceListMap) {
let data = await getYJApiData(YiJiaInterficeConfig["遥测数据"], {deviceId:key});
let body = data.body || {};
keyList.forEach(info => {
let {keyStr, keyName} = info;
let value;
if (body[keyStr] && body[keyStr][0]) {
value = body[keyStr][0].value || 0;
}
if (!dataMap[keyName]) {
dataMap[keyName] = {count:0, num:0};
}
dataMap[keyName].count += 1;
dataMap[keyName].num += parseFloat(value) || 0;
console.log()
});
console.log();
}
let dataList = [];
for (let key in dataMap) {
let {num, count} = dataMap[key];
dataList.push({
key,
value:Math.round(num / count * 100)/100
});
}
console.log()
}
/**
* 鳜鱼
*/
import { keyValuePackage } from "../dataPackage/inFrontOut";
export function getData(req, res) {
// let excelData = hjszzlTableData();
// let ret:any = {};
// let qwqsPackageData = onceYBarChartPackage( excelData['气温趋势'], '','');
// ret['qwqs'] = getOnceYBarChartOut('气温趋势', qwqsPackageData);
// let trwlysjcPackageData = onceYBarChartPackage( excelData['土壤微量元素监测'], '','');
// ret['trwlysjc'] = getOnceYBarChartOut('土壤微量元素监测', trwlysjcPackageData);
// let zdqsbhPackageData = onceYBarChartPackage( excelData['浊度趋势变化'], '','');
// ret['zdqsbh'] = getOnceYBarChartOut('浊度趋势变化', zdqsbhPackageData);
// let chzlcxPackageData = onceYBarChartPackage( excelData['虫害治理成效'], '','');
// ret['chzlcx'] = getOnceYBarChartOut('虫害治理成效', chzlcxPackageData);
// // let tqjcPackageData = keyValuePackage(excelData['天气检测'].dataList);
// // ret['tqjc'] = getKeyValueOut('天气检测', tqjcPackageData);
// let trjcPackageData = keyValuePackage(excelData['土壤检测'].dataList);
// ret['trjc'] = getKeyValueOut('土壤检测', trjcPackageData);
// let szjcPackageData = keyValuePackage(excelData['水质检测'].dataList);
// ret['szjc'] = getKeyValueOut('水质检测', szjcPackageData);
// let hjjcfxPackageData = keyValuePackage(excelData['环境基础分析'].dataList);
// ret['hjjcfx'] = getKeyValueOut('环境基础分析', hjjcfxPackageData);
// let bhczlPackageData = stringListPackage(excelData["病害虫治理"].dataList);
// let bhczl = [];
// for(let i = 0; i < bhczlPackageData.length; i++) {
// let img = `${systemConfig.imgPath}/${bhczlPackageData[i]}`;
// bhczl.push(img);
// }
// ret['bhczl'] = getStringOut('病害虫治理', bhczl);
// let chjcdyjPackageData = keyValuePackage(excelData['虫害检测灯预警'].dataList);
// ret['chjcdyj'] = getKeyValueOut('虫害检测灯预警', chjcdyjPackageData);
// let zlqkPackageData = keyValuePackage(excelData['治理情况'].dataList);
// ret['zlqk'] = getKeyValueOut('治理情况', zlqkPackageData);
// let tqjcbTableData = tablePackage(excelData["天气检测表"].headerList[0], excelData["天气检测表"].bodyList);
// ret['tqjcb'] = getTableOut( '天气检测表', tqjcbTableData);
// let zhxyjglPackageData = keyValuePackage(excelData['灾害性应急管理'].dataList);
// ret['zhxyjgl'] = getKeyValueOut('灾害性应急管理', zhxyjglPackageData);
// let qxzhlbPackageData = keyValuePackage(excelData['气象灾害列表'].dataList);
// ret['qxzhlb'] = getKeyValueOut('气象灾害列表', qxzhlbPackageData);
// res.send(ret);
}
\ No newline at end of file
...@@ -6,7 +6,9 @@ export enum ERRORENUM { ...@@ -6,7 +6,9 @@ export enum ERRORENUM {
参数错误, 参数错误,
地址数据不完整, 地址数据不完整,
请完善信息, 请完善信息,
接口数据获取失败 接口数据获取失败,
溢佳传感器TOKEN调用失败,
调用时缺少关键参数
} }
......
/**
* 传感器
*/
import { ERRORENUM } from "../../config/errorEnum";
import { BizError } from "../../util/bizError";
import { post, getYJ } from "../../util/request";
let tokenQueue = {
tokenInfo : {token:"", tokenMs:0},//token有效期2.5小时
refreshToken : {refreshToken:"", refreshTokenMs:0}//refreshToken有效期7天
};
export async function initToken() {
let tokenInfo = await getToken();
tokenQueue.tokenInfo = {token:tokenInfo.token, tokenMs:new Date().valueOf()};
tokenQueue.refreshToken = {refreshToken:tokenInfo.token, refreshTokenMs:new Date().valueOf()};
}
export async function getToken() {
let body = {"username":"ntdj@soilless.cn", "password":"ntdj123"};
let header = {
"Content-Type":"application/json;charset=ISO-8859-1"
};
let data:any = await post("http://www.soilless.cn:80/api/auth/login", body, header);
if (!data || data.message != 200 || ! data.body) {
throw new BizError(ERRORENUM.溢佳传感器TOKEN调用失败);
}
let {token, refreshToken} = data.body
return {token, refreshToken};
}
/**
* 定时刷新token
*/
export async function refToken() {
let body = {
"refreshToken":tokenQueue.refreshToken.refreshToken
};
let header = {
"Content-Type":"application/json;charset=ISO-8859-1"
};
let data:any = await post("http://www.soilless.cn:80/api/auth/token", body, header);
if (!data || data.message != 200 || ! data.body) {
throw new BizError(ERRORENUM.溢佳传感器TOKEN调用失败);
}
let {token, refreshToken} = data.body
return {token, refreshToken};
}
/**
* 定时的token任务
*/
export async function tokenTask() {
setInterval(async () => {
let nowMs = new Date().valueOf();
if (tokenQueue.tokenInfo.tokenMs+(3600 * 2.4 * 1000 ) <= nowMs ) {//设定2.4小时刷新token
let itemTokenInfo = await refToken();
tokenQueue.tokenInfo = {token:itemTokenInfo.token, tokenMs:new Date().valueOf()};
}
if (tokenQueue.tokenInfo.tokenMs+(3600 * 24 * 1000 * 6.5 ) <= nowMs ) {//设定6.5t天小时刷新token
let tokenInfo = await getToken();
tokenQueue.tokenInfo = {token:tokenInfo.token, tokenMs:new Date().valueOf()};
tokenQueue.refreshToken = {refreshToken:tokenInfo.token, refreshTokenMs:new Date().valueOf()};
}
}, 1000 * 10);
}
export const YiJiaInterficeConfig = {
"获取设备状态":{
url:"http://www.soilless.cn:80/api/plugins/telemetry/DEVICE/{deviceId}/values/attributes/SERVER_SCOPE?keys=active%2ClastActivityTime%2ClastConnectTime",
type:"get",
param:{
deviceId:"{deviceId}"
}
},
"遥测数据":{
url:"http://www.soilless.cn:80/api/plugins/telemetry/DEVICE/{deviceId}/values/timeseries",
type:"get",
param:{
deviceId:"{deviceId}"
}
},
"获取历史遥测的接口":{
url:"http://www.soilless.cn:80/api/plugins/telemetry/DEVICE/{deviceId}/values/timeseries?keys={keys}%2CsoilT&startTs={startTs}&endTs={endTs}&orderBy=DESC",
type:"get",
param:{
deviceId:"{deviceId}",
startTs:"{startTs}",
endTs:"{endTs}",
keys:"{keys}"
}
},
"获取设备列表":{
url:"http://www.soilless.cn/api/customer/3938bbe0-050b-11ea-8513-01e8606c84c0/deviceInfos?pageSize=50&page=0&sortProperty=createdTime&sortOrder=DESC",
type:"get",
param:{}
}
}
/**
* 获取溢佳接口数据
* @param configItem
* @param inputParam
* @returns
*/
export async function getYJApiData(configItem, inputParam) {
let {url, type, param} = configItem;
let urlStr = url;
for (let key in param) {
if (inputParam[key] == null || inputParam[key] == undefined) throw new BizError(ERRORENUM.调用时缺少关键参数);
let value = param[key];
urlStr = urlStr.replace(value, inputParam[key]);
}
let header = {
"accept": "application/json",
"X-Authorization":'Bearer '
};
header["X-Authorization"] = header["X-Authorization"] +tokenQueue.tokenInfo.token
let data:any = await getYJ(urlStr, {}, header);
return data;
}
...@@ -34,7 +34,10 @@ export async function getGuangFu() { ...@@ -34,7 +34,10 @@ export async function getGuangFu() {
设备总数:0//todo 设备总数:0//todo
}; };
//870225
//870209
let hqmdzjbxx:any = await get(dataCenterInterfaceConfig.hqmdzjbxx, {plant_id:systemConfig.plantId}, header); let hqmdzjbxx:any = await get(dataCenterInterfaceConfig.hqmdzjbxx, {plant_id:systemConfig.plantId}, header);
// let test:any = await get("https://openapi-cn.growatt.com/v1/plant/list", {perpage:100}, header);
if (!hqmdzjbxx.body) console.log("接口请求失败-获取某电站基本信息:hqmdzjbxx"); if (!hqmdzjbxx.body) console.log("接口请求失败-获取某电站基本信息:hqmdzjbxx");
let jzmqts = 0; let jzmqts = 0;
if (hqmdzjbxx.body) { if (hqmdzjbxx.body) {
...@@ -235,6 +238,7 @@ export async function getGuangFu() { ...@@ -235,6 +238,7 @@ export async function getGuangFu() {
end_date:endDate, end_date:endDate,
time_unit:"year", time_unit:"year",
} }
let hqmdzlsfdl:any = await get(dataCenterInterfaceConfig.hqmdzlsfdl, xyfxquery, header); let hqmdzlsfdl:any = await get(dataCenterInterfaceConfig.hqmdzlsfdl, xyfxquery, header);
if (!hqmdzlsfdl) throw new BizError('数据未返回'); if (!hqmdzlsfdl) throw new BizError('数据未返回');
let lastyear = []; let lastyear = [];
......
/**
* 鳜鱼数据
*/
import { get } from "../../util/request";
const crypto = require('crypto');
export async function test() {
console.log();
}
async function makeApiRequest(path, body) {
const date = new Date().toUTCString();
const accessKeyId = 'A7X9PL3TQW8N24Y56Z1D'; // User's AccessKeyId
const secretAccessKey = 'B7xL9/AkPq2Rm8oJ4WtIvY6GpKsXh1T3NyRf0gMl'; // User's SecretAccessKey
const project = 'zj'; // Project ID
const stringToSign = `${path}\n${date}`;
// HMAC-SHA1 签名
const sign = crypto.createHmac('sha1', secretAccessKey)
.update(stringToSign)
.digest('base64');
const authorization = `YLF ${accessKeyId}:${sign}`;
let headers = {
'Date': date,
'Authorization': authorization,
'Project': project,
'Accept': 'application/json'
};
let result = await get(`https://api.smartfishery.cloud${path}`, body, headers)
return result;
}
export async function getGuiYuLeftData(req, res) {
let deviceData:any = await makeApiRequest("/openapi/sensor", {});
let 设备类型 = {};
let 设备类型相关列表 = {};
let 养殖池分类 = {};
let 智能开关 = 0;
let 智能监测 = 0;
let 原始数据Map = {
"条形池":{设备列表:[], 水温:[], PH:[], DO:[], 数据统计:{ ph:0, phCount:0, 氧容量:0, 氧容量Count:0, 水温:0, 水温Count:0 }},
"圆形池":{设备列表:[], 水温:[], PH:[], DO:[], 数据统计:{ ph:0, phCount:0, 氧容量:0, 氧容量Count:0, 水温:0, 水温Count:0 }},
"方形池":{设备列表:[], 水温:[], PH:[], DO:[], 数据统计:{ ph:0, phCount:0, 氧容量:0, 氧容量Count:0, 水温:0, 水温Count:0 }}
};
deviceData.body.forEach(info => {
let {name, id, pond } = info;
if (!设备类型[name]) 设备类型[name] = 0;
设备类型[name] += 1;
if (!设备类型相关列表[name]) 设备类型相关列表[name] = [];
设备类型相关列表[name].push(id);
if (!养殖池分类[pond.name]) 养殖池分类[pond.name] = [];
养殖池分类[pond.name].push({id, name});
if (pond.name == "智能开关") {
智能开关 += 1;
} else {
智能监测 += 1;
}
if (pond.name.indexOf("条") > -1 ) {
原始数据Map.条形池.设备列表.push({propName:pond.name, name, id});
}
if (pond.name.indexOf("方") > -1 ) {
原始数据Map.方形池.设备列表.push({propName:pond.name, name, id});
}
if (pond.name.indexOf("圆") > -1 ) {
原始数据Map.圆形池.设备列表.push({propName:pond.name, name, id});
}
});
// for (let i = 0; i < 条形池.length; i++) {
// let {id} = 条形池[i]
// let deviceData:any = await makeApiRequest(`/openapi/sensor/do/${id}`, {});
// let {DO, PH, temperature } = deviceData.body;
// if (PH) {
// 条形池数据统计.ph += PH;
// 条形池数据统计.phCount += 1;
// }
// if (DO) {
// 条形池数据统计.氧容量 += DO;
// 条形池数据统计.氧容量Count += 1;
// }
// if (temperature) {
// 条形池数据统计.水温 += temperature;
// 条形池数据统计.水温Count += 1;
// }
// }
// for (let i = 0; i < 方形池.length; i++) {
// let {id} = 方形池[i]
// let deviceData:any = await makeApiRequest(`/openapi/sensor/do/${id}`, {});
// let {DO, PH, temperature } = deviceData.body;
// if (PH) {
// 方形池数据统计.ph += PH;
// 方形池数据统计.phCount += 1;
// }
// if (DO) {
// 方形池数据统计.氧容量 += DO;
// 方形池数据统计.氧容量Count += 1;
// }
// if (temperature) {
// 方形池数据统计.水温 += temperature;
// 方形池数据统计.水温Count += 1;
// }
// }
// for (let i = 0; i < 圆形池.length; i++) {
// let {id} = 圆形池[i]
// let deviceData:any = await makeApiRequest(`/openapi/sensor/do/${id}`, {});
// let {DO, PH, temperature } = deviceData.body;
// if (PH) {
// 圆形池数据统计.ph += PH;
// 圆形池数据统计.phCount += 1;
// }
// if (DO) {
// 圆形池数据统计.氧容量 += DO;
// 圆形池数据统计.氧容量Count += 1;
// }
// if (temperature) {
// 圆形池数据统计.水温 += temperature;
// 圆形池数据统计.水温Count += 1;
// }
// }
// //设备接入
// let sheBeiJieRu = [
// {key:"设备总数", value:智能开关 + 智能监测},
// {key:"智能监测", value:智能监测},
// {key:"智能开关", value:智能开关},
// {key:"智能监控", value:""},
// ];
// let tiaoXingChi = {
// DO:Math.round((条形池数据统计.氧容量/条形池数据统计.氧容量Count)*100)/100,
// PH:Math.round((条形池数据统计.ph/条形池数据统计.phCount)*100)/100,
// temperature:Math.round((条形池数据统计.ph/条形池数据统计.phCount)*100)/100,
// };
let t = await makeApiRequest(`/openapi/task`, {});
console.log();
//
//设备在线
// for (let i = 0; i < 设备类型相关列表["氨氮传感器"].length; i++) {
// let id = 设备类型相关列表["氨氮传感器"][i];
// let deviceData:any = await makeApiRequest(`/openapi/sensor/nhn/${id}/history`, {past:"7d"});
// console.log();
// }
console.log()
}
export async function getGuiYuRightData(req, res) {
}
\ No newline at end of file
...@@ -3,18 +3,34 @@ import { initInterfaceData } from "./data/interface/cronJob"; ...@@ -3,18 +3,34 @@ import { initInterfaceData } from "./data/interface/cronJob";
import { httpServer } from "./net/http_server"; import { httpServer } from "./net/http_server";
import { initConfig, systemConfig } from "./config/serverConfig"; import { initConfig, systemConfig } from "./config/serverConfig";
import { guangfuInit } from "./biz/getData"; import { guangfuInit } from "./biz/getData";
import { initToken, tokenTask } from "./data/interface/chuanGanqi";
import { initDeviceMap, 温湿度变化趋势变化趋势,光照变化, 土壤温度变化趋势 } from "./biz/chuanGanQi/cgq";
import { getGuangFu } from "./data/interface/dataInterface";
import { getGuiYuLeftData, test } from "./data/interface/guiyu";
async function lanuch() { async function lanuch() {
test();
await initConfig(); await initConfig();
// initInterfaceData(); // initInterfaceData();
httpServer.createServer( systemConfig.port ); httpServer.createServer( systemConfig.port );
// await guangfuInit(); // await guangfuInit();
await systemTask();
console.log('This indicates that the server is started successfully.'); console.log('This indicates that the server is started successfully.');
} }
function test() {
// async function systemTask() {
/**鳜鱼测试 */
// await getGuiYuLeftData(null, null);
// return
/**溢佳 设备token */
await initToken();
await tokenTask();
await initDeviceMap();
// await 温湿度变化趋势变化趋势("A2", "温度");
await 土壤温度变化趋势();
await guangfuInit();
} }
lanuch(); lanuch();
...@@ -17,6 +17,22 @@ export function get(url:string, query?, headers?, timeOut?) { ...@@ -17,6 +17,22 @@ export function get(url:string, query?, headers?, timeOut?) {
} }
export function getYJ(url:string, query?, headers?, timeOut?) {
timeOut = timeOut || 5000;
if (!url || (url.search(/http:/) && url.search(/https:/)) ) throw new BizError(!url ? "请求地址为空" : "请求地址错误");
return new Promise((resolve, reject)=>{
let paramater:any = { url, json:true, timeout:timeOut };
if (query) paramater.qs = query;
if (headers) paramater.headers = headers;
request.get(paramater, function (err, res, body) {
const success = !err && res && res == 200;
let message = err || res.statusCode || "";
resolve({success, message, body:body});
})
})
}
export function post(url, body, headers) { export function post(url, body, headers) {
if (!url || (url.search(/http:/) && url.search(/https:/)) ) throw new BizError(!url ? "请求地址为空" : "请求地址错误"); if (!url || (url.search(/http:/) && url.search(/https:/)) ) throw new BizError(!url ? "请求地址为空" : "请求地址错误");
let header = {"content-type": "application/json"}; let header = {"content-type": "application/json"};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment