diff --git a/Raspjavik_1.ino b/Raspjavik_1.ino index 1959cc6..8097889 100644 --- a/Raspjavik_1.ino +++ b/Raspjavik_1.ino @@ -1,271 +1,271 @@ -// http://bennirafvirki.is/sensors/ui/readings -// Working well as a draft, the code need to be clean. - -#ifdef ESP32 // Import required libraries -#include - -#else -#include -#include -#include -#include -#include -#endif -#include -#include -#define ONE_WIRE_BUS 4 // Data wire is connected to GPIO 4 = pin D2 -OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices -DallasTemperature sensors(&oneWire); // Pass our oneWire reference to Dallas Temperature sensor - -//#include -#include -#include -//#define SERVER_IP "bennirafvirki.is" - - -// Replaced parameters - -// Rikki - const char* ssid = "Asus2"; //network credentials - const char* password = "lukas1234"; -/* -// F7 -const char* ssid = "Hringdu-2.4G-2dfM"; //network credentials F7 -const char* password = "8hs9gmmV"; -*/ -const int tmin = -3; // min temperature -const int tmax = 3; // max temperature -String address = "electropepper"; -int time_of_delay = 50000; //if 50000 ms, than will measure each minute interval - - -// pinout D0=pin16; D1=pin5/GPIO5; D2=pin4/GPIO4; D3=0/Flash; D4=2/Tx1; D5=14; D6=12; D7=13=Rx2; D8=15=Tx2; D9=3=Rx0; D10=1=Tx0; -//const int relay1 = 5; //pin D1 = GPIO5 , relay 1 -//const int relay2 = 14; //pin D5 = GPIO14, relay 2 -const int relay1 = 16; -const int relay2 = 5; - -/// Serial port for debugging purposes Serial.begin(115200); Serial monitoring - -AsyncWebServer server(80); // Create AsyncWebServer object on port 80 - - -String readDSTemperatureC() // Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus -{ - sensors.requestTemperatures(); - float tempC = sensors.getTempCByIndex(0); - - if (tempC == -127.00 || tempC == 85.00 ) - { - Serial.println("Failed to read from DS18B20 sensor"); - ///////////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////could you created README.MD file in your project folder with those notes? - return "--"; - } - else - { - //Serial.print("Temperature Celsius: "); - //Serial.print(tempC); - - } - return String(tempC); -} - - - -const char index_html[] PROGMEM = R"rawliteral( - - - - - - - - -

Fifusel, Reykjavik

- -

- - Temperature Celsius - %TEMPERATUREC% - °C -

Heaters are ON between -3 and 3 celcius

- -

Design by tech company Raspjavik.is

-

Produced by Electropepper.is

-

Instalation by Bennirafvirki.is

-

- - - )rawliteral"; - - - -String processor(const String& var) // Replaces placeholder with DHT values - { - //Serial.println(var); - if (var == "TEMPERATUREC") - { - return readDSTemperatureC(); - } - return String(); - } - - -void setup() -{ - pinMode(relay1, OUTPUT); - digitalWrite(relay1, LOW); - pinMode(relay2, OUTPUT); - digitalWrite(relay2, LOW); - - - Serial.begin(115200); // Serial port for debugging purposes ( baud) - Serial.println(); - sensors.begin(); // Start up the DS18B20 library - - WiFi.begin(ssid, password); // Connect to Wi-Fi - Serial.println("Connecting to WiFi"); - while (WiFi.status() != WL_CONNECTED) - { - delay(500); - Serial.print("."); - } - Serial.println(); - Serial.println(WiFi.localIP()); // Print ESP Local IP Address 192.168.1.18 - - - - server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) // Route for root / web page - { - request->send_P(200, "text/html", index_html, processor); - }); - server.on("/temperaturec", HTTP_GET, [](AsyncWebServerRequest * request) - { - request->send_P(200, "text/plain", readDSTemperatureC().c_str()); - }); - - server.begin(); // Start server - -} - - -void loop() -{ - - float tempC = sensors.getTempCByIndex(0); - - if (tempC > tmin && tempC < tmax) - { - digitalWrite(relay1, LOW); - digitalWrite(relay2, LOW); - Serial.print("Temperature is "); - Serial.print(tempC); - Serial.println(" Celcius and the heaters are ON "); - } - else - { - digitalWrite(relay1, HIGH); - digitalWrite(relay2, HIGH); - Serial.print("Temperature is "); - Serial.print(tempC) ; - Serial.println(" Celcius and the heaters are OFF "); - } - delay(10000); - - // wait for WiFi connection - if ((WiFi.status() == WL_CONNECTED)) - { - - WiFiClient client; - HTTPClient http; - - Serial.print("[HTTP] begin...\n"); - // configure traged server and url - - -/////////////////////////////////////////////////////////////////////////////////////////////////////////// - //could you created README.MD file in your project folder with those notes? - //change to: if tempC is between min and max, so it´s: 0 (OFF), 1 (ON), 2 sensor disconnected, 3 wire or resistance fail, 4 - // if tempC = -127, sensor or resistance disconnect, if tempC = 85, sensor - - int sensor_status = 0; - - String link1 = "http://bennirafvirki.is/sensors/add/temperature/"; - String link2 = String(tempC,DEC%4); - String link3 = "/address/"; - String link4 = String(address); - String link5 = "/state/"; - String link6 = String(sensor_status,DEC); - String link = link1 + link2 + link3 + link4 + link5 + link6 ; - - http.begin(client,link); //Serial.print(link); - - - http.addHeader("Content-Type", "application/json"); - - Serial.print("[HTTP] POST...\n"); - // start connection and send HTTP header and body - int httpCode = http.POST("{\"hello\":\"world\"}"); - - // httpCode will be negative on error - if (httpCode > 0) - { - // HTTP header has been send and Server response header has been handled - Serial.printf("[HTTP] POST... code: %d\n", httpCode); - - // file found at server - if (httpCode == HTTP_CODE_OK) - { - const String& payload = http.getString(); - Serial.println("received payload:\n<<"); - Serial.println(payload); - Serial.println(">>"); - } - } - else - { - Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str()); - } - - http.end(); - } - - delay(time_of_delay); - - -} +// http://bennirafvirki.is/sensors/ui/readings +// Working well as a draft, the code need to be clean. + +#ifdef ESP32 // Import required libraries +#include + +#else +#include +#include +#include +#include +#include +#endif +#include +#include +#define ONE_WIRE_BUS 4 // Data wire is connected to GPIO 4 = pin D2 +OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices +DallasTemperature sensors(&oneWire); // Pass our oneWire reference to Dallas Temperature sensor + +//#include +#include +#include +//#define SERVER_IP "bennirafvirki.is" + + +// Replaced parameters + +// Rikki + const char* ssid = "As"; //network credentials + const char* password = "hgj65"; +/* +// F7 +const char* ssid = "Hringdu-2"; //network credentials F7 +const char* password = "45jy"; +*/ +const int tmin = -3; // min temperature +const int tmax = 3; // max temperature +String address = "electropepper"; +int time_of_delay = 50000; //if 50000 ms, than will measure each minute interval + + +// pinout D0=pin16; D1=pin5/GPIO5; D2=pin4/GPIO4; D3=0/Flash; D4=2/Tx1; D5=14; D6=12; D7=13=Rx2; D8=15=Tx2; D9=3=Rx0; D10=1=Tx0; +//const int relay1 = 5; //pin D1 = GPIO5 , relay 1 +//const int relay2 = 14; //pin D5 = GPIO14, relay 2 +const int relay1 = 16; +const int relay2 = 5; + +/// Serial port for debugging purposes Serial.begin(115200); Serial monitoring + +AsyncWebServer server(80); // Create AsyncWebServer object on port 80 + + +String readDSTemperatureC() // Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus +{ + sensors.requestTemperatures(); + float tempC = sensors.getTempCByIndex(0); + + if (tempC == -127.00 || tempC == 85.00 ) + { + Serial.println("Failed to read from DS18B20 sensor"); + ///////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////could you created README.MD file in your project folder with those notes? + return "--"; + } + else + { + //Serial.print("Temperature Celsius: "); + //Serial.print(tempC); + + } + return String(tempC); +} + + + +const char index_html[] PROGMEM = R"rawliteral( + + + + + + + + +

Fifusel, Reykjavik

+ +

+ + Temperature Celsius + %TEMPERATUREC% + °C +

Heaters are ON between -3 and 3 celcius

+ +

Design by tech company Raspjavik.is

+

Produced by Electropepper.is

+

Instalation by Bennirafvirki.is

+

+ + + )rawliteral"; + + + +String processor(const String& var) // Replaces placeholder with DHT values + { + //Serial.println(var); + if (var == "TEMPERATUREC") + { + return readDSTemperatureC(); + } + return String(); + } + + +void setup() +{ + pinMode(relay1, OUTPUT); + digitalWrite(relay1, LOW); + pinMode(relay2, OUTPUT); + digitalWrite(relay2, LOW); + + + Serial.begin(115200); // Serial port for debugging purposes ( baud) + Serial.println(); + sensors.begin(); // Start up the DS18B20 library + + WiFi.begin(ssid, password); // Connect to Wi-Fi + Serial.println("Connecting to WiFi"); + while (WiFi.status() != WL_CONNECTED) + { + delay(500); + Serial.print("."); + } + Serial.println(); + Serial.println(WiFi.localIP()); // Print ESP Local IP Address 192.168.1.18 + + + + server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) // Route for root / web page + { + request->send_P(200, "text/html", index_html, processor); + }); + server.on("/temperaturec", HTTP_GET, [](AsyncWebServerRequest * request) + { + request->send_P(200, "text/plain", readDSTemperatureC().c_str()); + }); + + server.begin(); // Start server + +} + + +void loop() +{ + + float tempC = sensors.getTempCByIndex(0); + + if (tempC > tmin && tempC < tmax) + { + digitalWrite(relay1, LOW); + digitalWrite(relay2, LOW); + Serial.print("Temperature is "); + Serial.print(tempC); + Serial.println(" Celcius and the heaters are ON "); + } + else + { + digitalWrite(relay1, HIGH); + digitalWrite(relay2, HIGH); + Serial.print("Temperature is "); + Serial.print(tempC) ; + Serial.println(" Celcius and the heaters are OFF "); + } + delay(10000); + + // wait for WiFi connection + if ((WiFi.status() == WL_CONNECTED)) + { + + WiFiClient client; + HTTPClient http; + + Serial.print("[HTTP] begin...\n"); + // configure traged server and url + + +/////////////////////////////////////////////////////////////////////////////////////////////////////////// + //could you created README.MD file in your project folder with those notes? + //change to: if tempC is between min and max, so it´s: 0 (OFF), 1 (ON), 2 sensor disconnected, 3 wire or resistance fail, 4 + // if tempC = -127, sensor or resistance disconnect, if tempC = 85, sensor + + int sensor_status = 0; + + String link1 = "http://bennirafvirki.is/sensors/add/temperature/"; + String link2 = String(tempC,DEC%4); + String link3 = "/address/"; + String link4 = String(address); + String link5 = "/state/"; + String link6 = String(sensor_status,DEC); + String link = link1 + link2 + link3 + link4 + link5 + link6 ; + + http.begin(client,link); //Serial.print(link); + + + http.addHeader("Content-Type", "application/json"); + + Serial.print("[HTTP] POST...\n"); + // start connection and send HTTP header and body + int httpCode = http.POST("{\"hello\":\"world\"}"); + + // httpCode will be negative on error + if (httpCode > 0) + { + // HTTP header has been send and Server response header has been handled + Serial.printf("[HTTP] POST... code: %d\n", httpCode); + + // file found at server + if (httpCode == HTTP_CODE_OK) + { + const String& payload = http.getString(); + Serial.println("received payload:\n<<"); + Serial.println(payload); + Serial.println(">>"); + } + } + else + { + Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str()); + } + + http.end(); + } + + delay(time_of_delay); + + +}