|
|
|
@ -1,6 +1,6 @@ |
|
|
|
#include <DHT.h> |
|
|
|
#include <ESP8266WiFi.h> |
|
|
|
#include <PubSubClient.h> |
|
|
|
#include <ArduinoMqttClient.h> |
|
|
|
#include <LiquidCrystal_I2C.h> |
|
|
|
|
|
|
|
// set the LCD number of columns and rows
|
|
|
|
@ -11,16 +11,14 @@ LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows); |
|
|
|
// WiFi Info
|
|
|
|
const char* ssid = "IoT-Zecevic"; |
|
|
|
const char* password = "IoTSifra123456!"; |
|
|
|
WiFiClient espClient; |
|
|
|
|
|
|
|
//MQTT data
|
|
|
|
const char* mqttServer = "192.168.1.11"; |
|
|
|
const int mqttPort = 1883; |
|
|
|
const char* mqttUser = "yourMQTTuser"; |
|
|
|
const char* mqttPassword = "yourMQTTpassword"; |
|
|
|
WiFiClient espClient; |
|
|
|
PubSubClient MQTTclient(espClient); |
|
|
|
|
|
|
|
|
|
|
|
MqttClient MQTTclient(espClient); |
|
|
|
|
|
|
|
// DHT setup
|
|
|
|
#define DHTPIN 2 |
|
|
|
@ -59,7 +57,7 @@ void initWiFi() { |
|
|
|
} |
|
|
|
|
|
|
|
void reconect() { |
|
|
|
while (MQTTclient.connect("ESP32Client", mqttUser, mqttPassword )) { |
|
|
|
while (!MQTTclient.connect(mqttServer, mqttPort)) { |
|
|
|
Serial.println("Connecting to MQTT..."); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -77,12 +75,19 @@ String prepareHtmlPage() |
|
|
|
"<!DOCTYPE HTML>" |
|
|
|
"<html>"); |
|
|
|
htmlPage += F("</p>" |
|
|
|
"<p><b>Temperature:</b> "); |
|
|
|
"<p><b>Temperatura unutra:</b> "); |
|
|
|
htmlPage += global_temp_indoor; |
|
|
|
htmlPage += F("</p>" |
|
|
|
"<p><b>Humidity:</b> "); |
|
|
|
"<p><b>Vlaznost unutra:</b> "); |
|
|
|
htmlPage += global_hym_indoor; |
|
|
|
|
|
|
|
htmlPage += F("</p>" |
|
|
|
"<p><b>Temperatura vani:</b> "); |
|
|
|
htmlPage += global_temp_outdoor; |
|
|
|
htmlPage += F("</p>" |
|
|
|
"<p><b>Vlaznost vani:</b> "); |
|
|
|
htmlPage += global_hym_outdoor; |
|
|
|
|
|
|
|
htmlPage += F("</html>" |
|
|
|
"\r\n"); |
|
|
|
return htmlPage; |
|
|
|
@ -104,20 +109,6 @@ void setup() { |
|
|
|
server.begin(); |
|
|
|
Serial.printf("Web server started, open %s in a web browser\n", WiFi.localIP().toString().c_str()); |
|
|
|
|
|
|
|
//connect to MQTT
|
|
|
|
MQTTclient.setServer(mqttServer, mqttPort); |
|
|
|
//MQTTclient.setCallback(callback);
|
|
|
|
|
|
|
|
while (!MQTTclient.connected()) { |
|
|
|
|
|
|
|
if (MQTTclient.connect("ESP32Client", mqttUser, mqttPassword )) { |
|
|
|
Serial.println("Connected to mqtt!"); |
|
|
|
} else { |
|
|
|
Serial.print("failed with state "); |
|
|
|
Serial.print(MQTTclient.state()); |
|
|
|
delay(2000); |
|
|
|
} |
|
|
|
} |
|
|
|
//show 5 sec IP on display
|
|
|
|
lcd.setCursor(0, 0); |
|
|
|
lcd.print("IP Adresa:"); |
|
|
|
@ -155,15 +146,31 @@ void loop() { |
|
|
|
|
|
|
|
|
|
|
|
unsigned long currentMillis = millis(); |
|
|
|
//if(currentMillis - previousMillis > interval) {
|
|
|
|
// previousMillis = currentMillis;
|
|
|
|
// if (!MQTTclient.connected()) {
|
|
|
|
// WiFi.reconnect();
|
|
|
|
// reconect();
|
|
|
|
// }
|
|
|
|
// MQTTclient.publish("my/BedRoom/Temperature", String(global_temp_indoor).c_str());
|
|
|
|
// MQTTclient.publish("my/BedRoom/Humidity", String(global_hym_indoor).c_str());
|
|
|
|
// }
|
|
|
|
if(currentMillis - previousMillis > interval) { |
|
|
|
previousMillis = currentMillis; |
|
|
|
if (!MQTTclient.connected()) { |
|
|
|
WiFi.reconnect(); |
|
|
|
reconect(); |
|
|
|
} |
|
|
|
MQTTclient.beginMessage("my/Osijek/Indor-Temperature"); |
|
|
|
MQTTclient.print(String(global_temp_indoor).c_str()); |
|
|
|
MQTTclient.endMessage(); |
|
|
|
|
|
|
|
MQTTclient.beginMessage("my/Osijek/Indor-Humidity"); |
|
|
|
MQTTclient.print(String(global_hym_indoor).c_str()); |
|
|
|
MQTTclient.endMessage(); |
|
|
|
|
|
|
|
MQTTclient.beginMessage("my/Osijek/Outdoor-Temperature"); |
|
|
|
MQTTclient.print(String(global_temp_outdoor).c_str()); |
|
|
|
MQTTclient.endMessage(); |
|
|
|
|
|
|
|
MQTTclient.beginMessage("my/Osijek/Outdoor-Humidity"); |
|
|
|
MQTTclient.print(String(global_hym_outdoor).c_str()); |
|
|
|
MQTTclient.endMessage(); |
|
|
|
|
|
|
|
Serial.println("mqqt published"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
WiFiClient serverClient = server.available(); |
|
|
|
if (serverClient) |
|
|
|
|