Odpověď na: NodeMCU – měření teploty a posílání na Exosite
Úvodní stránka › Fórum › Vaše projekty › Arduino › NodeMCU – měření teploty a posílání na Exosite › Odpověď na: NodeMCU – měření teploty a posílání na Exosite
Ahoj. Tak můžu (sice s odstupem času) potvrdit, že byl problém opravdu v knihovně. Po zakomentování toho řádku jak radíte to už funguje. Díky moc!
Narazil jsem ale ještě na jeden problém, nebo spíš bych potřeboval poradit jak udělat zpožděné vypnutí nahřívání bojleru u dalšího zařízení s ESP8266 (tentokrát se jedná o SonOff). Kód pro zapnutí a vypnutí mám hotový (to funguje bez problémů), ale nyní bych ho potřeboval doplnit o to, aby po zapnutí přes Exosite běželo nahřívání řekněme 2h a pak, aby se nahřívání vypnulo a vše se vrátilo do původního stavu a bylo to připravené pro další zapnutí. Zkouším to tu už asi tři večery a pořád bez úspěchu. Vždy to skončí tak, že se to sice po nastavené době vypne (vypne relé a vrátí se stav přepínače na Exosite do polohy vypnuto), ale po dalším zapnutí se jenom na chvíli přepne přepínač na Exosite do polohy zapnuto a po pár vteřinách se opět přepne do polohy vypnuto.
Tady je kód se zakomentovaným pokusem o zpoždění:
#include <ESP8266WiFi.h>
#include <Exosite.h>
String cikData = "4b0024b7d0981b76ca9ac9ed61de0de2cf87b704"; // <-- FILL IN YOUR CIK HERE! (https://portals.exosite.com -> Add Device)
const char* ssid = "Holarci";
const char* pass = "H0larc1*2S";
WiFiClient client;
Exosite exosite(cikData, &client);
String readString;
String writeString;
String returnString;
String readParam ;
String writeParam ;
char buffer[7];
int smycka4 = 0; // pomocna smycka - zapaleni
int smycka4max = 50; // max.pomocne smycky
byte TstavA;//ALIAS na exosite
byte TvipA;//ALIAS na exosite
byte ReleA=12;
byte LED=13;
void setup(void){
Serial.begin(9600);
Serial.println("");
WiFi.begin(ssid, pass);
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());
pinMode(ReleA,OUTPUT);
digitalWrite (ReleA,HIGH);
pinMode(LED,OUTPUT);
digitalWrite (LED,HIGH);
}
void loop() {
//*****************************//
// cteni stavu vypinace bojler //
//*****************************//
Serial.println("Ctu stav vypinace A");
readString = "TvipA";
if(exosite.writeRead(writeString, readString, returnString)){
Serial.println("OK");
Serial.print("Stav vypinace A je: ");
Serial.println(returnString);
}
else{
Serial.println("Error");
}
if (returnString == "TvipA=1"){
TvipA=1;
}
else{
TvipA=0;
}
returnString ="";
delay(1000);
//*************************//
// logika zapinani bojleru //
//*************************//
if(TvipA==1){
digitalWrite(ReleA, LOW);
digitalWrite(LED, LOW);
Serial.println("Nahrivani bojleru ZAPNUTO");
TstavA=1;
////////////////////////
// casovac vypnuti -> //
////////////////////////
/* for (smycka4 = 0; smycka4 < smycka4max; smycka4 ++){
delay(1000);
Serial.print("Stav: ");
Serial.print(smycka4);
Serial.print("s/");
Serial.print(smycka4max);
Serial.println("s ");
}
writeString = "TvipA=0";*/
////////////////////////
// <- casovac vypnuti //
////////////////////////
}
else if (TvipA==0){
digitalWrite(ReleA, HIGH);
digitalWrite(LED, HIGH);
Serial.println("Nahrivani bojleru VYPNUTO");
TstavA=0;
}
//**************************//
// odeslani stavu nahrivani //
//**************************//
readParam = "";
writeParam = "TstavA=";
writeParam += TstavA;
if(exosite.writeRead(writeParam, readParam, returnString)) {
Serial.println("Exosite OK");
if (returnString != "") {
Serial.println("Stav nahrivani odeslany");
}
}
else {
Serial.println("Exosite chyba stav neodeslany");
}
delay(1000);
}
Díky za reakce.