add static IP for W5500
This commit is contained in:
@@ -14,7 +14,7 @@ unsigned long Network::_ignoreSubscriptionsTs = 0;
|
|||||||
|
|
||||||
RTC_NOINIT_ATTR char WiFi_fallbackDetect[14];
|
RTC_NOINIT_ATTR char WiFi_fallbackDetect[14];
|
||||||
|
|
||||||
Network::Network(Preferences *preferences, const String& maintenancePathPrefix, const bool& firstStart)
|
Network::Network(Preferences *preferences, const String& maintenancePathPrefix)
|
||||||
: _preferences(preferences)
|
: _preferences(preferences)
|
||||||
{
|
{
|
||||||
_inst = this;
|
_inst = this;
|
||||||
@@ -27,12 +27,12 @@ Network::Network(Preferences *preferences, const String& maintenancePathPrefix,
|
|||||||
{
|
{
|
||||||
_maintenancePathPrefix[i] = maintenancePathPrefix.charAt(i);
|
_maintenancePathPrefix[i] = maintenancePathPrefix.charAt(i);
|
||||||
}
|
}
|
||||||
setupDevice(firstStart);
|
setupDevice();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Network::setupDevice(const bool& firstStart)
|
void Network::setupDevice()
|
||||||
{
|
{
|
||||||
_ipConfiguration = new IPConfiguration(_preferences, firstStart);
|
_ipConfiguration = new IPConfiguration(_preferences);
|
||||||
|
|
||||||
int hardwareDetect = _preferences->getInt(preference_network_hardware);
|
int hardwareDetect = _preferences->getInt(preference_network_hardware);
|
||||||
int hardwareDetectGpio = _preferences->getInt(preference_network_hardware_gpio);
|
int hardwareDetectGpio = _preferences->getInt(preference_network_hardware_gpio);
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ enum class NetworkDeviceType
|
|||||||
class Network
|
class Network
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit Network(Preferences* preferences, const String& maintenancePathPrefix, const bool& firstStart);
|
explicit Network(Preferences* preferences, const String& maintenancePathPrefix);
|
||||||
|
|
||||||
void initialize();
|
void initialize();
|
||||||
bool update();
|
bool update();
|
||||||
@@ -67,7 +67,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
static void onMqttDataReceivedCallback(const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total);
|
static void onMqttDataReceivedCallback(const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total);
|
||||||
void onMqttDataReceived(const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total);
|
void onMqttDataReceived(const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total);
|
||||||
void setupDevice(const bool& firstStart);
|
void setupDevice();
|
||||||
bool reconnect();
|
bool reconnect();
|
||||||
|
|
||||||
void publishHassTopic(const String& mqttDeviceType,
|
void publishHassTopic(const String& mqttDeviceType,
|
||||||
|
|||||||
2
main.cpp
2
main.cpp
@@ -177,7 +177,7 @@ void setup()
|
|||||||
openerEnabled = preferences->getBool(preference_opener_enabled);
|
openerEnabled = preferences->getBool(preference_opener_enabled);
|
||||||
|
|
||||||
const String mqttLockPath = preferences->getString(preference_mqtt_lock_path);
|
const String mqttLockPath = preferences->getString(preference_mqtt_lock_path);
|
||||||
network = new Network(preferences, mqttLockPath, firstStart);
|
network = new Network(preferences, mqttLockPath);
|
||||||
network->initialize();
|
network->initialize();
|
||||||
|
|
||||||
networkLock = new NetworkLock(network, preferences);
|
networkLock = new NetworkLock(network, preferences);
|
||||||
|
|||||||
@@ -2,11 +2,12 @@
|
|||||||
#include "../PreferencesKeys.h"
|
#include "../PreferencesKeys.h"
|
||||||
#include "../Logger.h"
|
#include "../Logger.h"
|
||||||
|
|
||||||
IPConfiguration::IPConfiguration(Preferences *preferences, const bool& firstStart)
|
IPConfiguration::IPConfiguration(Preferences *preferences)
|
||||||
: _preferences(preferences)
|
: _preferences(preferences)
|
||||||
{
|
{
|
||||||
if(firstStart)
|
if(_preferences->getString(preference_ip_address).length() <= 0)
|
||||||
{
|
{
|
||||||
|
Log->println("IP address empty, falling back to DHCP.");
|
||||||
_preferences->putBool(preference_ip_dhcp_enabled, true);
|
_preferences->putBool(preference_ip_dhcp_enabled, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,9 +24,9 @@ IPConfiguration::IPConfiguration(Preferences *preferences, const bool& firstStar
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Log->print(F("IP address: ")); Log->print(ipAddress());
|
Log->print(F("IP address: ")); Log->print(ipAddress());
|
||||||
Log->print(F("Subnet: ")); Log->print(subnet());
|
Log->print(F(", Subnet: ")); Log->print(subnet());
|
||||||
Log->print(F("Gateway: ")); Log->print(defaultGateway());
|
Log->print(F(", Gateway: ")); Log->print(defaultGateway());
|
||||||
Log->print(F("DNS: ")); Log->println(dnsServer());
|
Log->print(F(", DNS: ")); Log->println(dnsServer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
class IPConfiguration
|
class IPConfiguration
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit IPConfiguration(Preferences* preferences, const bool& firstStart);
|
explicit IPConfiguration(Preferences* preferences);
|
||||||
|
|
||||||
bool dhcpEnabled() const;
|
bool dhcpEnabled() const;
|
||||||
const IPAddress ipAddress() const;
|
const IPAddress ipAddress() const;
|
||||||
|
|||||||
@@ -117,11 +117,22 @@ ReconnectStatus W5500Device::reconnect()
|
|||||||
{
|
{
|
||||||
_hasDHCPAddress = true;
|
_hasDHCPAddress = true;
|
||||||
dhcpRetryCnt = 1000;
|
dhcpRetryCnt = 1000;
|
||||||
|
if(_ipConfiguration->dhcpEnabled())
|
||||||
|
{
|
||||||
Log->print(F(" DHCP assigned IP "));
|
Log->print(F(" DHCP assigned IP "));
|
||||||
Log->println(Ethernet.localIP());
|
Log->println(Ethernet.localIP());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!_ipConfiguration->dhcpEnabled())
|
||||||
|
{
|
||||||
|
Ethernet.setLocalIP(_ipConfiguration->ipAddress());
|
||||||
|
Ethernet.setSubnetMask(_ipConfiguration->subnet());
|
||||||
|
Ethernet.setGatewayIP(_ipConfiguration->defaultGateway());
|
||||||
|
Ethernet.setDnsServerIP(_ipConfiguration->dnsServer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(!hardwareFound)
|
if(!hardwareFound)
|
||||||
{
|
{
|
||||||
return ReconnectStatus::CriticalFailure;
|
return ReconnectStatus::CriticalFailure;
|
||||||
|
|||||||
Reference in New Issue
Block a user