//http://hivemq.com/demos/websocket-client/
#include <WiFi.h>
#include <PubSubClient.h>
#include <LiquidCrystal_I2C.h>
WiFiClient WIFI_CLIENT;
PubSubClient MQTT_CLIENT(WIFI_CLIENT); // uprava
LiquidCrystal_I2C lcd(0x27, 20, 4);
long buducnost = 0;
void callback(char* topic, byte* payload, unsigned int length) // nove
{
Serial.print("Prijata sprava: ");
String message;
for (int i = 0; i < length; i++)
{
message += (char)payload[i];
}
Serial.println(message);
lcd.clear();
lcd.print(message);
}
void reconnect() // uprava
{
while (!MQTT_CLIENT.connected())
{
Serial.println("Pripajanie sa ku MQTT brokeru...");
if (MQTT_CLIENT.connect("LCD"))
{
Serial.println("pripojene...");
MQTT_CLIENT.subscribe("POTENCIOMETER");
}
else
{
Serial.print("nepripojene (3sek)...");
delay(3000);
}
}
}
void setup() {
lcd.init();
lcd.backlight();
WiFi.mode(WIFI_STA); // nove
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); // uprava
MQTT_CLIENT.setCallback(callback); // nove
lcd.setCursor(0, 0);
lcd.print("MQTT Receiver");
lcd.setCursor(0, 1);
lcd.print("Waiting for msg...");
delay(1000);
lcd.clear();
}
void loop()
{
if (!MQTT_CLIENT.connected())
reconnect();
MQTT_CLIENT.loop(); // snaha o co najcastejsie volanie obsluhy MQTT
}