const schedule = require('node-schedule'); const axios = require('axios'); const ProtoBufJs = require("protobufjs"); const root = ProtoBufJs.loadSync("D:/22-hn3d/hn3d/src/schedule/aerial.proto"); const CommandMessage = root.lookupType("CommandMessage"); const command_req = CommandMessage.create(); var jsonData = '';//存储天气信息 // 定义规则 let rule = new schedule.RecurrenceRule(); // rule.minute = [1,6,11,16,21,26,31,36,41,46,51,56] rule.second = [58]; // 每隔 10 秒执行一次 let rule_task = new schedule.RecurrenceRule(); // rule.minute = [1,6,11,16,21,26,31,36,41,46,51,56] rule_task.second = [00]; // 每隔 10 秒执行一次 var periodTasklist = [] var payload = { source: "AwesomeString", syscommand: 1, subcommand: 2, generatetime: "2", targetclient: "111", returnserver: "#server#", taskuuid: "1234" }; // Verify the payload if necessary (i.e. when possibly incomplete or invalid) var errMsg = CommandMessage.verify(payload); if (errMsg) throw Error(errMsg); // Create a new message var message = CommandMessage.create(payload); // or use .fromObject if conversion is necessary // let buffer = Buffer.from(command_req) // let buffer = CommandMessage.encode(message).finish(); // let msg = CommandMessage.decode(buffer); module.exports = { async job_() { // schedule.scheduleJob('5 * * * * *', async () => { // }); }, }; schedule.scheduleJob(rule_task, async () => {//每分钟读取周期任务 并将任务分解执行 // let res = httpGet('http://127.0.0.1:8001/admin/business/periodicsetting/getdata?bid=getPeriodTaskList'); axios.get('http://127.0.0.1:8001/admin/business/periodicsetting/getdata?bid=getPeriodTaskList').then(response => { response.data.data.every(taskinfo => { console.log(taskinfo) let subcommd = taskinfo.task_type < 3 ? taskinfo.task_type : 4; periodTasklist.push({ source: "system", syscommand: taskinfo.task_type, subcommand: subcommd, generatetime: "1", targetclient: "111", returnserver: "server0", taskuuid: taskinfo.id }) }) }).catch(error => { console.log(error); }); }); schedule.scheduleJob(rule, async () => {//每分钟读取周期任务 并将任务分解执行 //http://192.168.1.4:5000/api // Exemplary payload var payload = { source: "AwesomeString", syscommand: 1, subcommand: 2, generatetime: "2", targetclient: "111", returnserver: "#server#", taskuuid: "1234" }; // Verify the payload if necessary (i.e. when possibly incomplete or invalid) var errMsg = CommandMessage.verify(payload); if (errMsg) throw Error(errMsg); // Create a new message var message = CommandMessage.create(payload); // or use .fromObject if conversion is necessary // let buffer = Buffer.from(command_req) let buffer = CommandMessage.encode(message).finish(); let msg = CommandMessage.decode(buffer); console.log('-------step in-------------------------') let urlstr = "http://192.168.0.209:5000/api"; axios({ method: 'post', url: urlstr, data: buffer, headers: { 'Content-Type': 'application/octet-stream', // 关键 }, }).then(res => { console.log(res) }).catch((error) => { console.log(error) }) console.log('-----step over------------------------------------------------') }); // schedule.scheduleJob(rule, async () => {//每小时定时取天气数据 // //https://devapi.heweather.net/v7/weather/now?location=101021700&key=495b433d21c84986a99c4ac52d42fd3b // // 1. 检测当前是否已有天气数据 // let sqlstr = `select count(1) as counter from t_d_weather_hour where TO_DAYS(now())=TO_DAYS(posttime) and HOUR(now())=hour(posttime) and posttime> date_sub(now(), interval 1 hour)`; // let lastdata_times = await mysql.query_data(sqlstr, 'master', null); // if( lastdata_times[0].counter > 0 ) { return ;} // // 2.若当前无天气数据,重新抓取 // let urlstr = "https://devapi.heweather.net/v7/weather/now?location=location_code&key=495b433d21c84986a99c4ac52d42fd3b"; // sqlstr = `select * from t_s_weather_city order by code`; // let data_rets = await mysql.query_data(sqlstr, 'master', null) // for (let index = 0; index < data_rets.length; index++) { // let element = data_rets[index]; // axios.get(urlstr.replace('location_code', element.code)).then(response => { // if(response.data.now) { // let w = response.data.now; // let posttime_ = w.obsTime.replace('T',' ').substr(0,13)+ ':00:00'; // let sql_ = `insert into t_d_weather_hour (type,citycode,cityname,posttime,temp,feelsLike,icon,text,wind360,windDir,windScale,windSpeed,humidity,precip,pressure,vis,cloud,dew,responsedata) // values ('${element.type}','${element.code}','${element.name}','${posttime_}','${w.temp}','${w.feelsLike}','${w.icon}','${w.text}','${w.wind360}', // '${w.windDir}','${w.windScale}','${w.windSpeed}','${w.humidity}','${w.precip}','${w.pressure}','${w.vis}','${w.cloud}','${w.dew}','${JSON.stringify(response.data)}' // )`; // mysql.query_data(sql_, 'master', null) // } // }).catch(error => { // console.log(error); // }); // } // }); // schedule.scheduleJob(rule, async () => {//每天定时更新天气数据 // //https://devapi.qweather.com/v7/weather/3d?location=101021700&key=495b433d21c84986a99c4ac52d42fd3b // // 1. 检测当前是否已有天气数据 // let sqlstr = `select count(1) as counter from t_d_weather_day where TO_DAYS(now())=TO_DAYS(posttime)`; // let lastdata_times = await mysql.query_data(sqlstr, 'master', null); // if( lastdata_times[0].counter > 0 ) { return ;} // // 2.若当前无天气数据,重新抓取 // let urlstr = "https://devapi.qweather.com/v7/weather/3d?location=location_code&key=495b433d21c84986a99c4ac52d42fd3b"; // sqlstr = `select * from t_s_weather_city order by code`; // let data_rets = await mysql.query_data(sqlstr, 'master', null) // for (let index = 0; index < data_rets.length; index++) { // let element = data_rets[index]; // axios.get(urlstr.replace('location_code', element.code)).then(response => { // if(response.data.daily) { // let w = response.data.daily[0]; // let posttime_ = w.fxDate+ ' 00:00:00'; // let sql_ = `insert into t_d_weather_day (type,citycode,cityname,posttime,iconNight,iconDay,humidity,precip,pressure,vis,cloud, // moonPhase,moonPhaseIcon,moonrise,moonset,sunrise,sunset,tempMax,tempMin,textDay,textNight,uvIndex, // wind360Day,windDirDay,wind360Night,windDirNight,windScaleDay,windScaleNight,windSpeedDay,windSpeedNight,responsedata) // values ('${element.type}','${element.code}','${element.name}','${posttime_}','${w.iconNight}','${w.iconDay}','${w.humidity}','${w.precip}','${w.pressure}','${w.vis}', // '${w.cloud}','${w.moonPhase}','${w.moonPhaseIcon}','${w.moonrise}','${w.moonset}','${w.sunrise}','${w.sunset}','${w.tempMax}','${w.tempMin}','${w.textDay}','${w.textNight}','${w.uvIndex}', // '${w.wind360Day}','${w.windDirDay}','${w.wind360Night}','${w.windDirNight}','${w.windScaleDay}','${w.windScaleNight}','${w.windSpeedDay}','${w.windSpeedNight}', // '${JSON.stringify(response.data)}' // )`; // mysql.query_data(sql_, 'master', null) // } // }).catch(error => { // console.log(error); // }); // } // }); // https://devapi.heweather.net/v7/weather/now?location=101021700&key=495b433d21c84986a99c4ac52d42fd3b function httpGet(uri) { console.log(uri); axios.get(uri).then(response => { console.log(response.data); return response.data; }).catch(error => { console.log(error); }); } function httpPost(uri, postdata) { // let data = { // name: 'John Doe', // job: 'Content Writer' // }; axios.post(uri, postdata).then((res) => { return res.data; console.log(`Status: ${res.status}`); console.log('Body: ', res.data); }).catch((err) => { console.error(err); }); }