#include <Arduino.h>
#include <SoftwareSerial.h>
#define MQTT_CONNECT 0x10
#define MQTT_CONNACK 0x20
#define MQTT_PUBLISH 0x30
#define MQTT_SUBSCRIBE 0x82
#define MQTT_SUBACK 0x90
#define MQTT_DISCONNECT 0xE0
SoftwareSerial Serial1(10, 11); // RX, TX
void setup() {
Serial.begin(115200);
Serial1.begin(9600); // Soros port a MQTT klienshez
Serial.println("MQTT Broker Indítás");
}
void loop() {
if (Serial.available()) {
handleMQTTMessage();
}
}
void handleMQTTMessage() {
byte packetType = Serial1.read();
switch (packetType) {
case MQTT_CONNECT:
handleConnect();
break;
case MQTT_PUBLISH:
handlePublish();
break;
case MQTT_SUBSCRIBE:
handleSubscribe();
break;
case MQTT_DISCONNECT:
handleDisconnect();
break;
default:
Serial.println("Ismeretlen üzenettípus.");
}
}
void handleConnect() {
Serial.println("MQTT CONNECT Üzenet Fogadva");
byte connack[] = { MQTT_CONNACK, 0x00, 0x00, 0x00 };
Serial1.write(connack, sizeof(connack));
}
void handlePublish() {
Serial.println("MQTT PUBLISH Üzenet Fogadva");
int topicLength = Serial1.read() << 8 | Serial1.read();
char topic[topicLength + 1];
Serial1.readBytes(topic, topicLength);
topic[topicLength] = '\0';
int messageLength = Serial1.available();
char message[messageLength + 1];
Serial1.readBytes(message, messageLength);
message[messageLength] = '\0';
Serial.print("Téma: ");
Serial.println(topic);
Serial.print("Üzenet: ");
Serial.println(message);
// Üzenet továbbítása minden előfizetőnek (a megvalósítás hiányzik)
}
void handleSubscribe() {
Serial.println("MQTT SUBSCRIBE Üzenet Fogadva");
int topicLength = Serial1.read() << 8 | Serial1.read();
char topic[topicLength + 1];
Serial1.readBytes(topic, topicLength);
topic[topicLength] = '\0';
// Előfizetés regisztrálása (a megvalósítás hiányzik)
byte suback[] = { MQTT_SUBACK, 0x00, 0x00, 0x00, 0x00 };
Serial1.write(suback, sizeof(suback));
}
void handleDisconnect() {
Serial.println("MQTT DISCONNECT Üzenet Fogadva");
// Kapcsolat bontása (a megvalósítás hiányzik)
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5