Skip to content

Commit

Permalink
settings extended with HA auto discovery + refining HA config message…
Browse files Browse the repository at this point in the history
… + HA onOff handling + prepring MQTT TLS support
  • Loading branch information
ohAnd committed Jun 8, 2024
1 parent 5fc0f94 commit 61eaffd
Show file tree
Hide file tree
Showing 8 changed files with 225 additions and 208 deletions.
3 changes: 2 additions & 1 deletion include/Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,11 @@ struct UserConfig

char mqttBrokerIpDomain[128] = "192.168.1.100";
int mqttBrokerPort = 1883;
boolean mqttUseTLS = false;
char mqttBrokerUser[64] = "dtuuser";
char mqttBrokerPassword[64] = "dtupass";
char mqttBrokerMainTopic[32] = "dtu1";
boolean mqttHAutoDiscoveryON = false;
boolean mqttHAautoDiscoveryON = false;
boolean mqttActive = false;

uint8_t displayConnected = 0; // OLED default
Expand Down
38 changes: 35 additions & 3 deletions include/index_html.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,10 @@ const char INDEX_HTML[] PROGMEM = R"=====(
<input type="text" id="mqttIP" class="ipv4Input" name="ipv4" placeholder="xxx.xxx.xxx.xxx">
</div>
<div>
specific user on your mqtt broker instance:
<input type="checkbox" id="mqttUseTLS"> TLS connection (e.g. 123456789.s1.eu.hivemq.cloud:8883)
</div>
<div>
specify user on your mqtt broker instance:
</div>
<div>
<input type="text" id="mqttUser" value="please type in" required maxlength="64">
Expand All @@ -101,6 +104,9 @@ const char INDEX_HTML[] PROGMEM = R"=====(
<div>
<input type="text" id="mqttMainTopic" maxlength="32">
</div>
<div>
<input type="checkbox" id="mqttHAautoDiscoveryON"> Home Assistant Auto Discovery <br><small>(On = config is send once after every restart, Off = delete the sensor from HA instantly)</small>
</div>
</div>
<div style="text-align: center;">
<b onclick="changeBindingsData()" id="btnSaveWifiSettings" class="form-button btn">save</b>
Expand Down Expand Up @@ -667,10 +673,21 @@ const char INDEX_HTML[] PROGMEM = R"=====(
$('#mqttActive').prop("checked", false);
$('#mqttSection').css('color', 'grey');
}
if(mqttData.mqttUseTLS) {
$('#mqttUseTLS').prop("checked", true);
} else {
$('#mqttUseTLS').prop("checked", false);
}
$('#mqttIP').val(mqttData.mqttIp+":"+mqttData.mqttPort);
$('#mqttUser').val(mqttData.mqttUser);
$('#mqttPassword').val(mqttData.mqttPass);
$('#mqttMainTopic').val(mqttData.mqttMainTopic);
if(mqttData.mqttHAautoDiscoveryON) {
$('#mqttHAautoDiscoveryON').prop("checked", true);
} else {
$('#mqttHAautoDiscoveryON').prop("checked", false);
}
}
$('.passcheck').click(function () {
Expand Down Expand Up @@ -806,20 +823,32 @@ const char INDEX_HTML[] PROGMEM = R"=====(
var mqttIpPortString = $('#mqttIP').val().split(":");
var mqttIpSend = mqttIpPortString[0];
var mqttPortSend = "1883";
if(mqttIpPortString[1] != undefined && !isNaN(mqttIpPortString[1])) {
mqttPortSend = mqttIpPortString[1];
}
}
var mqttUseTLSSend = 0;
var mqttUserSend = $('#mqttUser').val();
var mqttPassSend = $('#mqttPassword').val();
var mqttMainTopicSend = $('#mqttMainTopic').val();
var mqttHAautoDiscoveryONSend = 0;
if ($("#mqttActive").is(':checked')) {
mqttActiveSend = 1;
} else {
mqttActiveSend = 0;
}
if ($("#mqttUseTLS").is(':checked')) {
mqttUseTLSSend = 1;
} else {
mqttUseTLSSend = 0;
}
if ($("#mqttHAautoDiscoveryON").is(':checked')) {
mqttHAautoDiscoveryONSend = 1;
} else {
mqttHAautoDiscoveryONSend = 0;
}
var data = {};
data["openhabHostIpDomainSend"] = openhabHostIpDomainSend;
Expand All @@ -828,10 +857,13 @@ const char INDEX_HTML[] PROGMEM = R"=====(
data["mqttIpSend"] = mqttIpSend;
data["mqttPortSend"] = mqttPortSend;
data["mqttUseTLS"] = mqttUseTLSSend;
data["mqttUserSend"] = mqttUserSend;
data["mqttPassSend"] = mqttPassSend;
data["mqttMainTopicSend"] = mqttMainTopicSend;
data["mqttActiveSend"] = mqttActiveSend;
data["mqttHAautoDiscoveryONSend"] = mqttHAautoDiscoveryONSend;
console.log("send to server: openhabHostIpDomainSend: " + openhabHostIpDomainSend);
Expand Down
19 changes: 15 additions & 4 deletions include/mqttHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,37 @@

class MQTTHandler {
public:
MQTTHandler(const char* broker, int port, const char* user, const char* password, bool useTLS, const char* sensorUniqueName);
MQTTHandler(const char *broker, int port, const char *user, const char *password, bool useTLS, const char *sensorUniqueName);
void setup(bool autoDiscovery);
void loop(bool autoDiscovery);
void publishDiscoveryMessage(const char* sensor_type, const char* location, const char* unit);
void publishDiscoveryMessage(const char *sensor_type, const char *entity, const char *entityName, const char *unit, bool deleteMessage=false);
void publishSensorData(String typeName, String value);
void publishStandardData(String topicPath, String value);

// Setters for runtime configuration
void setBroker(const char* broker);
void setPort(int port);
void setUser(const char* user);
void setPassword(const char* password);
void setUseTLS(bool useTLS);

void reconnect(bool autoDiscovery, bool autoDiscoveryRemove=false);

private:
const char* mqtt_broker;
int mqtt_port;
const char* mqtt_user;
const char* mqtt_password;
bool useTLS;
const char* sensor_uniqeName;
const char* sensor_uniqueName;
const char* espURL;

WiFiClient wifiClient;
WiFiClientSecure wifiClientSecure;
PubSubClient client;

void reconnect(bool autoDiscovery);
void stopConnection();

};

#endif // MQTTHANDLER_H
4 changes: 2 additions & 2 deletions include/version.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#define VERSION "1.6.0_localDev"
#define BUILDTIME "06.06.2024 - 22:00:02"
#define BUILDTIMESTAMP "1717704002"
#define BUILDTIME "09.06.2024 - 01:31:16"
#define BUILDTIMESTAMP "1717889476"
2 changes: 1 addition & 1 deletion include/version.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"version": "1.6.0_localDev",
"versiondate": "06.06.2024 - 22:00:02",
"versiondate": "09.06.2024 - 01:31:16",
"linksnapshot": "https://github.com/ohAnd/dtuGateway/releases/download/snapshot/dtuGateway_snapshot_1.6.0_localDev.bin",
"link": "https://github.com/ohAnd/dtuGateway//releases/latest/download/dtuGateway_release_1.6.0_localDev.bin"
}
10 changes: 7 additions & 3 deletions src/Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ void UserConfigManager::printConfigdata()
Serial.println(userConfig.mqttBrokerIpDomain);
Serial.print(F("mqtt port: \t\t"));
Serial.println(userConfig.mqttBrokerPort);
Serial.print(F("mqtt TLS: \t\t"));
Serial.println(userConfig.mqttUseTLS);
Serial.print(F("mqtt user: \t\t"));
Serial.println(userConfig.mqttBrokerUser);
Serial.print(F("mqtt pass: \t\t"));
Expand All @@ -119,7 +121,7 @@ void UserConfigManager::printConfigdata()
Serial.print(F("mqtt binding active: \t"));
Serial.println(userConfig.mqttActive);
Serial.print(F("mqtt HA autoDiscovery: \t"));
Serial.println(userConfig.mqttHAutoDiscoveryON);
Serial.println(userConfig.mqttHAautoDiscoveryON);

Serial.print(F("dtu update time: \t"));
Serial.println(userConfig.dtuUpdateTime);
Expand Down Expand Up @@ -166,10 +168,11 @@ JsonDocument UserConfigManager::mappingStructToJson()
doc["mqtt"]["active"] = userConfig.mqttActive;
doc["mqtt"]["brokerIP"] = userConfig.mqttBrokerIpDomain;
doc["mqtt"]["brokerPort"] = userConfig.mqttBrokerPort;
doc["mqtt"]["brokerUseTLS"] = userConfig.mqttUseTLS;
doc["mqtt"]["user"] = userConfig.mqttBrokerUser;
doc["mqtt"]["pass"] = userConfig.mqttBrokerPassword;
doc["mqtt"]["mainTopic"] = userConfig.mqttBrokerMainTopic;
doc["mqtt"]["HAutoDiscoveryON"] = userConfig.mqttHAutoDiscoveryON;
doc["mqtt"]["HAautoDiscoveryON"] = userConfig.mqttHAautoDiscoveryON;

doc["display"]["type"] = userConfig.displayConnected;

Expand Down Expand Up @@ -199,10 +202,11 @@ void UserConfigManager::mappingJsonToStruct(JsonDocument doc)
userConfig.mqttActive = doc["mqtt"]["active"];
String(doc["mqtt"]["brokerIP"]).toCharArray(userConfig.mqttBrokerIpDomain, sizeof(userConfig.mqttBrokerIpDomain));
userConfig.mqttBrokerPort = doc["mqtt"]["brokerPort"];
userConfig.mqttUseTLS = doc["mqtt"]["brokerUseTLS"];
String(doc["mqtt"]["user"]).toCharArray(userConfig.mqttBrokerUser, sizeof(userConfig.mqttBrokerUser));
String(doc["mqtt"]["pass"]).toCharArray(userConfig.mqttBrokerPassword, sizeof(userConfig.mqttBrokerPassword));
String(doc["mqtt"]["mainTopic"]).toCharArray(userConfig.mqttBrokerMainTopic, sizeof(userConfig.mqttBrokerMainTopic));
userConfig.mqttHAutoDiscoveryON = doc["mqtt"]["HAutoDiscoveryON"];
userConfig.mqttHAautoDiscoveryON = doc["mqtt"]["HAautoDiscoveryON"];

userConfig.displayConnected = doc["display"]["type"];

Expand Down
Loading

0 comments on commit 61eaffd

Please sign in to comment.