搭建简易的物联网服务端和客户端-移动家庭能力平台【2】(二十四)

时间:2022-07-23
本文章向大家介绍搭建简易的物联网服务端和客户端-移动家庭能力平台【2】(二十四),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

**这平台报废了?反正没看到他审核过了。有需求去云片网吧,后面有时间我写个云片网的接入 ---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