查看: 12379|回复: 9

[入门] esp8266 arduino 之 与服务器通信

[复制链接]
前一篇文章已经把wifi连接上了 下面我们连接下远程服务器哈哈

和服务器通信方式一般是tcp udp 和http的post get方式 还有现在流行的实时websocket哈哈
tcp 和udp需要自己写server代码 比较烦 我的阿里云是python的环境 就直接用http的方式吧

加入ESP8266HTTPClient.h的库支持

下面是ESP8266代码:

[C] 纯文本查看 复制代码
#include <ESP8266HTTPClient.h>

#include <ESP8266WiFi.h>

HTTPClient http;
char ssid[] = "Question";        //  你家的路由器wifi名称
char paswd[] = "*******";       // 你家的路由器wifi密码
void setup() {
  // put your setup code here, to run once:
   Serial.begin(115200);
   Serial.println();

   Serial.print("Connecting to ");
   Serial.println(ssid);
   WiFi.begin(ssid, paswd);                //开始连接wifi

   while (WiFi.status() != WL_CONNECTED)   //等待wifi连接成功
   {
      delay(500);
      Serial.print(".");
   }
   Serial.println("");

   Serial.println("WiFi connected");
   Serial.println("IP address: ");
   Serial.println(WiFi.localIP());     //打印连接上wifi后获取的ip地址
}

void loop() {
  // put your main code here, to run repeatedly:
  char url[100]="http://**********:81/test?msg=\"hello\"";   //把*号改成你的服务器地址 
  http.begin(url);
  int httpCode = http.GET();
  if(httpCode >0)
  {
     Serial.printf("[HTTP] GET...code:%d\n",httpCode); 
     String serdata = http.getString();                                        //获取服务器返回的数据
     Serial.println(serdata);                                                           

  } 
  else
  {
    Serial.printf("[HTTP] GET...failed,error:%s\n",http.errorToString(httpCode).c_str());  
  }
  http.end();
  delay(10000);
}



运行效果
2.jpg

返回200 表示成功请求成功,后面是服务器返回的json数据 ESP8266通过返回的数据就能判断是否有命令过来了


11.jpg


服务器的代码:

环境 ubuntu django python

文件 url.py

     
[Python] 纯文本查看 复制代码
     url(r'^test', collect_data.views.test),


文件 collect_data/views.py
[Python] 纯文本查看 复制代码
#coding=utf-8
from django.shortcuts import render

# Create your views here.
from collect_data.models import Air_data

from django.shortcuts import render,render_to_response
from django.http import HttpResponseRedirect,HttpResponse

import datetime
import json,os,time,random,string,types 
def test(request):
    print request.get_full_path()
    return HttpResponse(json.dumps({'status':'ok'},sort_keys=True), content_type="application/json")



hnyzcj  版主

发表于 2017-4-27 13:18:32

好教程值得一看
回复

使用道具 举报

hnyzcj  版主

发表于 2017-4-27 13:18:39

以后慢慢琢磨
回复

使用道具 举报

pATAq  版主

发表于 2017-4-27 19:47:30

mark一下
回复

使用道具 举报

dsweiliang  初级技神

发表于 2017-4-27 23:37:09

mark一下,学习学习了
回复

使用道具 举报

DeepMind  见习技师

发表于 2017-6-29 17:23:29

我想知道,能不能通过家里的无线路由器,连接到服务器上去?
回复

使用道具 举报

question  见习技师
 楼主|

发表于 2017-7-5 23:24:28

DeepMind 发表于 2017-6-29 17:23
我想知道,能不能通过家里的无线路由器,连接到服务器上去?

这个代码就是通过wifi和阿里云进行通信的例子
回复

使用道具 举报

ishmaelQ  学徒

发表于 2017-8-5 16:32:25

有没有用php通信的例子,
回复

使用道具 举报

question  见习技师
 楼主|

发表于 2017-8-26 00:33:23

ishmaelQ 发表于 2017-8-5 16:32
有没有用php通信的例子,

php的服务器我不会写 arduino那边是标准的get请求 你用PHP也能用的
回复

使用道具 举报

maomaopcy  学徒

发表于 2018-3-16 17:18:52

请问怎么下载要用到的库
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail