Jag försöker få min Wemos D1 mini att rapportera temperaturen via url, men jag gör någon galet när jag anropar rapportera.php.
Anropet är detta: www.temperatur.nu/rapportera.php?hash=b ... temperatur>.
(har bytt de sista siffrorna i hashen, mot nollor)
Stationen är denna: https://www.temperatur.nu/ranekolen.html
För att åstadkomma detta försöker jag använda mig av HTTP POST som ser ut så här:
Kod: Markera allt
"POST /rapportera.php HTTP/1.1
Host: temperatur.nu
Content-Type: application/x-www-form-urlencoded
Content-Length: 43
hash=ba79c368433558812aca752110000000&t=4.5
"
Kod: Markera allt
Connecting to RNG
..
WiFi connected
IP address:
192.168.1.210
Connecting to www.temperatur.nu
Svar från server:
HTTP/1.1 200 OK
Date: Tue, 23 Apr 2019 19:03:49 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=d42487f78ead7ddfc8924a14814975be11556046229; expires=Wed, 22-Apr-20 19:03:49 GMT; path=/; domain=.temperatur.nu; HttpOnly
Server: cloudflare
CF-RAY: 4cc219857d32cad6-ARN
31
Fatal, failure! Kan inte inte matcha stad och id!
0
Någon fler som stött på detta?
Ha det!
Greger
Hela sketchen här:
Kod: Markera allt
#include "ESP8266WiFi.h"
#include "Ticker.h"
Ticker schedule;
const char* ssid = "RNG";
const char* password = "pwd";
String hash = "ba79c368433558812aca75210000000";//Maskad hash
String temp = "4.5";
bool transmit = false;
void report() {
transmit = true;
}
void setup() {
Serial.begin(115200);
delay(100);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
schedule.attach(60, report); //Rapportera enligt intervall
}
void loop() {
if (transmit)
{
schedule.detach(); // Pausa tickern
WiFiClient client;
Serial.print("Connecting to ");
Serial.println(host);
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
String hashParam = "hash=";
hashParam += hash;
String tempParam = "&t=";
tempParam += temp;
String data = hashParam + tempParam;
Serial.print("Requesting POST: ");
// POST /rapportera.php HTTP/1.1\r\nHost: temperatur.nu\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 43\r\n\r\nhash=ba79c368433558812aca75211d7da250&t=3.3\r\n\r\n)
String request;
request = "POST /rapportera.php HTTP/1.1";
request += ("\r\n");
request += ("Host: temperatur.nu");
request += ("\r\n");
request += ("Content-Type: application/x-www-form-urlencoded");
request += ("\r\n");
request += ("Content-Length: ");
request += (data.length());
request += ("\r\n");
request += ("\r\n");
request += (data);
request += ("\r\n");
request += ("\r\n");
/*Serial.println();
Serial.println(request);
Serial.println(); */
// skicka request till server:
client.print(request);
Serial.println("Svar från server:");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
// Läs svar och skriv till Serial
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}
client.stop();
//schedule.attach(60, report);
transmit = false;
}
}