搭建简易的物联网服务端和客户端-移动家庭能力平台【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
- 对比cp和scp命令 将数据从一台linux服务器复制到另一台linux服务器
- laravel—用Migration的操作数据库
- 有货移动Web端性能优化探索实践
- webpack打包速度和性能再次优化
- MySQL 清除表空间碎片
- 解决ios不支持按钮:active伪类的方法
- HTTP-FLV直播初探
- BZOJ1058: [ZJOI2007]报表统计
- React数据流和组件间的通信总结
- react+redux+webpack教程4
- 洛谷P2391 白雪皑皑(并查集)
- BZOJ4514: [Sdoi2016]数字配对(费用流)
- 3.2数据结构之指针和链表 1748:约瑟夫问题
- 2017值得一瞥的JavaScript相关技术趋势
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MyBatis版本升级导致OffsetDateTime入参解析异常问题复盘
- elasticSearch学习(二)
- 146. LRU缓存机制 Krains 2020-08-05 12:50:28 链表
- 337. 打家劫舍 III Krains 2020-08-05 10:18:45 动态规划
- 58道Vue常见面试题集锦,涵盖入门到精通,自测 Vue 掌握程度
- 记一次Linux计划任务cron无结果的排查过程
- 一文学会使用 CSS 中的 min(), max(), clamp() 以及它们的使用场景用例
- 5 个 JS 数组技巧可提高你的开发技能
- 一个有意思的方案:不借助后台和 JS ,只用 CSS 让一个列表编号倒序,你会怎么做?
- 关于MySQL LOAD DATA特性的利用与思考
- NHibernate 缓存
- 渗透测试 | 突破前端JS加密限制
- 使用 Task 简化异步编程
- Task 编程中的异常处理
- AngularJS 中的 factory、 service 和 provider