#pragma once #include #include #include typedef std::function MqttCallback; class Mqtt { public: static void connect(std::string brokerIp, uint16_t brokerPort, std::string clientId, std::string username="mqtt", std::string password="mqtt"); static void poll(); static void checkConnection(); static void publish(const std::string& topic, const std::string& payload, bool retain = false); static void subscribe(const std::string& topic, MqttCallback callback); static void mqttCb(char* topic, uint8_t* payload, unsigned int length); private: static std::string brokerIp; static uint16_t brokerPort; static std::string clientId; static std::string username; static std::string password; static bool initialized; static bool isConnected; static std::map callbacks; };