Попытка создать пример приложения для подключения к серверу MQTT. Обнаружение 2 различных ситуаций
Случай 1: _client-> connect (this-> ip, this-> port) возвращает 0, если я использую Ethernet2библиотека.Все значения были проверены.
Случай 2: ошибка компиляции подробно описана ниже.Если я получу его для компиляции
Случай 1 - объяснил: Используя Ethernet2, я могу скомпилировать и загрузить.Я могу подключиться к WIFI и быть замеченным в сети, используя следующую функцию setup ():
EthernetClient ethClient;
PubSubClient client;
void setup() {
Serial.begin(115200);
while (!Serial);
WiFi.begin(ssid, password);
delay(1500);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Establishing connection to WiFi..");
delay(500);
}
ipIP = WiFi.localIP() ; // 192.168.8.104 - good
WiFi.macAddress(mac); // MAC returned - good
// Connecting to MQTT Server
client.setClient(ethClient);
client.setServer(server, 1883);
client.setCallback(callback);
while (!client.connected()) { . //fails here, always 0
Serial.print("Attempting MQTT connection...");
if (client.connect("dev001")) {
Serial.println("connected");
// Once connected, publish an announcement...
client.publish("garden/light","works");
// and so on
}
PubSubClient вызывает _client.connect из базового класса Client: public Stream.Это виртуальная функция, и мой C ++ недостаточно хорош, чтобы знать, где находится код для дальнейшей отладки.
Случай 2 поясняется ниже.Кажется, что для всех зависимостей требуется SPI версии 1, а проблему с компилятором можно увидеть внизу, относящуюся к w5100.cpp. Я видел в сети несколько очень похожих ситуаций, но пока не знаю достаточно об этом, чтобы исправить это.
CONFIGURATION:
PLATFORM: Espressif 32 > Heltec WIFI LoRa 32
HARDWARE: ESP32 240MHz 320KB RAM (4MB Flash)
Library Dependency Finder ->
LDF MODES: FINDER(chain) COMPATIBILITY(soft)
Collected 29 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <PubSubClient> 2.7
|-- <Wire> 1.0
|-- <ESP8266_SSD1306> 4.0.0
| |-- <Wire> 1.0
| |-- <SPI> 1.0
|-- <SPI> 1.0
|-- <LoRa> 0.5.0
| |-- <SPI> 1.0
|-- <WiFi> 1.0
|-- <Ethernet> 2.0.0
| |-- <SPI> 1.0
Compiling .pioenvs/heltec_wifi_lora_32/lib677/Ethernet_ID872/utility/w5100.cpp.o
Compiling .pioenvs/heltec_wifi_lora_32/FrameworkArduino/HardwareSerial.cpp.o
.piolibdeps/Ethernet_ID872/src/utility/w5100.cpp: In static member function 'static uint16_t W5100Class::write(uint16_t, const uint8_t*, uint16_t)':
.piolibdeps/Ethernet_ID872/src/utility/w5100.cpp:315:22: error: no matching function for call to 'SPIClass::transfer(uint8_t [8], int)'
SPI.transfer(cmd, 4);
^
Подскажите, пожалуйста, как я могу решить эту проблему, пожалуйста?Большое спасибо Кевин