#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
// WiFi a MQTT údaje
const char* ssid = "Wokwi-GUEST"; // WiFi sieť
const char* password = ""; // Heslo WiFi
const char* mqtt_server = "broker.hivemq.com"; // HiveMQ verejný broker
WiFiClient espClient;
PubSubClient client(espClient);
// Callback na spracovanie prijatých údajov
void callback(char* topic, byte* payload, unsigned int length) {
char message[length + 1];
memcpy(message, payload, length);
message[length] = '\0';
/*Serial.print("Správa z topicu ");
Serial.print(topic);
Serial.print(": ");
Serial.println(message);*/
// Parsovanie JSON správy
StaticJsonDocument<200> jsonDoc;
DeserializationError error = deserializeJson(jsonDoc, message);
if (error) {
Serial.print("Chyba parsovania JSON: ");
Serial.println(error.c_str());
return;
}
// Čítanie údajov z JSON
int potenciometer = jsonDoc["potenciometer"];
float teplota = jsonDoc["teplota"];
int vlhkost = jsonDoc["vlhkost"];
// Výpis údajov na sériový monitor
Serial.println("Prijaté dáta:");
Serial.print("Potenciometer: ");
Serial.println(potenciometer);
Serial.print("Teplota: ");
Serial.println(teplota);
Serial.print("Vlhkosť: ");
Serial.println(vlhkost);
}
// Pripojenie na WiFi
void setup_wifi() {
delay(10);
Serial.println("Pripájanie na WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Pripojené na WiFi!");
}
// Inicializácia
void setup() {
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883); // HiveMQ používa port 1883
client.setCallback(callback);
while (!client.connected()) {
Serial.println("Pripájam sa na MQTT...");
if (client.connect("HiveMQClient")) {
Serial.println("Pripojené na MQTT!");
client.subscribe("METHER"); // Subscribe na topic
} else {
Serial.print("Chyba pripojenia: ");
Serial.println(client.state());
delay(2000);
}
}
}
// Hlavná slučka
void loop() {
if (!client.connected()) {
while (!client.connected()) {
Serial.println("Reconnecting to MQTT...");
if (client.connect("HiveMQReceiver")) {
Serial.println("Reconnected!");
client.subscribe("SENZORY");
} else {
delay(2000);
}
}
}
client.loop();
}