26#include <PubSubClient.h>
29#include "grmcdorman/device/Device.h"
30#include "grmcdorman/Setting.h"
34namespace grmcdorman::device
72 MqttPublisher(
const __FlashStringHelper *manufacturer,
const __FlashStringHelper *model,
const __FlashStringHelper *software_version, Client *client =
nullptr);
83 void setup()
override;
86 DynamicJsonDocument
as_json()
const override;
102 virtual void set_devices(
const std::vector<Device *> &list)
override
135 void publish_auto_config();
153 String get_error_state_message(
int state)
const;
163 const __FlashStringHelper *publish_manufacturer;
164 const __FlashStringHelper *publish_model;
165 const __FlashStringHelper *publish_software_version;
167 const std::vector<Device *> *devices =
nullptr;
169 std::unique_ptr<Client> default_client;
171 std::unique_ptr<PubSubClient> mqttClient;
172 uint16_t retry_count = 0;
173 uint32_t previous_connection_attempt_ms = 0;
174 uint32_t previous_publish_ms = 0;
175 bool tried_publish =
false;
176 bool last_publish_failed =
false;
178 uint32_t current_publish_seconds = 0;
180 String topicAvailability;
184 Ticker connect_ticker;
185 Ticker publish_ticker;
187 StringSetting server_address;
188 UnsignedIntegerSetting server_port;
189 UnsignedIntegerSetting update_interval;
190 UnsignedIntegerSetting reconnect_interval;
191 UnsignedIntegerSetting keepalive_interval;
192 UnsignedIntegerSetting buffer_size;
193 StringSetting username;
194 PasswordSetting password;
195 StringSetting prefix;
196 StringSetting identifier;
197 InfoSettingHtml device_status;
The generic device interface.
Definition: Device.h:46
This class supports generic MQTT publishing.
Definition: MqttPublisher.h:49
static constexpr uint32_t CONNECTION_RETRY_INTERVAL
Second between attempts to retry establishing a connection.
Definition: MqttPublisher.h:52
DynamicJsonDocument as_json() const override
Get the values, as a JSON document.
Definition: MqttPublisher.cpp:337
void setup() override
Setup the device.
Definition: MqttPublisher.cpp:113
void set_defaults() override
Set defaults.
Definition: MqttPublisher.cpp:107
virtual String get_status() const
Get a status report.
Definition: MqttPublisher.cpp:407
void loop() override
Main loop.
Definition: MqttPublisher.cpp:149
static constexpr uint16_t CONNECTION_TRIES
Number of times to try establishing a connection.
Definition: MqttPublisher.h:51
virtual void set_devices(const std::vector< Device * > &list) override
Add a list of devices that will publish.
Definition: MqttPublisher.h:102
MqttPublisher(const __FlashStringHelper *manufacturer, const __FlashStringHelper *model, const __FlashStringHelper *software_version, Client *client=nullptr)
Construct a new Mqtt Device object.
Definition: MqttPublisher.cpp:37