#include "wlan.h" #include void initial_connection(const char *ssid, const char *psk, const char *hostname) { WiFi.hostname(hostname); WiFi.begin(ssid, psk); WiFi.persistent(true); WiFi.setAutoConnect(true); WiFi.setAutoReconnect(true); } void connect_wlan(Config *config) { if (WiFi.SSID() != config->ssid) initial_connection(config->ssid, config->psk, config->device_id); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println("WiFi connected"); } void connect_mqtt(PubSubClient &client, Config *config) { if (!client.connected()) client.setServer(config->mqtt_host, config->mqtt_port); if (client.connect(config->device_id, config->mqtt_user, config->mqtt_password)) { Serial.println("MQTT connected"); client.subscribe(config->topic); } } void disconnect_mqtt(PubSubClient &client, const char *topic) { Serial.println("Disconnecting MQTT"); client.unsubscribe(topic); client.disconnect(); } size_t construct_json(float *data, char *buffer, int buffer_size) { JsonDocument json; json["temperature"] = data[0]; json["humidity"] = data[1]; size_t payload_size = serializeJson(json, buffer, buffer_size); return payload_size; } void mqtt_transfer(PubSubClient &client, Config *config, float *data) { char buffer[100]; connect_mqtt(client, config); size_t payload_size = construct_json(data, buffer, 100); client.publish(config->topic, buffer, payload_size); Serial.println("Data transferred successfully"); }