#include <WiFi.h>
#include "time.h"
#include <PubSubClient.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#define NTP_SERVER "pool.ntp.org"
#define UTC_OFFSET 3600
#define UTC_OFFSET_DST 3600
String kluc = "3AT";
String uzprosim;
struct tm badam;
int den = 0;
const char* ssid = "soc2019";
const char* password = "socka2019";
const char* mqtt_server = "broker.hivemq.com";
WiFiClient espClient;
PubSubClient client(espClient);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void getDay(){
struct tm badam;
if (!getLocalTime(&badam) )
{
Serial.println("Server nefachci");
return;
}
den = badam.tm_wday;
}
void reconnect()
{
while (!client.connected())
{
Serial.print("Nejsom pripojeny");
String clientId = "TotoJeIdckoLOL";
if (client.connect(clientId.c_str()))
{
Serial.println("pripojene...");
client.subscribe("robo/testik");
}
else
{
Serial.print("nepripojene (3sek)...");
delay(3000);
}
}
}
void callback(char* topic, byte* payload, unsigned int length) {
String uzprosim;
for (int i = 0; i < length; i++) {
uzprosim += (char)payload[i];
}
EEPROM.get(0, kluc);
kluc.c_str();
uzprosim.c_str();
if(uzprosim[0] == kluc[0] && uzprosim[1] == kluc[1] && uzprosim[2] == kluc[2])
{
Serial.println(uzprosim[4]);
den = (int)uzprosim[4]-48;
Serial.println(den);
vypis();
}
}
void setup() {
Serial.begin(9600);
EEPROM.put(0, kluc);
EEPROM.commit();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
client.setServer(mqtt_server, 1883);
configTime(UTC_OFFSET, UTC_OFFSET_DST, NTP_SERVER);
reconnect();
lcd.init();
lcd.backlight();
getDay();
client.setCallback(callback);
}
void loop() {
client.loop();
vypis();
delay(500);
}
void vypis(){
lcd.clear();
if(den == 6 or den == 0){
lcd.print("HURA VOLNO");
}
else{
lcd.setCursor(0,0);
lcd.print("DO VIKENDU CHYBA");
lcd.setCursor(0,1);
int chyba = (6-den);
lcd.print(chyba);
lcd.print(" DNI");
}
}