**这平台报废了?反正没看到他审核过了。有需求去云片网吧,后面有时间我写个云片网的接入 ---2017/10/27
上一篇,对于试验项目对接移动家庭能力平台进行了介绍。这次我们来连接数据库,进行定时请求接口的操作。
代码地址:https://github.com/ZZES-ZVD/Nodejs_openHomeAPI
2017.8.6
移动家庭能力平台【2】
1.引入相关的nodejs模块
crypto是nodejs内置的,另外两个需要install
npm install --save request
npm install --save mysql
引入
var crypto = require('crypto')//加密模块
var request = require('request')//http请求模块
var mysql = require('mysql')//mysql模块
2.配置数据库
// 数据库配置
var conn = mysql.createConnection({
host:'填入ip',
user:'root',
password:'root',
database:'nodemysql',
port:3306
});
//连接数据库
conn.connect();
3.生成Authorization
此函数用于生成请求所需要的Autoorization字符串
function getAuth(){
var md5 = crypto.createHash('md5');//引入md5加密
var apikey = "你的apikey";
var secretKey = "你的secretKey ";
var time = new Date().getTime();//获取时间戳
var addStr = apikey + secretKey + time;//拼接字符串
var md5Str = md5.update(addStr).digest('hex')//md5加密
var jsonStr = '{"apiKey": "'+apikey+'","time": "'+time+'","sign":"'+md5Str+'"}'//拼接json
var finalStr = new Buffer(jsonStr).toString('base64')//base64编码
return finalStr;
}
4.请求api接口
通过request模块请求api接口(以模板短信api为例)
函数接受三个参数,即为请求body里templateParameter所需要的三个参数
具体请求参数,可以查看http://open.home.komect.com/dev/developer/developerDoc.action?RestAPI_1
1.配置请求参数
function sendMsg(p2,p3,p4){
//短信模板请求参数设置
var options = {
url:"http://open.home.komect.com/api/v1/sms/send",
method: 'POST',
headers:{
"content-type":"application/json",
"Authorization": getAuth()
},
body:{
messageSign: '治电科技',
mobile: '手机号',
needReceipt: 0,
receiptNotificationURL: '',
templateId: 1344,
templateParameter: { param1: 'klren', param2: p2, param3: p3, param4: p4 }
},
json: true
}
2.发送请求
request(options, function(error, response,body){
if (error) throw new Error(error);
if(body.resultCode === 200){
console.log("send success")
}else {
console.log("send fail")
}
console.log(body);
})
}
5.获取数据库中数据
获取数据库中温湿度和位置状态,并调用上面的
sendMsg()
函数进行请求发送
function getData(){
conn.query('SELECT * FROM pet', function(err,rows,fields){
console.log(rows[rows.length-1]);
tem = rows[rows.length-1].tem;
hum = rows[rows.length-1].hum;
let indoorStatus = rows[rows.length-1].indoor;
if (indoorStatus == 1) {
indoor = "在"
}else{
indoor = "不在"
}
sendMsg(tem,hum,indoor)
})
}
6.定时发送请求
之前文章介绍过这个模块。我们定时到下午15点
function scheduleRecurrenceRule(){
var rule = new schedule.RecurrenceRule();
rule.hour = 15;
schedule.scheduleJob(rule, function(){
console.log('scheduleRecurrenceRule:'+new Date());
getData();
})
}
7.测试结果展示
1.命令行打印
2.接受到短信
@治电小白菜20170806