zoukankan      html  css  js  c++  java
  • 微信接入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('
    ');
         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
    
    
    ";
      sclient.print(str);
     
    }
    void connecttoserver()
    {
      if (!sclient.connected())//几个非连接的异常处理
      {
        //Serial.println("1" );
        if (!sclient.connect(host, tcpPort))
        {
          sclient.stop();
          delay(500);
        }
      }
    }
     
    

      

    图3-1最终结果

  • 相关阅读:
    Vmware克隆虚拟机后网卡eth0变eth1解决
    iptables详解
    Python小白的发展之路之Python基础(二)【字符串、列表、集合、文件操作】
    ubuntu下的apt-get内网本地源的搭建
    Python小白的发展之路之Python基础(一)
    qtp录制---点击Activescreen时提示“一个或多个ActiveX控件无法显示”
    qtp录制ie,提示“是否只查看安全传送的网页内容”
    qtp录制ie崩溃
    bug的记录方式
    测试计划和测试方案的区别
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/9799031.html
Copyright © 2011-2022 走看看