Uživatelské nástroje

Nástroje pro tento web


zarizeni:esp8266

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
zarizeni:esp8266 [2016/06/06 10:50]
multitricker
zarizeni:esp8266 [2016/10/07 15:52] (aktuální)
multitricker
Řádek 15: Řádek 15:
  
 <file c tmep_send_temperature.ino>​ <file c tmep_send_temperature.ino>​
-/Simple sketch for sending data to the TMEP.cz +/
-// by mikrom (http://​www.mikrom.cz) +  ​Simple sketch for sending data to the TMEP.cz 
-// http://​wiki.tmep.cz/​doku.php?​id=zarizeni:​esp8266 +  by mikrom (http://​www.mikrom.cz) 
-// +  http://​wiki.tmep.cz/​doku.php?​id=zarizeni:​esp8266 
-// If you send only temperature url will be: http://​ahoj.tmep.cz/?​mojemereni=25.6 (domain is "​ahoj"​ and guid is "​mojemereni"​ + 
-// If you send also humidity url will be: http://​ahoj.tmep.cz/?​mojemereni=25.6&​humV=60 +  If you send only temperature url will be: http://​ahoj.tmep.cz/?​mojemereni=25.6 (domain is "​ahoj"​ and guid is "​mojemereni"​ 
-// but for humidity You will need DHT11 or DHT22 sensor and code will need some modifications+  If you send also humidity url will be: http://​ahoj.tmep.cz/?​mojemereni=25.6&​humV=60 
 +  ​But ​for humidity You will need DHT11 or DHT22 sensor and code will need some modifications, see the other sketch. 
 + 
 +  Blinking with ESP internal LED according status: 
 +  LED constantly blinking = connecting to WiFi 
 +  LED on for 5 seconds = boot, setup, WiFi connect OK 
 +  LED blink 2x per second = temp error (wrong pin, bad sensor, read -127.00°C) 
 +  LED blink 3x per second = connect to host failed 
 +  LED blink 4x per second = client connection timeout 
 +  LED blink 1x per [sleep] = send data ok 
 +*/
  
 #include <​ESP8266WiFi.h> ​      // WiFi library #include <​ESP8266WiFi.h> ​      // WiFi library
Řádek 28: Řádek 38:
  
 // Define settings // Define settings
-const charssid      = "---wifi ssid---";​ // WiFi SSID +const char ssid[]     = "​---ssid---";​ // WiFi SSID 
-const charpass      = "---wifi pass---"; // WiFi password +const char pass[]     = "---password---"; // WiFi password 
-const chardomain ​   = "​---domain---"; ​   // domain.tmep.cz +const char domain[]   = "​---domain---"; ​ // domain.tmep.cz 
-const charguid      = "​---guid---"; ​     // mojemereni +const char guid[]     = "​---guid---";​ // mojemereni 
-const long sleep      = 600000           // How often send data to the server. ​Default is 600000ms = 10 minute +const byte sleep      = 1; // How often send data to the server. ​In minutes 
-const byte oneWireBus = 5;                 ​// Pin where is DS18B20 connected+const byte oneWireBus = 5; // Pin where is DS18B20 connected
  
 // Create Temperature object "​sensors"​ // Create Temperature object "​sensors"​
-OneWire oneWire(oneWireBus); ​      ​// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/​Dallas temperature ICs)+OneWire oneWire(oneWireBus); ​        ​// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/​Dallas temperature ICs)
 DallasTemperature sensors(&​oneWire);​ // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&​oneWire);​ // Pass our oneWire reference to Dallas Temperature.
  
 void setup() { void setup() {
 +  pinMode(2, OUTPUT); // GPIO2, LED on ESP8266
 +  ​
   // Start serial   // Start serial
   Serial.begin(115200);​   Serial.begin(115200);​
Řádek 46: Řádek 58:
  
   // Connect to the WiFi   // Connect to the WiFi
-  Serial.print("​Connecting to "); Serial.println(ssid);​+  Serial.print(F("​Connecting to ")); Serial.println(ssid);​
   WiFi.begin(ssid,​ pass);   WiFi.begin(ssid,​ pass);
   while (WiFi.status() != WL_CONNECTED) {   while (WiFi.status() != WL_CONNECTED) {
 +    digitalWrite(2,​ LOW); delay(100); digitalWrite(2,​ HIGH); // Blinking with LED during connecting to WiFi
     delay(500);     delay(500);
-    Serial.print("​."​);​+    ​//​digitalWrite(2,​ HIGH); // Blinking with LED during connecting to WiFi 
 +    ​Serial.print(F("​."​));
   }   }
   Serial.println();​   Serial.println();​
-  Serial.println("​WiFi connected"​);​ +  Serial.println(F("WiFi connected"​)); 
-  Serial.print("​IP address: "); Serial.println(WiFi.localIP());​+  Serial.print(F("IP address: ")); Serial.println(WiFi.localIP());​
   Serial.println();​   Serial.println();​
  
   sensors.begin();​ // Initialize the DallasTemperature DS18B20 class (not strictly necessary with the client class, but good practice).   sensors.begin();​ // Initialize the DallasTemperature DS18B20 class (not strictly necessary with the client class, but good practice).
-  ​delay(10000);+ 
 +  // LED on for 5 seconds after setup is done 
 +  digitalWrite(2,​ LOW); 
 +  ​delay(5000); 
 +  digitalWrite(2,​ HIGH);
 } }
  
 void loop() { void loop() {
-  sensors.requestTemperatures(); ​          ​// Send the command to get temperatures. request to all devices on the bus+  sensors.requestTemperatures(); ​       // Send the command to get temperatures. request to all devices on the bus
   float t = sensors.getTempCByIndex(0);​ // Read temperature in "​t"​ variable   float t = sensors.getTempCByIndex(0);​ // Read temperature in "​t"​ variable
   if (t == -127.00) {                   // If you have connected it wrong, Dallas read this temperature! :)   if (t == -127.00) {                   // If you have connected it wrong, Dallas read this temperature! :)
-    Serial.println("​Temp error!"​);​+    Serial.println(F("Temp error!"​)); 
 +    // Blink 2 time when temp error 
 +    digitalWrite(2,​ LOW); delay(100); digitalWrite(2,​ HIGH); delay(100); digitalWrite(2,​ LOW); delay(100); digitalWrite(2,​ HIGH); 
 +    delay(1000);
     return;     return;
   }   }
Řádek 75: Řádek 96:
   strcpy(host,​ domain); ​    // Copy /domain/ in to the /host/   strcpy(host,​ domain); ​    // Copy /domain/ in to the /host/
   strcat(host,​ "​.tmep.cz"​);​ // Add "​.tmep.cz"​ at the end of the /host/. /host/ is now "/​domain/​.tmep.cz"​   strcat(host,​ "​.tmep.cz"​);​ // Add "​.tmep.cz"​ at the end of the /host/. /host/ is now "/​domain/​.tmep.cz"​
-  const int httpPort = 80; 
   ​   ​
-  Serial.print("​Connecting to "); Serial.println(host);​ +  Serial.print(F("​Connecting to ")); Serial.println(host);​ 
-  if (!client.connect(host, ​httpPort)) {+  if (!client.connect(host, ​80)) {
     // If you didn't get a connection to the server     // If you didn't get a connection to the server
-    Serial.println("​Connection failed"​);​+    Serial.println(F("​Connection failed"​)); 
 +    // Blink 3 times when host connection error 
 +    digitalWrite(2,​ LOW); delay(100); digitalWrite(2,​ HIGH); delay(100); digitalWrite(2,​ LOW); delay(100); digitalWrite(2,​ HIGH); delay(100); digitalWrite(2,​ LOW); delay(100); digitalWrite(2,​ HIGH); 
 +    delay(1000);
     return;     return;
   }   }
-  Serial.println("​Client connected"​);​+  Serial.println(F("​Client connected"​));
  
   // Make an url. We need: /?guid=t   // Make an url. We need: /?guid=t
Řádek 90: Řádek 113:
          url += "​=";​          url += "​=";​
          url += t;          url += t;
-  Serial.print("​Requesting URL: "); Serial.println(url);​+  Serial.print(F("​Requesting URL: ")); Serial.println(url);​
   ​   ​
   // Make a HTTP GETrequest.   // Make a HTTP GETrequest.
Řádek 97: Řádek 120:
                "​Connection:​ close\r\n\r\n"​);​                "​Connection:​ close\r\n\r\n"​);​
  
 +  // Blik 1 time when send OK
 +  digitalWrite(2,​ LOW); delay(100); digitalWrite(2,​ HIGH);
 +  ​
   // Workaroud for timeout   // Workaroud for timeout
   unsigned long timeout = millis();   unsigned long timeout = millis();
   while (client.available() == 0) {   while (client.available() == 0) {
     if (millis() - timeout > 5000) {     if (millis() - timeout > 5000) {
-      Serial.println(">>>​ Client Timeout !");+      Serial.println(F(">>>​ Client Timeout !"));
       client.stop();​       client.stop();​
 +      // Blink 4 times when client timeout
 +      digitalWrite(2,​ LOW); delay(100); digitalWrite(2,​ HIGH); delay(100); digitalWrite(2,​ LOW); delay(100); digitalWrite(2,​ HIGH); digitalWrite(2,​ LOW); delay(100); digitalWrite(2,​ HIGH); delay(100); digitalWrite(2,​ LOW); delay(100); digitalWrite(2,​ HIGH);
 +      delay(1000);​
       return;       return;
     }     }
Řádek 110: Řádek 139:
   ​   ​
   // Wait for another round   // Wait for another round
-  delay(sleep);​+  delay(sleep*60000);
 } }
 </​file>​ </​file>​
zarizeni/esp8266.txt · Poslední úprava: 2016/10/07 15:52 autor: multitricker