/*
 DHT11+ esp8266 (Deep Sleep)
*/

#include <ESP8266WiFi.h>
#include <DHT.h>
extern "C" {
#include <user_interface.h>
}

#define DHTPIN 4     // what digital pin we're connected to
#define DHTTYPE DHT11   // DHT 11
DHT dht(DHTPIN, DHTTYPE);

// int mLedPin=5;

const char* ssid = "";
const char* password = "";

const char* host = "api.thingspeak.com";
String mAPI_KEY="";

static uint32_t mTimerTmp;
static uint32_t mTimerPost;
String mTemp="";
String mHum="";

//
void proc_http(String sTemp, String sHum){
//Serial.print("connecting to ");
//Serial.println(host);  
      WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
      }
      String url = "/update?key="+ mAPI_KEY + "&field1="+ sTemp +"&field2=" + sHum;        
      client.print(String("GET ") + url + " HTTP/1.1\r\n" +
        "Host: " + host + "\r\n" + 
        "Connection: close\r\n\r\n");
      delay(10);      
      int iSt=0;
      while(client.available()){
          String line = client.readStringUntil('\r');
Serial.print(line);
      }    
}


//
void setup() {
  //pinMode(mLedPin, OUTPUT);
  Serial.begin( 9600 );
  Serial.println("#Start-setup");
  Serial.print("millis.Start: ");
  Serial.println(millis() );

  dht.begin();
  delay(10);

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("millis.Connected: ");
  Serial.println(millis() );
      
//  Serial.println("IP address: ");
//  Serial.println(WiFi.localIP());
}

//
void loop() {
  delay( 100 );
  Serial.print("millis.Loop: ");
  Serial.println(millis() );
  if (millis() > 3000 ){
 //read-DHT
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    if (isnan(h) || isnan(t) ) {
        Serial.println("Failed to read from DHT sensor!");
        return;
    }
     String sTmp=String(t);
     String sHum=String(h);
Serial.print("sTmp=");
Serial.print(sTmp);
Serial.print(", Hum=");
Serial.println(sHum);
     proc_http(sTmp , sHum);
Serial.print("millis.SleepStart: ");
Serial.println(millis() );            
     ESP.deepSleep( 600 * 1000 * 1000);   
  }
}