Implemented MQTT over TLS for WiFiDevice
This commit is contained in:
@@ -83,6 +83,7 @@ target_link_arduino_libraries(${PROJECT_NAME}
|
|||||||
PRIVATE
|
PRIVATE
|
||||||
core
|
core
|
||||||
WiFi
|
WiFi
|
||||||
|
WiFiClientSecure
|
||||||
Update
|
Update
|
||||||
# WebServer
|
# WebServer
|
||||||
DNSServer
|
DNSServer
|
||||||
|
|||||||
@@ -42,11 +42,11 @@ void Network::setupDevice(const NetworkDeviceType hardware)
|
|||||||
break;
|
break;
|
||||||
case NetworkDeviceType::WiFi:
|
case NetworkDeviceType::WiFi:
|
||||||
Serial.println(F("Network device: Builtin WiFi"));
|
Serial.println(F("Network device: Builtin WiFi"));
|
||||||
_device = new WifiDevice(_hostname);
|
_device = new WifiDevice(_hostname, _preferences);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Serial.println(F("Unknown network device type, defaulting to WiFi"));
|
Serial.println(F("Unknown network device type, defaulting to WiFi"));
|
||||||
_device = new WifiDevice(_hostname);
|
_device = new WifiDevice(_hostname, _preferences);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,35 @@
|
|||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
#include "WifiDevice.h"
|
#include "WifiDevice.h"
|
||||||
#include "WiFiManager.h"
|
#include "WiFiManager.h"
|
||||||
|
#include "../PreferencesKeys.h"
|
||||||
|
|
||||||
WifiDevice::WifiDevice(const String& hostname)
|
WifiDevice::WifiDevice(const String& hostname, Preferences* _preferences)
|
||||||
: NetworkDevice(hostname),
|
: NetworkDevice(hostname)
|
||||||
_mqttClient(_wifiClient)
|
{
|
||||||
{}
|
String MQTT_CA = _preferences->getString(preference_mqtt_ca);
|
||||||
|
String MQTT_CRT = _preferences->getString(preference_mqtt_crt);
|
||||||
|
String MQTT_KEY = _preferences->getString(preference_mqtt_key);
|
||||||
|
|
||||||
|
if(MQTT_CA.length() > 0)
|
||||||
|
{
|
||||||
|
_wifiClientSecure = new WiFiClientSecure();
|
||||||
|
_wifiClientSecure->setCACert(MQTT_CA.c_str());
|
||||||
|
if(MQTT_CRT.length() > 0 && MQTT_KEY.length() > 0)
|
||||||
|
{
|
||||||
|
_wifiClientSecure->setCertificate(MQTT_CRT.c_str());
|
||||||
|
_wifiClientSecure->setPrivateKey(MQTT_KEY.c_str());
|
||||||
|
}
|
||||||
|
_mqttClient = new PubSubClient(*_wifiClientSecure);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
_wifiClient = new WiFiClient();
|
||||||
|
_mqttClient = new PubSubClient(*_wifiClient);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PubSubClient *WifiDevice::mqttClient()
|
PubSubClient *WifiDevice::mqttClient()
|
||||||
{
|
{
|
||||||
return &_mqttClient;
|
return _mqttClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WifiDevice::initialize()
|
void WifiDevice::initialize()
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <WiFiClient.h>
|
#include <WiFiClient.h>
|
||||||
|
#include <WiFiClientSecure.h>
|
||||||
|
#include <Preferences.h>
|
||||||
#include "NetworkDevice.h"
|
#include "NetworkDevice.h"
|
||||||
#include "../SpiffsCookie.h"
|
#include "../SpiffsCookie.h"
|
||||||
|
|
||||||
class WifiDevice : public NetworkDevice
|
class WifiDevice : public NetworkDevice
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
WifiDevice(const String& hostname);
|
WifiDevice(const String& hostname, Preferences* _preferences);
|
||||||
|
|
||||||
virtual void initialize();
|
virtual void initialize();
|
||||||
virtual void reconfigure();
|
virtual void reconfigure();
|
||||||
@@ -20,7 +22,8 @@ public:
|
|||||||
virtual PubSubClient *mqttClient();
|
virtual PubSubClient *mqttClient();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
WiFiClient _wifiClient;
|
WiFiClient* _wifiClient = nullptr;
|
||||||
PubSubClient _mqttClient;
|
WiFiClientSecure* _wifiClientSecure = nullptr;
|
||||||
|
PubSubClient* _mqttClient = nullptr;
|
||||||
SpiffsCookie _cookie;
|
SpiffsCookie _cookie;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user