2017-03-03 2 views
1

J'essaie de connecter mon microcontrôleur ESP8266 12F à un serveur Apache distant hébergé sur hostinger.com. Mais le client est incapable de se connecter. Ce que je dois faire est d'écrire quelques lectures sur ma base de données mysql sur le serveur. J'ai connecté le microcontrôleur à mon hotspot mobile, mais je ne peux pas me connecter au serveur. Voici mon code:Impossible de connecter l'ESP8266 au serveur distant

#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 

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

S'il vous plaît, aidez-moi.

+0

êtes-vous sûr que le port doit être '8000'? (c'est habituellement '80'). Je peux le voir sur le port 80 d'ici, mais le port 8000 fois ... – dandavis

+0

Oh, je suis désolé que c'était une faute de frappe. Idk comment ça s'est glissé. –

+0

J'ai essayé d'envoyer des données via CURL et il ne répond pas correctement, êtes-vous sûr que votre serveur fonctionne? – eyllanesc

Répondre

0

Voici comment je me suis mis au travail, au cas où cela aiderait quelqu'un.

côté serveur:

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

côté client:

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