Many thanks again for your help! I tried your advises serveral times again and again.
Removed VSC and installed it again. The FDRS had been installed by PlatformIo in
C:\esp32\RpmSensor\.pio\libdeps\esp32dev\Farm-Data-Relay-System
I renamed all the .ino files and had a look at the correct alignement of the functions (setup and loop at last and #include <Arduino.h> on top).
; PlatformIO Project Configuration File
[env:esp32dev]
platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.13/platform-espressif32.zip
board = esp32dev
framework = arduino
lib_deps =
bblanchon/ArduinoJson@^7.3.1
https://github.com/timmbogner/Farm-Data-Relay-System@2.0.1
Wifi
// FARM DATA RELAY SYSTEM
//
// ESP-NOW Sensor Example
//
// Developed by Timm Bogner (timmbogner@gmail.com) in Urbana, Illinois, USA.
// An example of how to send data via ESP-NOW using FDRS.
//
#include <Arduino.h>
#include "fdrs_node_config.h"
#include <fdrs_node.h>
float data1;
float data2;
float readTemp() {
return 22.069;
}
float readHum() {
return random(0, 100);
}
void setup() {
beginFDRS();
}
void loop() {
data1 = readHum();
loadFDRS(data1, HUMIDITY_T);
data2 = readTemp();
loadFDRS(data2, TEMP_T);
// DBG(sendFDRS());
if(sendFDRS()){
DBG("Big Success!");
} else {
DBG("Nope, not so much.");
}
sleepFDRS(10); //Sleep time in seconds
}
But it did not work and I got errors and errors compiling it.
Processing esp32dev (platform: https://github.com/pioarduino/platform-espressif32/releases/download/53.03.13/platform-espressif32.zip; board: esp32dev; framework: arduino)
------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (53.3.13) > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, 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)
PACKAGES:
- framework-arduinoespressif32 @ 3.1.3
- framework-arduinoespressif32-libs @ 5.3.0+sha.489d7a2b3a
- tool-esptoolpy @ 4.8.6
- tool-mklittlefs @ 3.2.0
- tool-riscv32-esp-elf-gdb @ 14.2.0+20240403
- tool-xtensa-esp-elf-gdb @ 14.2.0+20240403
- toolchain-xtensa-esp-elf @ 13.2.0+20240530
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 44 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ArduinoJson @ 7.3.1
|-- Farm-Data-Relay-System @ 2.0.1+sha.2c4e985
|-- WiFi @ 3.1.3
Building in release mode
Compiling .pio\build\esp32dev\src\ESPNOW_Sensor.cpp.o
Archiving .pio\build\esp32dev\lib326\libWiFi.a
Compiling .pio\build\esp32dev\FrameworkArduino\FirmwareMSC.cpp.o
Compiling .pio\build\esp32dev\FrameworkArduino\FunctionalInterrupt.cpp.o
Indexing .pio\build\esp32dev\lib326\libWiFi.a
Compiling .pio\build\esp32dev\FrameworkArduino\HEXBuilder.cpp.o
Compiling .pio\build\esp32dev\FrameworkArduino\HWCDC.cpp.o
In file included from .pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:7,
from src/ESPNOW_Sensor.cpp:10:
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:10:3: error: 'uint8_t' does not name a type
10 | uint8_t mac[6];
| ^~~~Compiling .pio\build\esp32dev\FrameworkArduino\HardwareSerial.cpp.o
~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:1:1: note: 'uint8_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
+++ |+#include <cstdint>
1 | // A list of all datatypes you can use within FDRS.
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:11:3: error: 'uint32_t' does not name a type
11 | uint32_t last_seen = 0;
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:11:3: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:17:3: error: 'uint16_t' does not name a type
17 | uint16_t id;
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:17:3: note: 'uint16_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:18:3: error: 'uint8_t' does not name a type
18 | uint8_t t;
Compiling .pio\build\esp32dev\FrameworkArduino\IPAddress.cpp.o
| ^~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:18:3: note: 'uint8_t' is defined in
header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:23:3: error: 'uint8_t' does not name a type
23 | uint8_t cmd;
| ^~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:23:3: note: 'uint8_t' is defined in
header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:24:3: error: 'uint32_t' does not name a type
24 | uint32_t param;
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:24:3: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:89:3: error: 'uint16_t' does not name a type
Compiling .pio\build\esp32dev\FrameworkArduino\MD5Builder.cpp.o
89 | uint16_t tmAddress;
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:89:3: note: 'uint16_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:96:1: error: 'uint16_t' does not name a type
96 | uint16_t *address;
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:96:1: note: 'uint16_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:97:1: error: 'uint' does not name a
type; did you mean 'int'?
97 | uint startIdx;
| ^~~~
| int
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:98:1: error: 'uint' does not name a
type; did you mean 'int'?
Compiling .pio\build\esp32dev\FrameworkArduino\MacAddress.cpp.o
98 | uint endIdx;
| ^~~~
| int
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:99:1: error: 'uint' does not name a
type; did you mean 'int'?
99 | uint size;
| ^~~~
| int
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:104:1: error: 'uint16_t' does not name a type
104 | uint16_t *address;
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:104:1: note: 'uint16_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:105:1: error: 'uint' does not name a type; did you mean 'int'?
105 | uint startIdx;
| ^~~~
Compiling .pio\build\esp32dev\FrameworkArduino\Print.cpp.o
| int
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:106:1: error: 'uint' does not name a type; did you mean 'int'?
106 | uint endIdx;
| ^~~~
| int
Compiling .pio\build\esp32dev\FrameworkArduino\SHA1Builder.cpp.o
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:107:1: error: 'uint' does not name a type; did you mean 'int'?
107 | uint size;
| ^~~~
| int
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:113:3: error: 'uint' does not name a type; did you mean 'int'?
113 | uint timeout;
| ^~~~
| int
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:114:3: error: 'uint16_t' does not name a type
114 | uint16_t address;
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:114:3: note: 'uint16_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:115:3: error: 'uint32_t' does not name a type
115 | uint32_t response = __UINT32_MAX__;
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_datatypes.h:115:3: note: 'uint32_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
Compiling .pio\build\esp32dev\FrameworkArduino\Stream.cpp.o
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:13:1: error: 'uint8_t' does not name a type
13 | uint8_t ln;
| ^~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:8:1: note: 'uint8_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
7 | #include <fdrs_datatypes.h>
+++ |+#include <cstdint>
8 | #include <fdrs_globals.h>
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:14:1: error: 'uint8_t' does not name a type
14 | uint8_t newData = event_clear;
| ^~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:14:1: note: 'uint8_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:15:1: error: 'uint8_t' does not name a type
15 | uint8_t gatewayAddress[] = {MAC_PREFIX, GTWY_MAC};
| ^~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:15:1: note: 'uint8_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:16:7: error: 'uint16_t' does not name a type
16 | const uint16_t espnow_size = (250 - 15) / sizeof(DataReading); // 250 bytes minus 15 bytes for addressing and other data
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:16:7: note: 'uint16_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:19:1: error: 'uint8_t' does not name a type
19 | uint8_t incMAC[6];
| ^~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:19:1: note: 'uint8_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:20:22: error: 'espnow_size' was not declared in this scope
20 | DataReading fdrsData[espnow_size];
| ^~~~~~~~~Compiling .pio\build\esp32dev\FrameworkArduino\StreamString.cpp.o
~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:21:21: error: 'espnow_size' was not declared in this scope
21 | DataReading incData[espnow_size];
| ^~~~~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:24:1: error: 'uint8_t' does not name a type
24 | uint8_t data_count = 0;
| ^~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:24:1: note: 'uint8_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:27:1: error: 'uint16_t' does not name a type
Compiling .pio\build\esp32dev\FrameworkArduino\Tone.cpp.o
27 | uint16_t subscription_list[256] = {};
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:27:1: note: 'uint16_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
In file included from .pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:41:
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:80:1: error: 'esp_err_t' does not name a
type
80 | esp_err_t sendTimeESPNow();
| ^~~~~~~~~
In file included from .pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:40:
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h: In function 'void printTime()':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_debug.h:9:24: error: 'Serial' was not declared in this scope
Compiling .pio\build\esp32dev\FrameworkArduino\USB.cpp.o
9 | #define DBG(a) Serial.print(" "); Serial.println(a);
| ^~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:177:5: note: in expansion of macro 'DBG'
177 | DBG("Local date/time is: " + String(strftime_buf) + (isDST?" DST":" STD"));
| ^~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_debug.h:9:24: note: the macro 'Serial' had not yet been defined
9 | #define DBG(a) Serial.print(" "); Serial.println(a);
| ^~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:177:5: note: in expansion of macro 'DBG'
177 | DBG("Local date/time is: " + String(strftime_buf) + (isDST?" DST":" STD"));
| ^~~
In file included from C:/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:203,
from C:/.platformio/packages/framework-arduinoespressif32/libraries/Network/src/NetworkInterface.h:10,
from C:/.platformio/packages/framework-arduinoespressif32/libraries/Network/src/Network.h:8,
from C:/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiGeneric.h:44,
from C:/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiSTA.h:30,
Compiling .pio\build\esp32dev\FrameworkArduino\USBCDC.cpp.o
from C:/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFi.h:34,
from .pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:6,
from .pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:46:
C:/.platformio/packages/framework-arduinoespressif32/cores/esp32/HardwareSerial.h:364: note: it was later defined here
364 | #define Serial Serial0
|
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:177:34: error: 'String' was not declared
in this scope
177 | DBG("Local date/time is: " + String(strftime_buf) + (isDST?" DST":" STD"));
| ^~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_debug.h:9:61: note: in definition of macro 'DBG' 9 | #define DBG(a) Serial.print(" "); Serial.println(a);
| ^
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h: In function 'void checkDST()':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:11:35: error: 'millis' was not declared in this scope
Compiling .pio\build\esp32dev\FrameworkArduino\USBMSC.cpp.o
11 | #define TDIFF(prevMs,durationMs) (millis() - prevMs > durationMs)
| ^~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:182:22: note: in expansion of macro 'TDIFF'
182 | if(validTime() && (TDIFF(lastDstCheck,5000) || lastDstCheck == 0)) {
| ^~~~~Compiling .pio\build\esp32dev\FrameworkArduino\WMath.cpp.o
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h: In function 'bool setTime(time_t)':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:11:35: error: 'millis' was not declared in this scope
11 | #define TDIFF(prevMs,durationMs) (millis() - prevMs > durationMs)
| ^~~~~~
Compiling .pio\build\esp32dev\FrameworkArduino\WString.cpp.o
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:348:41: note: in expansion of macro 'TDIFF'
348 | if(FDRS_TIME_SEND_INTERVAL == 0 && (TDIFF(lastTimeSend,5000) || lastTimeSend == 0)) { // avoid sending twice on start with RTC and WiFi
| ^~~~~Compiling .pio\build\esp32dev\FrameworkArduino\base64.cpp.o
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h: In function 'void handleTime()':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:11:35: error: 'millis' was not declared in this scope
11 | #define TDIFF(prevMs,durationMs) (millis() - prevMs > durationMs)
| ^~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:360:6: note: in expansion of macro 'TDIFF'
360 | if(TDIFF(lastUpdate,500)) {
| ^~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:14:39: error: 'millis' was not declared in this scope
14 | #define TDIFFMIN(prevMs,durationMin) (millis() - prevMs > (durationMin * 60 * 1000))
| ^~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:381:57: note: in expansion of macro 'TDIFFMIN'
381 | if(validTimeFlag && (FDRS_TIME_SEND_INTERVAL != 0) && TDIFFMIN(lastTimeSend,FDRS_TIME_SEND_INTERVAL)) {
| ^~~~~~Compiling .pio\build\esp32dev\FrameworkArduino\cbuf.cpp.o
~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:14:39: error: 'millis' was not declared in this scope
14 | #define TDIFFMIN(prevMs,durationMin) (millis() - prevMs > (durationMin * 60 * 1000))
| ^~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:385:41: note: in expansion of macro 'TDIFFMIN'
385 | if(timeSource.tmNetIf < TMIF_LOCAL && TDIFFMIN(timeSource.tmLastTimeSet,120)) { // Reset time source to default if not heard anything for two hours
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:387:16: error: 'struct TimeSource' has no member named 'tmAddress'
387 | timeSource.tmAddress = 0x0000;
| ^~~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h: In function 'void adjTimeforNetDelay(time_t)':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_debug.h:9:24: error: 'Serial' was not declared in this scope
9 | #define DBG(a) Serial.print(" "); Serial.println(a);
| ^~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:405:5: note: in expansion of macro 'DBG'
405 | DBG("Time off by more than 10 seconds!");
| ^~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_debug.h:9:24: note: the macro 'Serial' had not yet been defined
9 | #define DBG(a) Serial.print(" "); Serial.println(a);
| ^~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_time.h:405:5: note: in expansion of macro 'DBG'
Compiling .pio\build\esp32dev\FrameworkArduino\chip-debug-report.cpp.o
405 | DBG("Time off by more than 10 seconds!");
| ^~~
C:/.platformio/packages/framework-arduinoespressif32/cores/esp32/HardwareSerial.h:364: note: it was later defined here
364 | #define Serial Serial0
|
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h: In function 'bool reqTimeEspNow()':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:20:59: error: too many initializers for 'SystemPacket'
20 | SystemPacket sys_packet = {.cmd = cmd_time, .param = 0};
| ^
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:22:18: error: 'gatewayAddress' was not declared in this scope
22 | esp_now_send(gatewayAddress, (uint8_t *)&sys_packet, sizeof(SystemPacket));
| ^~~~~~~~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h: In function 'void recvTimeEspNow(uint32_t)':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:39:91: error: 'struct TimeSource'
has no member named 'tmAddress'
39 | if(timeSource.tmNetIf < TMIF_ESPNOW || (timeSource.tmNetIf == TMIF_ESPNOW && timeSource.tmAddress == (incMAC[4] << 8 | incMAC[5]))) {
| ^~~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:39:105: error: 'incMAC' was not declared in this scope
39 | if(timeSource.tmNetIf < TMIF_ESPNOW || (timeSource.tmNetIf == TMIF_ESPNOW && timeSource.tmAddress == (incMAC[4] << 8 | incMAC[5]))) {
|
^~~~~~Compiling .pio\build\esp32dev\FrameworkArduino\esp32-hal-adc.c.o
Compiling .pio\build\esp32dev\FrameworkArduino\esp32-hal-bt.c.o
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:44:18: error: 'struct TimeSource'
has no member named 'tmAddress'
44 | timeSource.tmAddress = (incMAC[4] << 8 | incMAC[5]);
| ^~~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h: In function 'void OnDataRecv(const esp_now_recv_info*, const uint8_t*, int)':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:86:13: error: 'incMAC' was not declared in this scope
86 | memcpy(&incMAC, pkt_info->src_addr, sizeof(incMAC));
| ^~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:93:25: error: 'SystemPacket' {aka
'struct SystemPacket'} has no member named 'cmd'
93 | switch (command.cmd)
| ^~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:96:24: error: 'SystemPacket' {aka
'struct SystemPacket'} has no member named 'param'
96 | if(command.param == ping_reply) {
| ^~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:102:36: error: 'SystemPacket' {aka 'struct SystemPacket'} has no member named 'param'
102 | gtwy_timeout = command.param;
| ^~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:105:24: error: 'SystemPacket' {aka 'struct SystemPacket'} has no member named 'param'
105 | if(command.param > MIN_TS) {
| ^~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:106:40: error: 'SystemPacket' {aka 'struct SystemPacket'} has no member named 'param'
Compiling .pio\build\esp32dev\FrameworkArduino\esp32-hal-cpu.c.o
106 | recvTimeEspNow(command.param);
| ^~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:114:9: error: 'ln' was not declared in this scope; did you mean 'len'?
114 | ln = len / sizeof(DataReading);
| ^~
| len
Compiling .pio\build\esp32dev\FrameworkArduino\esp32-hal-dac.c.o
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:116:9: error: 'newData' was not declared in this scope
116 | newData = event_espnowg;
| ^~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h: In function 'int pingFDRSEspNow(uint8_t*, uint32_t)':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:127:70: error: too many initializers for 'SystemPacket'
127 | SystemPacket sys_packet = {.cmd = cmd_ping, .param = ping_request};
| ^
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h: In function 'bool refresh_registration()':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:155:56: error: too many initializers for 'SystemPacket'
155 | SystemPacket sys_packet = {.cmd = cmd_add, .param = 0};
| ^
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node_espnow.h:156:16: error: 'gatewayAddress' was not declared in this scope
Compiling .pio\build\esp32dev\FrameworkArduino\esp32-hal-gpio.c.o
156 | esp_now_send(gatewayAddress, (uint8_t *)&sys_packet, sizeof(SystemPacket));
| ^~~~~~~~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h: In function 'void beginFDRS()':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:130:30: error: 'gatewayAddress' was not declared in this scope
Compiling .pio\build\esp32dev\FrameworkArduino\esp32-hal-i2c-slave.c.o
130 | memcpy(peerInfo.peer_addr, gatewayAddress, 6);
| ^~~~~~~~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h: In function 'void handleIncoming()':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:151:7: error: 'newData' was not declared
in this scope
151 | if (newData != event_clear)
Compiling .pio\build\esp32dev\FrameworkArduino\esp32-hal-i2c.c.o
| ^~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:155:25: error: 'ln' was not declared in this scope; did you mean 'yn'?
155 | for (int i = 0; i < ln; i++)
| ^~
| yn
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:162:26: error: 'DataReading' {aka 'struct DataReading'} has no member named 'id'; did you mean 'd'?
162 | if (theData[i].id == subscription_list[j])
| ^~
| d
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:162:32: error: 'subscription_list' was not declared in this scope
162 | if (theData[i].id == subscription_list[j])
| ^~~~~~~~~~~~~~~~~Compiling .pio\build\esp32dev\FrameworkArduino\esp32-hal-ledc.c.o
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h: In function 'bool sendFDRS()':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:177:6: error: 'data_count' was not declared in this scope
177 | if(data_count == 0) {
| ^~~~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:182:16: error: 'gatewayAddress' was not declared in this scope
182 | esp_now_send(gatewayAddress, (uint8_t *)&fdrsData, data_count * sizeof(DataReading));
Compiling .pio\build\esp32dev\FrameworkArduino\esp32-hal-matrix.c.o
| ^~~~~~~~~~Compiling .pio\build\esp32dev\FrameworkArduino\esp32-hal-misc.c.o
~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:182:44: error: 'fdrsData' was not declared in this scope
182 | esp_now_send(gatewayAddress, (uint8_t *)&fdrsData, data_count * sizeof(DataReading));
| ^~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:182:54: error: 'data_count' was not declared in this scope
182 | esp_now_send(gatewayAddress, (uint8_t *)&fdrsData, data_count * sizeof(DataReading));
| ^~~~~~~~~~
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h: In function 'bool sendFDRSAsync()':
.pio/libdeps/esp32dev/Farm-Data-Relay-System/src/fdrs_node.h:228:6: error: 'data_count' was not declared in this scope
228 | if(data_count == 0) {
| ^~~~~~~~~~
..................................
In the last moment after lots of hours of wasted time when I was about to turn to the Arduino IDE … I remembered the main difference between PlatformIo and Arduino IDE and perhaps the reason why all the error messages did show up althoug #include <Arduino.h> has been done in the .cpp files !!!
I gave them a last chance and included Arduino.h in every header file of the FDRS library.
And…
It worked finally! 


C:\esp32\RpmSensor\.pio\libdeps\esp32dev\Farm-Data-Relay-System\src
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 03.03.2025 18:36 ESP8266_and_ESP32_OLED_driver_for_S
SD1306_displays
-a---- 03.03.2025 18:36 13723 fdrs_checkConfig.h
-a---- 03.03.2025 19:09 3651 fdrs_datatypes.h
-a---- 03.03.2025 18:36 882 fdrs_debug.h
-a---- 03.03.2025 18:36 6523 fdrs_gateway.h
-a---- 03.03.2025 18:36 14291 fdrs_gateway_espnow.h
-a---- 03.03.2025 18:36 4942 fdrs_gateway_mqtt.h
-a---- 03.03.2025 18:36 1901 fdrs_gateway_ota.h
-a---- 03.03.2025 18:36 876 fdrs_gateway_scheduler.h
-a---- 03.03.2025 18:36 8308 fdrs_gateway_serial.h
-a---- 03.03.2025 18:36 8857 fdrs_gateway_wifi.h
-a---- 03.03.2025 18:36 3145 fdrs_globals.h
-a---- 03.03.2025 18:36 42064 fdrs_lora.h
-a---- 03.03.2025 19:10 10600 fdrs_node.h
-a---- 03.03.2025 19:10 5540 fdrs_node_espnow.h
-a---- 03.03.2025 18:36 4177 fdrs_oled.h
-a---- 03.03.2025 19:10 13306 fdrs_time.h
By the way, GitHub Copilot had many ideas to solve the problem which were not helpful but time consuming!