Problème de compilation dans l'Arduino IOT Cloud

Bonjour à tous,

Il y a peu de sujets concernant l’IOT Arduino Cloud mais je tente quand même ma chance car j’ai un problème que je n‘arrive pas à résoudre sans aide.

J’ai un objet connecté tournant sur une carte Arduino Uno R4 Wifi (système de rafraichissement d’une maison basé sur l’activation de turbines contrôlé par comparaison de température intérieure/extérieure) qu’il est possible de programmer à distance avec la fonction OTA via l’Arduino Cloud.

Ce système est fonctionnel depuis l’été dernier mais lors d’une évolution que j’ai voulu faire récemment, j’ai constaté une erreur récurrente lors de la compilation du sketch avec l’éditeur du Cloud.

Il s’agit d’une erreur liée à un conflit de bibliothèque or, l’éditeur du Cloud utilise des bibliothèques internes auxquelles je n’ai pas accès et je n’ai pas pour ma part fait d’évolution ni sur mon code, ni sur les bibliothèques utilisées par mon sketch.

Il y a donc un pataquès sur quasiment toutes les bibliothèques utilisées par ce sketch et je ne m’en sors pas.

Pour info, je peux compiler d’autres sketchs plus simples n’utilisant pas les bibliothèques incriminées et tourant sur ESP32 (mais sans OTA).

Je peux contourner ce problème en compilant dans l’IDE Arduino et en téléchargeant l’exécutable avec la liaison USB, donc sans la fonction OTA.

Si un utilisateur peut me donner une piste de recherche, merci d’avance !

Ce ne sont pas des erreurs de compilation, il vous dit juste qu'il a le choix entre plusieurs options par rapport à vos include et il vous dit celle qu'il retient (et qui semble la bonne) si la compilation se passe bien.

Vous avez des messages similaires si vous compilez en local avec le mode "verbose" et que vous avez plein de bibliothèques partagées qui seraient des cibles potentielles.

Ce ne sont pas des messages d'erreur. Ce sont juste des informations sur la compilation. Il y a plusieurs librairies possible et le compilateur indique celles qu'il utilise.

Merci pour vos réponses.

Mais l'éditeur m'informe tout de même que la compilation ne se passe pas correctement ce qui bloque la programmation du système par le mode OTA :

Erreur de compilation

Effectivement, dans l'extrait du message publié par le compilateur, il n'apparait pas clairement des erreurs.

L'erreur vient sans doute d'un changement de bibliothèque utilisée initialement pour piloter un afficheur LCD avec laquelle mon code n'est plus compatible.

Je dois sans doute adapter mon code à cette bibliothèque, mais je ne comprends pas bien pourquoi.

les images de texte, c'est pas terrible. Personnellement je n'essaye même pas de les lire avec ma mauvaise vue... (et quand je regarde le forum sur mon iPhone c'est encore plus petit !)

Pourquoi ne pas faire un copier coller du texte dans une balise de code ?? ce sera bcp plus utilisable et ça prendra moins de bande passante / octets...

Désolé J-M-L Jackson, je pensais que les balises de codes n'étaient adaptées qu'au code en tant quel tel et non aux messages d'erreurs, merci ! J'en apprends tous les jours, même le dimanche :slightly_smiling_face:

Voici l'intégralité du message publié par le compilateur :

/var/run/arduino/user-cache/sketches/72E56EF3CF931CB9A3559E04EB6FA58A/sketch/VMC_R4_Wifi_29_juin.ino.cpp.o: In function `_GLOBAL__sub_I_consigne':
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:77: undefined reference to `LiquidCrystal_I2C::LiquidCrystal_I2C(unsigned char, unsigned char, unsigned char)'
/var/run/arduino/user-cache/sketches/72E56EF3CF931CB9A3559E04EB6FA58A/sketch/VMC_R4_Wifi_29_juin.ino.cpp.o: In function `setup':
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:109: undefined reference to `LiquidCrystal_I2C::init()'
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:110: undefined reference to `LiquidCrystal_I2C::backlight()'
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:123: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'
/var/run/arduino/user-cache/sketches/72E56EF3CF931CB9A3559E04EB6FA58A/sketch/VMC_R4_Wifi_29_juin.ino.cpp.o: In function `loop':
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:207: undefined reference to `LiquidCrystal_I2C::createChar(unsigned char, unsigned char*)'
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:210: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:212: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:404: undefined reference to `LiquidCrystal_I2C::createChar(unsigned char, unsigned char*)'
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:405: undefined reference to `LiquidCrystal_I2C::createChar(unsigned char, unsigned char*)'
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:407: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:409: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:411: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:413: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'
/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:416: undefined reference to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)'
/var/run/arduino/user-cache/sketches/72E56EF3CF931CB9A3559E04EB6FA58A/sketch/VMC_R4_Wifi_29_juin.ino.cpp.o:/run/arduino/sketches/VMC_R4_Wifi_29_juin/VMC_R4_Wifi_29_juin.ino:418: more undefined references to `LiquidCrystal_I2C::setCursor(unsigned char, unsigned char)' follow
collect2: error: ld returned 1 exit status
Multiple libraries were found for "ds3231.h"
  Used: /run/arduino/directories-data/internal/ds3231FS_1.1.1_9665227a41c037d6
  Not used: /run/arduino/directories-data/internal/UncleRus_1.0.1_18d530502686ac59
Multiple libraries were found for "OneWire.h"
  Used: /run/arduino/directories-data/internal/OneWire_2.3.8_b02012c4e88745c5
  Not used: /run/arduino/directories-data/internal/OneWireNg_0.14.1_37fe3dc3c2e551b0
  Not used: /run/arduino/directories-data/internal/SDU_AGS_SensorBoard_1.0.0_181760c786658d42
  Not used: /run/arduino/directories-data/internal/MAX31850_OneWire_1.1.3_c2f66ba75d315254
Multiple libraries were found for "Wire.h"
  Used: /run/arduino/directories-data/packages/arduino/hardware/renesas_uno/1.5.1/libraries/Wire
  Not used: /run/arduino/directories-data/internal/FlexWire_1.2.1_1fc5f1d1a14af0e7
Multiple libraries were found for "DHT.h"
  Used: /run/arduino/directories-data/internal/DHT_kxn_3.4.4_e8785b1b9c67af18
  Not used: /run/arduino/directories-data/internal/Modular_1.0.1_0da2bcec860c0503
  Not used: /run/arduino/directories-data/internal/servodht11_1.0.10_7ab49b0e5e1d849a
  Not used: /run/arduino/directories-data/internal/DHT118266_1.0.16_554bbe218f876118
  Not used: /run/arduino/directories-data/internal/esp826611_1.0.16_00334015f1bcaea0
  Not used: /run/arduino/directories-data/internal/Grove_Temperature_And_Humidity_Sensor_2.0.2_261181fd4a96dafa
  Not used: /run/arduino/directories-data/internal/DHT_sensor_library_1.4.7_50b5ef2509805e63
  Not used: /run/arduino/directories-data/internal/NanoPlayBoard_0.1.1_96e8fd2355834992
  Not used: /run/arduino/directories-data/internal/uKit_Explore_1.2.28_13a98cd71cc29e10
  Not used: /run/arduino/directories-data/internal/dht11esp8266examples_1.0.10_a9e082c0a22a7d7d
  Not used: /run/arduino/directories-data/internal/dht11esp8266_1.0.10_3c072ef8d61af961
Multiple libraries were found for "RTC.h"
  Used: /run/arduino/directories-data/packages/arduino/hardware/renesas_uno/1.5.1/libraries/RTC
  Not used: /run/arduino/directories-data/internal/M5StickC_0.3.0_a99c11f2c0b70886
  Not used: /run/arduino/directories-data/internal/M5StickCPlus_0.1.1_3da481354d8492d0
  Not used: /run/arduino/directories-data/internal/M5Core2_0.2.0_b8c417594bcb0714
  Not used: /run/arduino/directories-data/internal/M5Station_0.0.1_59c962b74b2e5439
Multiple libraries were found for "LiquidCrystal_I2C.h"
  Used: /run/arduino/directories-data/internal/LCDBigNumbers_1.2.3_96a1adfe8c3fae7f
  Not used: /run/arduino/directories-data/internal/LiquidCrystal_I2C_2.0.0_5b47e66a35aa9468
Multiple libraries were found for "SPI.h"
  Used: /run/arduino/directories-data/packages/arduino/hardware/renesas_uno/1.5.1/libraries/SPI
  Not used: /run/arduino/directories-data/internal/EventEthernet_1.0.0_bd9dd894ef7641f8
Multiple libraries were found for "Adafruit_Sensor.h"
  Used: /run/arduino/directories-data/internal/Adafruit_Unified_Sensor_1.1.15_c4f0a59ad82fa17d
  Not used: /run/arduino/directories-data/internal/ClimaStick_1.3.1_233fdd430f7c3408

Bon dimanche à tous !

OK

➜ le linker ne trouve pas les fonctions de la bibliothèque LiquidCrystal_I2C (constructeur, init, backlight, setCursor, createChar, …) et donc stoppe la compilation.

Ce message indique que la bibliothèque apparaît dans les recherches (plusieurs versions listées), mais la version contenant les définitions correctes n'est pas utilisée ou n'a pas été compilée pour la carte sélectionnée.

Le plus simple (comme ces bibliothèques sont toutes très proches) serait d'adapter votre code à la bibliothèque choisie.

D’accord, je vais faire ça, cela semble le plus simple (et peut-être la seule solution d’ailleurs).

En tous cas, je vous remercie pour votre analyse, je ferai un retour après adaptation du code.

Bon, la situation est redevenue normale, ouf !

Comme j'ai eu des difficultés pour adapter mon code à la bibliothèque utilisée par l'éditeur du Cloud, j'ai "simplement" rechargé dans le Cloud le fichier ZIP correspondant à la bibliothèque LCDCrystal_I2C et cela a permis de résoudre le problème :+1:

Pouvez-vous m'indiquer la méthode pour taguer ce post comme résolu ?

Merci encore pour votre soutien !

Tu cliques sur la petite coche verte en bas à droite du message contenant la solution.

Ok, merci pandaroux007 C'est fait.

Merci !