From b268754b66b2476848f58293238b150216202c7e Mon Sep 17 00:00:00 2001 From: SH Date: Tue, 1 Dec 2020 09:45:47 +0100 Subject: [PATCH] finalize --- RX_FSK/RX_FSK.ino | 2 +- RX_FSK/data/config.txt | 6 +++--- libraries/SondeLib/mqtt.cpp | 15 +++++++++------ libraries/SondeLib/mqtt.h | 2 +- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index 600bdf1..87f4044 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -478,7 +478,7 @@ struct st_configitems config_list[] = { /* MQTT */ {"mqtt.active", "MQTT Active (needs reboot)", 0, &sonde.config.mqtt.active}, {"mqtt.id", "MQTT client ID", 63, &sonde.config.mqtt.id}, - {"mqtt.host", "MQTT server IP address", 63, &sonde.config.mqtt.host}, + {"mqtt.host", "MQTT server hostname", 63, &sonde.config.mqtt.host}, {"mqtt.port", "MQTT Port", 0, &sonde.config.mqtt.port}, {"mqtt.username", "MQTT Username", 63, &sonde.config.mqtt.username}, {"mqtt.password", "MQTT Password", 63, &sonde.config.mqtt.password}, diff --git a/RX_FSK/data/config.txt b/RX_FSK/data/config.txt index 03146a5..4abef73 100644 --- a/RX_FSK/data/config.txt +++ b/RX_FSK/data/config.txt @@ -101,10 +101,10 @@ tcp.idformat=0 # data not sanitized / quality checked, outliers not filtered out mqtt.active=0 mqtt.id=rdz_sonde_server -mqtt.ip=/0 +mqtt.ip= mqtt.port=1883 -mqtt.username=/0 -mqtt.password=/0 +mqtt.username= +mqtt.password= mqtt.prefix=rdz_sonde_server/ #-------------------------------# # EOF diff --git a/libraries/SondeLib/mqtt.cpp b/libraries/SondeLib/mqtt.cpp index c2cabb1..83a4221 100644 --- a/libraries/SondeLib/mqtt.cpp +++ b/libraries/SondeLib/mqtt.cpp @@ -2,6 +2,9 @@ #include "mqtt.h" #include #include +#include + +TimerHandle_t mqttReconnectTimer; void mqttCallback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); @@ -13,10 +16,9 @@ void mqttCallback(char* topic, byte* payload, unsigned int length) { Serial.println(); } - -void MQTT::init(const char* ip, uint16_t port, const char* id, const char *username, const char *password, const char *prefix) +void MQTT::init(const char* host, uint16_t port, const char* id, const char *username, const char *password, const char *prefix) { - this->ip = this->ip.fromString(ip); + WiFi.hostByName(host, this->ip); this->port = port; this->username = username; this->password = password; @@ -32,9 +34,6 @@ void MQTT::init(const char* ip, uint16_t port, const char* id, const char *usern if (strlen(password) > 0) { mqttClient.setCredentials(username, password); } - mqttClient.connect(); - - //mqttReconnectTimer = xTimerCreate("mqttTimer", pdMS_TO_TICKS(2000), pdFALSE, (void*)0, connectToMqtt); } void MQTT::connectToMqtt() { @@ -44,6 +43,8 @@ void MQTT::connectToMqtt() { void MQTT::publishUptime() { + mqttClient.connect(); // ensure we've got connection + Serial.println("[MQTT] writing"); char payload[12]; snprintf(payload, 12, "%lu", millis()); @@ -54,6 +55,8 @@ void MQTT::publishUptime() void MQTT::publishPacket(SondeInfo *s) { + mqttClient.connect(); // ensure we've got connection + char payload[1024]; snprintf(payload, 1024, "{" "\"active\": %d," diff --git a/libraries/SondeLib/mqtt.h b/libraries/SondeLib/mqtt.h index ffba26a..731fccf 100644 --- a/libraries/SondeLib/mqtt.h +++ b/libraries/SondeLib/mqtt.h @@ -18,7 +18,7 @@ public: const char *password; const char *prefix; - void init(const char *ip, uint16_t port, const char *id, const char *username, const char *password, const char *prefix); + void init(const char *host, uint16_t port, const char *id, const char *username, const char *password, const char *prefix); void publishPacket(SondeInfo *s); void publishUptime(); private: