#include <WiFi.h>
#include <PubSubClient.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
WiFiClient WIFI_CLIENT;
PubSubClient MQTT_CLIENT(WIFI_CLIENT);
void callback(char* topic, byte* payload, unsigned int length)
{
Serial.print("Prijata sprava z temy [");
Serial.print(topic);
Serial.print("]: ");
// Správa sa vypíše ako text
String message;
for (int i = 0; i < length; i++)
{
message += (char)payload[i];
}
Serial.println(message);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sprava:");
lcd.setCursor(0, 1);
lcd.print(message);
int receivedValue = message.toInt();
Serial.print("Spracovana hodnota: ");
Serial.println(receivedValue);
}
void reconnect()
{
while (!MQTT_CLIENT.connected())
{
Serial.println("Pripajanie sa ku MQTT brokeru...");
if (MQTT_CLIENT.connect("ReceiverClient"))
{
Serial.println("Pripojene...");
MQTT_CLIENT.subscribe("ahoj");
Serial.println("Prihlaseny na temu: ahoj");
}
else
{
Serial.print("Nepripojene (3sek)... ");
delay(3000);
}
}
}
void setup()
{
lcd.init();
lcd.backlight();
WiFi.mode(WIFI_STA);
Serial.begin(9600);
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED)
{
delay(250);
Serial.print(".");
}
Serial.print("WIFI uspesne pripojena: ");
Serial.println(WiFi.localIP());
MQTT_CLIENT.setServer("broker.hivemq.com", 1883);
MQTT_CLIENT.setCallback(callback);
lcd.setCursor(0, 0);
lcd.print("MQTT Receiver");
lcd.setCursor(0, 1);
lcd.print("Waiting for msg...");
delay(2000);
lcd.clear();
}
void loop()
{
if (!MQTT_CLIENT.connected())
reconnect();
MQTT_CLIENT.loop();
}