#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);
// Funkcia na odosielanie údajov
void sendDataToMQTT(float currentTimeMQTT, float flightTimeMQTT, float altitudeMQTT,float pressureMQTT ,float temperatureMQTT, float xMQTT, float yMQTT, float zMQTT, float rotationMQTT) {
StaticJsonDocument<200> jsonDoc;
jsonDoc["currentTime"] = currentTimeMQTT;
jsonDoc["flightTime"] = flightTimeMQTT;
jsonDoc["altitude"] = altitudeMQTT;
jsonDoc["temperature"] = temperatureMQTT;
jsonDoc["pressure"] = pressureMQTT;
jsonDoc["x"] = xMQTT;
jsonDoc["y"] = yMQTT;
jsonDoc["z"] = zMQTT;
jsonDoc["rotation"] = rotationMQTT;
char buffer[256];
serializeJson(jsonDoc, buffer);
client.publish("METHER", buffer);
}
// 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
while (!client.connected()) {
Serial.println("Pripájam sa na MQTT...");
if (client.connect("HiveMQClient")) {
Serial.println("Pripojené na MQTT!");
} else {
Serial.print("Chyba pripojenia: ");
Serial.println(client.state());
delay(2000);
}
}
}
// Hlavná slučka
void loop() {
client.loop();
while(!client.connected()) {
if (client.connect("HiveMQClient")) {
Serial.println("Pripojené na MQTT!");
} else {
Serial.print("Chyba pripojenia: ");
Serial.println(client.state());
delay(2000);
}
}
// Simulované dáta
int currentTime = analogRead(34); // Príklad analógového čítania
float flightTime = 22.3 + random(-10, 10) / 10.0;
int altitude = random(0, 5); // Náhodná vlhkosť
int temperature = random(40, 80); // Náhodná vlhkosť
int pressure = random(40, 80); // Náhodná vlhkosť
int x = random(0, 10); // Náhodná vlhkosť
int y = random(11, 20); // Náhodná vlhkosť
int z = random(21, 30); // Náhodná vlhkosť
int rotation = random(40, 80); // Náhodná vlhkosť
sendDataToMQTT(currentTime, flightTime, altitude, pressure, temperature, x, y, z, rotation);
delay(1000); // Posielanie údajov každých 5 sekúnd
}