add static IP for W5500

This commit is contained in:
technyon
2023-03-05 11:19:02 +01:00
parent 2dcbf919c8
commit 6070884f74
6 changed files with 27 additions and 15 deletions

View File

@@ -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);

View File

@@ -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,

View File

@@ -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);

View File

@@ -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());
} }
} }

View File

@@ -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;

View File

@@ -117,8 +117,19 @@ ReconnectStatus W5500Device::reconnect()
{ {
_hasDHCPAddress = true; _hasDHCPAddress = true;
dhcpRetryCnt = 1000; dhcpRetryCnt = 1000;
Log->print(F(" DHCP assigned IP ")); if(_ipConfiguration->dhcpEnabled())
Log->println(Ethernet.localIP()); {
Log->print(F(" DHCP assigned IP "));
Log->println(Ethernet.localIP());
}
}
if(!_ipConfiguration->dhcpEnabled())
{
Ethernet.setLocalIP(_ipConfiguration->ipAddress());
Ethernet.setSubnetMask(_ipConfiguration->subnet());
Ethernet.setGatewayIP(_ipConfiguration->defaultGateway());
Ethernet.setDnsServerIP(_ipConfiguration->dnsServer());
} }
} }