PinStatus не называет тип

Я купил "небрендовую" плату ESP32. Я могу загрузить blinky без проблем, используя platformio со следующим файлом platformio.ini:

[env:humidious]
platform = espressif32
board = nodemcu-32s
framework = arduino

Однако, как только я добавляю lib_deps = grafana/PrometheusArduino@^0.3.0, компилятор выдает следующие ошибки:

In file included from .pio/libdeps/humidious/WiFiNINA/src/WiFiStorage.h:23:0,
                 from .pio/libdeps/humidious/WiFiNINA/src/WiFi.h:38,
                 from .pio/libdeps/humidious/PromLokiTransport/src/clients/ESP32Client.h:7,
                 from .pio/libdeps/humidious/PromLokiTransport/src/PromLokiTransport.h:8,
                 from .pio/libdeps/humidious/PrometheusArduino/src/PromClient.h:4,
                 from .pio/libdeps/humidious/PrometheusArduino/src/PrometheusArduino.h:5,
                 from src/main.cpp:4:
.pio/libdeps/humidious/WiFiNINA/src/utility/wifi_drv.h:293:12: error: 'PinStatus' does not name a type
     static PinStatus digitalRead(uint8_t pin);

В другой теме было высказано предположение, что плата устарела, но обновление этого не помогло.

Добавление typedef int PinStatus перед #include <PrometheusArduino.h> также не помогло.

, 👍0


2 ответа


Лучший ответ:

2

То, что сказала Маджеко, было правильно. ПИО использовал WifiNINA вместо библиотеки Wi-Fi ESP32. Чтобы решить эту проблему, я добавил lib_ignore = WiFiNINA в platformio.ini и #include <WiFi.h> перед включением библиотек prometheus в main.ino.

Я проверил это, указав PrometheusArduino на мой рабочий стол следующим примером:

$ ncat -l 9090
POST /api/prom/push HTTP/1.1
Host: 192.168.0.45
Content-Type: application/x-protobuf
Content-Encoding: snappy
User-Agent: prom-arduino/0.2.2
Content-Length: 209

F

%
__name__uptime_milliseconds_total

job
esp32-test

hostD   @/@%@<@@/

heap_free_bytes
0


foobar
        0xA6..(0xA/
,

1

Проблема здесь в том, что PlatformIO подбирает неправильную библиотеку Wi-Fi. Он решил, что WiFi.h, предоставляемый WiFiNINA, является правильным для использования, а не WiFi.h, предоставляемым встроенной библиотекой WiFi ESP32.

Вы можете попробовать удалить все следы библиотеки WiFiNINA из вашей установки PlatformIO, или, возможно, вам нужно вручную указать, какую библиотеку Wi-Fi следует использовать, чтобы предотвратить процедуру автоматического выбора.

Я не знаю, как вы это делаете в PlatformIO.

,