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>
также не помогло.
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/
Проблема здесь в том, что PlatformIO подбирает неправильную библиотеку Wi-Fi. Он решил, что WiFi.h, предоставляемый WiFiNINA, является правильным для использования, а не WiFi.h, предоставляемым встроенной библиотекой WiFi ESP32.
Вы можете попробовать удалить все следы библиотеки WiFiNINA из вашей установки PlatformIO, или, возможно, вам нужно вручную указать, какую библиотеку Wi-Fi следует использовать, чтобы предотвратить процедуру автоматического выбора.
Я не знаю, как вы это делаете в PlatformIO.
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Как преобразовать форматированный оператор print в строковую переменную?
- ESP32 - "Детектор Браунаута был активирован" при запуске Wi-Fi
- Питание esp32cam от аккумулятора
- Контакты RX и TX на esp32
- ESP32: отключить детектор отключения питания