NibeGW Compiling hints for ProDiNo ESP32 Ethernet v1

Hi,

I just wanted to setup NibeGW with the ProDiNo ESP32 Ethernet v1. Unfortunatly the documentation with this Arduino is not yet available. It says that the ProDiNo Ethernet is supported by NibeGW out of the box, but I keep getting compilation errors.
Is there anyone willing to enhance the documentation? See here: https://github.com/openhab/openhab-addons/tree/main/bundles/org.openhab.binding.nibeheatpump/contrib/NibeGW/Arduino#prodino-esp32-ethernet-v1

I must be missing out something very basic.

I´m using Arduino IDE 2.3.2 and this is what I´m getting right out of the box:

In file included from C:\NibeGW\NibeGW.ino:3:
c:\Users\justme\OneDrive\Dokumente\Arduino\libraries\PRODINo_ESP32\src/MCP23S08.h:18:7: error: redefinition of ‘class MCP23S08Class’
18 | class MCP23S08Class
| ^~~~~~~~~~~~~
In file included from c:\Users\justme\OneDrive\Dokumente\Arduino\libraries\PRODINo_ESP32\src/KMPProDinoESP32.h:24,
from C:\NibeGW\NibeGW.ino:2:
c:\Users\justme\OneDrive\Dokumente\Arduino\libraries\PRODINo_ESP32\src/MCP23S08.h:18:7: note: previous definition of ‘class MCP23S08Class’
18 | class MCP23S08Class
| ^~~~~~~~~~~~~
In file included from C:\NibeGW\NibeGW.ino:62:
C:\NibeGW\Debug.h:28:20: error: cannot declare variable ‘telnet’ to be of abstract type ‘EthernetServer’
28 | EthernetServer telnet(23);
| ^~~~~~
In file included from c:\Users\justme\OneDrive\Dokumente\Arduino\libraries\PRODINo_ESP32\src/KMPProDinoESP32.h:27:
c:\Users\justme\OneDrive\Dokumente\Arduino\libraries\PRODINo_ESP32\src/Ethernet/Ethernet.h:261:7: note: because the following virtual functions are pure within ‘EthernetServer’:
261 | class EthernetServer : public Server {
| ^~~~~~~~~~~~~~
In file included from C:\Users\justme\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.1\cores\esp32/Arduino.h:198,
from C:\Users\justme\AppData\Local\Temp\arduino\sketches\C125CA32F5EE854C51CD73A04F5BA0BA\sketch\NibeGW.ino.cpp:1:
C:\Users\justme\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.1\cores\esp32/Server.h:27:16: note: ‘virtual void Server::begin()’
27 | virtual void begin() = 0;
| ^~~~~
C:\NibeGW\NibeGW.ino:74:77: error: no matching function for call to ‘NibeGw::NibeGw(HardwareSerial*, int, int, int)’
74 | NibeGw nibegw(&RS485_PORT, RS485_DIRECTION_PIN, RS485_RX_PIN, RS485_TX_PIN);
| ^
In file included from C:\NibeGW\NibeGW.ino:61:
C:\NibeGW\NibeGw.h:116:7: note: candidate: ‘NibeGw::NibeGw(HardwareSerial*, int)’
116 | NibeGw(HardwareSerial* serial, int RS485DirectionPin);
| ^~~~~~
C:\NibeGW\NibeGw.h:116:7: note: candidate expects 2 arguments, 4 provided
C:\NibeGW\NibeGw.h:76:7: note: candidate: ‘constexpr NibeGw::NibeGw(const NibeGw&)’
76 | class NibeGw
| ^~~~~~
C:\NibeGW\NibeGw.h:76:7: note: candidate expects 1 argument, 4 provided
C:\NibeGW\NibeGw.h:76:7: note: candidate: ‘constexpr NibeGw::NibeGw(NibeGw&&)’
C:\NibeGW\NibeGw.h:76:7: note: candidate expects 1 argument, 4 provided
C:\NibeGW\NibeGW.ino: In function ‘void setupStaticConfigMode()’:
C:\NibeGW\NibeGW.ino:117:23: error: invalid conversion from ‘int’ to ‘const esp_task_wdt_config_t*’ [-fpermissive]
117 | esp_task_wdt_init(60, true);
| ^~
| |
| int
C:\NibeGW\NibeGW.ino:117:22: error: too many arguments to function ‘esp_err_t esp_task_wdt_init(const esp_task_wdt_config_t*)’
117 | esp_task_wdt_init(60, true);
| ~^~
In file included from C:\NibeGW\NibeGW.ino:46:
C:\Users\justme\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-442a798083\esp32/include/esp_system/include/esp_task_wdt.h:47:11: note: declared here
47 | esp_err_t esp_task_wdt_init(const esp_task_wdt_config_t *config);
| ^
~~~~~~~~
In file included from C:\NibeGW\NibeGW.ino:39:
C:\NibeGW\Config.h:83:33: error: invalid conversion from ‘int’ to ‘const esp_task_wdt_config_t*’ [-fpermissive]
83 | #define WDT_TIMEOUT 2
| ^
| |
| int
C:\NibeGW\NibeGW.ino:141:23: note: in expansion of macro ‘WDT_TIMEOUT’
141 | esp_task_wdt_init(WDT_TIMEOUT, true);
| ^~~~~~~~~~~
C:\NibeGW\NibeGW.ino:141:22: error: too many arguments to function ‘esp_err_t esp_task_wdt_init(const esp_task_wdt_config_t*)’
141 | esp_task_wdt_init(WDT_TIMEOUT, true);
| ~^~~
C:\Users\justme\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-442a798083\esp32/include/esp_system/include/esp_task_wdt.h:47:11: note: declared here
47 | esp_err_t esp_task_wdt_init(const esp_task_wdt_config_t *config);
| ^~~~~~~~~~~~~~~~~

exit status 1

Compilation error: cannot declare variable ‘telnet’ to be of abstract type ‘EthernetServer’

Thank you!
Georg

There seems to multiple backward compatibility issues related to esp32 3.0.0/3.0.1 package by Espressif Systems (was released few weeks ago as far I know). Try to install 2.0.17 version via Arduino IDE board manager. NibeGW should build fine with that.

Thank you! That did the trick! All going smooth now!
Maybe you could add that to the readme and help others.

Have a great day!