This one would probably never work, as it clearly states on the Library Registry it is for the Teensy platform, not the ESP32! 
For the esp32ModbusTCP library (id:5902), it looks like the author of that library has been making changes to the library and neglected to update the the example. Change the include and the object initialisation to the following (i.e esp32ModbusTCP instead of ModbusTCP).
#include <esp32ModbusTCP.h>
esp32ModbusTCP sunnyboy(3, {192, 168, 123, 123}, 502);
It’ll then start to compile, but then hit an 'esp32ModbusInternals' has not been declared
error. I’m not sure why that is happening, as it appears esp32ModbusInternals is declared in Helper.h
which is included by esp32ModbusTCP.cpp
. Anyway, this is my platformio.ini and compile output.
platformio.ini
[env:esp32-evb]
platform = espressif32
board = esp32-evb
framework = arduino
lib_deps =
5902
Code:
#include <Arduino.h>
#include <WiFi.h>
#include <esp32ModbusTCP.h>
const char* ssid = "xxxx";
const char* pass = "xxxx";
bool WiFiConnected = false;
esp32ModbusTCP sunnyboy(3, {192, 168, 123, 123}, 502);
void setup() {
Serial.begin(115200);
WiFi.disconnect(true); // delete old config
WiFi.setAutoConnect(false);
WiFi.setAutoReconnect(false);
sunnyboy.onAnswer([](bool succes, MB_ADU mb_adu) {
Serial.print("Received:\n");
if (succes) {
uint32_t deviceType = 0;
uint8_t* value = mb_adu.value;
deviceType = value[0];
deviceType = deviceType << 8 | value[1];
deviceType = deviceType << 8 | value[2];
deviceType = deviceType << 8 | value[3];
Serial.printf("Sunny Boy device type: %i\n", deviceType);
} else {
Serial.println("modbus error");
}
});
delay(1000);
WiFi.onEvent([](WiFiEvent_t event, WiFiEventInfo_t info) {
Serial.print("WiFi connected. IP: ");
Serial.println(IPAddress(info.got_ip.ip_info.ip.addr));
WiFiConnected = true;
}, WiFiEvent_t::SYSTEM_EVENT_STA_GOT_IP);
WiFi.onEvent([](WiFiEvent_t event, WiFiEventInfo_t info){
Serial.print("WiFi lost connection. Reason: ");
Serial.println(info.disconnected.reason);
WiFi.disconnect();
WiFiConnected = false;
}, WiFiEvent_t::SYSTEM_EVENT_STA_DISCONNECTED);
WiFi.begin(ssid, pass);
Serial.println();
Serial.println("Connecting to WiFi... ");
}
void loop() {
static uint32_t lastMillis = 0;
if ((millis() - lastMillis > 60000 &&
WiFiConnected) ||
lastMillis == 0) {
lastMillis = millis();
if (sunnyboy.request(READ_HOLD_REGISTER, 30053, 2)) {
Serial.print("Requesting data\n");
} else {
Serial.print("Request not succeeded\n");
}
}
}
Compile log:
Processing esp32-evb (platform: espressif32; board: esp32-evb; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-evb.html
PLATFORM: Espressif 32 > OLIMEX ESP32-EVB
HARDWARE: ESP32 240MHz 320KB RAM (4MB Flash)
DEBUG: CURRENT(esp-prog) EXTERNAL(esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF MODES: FINDER(chain) COMPATIBILITY(soft)
Collected 28 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <esp32ModbusTCP> 0.0.1
| |-- <AsyncTCP> 1.0.3
| |-- <ESP32 BLE Arduino> 1.0.1
|-- <WiFi> 1.0
Compiling .pioenvs/esp32-evb/src/main.cpp.o
Generating partitions .pioenvs/esp32-evb/partitions.bin
Compiling .pioenvs/esp32-evb/lib288/AsyncTCP_ID1826/AsyncTCP.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLE2902.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLE2904.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEAddress.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEAdvertisedDevice.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEAdvertising.cpp.o
Archiving .pioenvs/esp32-evb/lib288/libAsyncTCP_ID1826.a
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEBeacon.cpp.o
Indexing .pioenvs/esp32-evb/lib288/libAsyncTCP_ID1826.a
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLECharacteristic.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLECharacteristicMap.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEClient.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEDescriptor.cpp.o
/home/pfeerick/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src/BLECharacteristic.cpp: In member function 'void BLECharacteristic::setValue(float&)':
/home/pfeerick/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src/BLECharacteristic.cpp:680:16: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
*((float*)temp) = data32;
^
/home/pfeerick/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src/BLECharacteristic.cpp: In member function 'void BLECharacteristic::setValue(double&)':
/home/pfeerick/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src/BLECharacteristic.cpp:686:17: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
*((double*)temp) = data64;
^
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEDescriptorMap.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEDevice.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEEddystoneTLM.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEEddystoneURL.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEExceptions.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEHIDDevice.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLERemoteCharacteristic.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLERemoteDescriptor.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLERemoteService.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEScan.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLESecurity.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEServer.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEService.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEServiceMap.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEUUID.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEUtils.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/BLEValue.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/FreeRTOS.cpp.o
Compiling .pioenvs/esp32-evb/libbc4/BLE/GeneralUtils.cpp.o
Compiling .pioenvs/esp32-evb/lib27d/esp32ModbusTCP_ID5902/esp32ModbusTCP.cpp.o
Compiling .pioenvs/esp32-evb/lib114/WiFi/ETH.cpp.o
.piolibdeps/esp32ModbusTCP_ID5902/src/esp32ModbusTCP.cpp: In member function 'void esp32ModbusTCP::_send()':
.piolibdeps/esp32ModbusTCP_ID5902/src/esp32ModbusTCP.cpp:138:25: error: 'esp32ModbusInternals' has not been declared
memset(&_TXBuff[0], esp32ModbusInternals::high(mb_adu.id), 1);
^
.piolibdeps/esp32ModbusTCP_ID5902/src/esp32ModbusTCP.cpp:139:25: error: 'esp32ModbusInternals' has not been declared
memset(&_TXBuff[1], esp32ModbusInternals::low(mb_adu.id), 1);
^
Compiling .pioenvs/esp32-evb/lib114/WiFi/WiFi.cpp.o
/home/pfeerick/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src/GeneralUtils.cpp: In static member function 'static void GeneralUtils::dumpInfo()':
/home/pfeerick/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src/GeneralUtils.cpp:115:9: warning: unused variable 'freeHeap' [-Wunused-variable]
size_t freeHeap = heap_caps_get_free_size(MALLOC_CAP_8BIT);
^
*** [.pioenvs/esp32-evb/lib27d/esp32ModbusTCP_ID5902/esp32ModbusTCP.cpp.o] Error 1
=========================================================== [ERROR] Took 11.65 seconds ===========================================================