mirror of
https://github.com/grillbaer/esp32-geiger-counter.git
synced 2025-12-21 21:33:03 +01:00
added SSL/TLS support for MQTT
This commit is contained in:
@@ -7,6 +7,7 @@ extern const char *thingspeakApiKey;
|
|||||||
|
|
||||||
extern const char *mqttHost;
|
extern const char *mqttHost;
|
||||||
extern int mqttPort;
|
extern int mqttPort;
|
||||||
|
extern const char *mqttTlsServerRootCert;
|
||||||
extern const char *mqttUser;
|
extern const char *mqttUser;
|
||||||
extern const char *mqttPassword;
|
extern const char *mqttPassword;
|
||||||
extern const char *mqttTopic;
|
extern const char *mqttTopic;
|
||||||
|
|||||||
@@ -20,6 +20,31 @@ const char *thingspeakApiKey = "MYAPIKEY";
|
|||||||
// set host to NULL or empty string to disable MQTT publishing:
|
// set host to NULL or empty string to disable MQTT publishing:
|
||||||
const char *mqttHost = "my.mqtt.server";
|
const char *mqttHost = "my.mqtt.server";
|
||||||
int mqttPort = 1833;
|
int mqttPort = 1833;
|
||||||
|
// set MQTT server's root CA cert to NULL or empty string to disable MQTT TLS/SSL:
|
||||||
|
const char *mqttTlsServerRootCert = R""""(
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G
|
||||||
|
A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp
|
||||||
|
Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1
|
||||||
|
MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG
|
||||||
|
A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
|
||||||
|
hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL
|
||||||
|
v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8
|
||||||
|
eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq
|
||||||
|
tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd
|
||||||
|
C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa
|
||||||
|
zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB
|
||||||
|
mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH
|
||||||
|
V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n
|
||||||
|
bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG
|
||||||
|
3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs
|
||||||
|
J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO
|
||||||
|
291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS
|
||||||
|
ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd
|
||||||
|
AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
||||||
|
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
)"""";
|
||||||
const char *mqttUser = "user";
|
const char *mqttUser = "user";
|
||||||
const char *mqttPassword = "mypassword";
|
const char *mqttPassword = "mypassword";
|
||||||
const char *mqttTopic = "home/radioactivity";
|
const char *mqttTopic = "home/radioactivity";
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#include <WiFiClientSecure.h>
|
||||||
#include <MQTT.h>
|
#include <MQTT.h>
|
||||||
|
|
||||||
#include "GeigerData.h"
|
#include "GeigerData.h"
|
||||||
@@ -8,6 +9,7 @@
|
|||||||
const char *thingsPeakUrl = "api.thingspeak.com";
|
const char *thingsPeakUrl = "api.thingspeak.com";
|
||||||
|
|
||||||
WiFiClient mqttWifiClient;
|
WiFiClient mqttWifiClient;
|
||||||
|
WiFiClientSecure mqttWifiClientSecure;
|
||||||
MQTTClient mqttClient;
|
MQTTClient mqttClient;
|
||||||
|
|
||||||
bool connectWiFi()
|
bool connectWiFi()
|
||||||
@@ -149,13 +151,22 @@ bool connectMqtt()
|
|||||||
|
|
||||||
if (!mqttClient.connected())
|
if (!mqttClient.connected())
|
||||||
{
|
{
|
||||||
|
const bool tls = mqttTlsServerRootCert != NULL && mqttTlsServerRootCert[0] != 0;
|
||||||
Serial.print("Connecting to MQTT host ");
|
Serial.print("Connecting to MQTT host ");
|
||||||
Serial.print(mqttHost);
|
Serial.print(mqttHost);
|
||||||
Serial.print(":");
|
Serial.print(":");
|
||||||
Serial.print(mqttPort);
|
Serial.print(mqttPort);
|
||||||
Serial.print(" user ");
|
Serial.print(" user ");
|
||||||
Serial.print(mqttUser);
|
Serial.print(mqttUser);
|
||||||
mqttClient.begin(mqttHost, mqttPort, mqttWifiClient);
|
if (tls) {
|
||||||
|
Serial.print(" with TLS ");
|
||||||
|
mqttWifiClientSecure.setCACert(mqttTlsServerRootCert);
|
||||||
|
mqttClient.begin(mqttHost, mqttPort, mqttWifiClientSecure);
|
||||||
|
} else {
|
||||||
|
Serial.print(" without TLS ");
|
||||||
|
mqttClient.begin(mqttHost, mqttPort, mqttWifiClient);
|
||||||
|
}
|
||||||
|
|
||||||
if (mqttClient.connect("esp32-geiger-counter", mqttUser, mqttPassword))
|
if (mqttClient.connect("esp32-geiger-counter", mqttUser, mqttPassword))
|
||||||
{
|
{
|
||||||
Serial.println(" successful");
|
Serial.println(" successful");
|
||||||
|
|||||||
Reference in New Issue
Block a user