Wifi modul ESP 8266
testuji měření teploty a zasílání hodnot na server
- SoC – Espressif Systems ESP8266 32-bit RISC processor with 802.11 b/g/n support(32-pin QFN package),
- Wi-Fi – 802.112 b/g/n with WEP, TKIP, AES, and WAPI engines, Wi-Fi direct (P2P), and soft-AP. On-board antenna and u.FL connector
#include <OneWire.h> #include <DallasTemperature.h> #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <EEPROM.h> //#include <WifiConfig.h> // EasyIoT server definitions #define EIOT_USERNAME "" #define EIOT_PASSWORD "" #define EIOT_IP_ADDRESS "xxx.xxx.xxx.xxx" #define EIOT_PORT 80 #define EIOT_NODE "doma" #define REPORT_INTERVAL 60 // in sec // Data wire is plugged into port 2 on the Arduino #define ONE_WIRE_BUS 12 #define TEMPERATURE_PRECISION 10 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); DeviceAddress insideThermometer, outsideThermometer; ESP8266WebServer wwwserver(80); // webovy server - pouzity je jak pro nastaveni ESP modulu pomoci WifiConfig, tak pro praci aplikace String content; //WifiConfig wifi; // konfigurace ESP modulu const char *ssid = ""; const char *password = ""; float oldTemp,humidity,temp_f; float g_teplota[4]; char dAddress[16]; int Index = 0; const int sleepTimeS = 30; int vcc; int deepsleep = 4 * 60 * 1000 * 1000; // funkce na zobrazeni uvodni stranky static void handleRoot(void) { content = F("<!DOCTYPE HTML>\n<html>Hello world from ESP8266"); content += F("<p>"); content += F("</html>"); wwwserver.send(200, F("text/html"), content); } void setup() { Serial.begin(115200); Serial.println("start\n"); EEPROM.begin(512); // zahajujeme praci s EEPROM delay(5000); //WiFi.softAP(ssid); WiFi.begin(ssid, password); sensors.begin(); // locate devices on the bus Serial.print("Locating devices..."); Serial.print("Found "); Serial.print(sensors.getDeviceCount(), DEC); Serial.println(" devices."); Serial.print("Device 0 Address: "); // report parasite power requirements Serial.print("Parasite power is: "); if (sensors.isParasitePowerMode()) Serial.println("ON"); else Serial.println("OFF"); sensors.getAddress(insideThermometer, 0); sensors.getAddress(outsideThermometer, 1); sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION); sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION); Serial.println(); pinMode(5, OUTPUT); } void client (int) { wwwserver.handleClient(); } void loop() { vcc = ESP.getVcc(); Serial.println(vcc); // call sensors.requestTemperatures() to issue a global temperature // request to all devices on the bus Serial.print("Requesting temperatures..."); sensors.requestTemperatures(); Serial.println("DONE"); // print the device information printData(insideThermometer); printData(outsideThermometer); ctiTeplotu(0); ctiTeplotu(1); sendTeperature(); blink(); ESP.deepSleep(deepsleep, WAKE_RF_DEFAULT); delay(1000); } // function to print a device address void printAddress(DeviceAddress deviceAddress) { for (uint8_t i = 0; i < 8; i++) { // zero pad the address if necessary if (deviceAddress[i] < 16) Serial.print("0"); Serial.print(deviceAddress[i], HEX); } } // function to print the temperature for a device void printTemperature(DeviceAddress deviceAddress) { float tempC = sensors.getTempC(deviceAddress); Serial.print("Temp C: "); Serial.print(tempC); //Serial.println(g_teplota[idx]); } void ctiTeplotu(int idx) { sensors.requestTemperatures(); g_teplota[idx] = sensors.getTempCByIndex(idx); g_teplota[idx] = sensors.getTempCByIndex(idx); Serial.println(g_teplota[idx]); } void printData(DeviceAddress deviceAddress) { Serial.print("Device Address: "); printAddress(deviceAddress); Serial.print(" "); printTemperature(deviceAddress); Serial.println(); } // funkce odeslat teplotu klientovi void temp () { String message = "Aktualni teplota\n\n"; // call sensors.requestTemperatures() to issue a global temperature // request to all devices on the bus //"Requesting temperatures..."; //message += "Temperature for the device 1 (index 0) is: "; //message += g_teplota; wwwserver.send ( 200, "text/plain", message ); } void blink (){ digitalWrite(5,!digitalRead(5)); // turn the LED on (HIGH is the voltage level) } void sendTeperature() { int x=0; WiFiClient client; while(!client.connect(EIOT_IP_ADDRESS, EIOT_PORT)) { Serial.println("connection failed"); delay(5000); if ( x > 5 ) { return; } x++; } // konec while String url = ""; url += "/IoT/index.php?&Virtual="+ String(EIOT_NODE) + "&ControlLevel[0]="+String(g_teplota[0])+"&ControlLevel[1]="+String(g_teplota[1]); // generate EasIoT server node URL Serial.print("GET data to URL: "); Serial.println(url); client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + String(EIOT_IP_ADDRESS) + "\r\n" + "Connection: close\r\n" + // "Authorization: Basic " + unameenc + " \r\n" + "Content-Length: 0\r\n" + "\r\n"); delay(100); while(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line); } Serial.println(); Serial.println("Connection closed"); }