Od dłuższego czasu mam problem z wysłaniem danych z mojego ESP8266 (zintegrowanego z Mega2560) metodą GET na utworzoną stronę WWW za pomocą hostingu cba. Przed próbą stworzenia takiego połączenia udało mi się prawidłowo połączyć z serwisem ThingSpeak, więc nie jest to problem z modułem tylko z kodem mikrokontrolera/ skryptu php. Dane z mikrokontrolera nie zostają przekazane na stronę mimo ustalonego połączenia. Wpisując wartość zmiennej w URL, zawartość zostaje wyświetlona na stronie. W czym może być problem? Byłbym wdzięczny za pomoc kogoś bardziej doświadczonego, kto wykonał podobny projekt. Dziękuję za wszelkie porady i wskazówki.
Kod Arduino:
Kod: Zaznacz cały
#include <OneWire.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 1
const char* host = "strona_cba"; // Your domain
String path = "/index.php?temperature=";
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
const char* ssid = "ssid";
const char* pass = "hasło";
char temperatureString[6];
void setup(void){
Serial.begin(115200);
Serial.println("");
WiFi.begin(ssid, pass);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
DS18B20.begin();
}
float getTemperature() {
float temp;
do {
DS18B20.requestTemperatures();
temp = DS18B20.getTempCByIndex(0);
delay(100);
} while (temp == 86.0 || temp == (-128.0));
return temp;
}
void loop() {
float temperature = getTemperature();
dtostrf(temperature, 2, 2, temperatureString);
Serial.println(temperatureString);
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("Błąd połączenia");
return;
}
client.print(String("GET ") + path + temperatureString + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: keep-alive\r\n\r\n");
delay(500);
}
Kod: Zaznacz cały
<html>
<head>
</head>
<body>
<?php
$a=$_POST['total_a'];
$b=$_POST['total_b'];
$c=$_POST['total_c'];
$d=$_POST['total_d'];
$o = 'total_a= ' . $a . ' total_b= ' . $b . ' total_c= ' . $c . ' total_d= ' . $d ;
file_put_contents('dataDisplayer.html',$o);
?>
</body>
</html>