概述
本文为作者原创,转载请注明 http://club.gizwits.com/forum.ph ... e=1&extra=#pid31364 谢谢!!
计划:
esp8266 SOC
门磁系统(一)---
短信报警功能
ESP8266 SOC
门磁系统(二)---
无限发射
ESP8266 SOC
门磁系统(三)---
红外接入
ESP8266 SOC
门磁系统(四)---
拍照系统
ESP8266 SOC
门磁系统(五)---
微信功能
一、前言
最初打算用ESP8266
做安防门磁报警系统,可以实现微信监控、远程开关报警器、报警短信通知,图片上传等功能,从网上找了教程http://www.geek-workshop.com/thread-27582-1-1.html
,按照这个教程也搭建成功。但是使用过程中发现:
1
、这个教程中必备的开发环境:ESP8266
、WEB
空间、短信服务供应商。其中:
->ESP8266手头有两块,没有问题。
->最开始用免费WEB空间,供应商打开了浏览器安全检查功能,ESP8266无法穿透这个功能,之后申请一个廉价的收费空间,但是第二年要涨价,心疼钱,这个是最主要问题。
->网上有很多收费的短信服务商,综合比较我选择阿里云的,每条短信不到5分钱,而且申请送10块钱(有效期一个月)。
2
、远程遥控功能思路: ESP8266
定时将IP
上传到WEB
服务器。通过微信读取WEB
服务器上的IP
再控制ESP8266
。最开始我用的是联通网络,有外网IP
,上述的方案可以实现,宽带到期后换成PB
的,没有外网IP
,这个功能就实现不了。
3
、该方案是将ESP8266
直接安装到门上,查看8266
参数,如果用18650
锂电池供电最多也就能坚持1
天,如果采用变压器供电,需在门上走线,影响美观。
通过长时间的思考,我制定如下方案
1
、在长期的查找过程中发现ESP8266+MQTT+
短信服务可以解决上面的1/2
两个缺点。
2
、在网上买一个普通的门磁报警器(不到3
块钱,两节7#
干电池用了一年半还有电)将其该着成带FM
发射功能。
3
、ESP8266
接收门磁报警器的无线信号,将数据上传MQTT
平台,同时执行短信报警功能。
4
、平台选择:测试各个云服务商的网络速度,发现机智云是相应最快的,而且开发相对简单。
二、准备条件
1
、阿里云短信功能
2
、Code::Blocks
(本地调试C
代码用,如在ESP8266
调试,可跳过此步)
3
、ESP8266
及编译环境搭建
http://wiki.ai-thinker.com/ai_ide_install
4
、机智云账号
5
、ESP8266 SOC
代码生产及下载
http://docs.gizwits.com/zh-cn/deviceDev/DevSDK/%E4%BB%A3%E7%A0%81%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E5%B7%A5%E5%85%B7.html
三、开通阿里云短信功能
1
、注册阿里云(也可以用X
宝账户直接登录)
2
、创建accesskeys
子账号(也可以用最高权限的accesskeys
)
2.1
鼠标放在自己登录名上,会显示一个菜单,点击accesskeys
按钮
<ignore_js_op>

2.2
、在弹出的对话框中选择“开始使用子用户accesskeys
”

2.3、填写用户名之后点“下一步”
<ignore_js_op>

2.4、选择权限管理短信服务(SMS)的权限(搜索短信),下一步
<ignore_js_op>

2.5、填写手机收到的短信验证码后就可以开通服务。
<ignore_js_op>

2.6、记录AccessKeyID和AccessKeySecret
注:AccessKeySecret只在本步骤才能看到,以后也查不到,请将这个文件下载下来好好保管。
<ignore_js_op>

3、建立短信发送模板
3.1、找到“产品和服务”->“全部”->“短信服务”
<ignore_js_op>

3.2、点击“产品使用”->“短信签名”->“添加签名”
<ignore_js_op>

按照要求填写签名,等待阿里审核
<ignore_js_op>

这个是我申请的签名,记录下“签名名称”
<ignore_js_op>

3.3、点击“产品使用”->“短信模板”->“添加模板”,按要求填好后等待阿里审核
<ignore_js_op>

我申请是填写的信息,其中${time}是签名中的参数
<ignore_js_op>

这个是我申请的短信签名,记录“模板CODE”
<ignore_js_op>

3.4、经过上述步骤后,你可以使用特定的程序发送短信了,使用效果
<ignore_js_op>

4
、编写程序
4.1
、阿里云提供的代码都是基于WEB
的(PHP
、java
),想在ESP8266
上使用必须自己重新编写C
代码。下载PHP_DEMO
,对照https://help.aliyun.com/document_detail/56189.html?spm=5176.doc55496.6.573.gp8URv
重新编写短信用签名系统
4.2
、阿里短信签名大致流程:
4.2.1
用AccessKeyId
、Timestamp
等字段生产一个数组,(数组key
就是这些关键字,值进行UTF-8
转码)对数组进行key
排序。
注:这步中阿里的API
有点错误,对照PHP_DEMO
发现根本不用执行这步

4.2.2
用排序后的数组生产一个字段,格式AccessKeyId=XXX&Timestamp=YYY………
4.2.3对上步这段再次进行UTF-8转码,转码后在字段的最前边加GET&%2F&(或POST&%2F&,具体加什么取决你用什么方式发送URL数据),并且将里面的加号(+)替换成 %20、星号(*)替换成 %2A、%7E 替换回波浪号(~)。4.2.4在2.6步骤中的AccessKeySecret码后面加“&”4.2.5用上步用步骤4.2.4对步骤4.2.3支付串进行sha1_Base64加密,将加密后的字符进行UTF-8转码4.2.6将Signature= sha1_Base64加到1)中的数值,重新生产URL数据码4.2.7将上述数据发送到dysmsapi.aliyuncs.com4.2.8查看手机收到短信没有?^_^
4.3
、代码移植到ESP266
(请自己在论坛里面搜索如何搭建ESP8266
编程环境!)
4.3.1
、从机智云下载ESP8266
的SOC
代码(网上很多教程,不详细介绍)
4.3.2
、将附件中的sendSms.h
放到appincludedriver
目录,将sendSms.c
放到appdriver
目录
4.3.3
、打开sendSms.c
,找到voidICACHE_FLASH_ATTR setURLchar(char* inURLchar)
函数,按照要求修改如下字段:
<ignore_js_op>

4.3.4
、打开sendSms.c
,找到voidICACHE_FLASH_ATTR setTimes(char *TemplateParam,char *Timestamp,char*SignatureNonce)
函数,将下列代码修改成对应短信中的参数

4.3.5
、在gizwits_product.c
中添加#include"driver/sendSms.h"
和如下代码
CheckIpStart();
static uint32_t irLastTimer = 0;
//做一个延时,等待http应答
if((gizGetTimerCount()-irLastTimer)>5000){
irLastTimer =gizGetTimerCount();
if(getSendCode()==100){
GIZWITS_LOG("===================================n");
GIZWITS_LOG("信息发送成功n");
GIZWITS_LOG("===================================n");
}
}
static uint32_t irLastTimer = 0;
//做一个延时,等待http应答
if((gizGetTimerCount()-irLastTimer)>5000){
irLastTimer =gizGetTimerCount();
if(getSendCode()==100){
GIZWITS_LOG("===================================n");
GIZWITS_LOG("信息发送成功n");
GIZWITS_LOG("===================================n");
}
}
因硬件还没搭接,所以我将上述代码加在int8_t ICACHE_FLASH_ATTR gizwitsEventProcess(eventInfo_t *info,uint8_t *data, uint32_t len)中
<ignore_js_op>

4.3.6
、更改Makefile
,生成user1.4096.new.6.bin
<ignore_js_op>

改成

4.3.7
、将文件夹ld->eagle.app.v6.ld
<ignore_js_op>

改成

注:最开始没更改这个位置,编译没问题,生产bin
时候报错,后来查看乐鑫帮助才解决。
http://espressif.com/zh-hans/support/explore/get-started/esp8266/getting-started-guide
或
http://blog.csdn.net/yannanxiu/article/details/51371798
<ignore_js_op>

4.3.8
、编译,下载到ESP8266
4.3.9
、打开机智云的SDK
,测试你的程序~~~~~~~~~~~~
5、由于本人也是小白,上述代码在网友的基础上做一点点修改,因此执行效率存在问题,欢迎各位大神对其进行优化~~
硬件开发平台
作者:daxiatt
2017
年11
月
转载于:https://www.cnblogs.com/dapangsen/p/7798058.html
最后
以上就是优美早晨为你收集整理的ESP8266 SOC门磁系统(一)---短信报警功能的全部内容,希望文章能够帮你解决ESP8266 SOC门磁系统(一)---短信报警功能所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复