微信接入arduino
https://blog.csdn.net/liudongdong19/article/details/81072857
一、准备工作。
1.微信公众号,个人的就可以了,不用企业号什么的。
2.服务器(WINDOWS的。本帖不涉及Linux的),简单的直接在阿里云、腾讯云、XX云一个月30+元买的就好(或者是XX空间也行,要能支持PHP)。
(本文写于2017.06这几个月阿里云活动比较好,送服务器免费用6个月,个人的淘宝账号就可以登录,但是要抢,也可以花18块买个域名也会送免费的6个月服务器,这就不用抢了,等于18块买了6个月的服务器)
3.ESP8266,推荐使用NodeMcu的,可以不用管供电,esp8266-01要注意供电足够。
二、开始整。
1.1微信公众号申请很容易的。
微信-1
微信-2
像图上的那样,一步步来,订阅号是不用交钱的,就目前我们控制LED订阅号是足够了的。
1.2公众号设置。
公众号申请好之后登陆,然后进行开发者设置。
微信2-2
看上图填写完成之后就点击提交,不出意外就显示提交成功。成功后如图
微信2-3
2.1服务器搭建。
再重申一遍呐~~本帖基于Windows的,不适用于Linux。本帖的实验环境是Windows2016。其他版本的也可以。 上面提到阿里云最近搞活动给送6个月的服务器。具体领取办法自己看官网哈~~仅限新注册用户啊。这里就不讲怎么领了。
你有了服务器之后(不管是领的免费的,还是买的付费的,或者淘宝买的服务器。)最后肯定会有个ip地址。然后用你自己电脑的远程桌面连接,远程连接到服务器。
输入用户名啊,密码啥的,连接成功后进入到远程桌面,然后打开浏览器,百度phpstudy .(本帖的服务器环境是基于phpstudy的)下载安装。
这里要强调一下,安装完成后默认的php版本比较低,推荐使用较新的,(不要问旧的行不行啊,自己试试去)。如图所示。
图2-4.phpstudy
推荐使用图上画框框的那连个组合,首次安装成功后默认是php5.3还是几。然后你点切换版本,选择图上框框里的两个中的一个,我使用的是nginx那个。你点了之后会提示要下载个插件,按提示下载安装就可以了,
记得下载X86的,不管你是64为操作系统还是32位操作系统
记得下载X86的,不管你是64为操作系统还是32位操作系统
记得下载X86的,不管你是64为操作系统还是32位操作系统
下载安装完插件再回来点一下切换就可以了,这时候你在你自己电脑的浏览器里输入你服务的ip地址,例如:11.11.11.11这时候应该会有一个php探针的页面出来(具体不用知道是啥,反正输入你的服务器ip之后有东西出来就可以了),这时候你的php环境就搭建完成了。
2.2PHP代码部署 经过前面几步你的公众号已经申请到了,你的服务器PHP环境也搭建好了。那下来就开始部署PHP代码了,对PHP不熟悉的同学不要着急,我这里给出个WeChat库,教你怎么用。
WeChat.zip (10.14 KB, 下载次数: 68)
把这个库下载下来,解压到你服务器中nginx服务器的根目录。如图所示。
图2-5 2-6 2-7
这里注意看这个路径。要和微信公众号开发者里面填的路径匹配,即图2-2上的URL要指向这个index.php文件
2.3核心代码解析
这里推荐使用PHPStorm,可以有智能提示,可以追踪函数实现等。当然你用其他工具也可以。
<?php
require('wechat/Wechat.php');
class TestWechat extends Wechat {
/**
* 收到文本消息时触发,回复收到的文本消息内容
*
* @return void
*/
protected function onText()
{
$this->responseText('收到了文字消息:' . $this->getRequest('content'));
}
} $wechat = new TestWechat(array(
'token' => 'weixin',
'aeskey' => 'xxx',
'appid' => 'xxx',
'debug' => true
));
$wechat->run();
这个是库里面自带的例子,功能就是你给你的公众号发个内容,他在前面加上 收到了文字消息:
我们重点看看onText函数。这个函数里面有两个函数。
$this->responseText(参数是字符串)这个就是给你回复。
$this->getRequest('content'))这个就是解析你发送来的文字消息返回值是字符串。
到这核心代码就讲完了,下一节我们来写控制LED的代码 2.4微信控制LED PHP代码
上一节讲到了用微信给服务器发东西,服务器给微信返回字符串。那我们可以这样来做。
用微新给服务器发送字符串"ON"服务器检测收到字符串"ON"之后就生成一个txt文件,并将“ON”写入到txt文件。然后ESP8266不断请求这个文件内容检测到是ON就开灯。OFF就关灯。
思路就是这样。那下来开始动手做。方式PHP代码。
<?php
require('wechat/Wechat.php');
class TestWechat extends Wechat {
/**
* 收到文本消息时触发,回复收到的文本消息内容
*
* @return void
*/
protected function onText()
{
//$this->responseText('收到了文字消息:' . $this->getRequest('content'));
$state=$this->getRequest('content');
if($state=="ON" ||$state=="OFF")
{
$file=fopen("1.txt","w")or die("failed!");
//这一行就是将ON或者OFF以覆盖方式写入1.txt
fwrite($file,$state);
fclose($file);
}
$this->responseText("$state");
}
} $wechat = new TestWechat(array(
'token' => 'weixin',
'aeskey' => 'xxx',
'appid' => 'xxx',
'debug' => true
));
$wechat->run();
图2-8 php控制txt结果
如图。我们成功实现了微信来控制txt内容。那么下面只需要用ESP8266来不断请求这个txt的内容就好。
3.1 EPS8266控制部分
我们采用arduino IDE方式来编写ESP82662的代码。具体的IDE设置请参照 大佬的教程。
这块只放上代码。你直接烧写到ESP8266里面就好了
#include <ESP8266WiFi.h> const char *ssid = "AAAA";//SSID
const char *password = "AAAA1111";//WIFI密码
const char *host = "47.94.3.48";//服务器地址
const int tcpPort = 80;//服务器端口号 WiFiClient sclient;
int pinled = D4; void setup()
{
Serial.begin(115200);
Serial.setTimeout(100);
WiFi.begin(ssid, password);
pinMode(pinled, OUTPUT);
while (WiFi.status() != WL_CONNECTED)//查看WIFI链接状态
{
Serial.println("try connect");
delay(500);
} } void loop()
{
connecttoserver();
sendtoserver();
if (sclient.available())
{
String str = sclient.readStringUntil('\r');
Serial.println(str);
if (str.indexOf("ON") >= 0)
{
digitalWrite(pinled, 1);
}
else if (str.indexOf("OFF") >= 0)
{
digitalWrite(pinled, 1);
}
}
delay(500) ;
}
void sendtoserver()
{
String str = "GET /weixin/1.txt\r\n\r\n\r\n";
sclient.print(str); }
void connecttoserver()
{
if (!sclient.connected())//几个非连接的异常处理
{
//Serial.println("1" );
if (!sclient.connect(host, tcpPort))
{
sclient.stop();
delay(500);
}
}
}
图3-1最终结果
微信接入arduino的更多相关文章
- JAVA实现 springMVC方式的微信接入、实现消息自动回复
前段时间小忙了一阵,微信公众号的开发,从零开始看文档,踩了不少坑,也算是熬过来了,最近考虑做一些总结,方便以后再开发的时候回顾,也给正在做相关项目的同学做个参考. 思路 微信接入:用户消息和开发者需要 ...
- 微信公众平台开发教程(一)_微信接入校验以及token获取
微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,而公众平台开发接口则是提供服务的基础. 接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 ...
- asp.net mvc 5 微信接入VB版 - 获取AccessToken
获取AccessToken是微信接入的又一个基础操作.很多微信接口需要这个2小时一刷新的AccessToken作为参数. 转载请说明作者Nukepayload2 首先根据开发文档把获取AccessTo ...
- asp.net mvc 5 微信接入VB版 - 接入认证
微信接入官方文档是php的,网上被抄好几遍的代码是c#的,就是没vb的.今天我把这个坑填了,做vb版的接入认证. 首先是照着开发文档把微信接入的模型写好.在Models文件夹新建一个Model Pub ...
- Python使用微信接入图灵机器人
1.wxpy库介绍 wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展. 文档地址:https://wxpy.readthedocs.io 从 PYPI 官 ...
- 微信平台ASPX高级定制开发(一):如何使用C#建立响应微信接入和自动回复的代码
微信平台不解释了,如果不了解的百度一下下,如果不会用微信,请自宫,光盘重启电脑,打开CMD输入Format C:.网上有很多针对企业级的高级定制ASPX开发,写得草草了事,很多男人干事都草草了事,这可 ...
- 【chrome插件】web版微信接入图灵机器人API实现自动回复
小贱鸡自动回复API已经不可以用了,现在改良接入图灵机器人API 360chrome浏览器团队翻译了部分谷歌插件开发文档 地址:http://open.chrome.360.cn/extension_ ...
- ASP.NET MVC 微信公共平台开发之 微信接入
ASP.NET MVC 接入微信公共平台 申请微信公共账号 既然要接入微信公共平台,微信公共号是必须的(当然如果只是测试的话也可以申请微信公共平台接口测试账号),来这里微信公共平台 申请微信公共号(注 ...
- ASP.NET实现企业微信接入应用实现身份认证
目录 #需求场景 #参考 #具体步骤 1.获取access_token 2.构造网页授权链接 3.获取访问用户身份 #.Net具体代码 1.Web首页服务端代码 2.帮助类代码 #需求场景 一个.ne ...
随机推荐
- javascript中startswith和endsWidth 与 es6中的 startswith 和 endsWidth
在javascript中使用String.startswith和String.endsWidth 一.String.startswith 和 String.endsWidth 功能介绍 String. ...
- DevExpress ChartControl ViewType.Line
源码地址:https://files.cnblogs.com/files/lanyubaicl/ChartControl.Line.7z public partial class Form1 : Fo ...
- POJ1275 Cashier Employment(差分约束)
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9078 Accepted: 3515 Description A sup ...
- 2018-11-09 VS Code英汉词典插件v0.0.4-驼峰下划线命名
首先, 在两天时间内安装数破百, 多谢支持. VS Code插件市场地址: 英汉词典 - Visual Studio Marketplace 开源库地址同前文: Visual Studio Code插 ...
- Deep Learning - 3 改进神经网络的学习方式
反向传播算法是大多数神经网络的基础,我们应该多花点时间掌握它. 还有一些技术能够帮助我们改进反向传播算法,从而改进神经网络的学习方式,包括: 选取更好的代价函数 正则化方法 初始化权重的方法 如何选择 ...
- IntelliJ IDEA安装、配置、测试
IntelliJ IDEA安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装.激活与配置 4.开发测试 4.1 JavaSE开发测试(确保JDK已正确安装) 4.2 ...
- Testlink1.9.17使用方法(第十三章 使用中遇到的问题)
第十三章 使用中遇到的问题 一. 登录Testlink后,新建一个项目后,会出现如下提示: 解决办法:打开Testlink安装文件夹下的config.inc.php文件, 原来:$tlCfg-> ...
- HTML+JS+JQuery不可以使用status
可能是JQuery的内部定义了status的原因!在HTML中的元素如果声明了ID为status的话,脚本中是不能访问这个对象的,会成为一个字符串对象.
- centos7安装jdk环境
有时候安装一些软件或者服务都需要jdk环境,今天就在centos上安装最新的jdk环境. 检测历时安装 1.查看Linux自带的JDK是否已安装 # java -version 2.查看JDK信息 # ...
- 同一个菜品商家中心和erp价格显示不一致解决方案FAQ
1.适用场景: 2.问题原因:子账号在商家中心改了价格 3.解决办法: (1).子账号登录商家后台修改 再同步(2).ERP上商品管理 修改价格