首页 > 编程语言 >PHP对接ESP8266

PHP对接ESP8266

时间:2023-05-13 14:00:43浏览次数:39  
标签:http ESP8266 wifiMulti WiFi 对接 println Serial PHP

前言:

        众所周知,在APP开发中,C/S是基本的开发结构。客户端负责应用的展示,交互与网络请求,服务端负责数据的传输,处理,存储,输出等等。而物联网除了之前介绍的MQTT实现H5实时控制舵机旋转角度来完成开关外,同样也可以通过HTTP的请求方式来和任何一门语言的服务端进行交互。

        所以,在这里ESP8266可以理解为客户端了。当然,ESP8266请求接口既可以可以用来输出到外接的oLED或音响等设备,也可以通过传感器收集的数据通过接口的方式传到服务端进行存储,服务端再清洗过滤,计算分析,可以玩的东西就更多一些了。以下只是好早以前用PHP测试写的接口,ESP8266就请求打印一下的简单例子。

PHP对接ESP8266_mqtt

环境:

     Arduino

    ArduinoJson库

    HTTPClient库

安装:

       在推荐使用以上两个库外,我之前使用的ESP8266WiFi,请求成功后,通过JON库怎么也解析不成功,在经过一些踩坑和折腾后换成HTTPClient就可以了。以上两个库分别用来作为请求和JSON解析,在网上自行搜索哦,如果实在找不到可以在小编公众号留言,免费提供下载,安装方式是:将下载好的包复制到Arduino的libraries目录中即可。

PHP对接ESP8266_服务端_02

代码演示:

#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
 
ESP8266WiFiMulti wifiMulti;           // 建立ESP8266WiFiMulti对象

void setup() {
  
  Serial.begin(9600);          
  Serial.println("");
  
  // 设置开发板LED引脚
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
 
  wifiMulti.addAP("TP-LINK_D12E", "ZFC3598300"); // 将需要连接的一系列WiFi ID和密码输入这里
  wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); // ESP8266-NodeMCU再启动后会扫描当前网络
  wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); // 环境查找是否有这里列出的WiFi ID。如果有
  Serial.println("Connecting ..."); 
 
  int i = 0;  
  while (wifiMulti.run() != WL_CONNECTED) { // 尝试进行wifi连接。
    delay(1000);
    Serial.print(i++); Serial.print(' ');
  }
  
  // WiFi连接成功后将通过串口监视器输出连接成功信息 
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());              // WiFi名称
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());           // IP
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    http.begin("http://xy.zerofc.cn/");
    int httpCode = http.GET();
    if (httpCode > 0) {
      String Request_result = http.getString();
      //Serial.println(Request_result);
      
      DynamicJsonBuffer jsonBuffer;
      JsonObject& root = jsonBuffer.parseObject(Request_result);
      String json1 = root["results"][0];
      Serial.println(json1);
      
      DynamicJsonBuffer jsonBuffer1;
      JsonObject& root1 = jsonBuffer1.parseObject(json1);
      String json2 = root1["location"];
      Serial.println(json2);

      DynamicJsonBuffer jsonBuffer2;
      JsonObject& root2 = jsonBuffer2.parseObject(json2);
      String json3 = root2["id"];
      Serial.println(json3);

      Serial.println("");
    }
    else {
      Serial.println("Invalid response!");
    }
    http.end();
  }
  delay(5000);

}

打印效果:

PHP对接ESP8266_服务端_03

 

交流学习:

PHP对接ESP8266_esp8266_04


标签:http,ESP8266,wifiMulti,WiFi,对接,println,Serial,PHP
From: https://blog.51cto.com/u_11161174/6273698

相关文章

  • 正确使用php开发系列:判断数组的key是否存在
    背景:我们习惯上使用!empty($data['data']['list']判断数组$data里有没有key为list的元素,正确判断key是否存在的方式应该使用array_key_exists 为什么不要使用!empty($data['data']['list'],因为当list不存在时,会报错!......
  • 知识库AI机器人客服(基于ChatGPT3.5)对接-唯一客服系统文档中心
    此功能是利用chatgpt训练企业知识开发个性化客服系统,可以上传自有数据,基于向量数据库与OpenAIEmbedding,以及OpenAI chat/completions接口,实现的基于自建知识库的ChatGPTAI客服功能管理员创建集合向量数据库集合,相当于数据表,需要管理员来创建开通。前往【菜单】【系统设置】......
  • PHP发送文件到JAVA项目
    https://blog.csdn.net/u012685554/article/details/126995307亲测有用。php代码$file=$_FILES['order_upload']['tmp_name'];////var_dump($file);exit();////判断文件是否存在if(!file_exists($file)){......
  • php imagick圆角
    $watermark=new\Imagick();$watermark->readImage($avatarpath);$watermark->scaleImage(160,160,true);$watermark->setFormat('png');$mask=new\Imagick();$mask->newImage($watermark......
  • 浅谈一下ThinkPHP5.1实现事务嵌套的特性
    前言:       在我们平时做的一个项目中,线上环境突然发现数据库被锁住。导致很多有关数据插入和修改的接口全都瘫痪,项目基于ThinkPHP5.1。报错的时候,我们发现了一条sql错误日志,如下。   根据错误信息提示,是说有一个事务回滚时没有找到savepoint的暂存点。所以问题应该......
  • php 异步形式调取导出数据
    php部分ajax请求此部分functionaysncexec(){$lock_file='filelock.lock';if(file_exists($lock_file)){exit(json_encode(array('code'=>0)));}$url=base_url().'execcmd';......
  • php获取目录下所有文件及目录
    来源:http://www.shanhubei.com/archives/2614.htmlhttp://www.shanhubei.com/archives/1940.html获取某目录下所有子文件和子目录functiongetDirContent($path){if(!is_dir($path)){returnfalse;}//readdir方法/*$dir=opendir($path);......
  • mysql:安装phpmyadmin(phpMyAdmin 5.2.1 / PHP 8.2.5 / mysqld 8.0.33)
    一,下载phpmyadmin:官网:https://www.phpmyadmin.net/如图: 注意不同版本的环境需求可以得到下载地址后直接在linux上wget[root@imgphpmyadmin]#wgethttps://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip解压:[root@imgphpmyadm......
  • Thinkphp5.1允许uni-app的H5跨域请求接口解决方法
    情景:   uni-app使用vue框架开发混合APP,虽然APP或者小程序没有跨域,但希望就是写完这个既有H5,又有APP,小程序等,所以能通过后端解决跨域最好。但是不知道是vue的原因还是什么,在PHP接口基类中添加了header头完全不起作用。官方给出的方法也有,具体可以看https://uniapp.dcloud.io/ap......
  • 在PhpStorm项目工具窗口中显示.idea文件夹
    转自:https://www.codenong.com/33010238/ 对于.idea,它也有专用的注册表设置(默认情况下,我至少在PhpStorm中启用了此设置)Help|FindAction...并查找registry(或在Windows上使用默认键盘映射通过Maintenance Ctrl+Alt+Shift+/)进入内部-查找projectView.hide.dot.idea条......