15#include "../ksComponent.h"
16#include "../evt/ksEvent.h"
17#include "../misc/ksSimpleTimer.h"
18#include "../misc/ksDomainQuery.h"
21 #if ESP_ARDUINO_VERSION_MAJOR >= 3
22 #define ksMqttConnectorNetClient_t NetworkClient
23 #define ksMqttConnectorNetClientSecure_t NetworkClientSecure
25 #define ksMqttConnectorNetClient_t WiFiClient
26 #define ksMqttConnectorNetClientSecure_t WiFiClientSecure
28 class ksMqttConnectorNetClientSecure_t;
29 class ksMqttConnectorNetClient_t;
31 namespace BearSSL{
class WiFiClientSecure;}
32 #define ksMqttConnectorNetClientSecure_t BearSSL::WiFiClientSecure
33 #define ksMqttConnectorNetClient_t WiFiClient
34 class ksMqttConnectorNetClient_t;
36 #error Platform not implemented.
43 class ksCertFingerprint;
48 class ksWifiConnector;
82 bitflags = {
true,
false,
true};
121 DECLARE_KS_EVENT(
onAnyMessage, const std::string_view&, const std::string_view&)
187 void subscribe(
const std::string& topic,
bool skipDevicePrefix =
false, ksMqttConnector::QosLevel = ksMqttConnector::QosLevel::QOS_AT_LEAST_ONCE);
194 void unsubscribe(
const std::string& topic,
bool skipDevicePrefix =
false);
203 void publish(
const std::string& topic,
const std::string& payload,
bool retain =
false,
bool skipDevicePrefix =
false);
A component responsible for managing MQTT connections.
Definition ksMqttConnector.h:59
std::weak_ptr< ksWifiConnector > wifiConnWp
Weak pointer to WiFi connector.
Definition ksMqttConnector.h:70
std::unique_ptr< ksMqttConnectorNetClient_t > netClientUq
Shared pointer to WiFiClient used to connect to MQTT.
Definition ksMqttConnector.h:68
std::string prefix
Saved MQTT prefix.
Definition ksMqttConnector.h:86
misc::ksDomainQuery domainResolver
Domain query used to resolve MQTT broker address.
Definition ksMqttConnector.h:67
misc::ksSimpleTimer reconnectTimer
Timer that counts time between reconnection attempts.
Definition ksMqttConnector.h:71
void subscribe(const std::string &topic, bool skipDevicePrefix=false, ksMqttConnector::QosLevel=ksMqttConnector::QosLevel::QOS_AT_LEAST_ONCE)
Subscribes to MQTT topic.
Definition ksMqttConnector.cpp:138
uint32_t getReconnectCounter() const
Retrieves MQTT reconnect counter.
Definition ksMqttConnector.h:179
bool init(ksApplication *app) override
Instantiates the MQTT connector component.
Definition ksMqttConnector.cpp:44
uint64_t lastSuccessConnectionTime
Time of connection to MQTT broker in seconds.
Definition ksMqttConnector.h:73
std::unique_ptr< PubSubClient > mqttClientUq
Shared pointer to PubSubClient used to connect to MQTT.
Definition ksMqttConnector.h:69
void setupConnection(std::string broker, const std::string &port, std::string login, std::string password, std::string prefix, const std::string &fingerprint)
Sets up MQTT connection.
Definition ksMqttConnector.cpp:68
std::shared_ptr< ksf::evt::ksEvent< const std::string_view &, const std::string_view & > > onAnyMessage
onAnyMessage event that user can bind to.
Definition ksMqttConnector.h:121
bool loop(ksApplication *app) override
Executes MQTT connection logic.
Definition ksMqttConnector.cpp:236
std::string login
Saved MQTT login.
Definition ksMqttConnector.h:84
std::unique_ptr< misc::ksCertFingerprint > certFingerprint
Shared pointer to fingerprint validator.
Definition ksMqttConnector.h:89
bool usePersistentSession
Use persistent session or not.
Definition ksMqttConnector.h:79
uint32_t getConnectionTimeSeconds() const
Retrieves connection time in seconds.
Definition ksMqttConnector.cpp:286
bool sendConnectionStatus
Send connection status to MQTT or not.
Definition ksMqttConnector.h:78
void unsubscribe(const std::string &topic, bool skipDevicePrefix=false)
Unsubscribes the MQTT topic.
Definition ksMqttConnector.cpp:144
bool isConnected() const
Retrieves connection state.
Definition ksMqttConnector.cpp:281
std::shared_ptr< ksf::evt::ksEvent<> > onDisconnected
onDisconnected event that user can bind to.
Definition ksMqttConnector.h:124
void publish(const std::string &topic, const std::string &payload, bool retain=false, bool skipDevicePrefix=false)
Publishes a message to the MQTT topic.
Definition ksMqttConnector.cpp:149
uint16_t portNumber
Saved MQTT port number.
Definition ksMqttConnector.h:87
void mqttConnectedInternal()
Connects to the MQTT broker (internal function).
Definition ksMqttConnector.cpp:101
bool connectToBroker()
Connects to the MQTT broker.
Definition ksMqttConnector.cpp:166
bool postInit(ksApplication *app) override
Method that handles component post-initialization.
Definition ksMqttConnector.cpp:62
std::shared_ptr< ksf::evt::ksEvent<> > onConnected
onConnected event that user can bind to.
Definition ksMqttConnector.h:123
void mqttMessageInternal(const char *topic, const uint8_t *payload, uint32_t length)
Called when MQTT message arrives (internal function).
Definition ksMqttConnector.cpp:108
std::string password
Saved MQTT password.
Definition ksMqttConnector.h:85
uint32_t reconnectCounter
MQTT reconnection counter.
Definition ksMqttConnector.h:74
bool wasConnected
True if connected in previous loop.
Definition ksMqttConnector.h:80
std::shared_ptr< ksf::evt::ksEvent< const std::string_view &, const std::string_view & > > onDeviceMessage
onDeviceMessage event that user can bind to.
Definition ksMqttConnector.h:120
A class that serves as the base for user-defined applications.
Definition ksApplication.h:44
Base component class.
Definition ksComponent.h:36
Class for resolving domain names to IP addresses using DNS queries.
Definition ksDomainQuery.h:34
A simple timer class that does not rely on component architecture.
Definition ksSimpleTimer.h:27