Close

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

#10967
johnyhol
Účastník

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.