**這平臺報廢了?反正沒看到他審核過了。有需求去云片網吧,后面有時間我寫個云片網的接入 ---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.命令行打印
命令行打印.png
2.接受到短信
接受到短信.png
@治電小白菜20170806