Search code examples
esp8266arduino-esp8266

Cannot connect ESP8266 to remote server


I'm trying to connect my ESP8266 12F microcontroller to a remote Apache server hosted on hostinger.com. But the client is unable to connect. What I need to do is write some readings to my mysql database on server. I've connected the microcontroller to my mobile hotspot but cannot connect to server. Here's my code:

#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

Here's the php code:

<?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);
 }
 ?>

Please help me out.


Solution

  • Here's how I got in working, in case it helps anybody.

    Server side:

    <?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);
     }
     ?>
    

    Client side:

    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();
      }