0

我正在尝试将我的 ESP8266 12F 微控制器连接到托管在 hosts.com 上的远程 Apache 服务器。但是客户端无法连接。我需要做的是将一些读数写入服务器上的 mysql 数据库。我已将微控制器连接到我的移动热点,但无法连接到服务器。这是我的代码:

#include<ESP8266WiFi.h>

#define SS_PIN 4
#define RST_PIN 5
#define host http://smartlbus.esy.es/
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

static const int RXPin = 0, TXPin = 16;
static const uint32_t GPSBaud = 9600;

// The TinyGPS++ object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600); // Initialize serial communications with the PC
  SPI.begin(); // Init SPI bus
  mfrc522.PCD_Init(); // Init MFRC522 card
  WiFi.mode(WIFI_STA);
  WiFi.begin("smartbus","qwerty123");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  if(WiFi.status()==WL_CONNECTED)  Serial.println("Connected to wifi");

}

void loop() {

  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
 if (client.connect("http://www.smartlbus.esy.es", httpPort)) {
  Serial.println("Connected to server");
  while (ss.available() > 0)
    if (gps.encode(ss.read()))
      {
        double lat,lng;
        float speed;
         if (gps.location.isValid())
              {
              lat=gps.location.lat();
              lng=gps.location.lng();
              speed=gps.speed.value();
              }

        String data = "lat1=" + (String)  lat + "&lng1=" + (String)lng + "&speed=" + (String)speed;

          client.println("POST /add.php HTTP/1.1"); 
          client.println("Host: www.smartlbus.esy.es");
          client.println("Content-Type: application/x-www-form-urlencoded");
          client.print("Content-Length: "); 
          client.println(data.length()); 
          client.println(); 
          client.print(data);
          delay(500);

      }
 }
  else{
    Serial.println("Cannot cannect to server..");
  }
 // Look for new cards

这是php代码:

<?php
    include 'dbConnect.php';

 if($_SERVER['REQUEST_METHOD']=='POST'){

 //Getting values 


 $lat = $_POST['lat1'];
 $lng = $_POST['lng1'];
 $speed = $_POST['speed'];
 $id = $_POST['busid']; 

 //Creating an sql query
 $sql = "INSERT INTO status (bus_id,latitude,longitude,speed) VALUES ('$id','$lat','$lng','$speed')";



 //Executing query to database
 mysqli_query($con,$sql);


 //Closing the database 
 mysqli_close($con);
 }
 ?>

请帮帮我。

4

1 回答 1

0

这是我工作的方式,以防它帮助任何人。

服务器端:

<?php
    include 'dbConnect.php';

 if($_SERVER['REQUEST_METHOD']=='POST'){

 //Getting values 


 $lat = $_POST['lat1'];
 $lng = $_POST['lng1'];
 $speed = $_POST['speed'];
 $id = $_POST['busid']; 

 //Creating an sql query
 $sql = "INSERT INTO status (busid,latitude,longitude,speed) VALUES ('$id','$lat','$lng','$speed')";



 //Executing query to database
 mysqli_query($con,$sql);


 //Closing the database 
 mysqli_close($con);
 }
 ?>

客户端:

HTTPClient http;
  http.begin("http://www.smartlbus.esy.es/add.php");
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");
 while (ss.available() > 0)
   if (gps.encode(ss.read()))
     {
        if (gps.location.isValid())
              {
              lat=gps.location.lat();
              lng=gps.location.lng();
              speed=gps.speed.value();
              }
        if(lat!=plat&&lng!=plng){
        lat=0;lng=0;speed=0;
            String data = "lat1=" + (String)lat + "&lng1=" + (String)lng + "&speed=" + (String)speed + "& busid=101";
            int httpCode = http.POST(data);
        }
          http.end();
          plat=lat;
          plng=lng;
          delay(500);
      }

 // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
  return;
  }

  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }

unsigned long UID_unsigned;
UID_unsigned = mfrc522.uid.uidByte[0] << 24;
UID_unsigned += mfrc522.uid.uidByte[1] << 16;
UID_unsigned += mfrc522.uid.uidByte[2] << 8;
UID_unsigned += mfrc522.uid.uidByte[3];

String UID_string = (String)UID_unsigned;

if(UID_string.indexOf("3133482000")!=-1)
  {   
  HTTPClient httpClient;
  httpClient.begin("http://www.smartlbus.esy.es/notify.php");
  httpClient.addHeader("Content-Type", "application/x-www-form-urlencoded");
  String data = "child=" + UID_string+"lat1=" + (String)lat + "&lng1=" + (String)lng;
  int httpCode = http.POST(data);
  httpClient.end();
  }
于 2017-03-08T17:22:45.653 回答