Ja komunikację między ESP rozwiązałem tak:
ESP Server:
Kod: Zaznacz cały
#include <ESP8266WiFi.h>
String tempertura;
IPAddress staticIP46_10(192,168,1,10);
IPAddress gateway46_10(192,168,1,1);
IPAddress subnet46_10(255,255,255,0);
WiFiServer server(80);
void setup()
{
tempertura = "";
Serial.begin(9600);
WiFi.disconnect();
delay(3000);
Serial.println("Uruchamiam...");
WiFi.begin("my-net","mypass");
while ((!(WiFi.status() == WL_CONNECTED))){
delay(300);
Serial.print("..");
}
Serial.println("Polaczony");
WiFi.config(staticIP46_10, gateway46_10, subnet46_10);
Serial.println("Twoj IP to:");
Serial.println((WiFi.localIP()));
server.begin();
}
void loop()
{
WiFiClient client = server.available();
if (!client) { return; }
while(!client.available()){ delay(1); }
tempertura = (client.readStringUntil('\r'));
}
ESP Client:
Kod: Zaznacz cały
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
String i;
IPAddress staticIP26_11(192,168,1,11);
IPAddress gateway26_11(192,168,1,1);
IPAddress subnet26_11(255,255,255,0);
String httpurl;
HTTPClient http;
void setup()
{
i = "-300";
Serial.begin(9600);
WiFi.disconnect();
delay(3000);
Serial.println("Uruchamiam");
WiFi.begin("my-net","mypass");
while ((!(WiFi.status() == WL_CONNECTED))){
delay(300);
Serial.print("..");
}
Serial.println("Polaczony");
WiFi.config(staticIP26_11, gateway26_11, subnet26_11);
Serial.println("Twoj IP to:");
Serial.println((WiFi.localIP()));
}
void loop()
{
httpurl = "http://";
httpurl+="192.168.1.10";
httpurl+="/";
httpurl+=i;
http.begin(httpurl);
http.GET();
http.end();
ESP.deepSleep(355e6); // deep sleep na 355 sekund
}
Jak na serwerze odbierzesz pakiet to musisz go jeszcze odpowiednio przyciąć i przekonwertować ze string do double.
A wracając do umieszczania temperatury na cloud, rozumiem, że wystarczy mniej więcej taka modyfikacja w kodzie?
Kod: Zaznacz cały
double get_temperature(int channelNumber, double last_val) {
double t = tempespclient;
delay(100);
t += 0,05;
delay(100);
t -= 0,06;
return t;
}
Czy konieczne jest jeszcze przyspisanie zmiennej do last_val?
Edit:
Siedząc w pracy mnie chyba trochę olśniło. Pewnie nie chodzi o dodawanie i odejmowanie od t a raczej żeby client wysyłał dwa (różne) pomiary w krótkim odstępie czasu np 100 ms.
Tak czy inaczej wieczorem sprawdzę, jak będzie działać wrzucę wemosa w zew zasilanie i zrobie praktyczny test ile czasu wytrzyma