esp8266数据发送与接收— http->php

后续内容参考:php处理数据并连接数据库
https://blog.csdn.net/qwe24111/article/details/99644132
该文只介绍了php接收数据并连接数据库的一般相关操作,可作为后续php程序处理数据的参考

接收esp8266数据可以采用多种方法

方法一:tcp/ip协议,esp tcp客户端往服务器发送数据,服务器(接收并写入数据库,需要写一个服务器监听特定端口。服务器需要发送收集指令,8266采集数据并返回

方法二:mqtt协议(优势:物联网应用广泛),esp 往broker发送数据,服务器接收并存入数据库。其他语言写一个server(只需要接收客户端发送信息)接收数据,写入数据库。

方法三:http协议。发送数据给web服务器处理。

参考资料 nodemcu说明文档 网址
https://nodemcu.readthedocs.io/en/master/

8266采用http协议
先联网
再使用http.post()函数

//连接WIFI
wifi.setmode(wifi.STATIONAP)

stationcfg={
ssid=”xxx”;
auto=true;
}
wifi.sta.config(stationcfg)
//在连接网络成功后通过http.post()函数发送信息
wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)
print(“\n\tSTA – GOT IP”..”\n\tStation IP: “..T.IP..”\n\tSubnet mask: “..
T.netmask..”\n\tGateway IP: “..T.gateway) //输出8266的IP等信息

http.post(‘http://10.xxx.xxx.xxx/a/insert’, //ip地址或网址
‘Content-Type: application/json’,
‘{“data”:”456″}’,
function(code, data)
if (code < 0) then
print(“HTTP request failed”)
else
print(code, data) //数据发送成功则返回数据
end
end)
end);

//连接WIFI
wifi.setmode(wifi.STATIONAP)

stationcfg={
ssid=”xxx”;
auto=true;
}
wifi.sta.config(stationcfg)
//在连接网络成功后通过http.post()函数发送信息
wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)
print(“\n\tSTA – GOT IP”..”\n\tStation IP: “..T.IP..”\n\tSubnet mask: “..
T.netmask..”\n\tGateway IP: “..T.gateway) //输出8266的IP等信息

http.post(‘http://10.xxx.xxx.xxx/a/insert’, //ip地址或网址
‘Content-Type: application/json’,
‘{“data”:”456″}’,
function(code, data)
if (code < 0) then
print(“HTTP request failed”)
else
print(code, data) //数据发送成功则返回数据
end
end)
end);
————————————————

若要把变量存入body中,通过http.post传送出去的话,需要对body部分格式进行更改

indata=”” –indata是string格式
— ‘{“data”:”456″}’,
‘{“data”:”‘..indata..'”}’,
indata=“” indata是string格式 ‘{“data”:”456″}’, ‘{“data”:”‘..indata..‘”}’,

PHP接收JSON格式的数据
PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类的内容无法解析,如果用$_POST数组来接收就会失败!

此时可以使用$GLOBALS[‘HTTP_RAW_POST_DATA’] 或 file_get_contents(‘php://input’) 来获取提交的数据
对于接收到的数据,用json_decode() 对JSON数据进行解码,转换为PHP变量,如果要数据类型的数据要加一个参数true

public function insert(){
$json=(file_get_contents(‘php://input’));
$a=json_decode($json,ture);
print_r($a);
}
public function insert(){ $json=(file_get_contents(‘php://input’)); $a=json_decode($json,ture); print_r($a); }

 


结果

图片中可见有返回数据,故发送成功

剩下的工作便是在php中
连接数据库
接收到数据后并存入数据库中即可。。

标签

发表评论