Forum: Mikrocontroller und Digitale Elektronik ESP32 + PlatformIO + Adafruit IO = Error


von Andreas S. (igel1)


Angehängte Dateien:

Lesenswert?

Liebe Forengemeinde,

ich versuche gerade ein XIAO ESP32S3 board unter Visual Code auf einem 
MacBook M1 mit PlattformIO ans Laufen zu bringen.

hello_world läuft schon und auch ein kleines Programm, das einen DHT22 
Sensor abfragt und die Ergebnisse per SerialPort ausgibt, funktioniert.

Nun möchte ich die Werte des Sensors gerne in die Adafruit IO Cloud 
hochladen und habe dazu die "Adafruit IO Arduino" Lib in das Projekt 
eingebunden.

Sobald ich das mache, erscheint beim Build der unten angehängte Fehler.
(dabei benutze ich nur die default main.cpp, die mir PlatformIO beim 
Anlegen eines Projekte schenkt - quasi ein hello_world).
Ein Auszug aus der Fehlermeldung:
1
Compiling .pio/build/seeed_xiao_esp32s3/lib2f4/Adafruit IO Arduino/blocks/AdafruitIO_Block.cpp.o
2
Compiling .pio/build/seeed_xiao_esp32s3/lib2f4/Adafruit IO Arduino/blocks/ChartBlock.cpp.o
3
/Users/igel1/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp: In constructor 'WiFiClientSecure::WiFiClientSecure()':
4
/Users/igel1/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp:34:5: error: '_connected' was not declared in this scope
5
     _connected = false;
6
     ^~~~~~~~~~
7
/Users/igel1/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp:34:5: note: suggested alternative: 'connected'
8
     _connected = false;
9
     ^~~~~~~~~~
10
     connected

Meine platformio.ini Datei sieht wie folgt aus:
1
[env:seeed_xiao_esp32s3]
2
platform = espressif32
3
board = seeed_xiao_esp32s3
4
framework = arduino
5
lib_deps = adafruit/Adafruit IO Arduino

Wenn ich das ganze für ein stm32 board kompiliere, funktioniert's.

Habt Ihr eine Ahnung, woran das liegen könnte?

Wenn Ihr noch weitere Infos/Dateien zur Analyse benötigt, so sagt bitte 
einfach Bescheid. Bin etwas eingerostet in Sachen C bzw. C++.

Viele Grüße

Igel1

von Alexander (alecxs)


Lesenswert?

was not declared in this scope - da fehlt entweder ein Include oder 
(wahrscheinlicher) deine Lib ist zu neu (breaking changes)

von N. M. (mani)


Lesenswert?


von Andreas S. (igel1)


Lesenswert?

Danke an Alexander und N.M. für die Hinweise.

Ich werde dann heute Nachmittag einmal die Version von AdafruitIO 
"runterdrehen" und hier berichten, was dann passiert.

Und auch der Link von Alexander scheint sehr interessant zu sein - hatte 
ich zwar schon gesehen, aber bislang noch nicht konsequent verfolgt und 
umgesetzt. Kommt dann ebenfalls auf meine ToDo-Liste.  Ich werde 
berichten ...

Dummerweise verstehe ich nicht so wirklich, wie dieses PlatformIO-Plugin 
funktioniert und wie und von welchen Config-Files der ganze 
Build-Vorgang gesteuert wird.  Ich wollte mich eigentlich nicht allzu 
tief in all das eingraben, aber aktuell sieht es so aus, dass ich genau 
das tun  müsste.

Ach wenn doch einfach mal diese ganzen 
IDE-Framework-Libs-Dingsbums-Dinge "out of the box" funktionieren würden 
und man sich um die eigentliche Programmierung kümmern könnte ...

Viele Grüße

Igel1

von Obelix X. (obelix)


Lesenswert?


von Andreas S. (igel1)


Lesenswert?

Andreas S. schrieb:
> Danke an Alexander und N.M. für die Hinweise.
>
> Ich werde dann heute Nachmittag einmal die Version von AdafruitIO
> "runterdrehen" und hier berichten, was dann passiert.

Gesagt, getan.

Habe alle AdafruitIO Libs, die mir in PlatformIO angeboten werden 
ausprobiert: von der aktuellen 4.3.3 bis hinunter zur 4 Jahre alten 
Version 4.2.3

Ergebnis: ich bekomme überall denselben Fehler (siehe Eingangspost in 
diesem Thread).

Soweit mein Zwischenstand.

Viele Grüße

Igel1

von Andreas S. (igel1)


Lesenswert?

Obelix X. schrieb:
> Schau mal hier vorbei :
>
> https://randomnerdtutorials.com/vs-code-pioarduino-ide-esp32/
>
> https://github.com/pioarduino

Oh, ahhh, ja - das klingt sehr schlüssig und nach einer sehr 
interessanten Spur, die ich als nächstes verfolgen werde.  Ihr hört von 
mir.

Viele Grüße

Igel1

von Obelix X. (obelix)


Lesenswert?

Andreas S. schrieb:
> von der aktuellen 4.3.3

Ja, die sind bei 5.x.x

von Alexander (alecxs)


Lesenswert?

Du kompilierst das alte Framework ESP-IDF v4.x das muss noch irgendwo 
auf deinem PC im Cache liegen. Am besten mal den ~/.platformio Ordner 
löschen und neu installieren.

https://github.com/espressif/arduino-esp32/blob/release/v2.x/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp#L34

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Obelix X. schrieb:
> Andreas S. schrieb:
>> von der aktuellen 4.3.3
>
> Ja, die sind bei 5.x.x

Nope, letztes Release v4.3.3 vom September.

https://github.com/adafruit/Adafruit_IO_Arduino/blob/4.3.3/src/wifi/AdafruitIO_ESP32.h#L24

: Bearbeitet durch User
von Obelix X. (obelix)


Lesenswert?

5.5.2

https://github.com/espressif/esp-idf
1
[env:seeed_xiao_esp32s3]
2
;platform = <======== Such dir etwas aktuelleres aus =========>
3
platform = https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip
4
board = seeed_xiao_esp32s3
5
framework = arduino
6
lib_deps = adafruit/Adafruit IO Arduino

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Andreas S. schrieb:
> Habe alle AdafruitIO Libs, die mir in PlatformIO angeboten werden
> ausprobiert

https://github.com/adafruit/Adafruit_IO_Arduino/releases

: Bearbeitet durch User
von Andreas S. (igel1)


Angehängte Dateien:

Lesenswert?

Sorry Leute - ich musste mich erst einmal auf einen Ratschlag 
konzentrieren und habe Obelix X. Ratschlag verfolgt:

Obelix X. schrieb:
> Schau mal hier vorbei :
>
> https://randomnerdtutorials.com/vs-code-pioarduino-ide-esp32/
> https://github.com/pioarduino

Also habe ich das PlatformIO Plugin aus VS Code rausgeworfen und duch 
pioarduino ersetzt (natürlich vorab auch ~/.platformio gelöscht.

Immerhin: jetzt habe ich zumindest ein Programm, was sich kompilieren 
lässt - Dankeschön also an Obelix X.

Einziges Manko: das Programm als solches funktioniert auf meinem XIAO 
ESP32S3 noch nicht :-)

Es bleibt scheinbar bei der folgenden Zeile hängen:
1
 io.connect();

Die wesentlichen Dateien habe ich einfach mal hier angehängt.

Geklaut habe ich den Code von hier:
https://learn.adafruit.com/adafruit-io-basics-temperature-and-humidity

Falls Euch spontan noch etwas einfällt ...

Viele Grüße

Igel1

von Obelix X. (obelix)


Lesenswert?

Lass den Quatsch mit den Adafruit-Libs. Nimm Bibliotheken die viel 
verbreiterter sind wie z.B. die von Arduino. Was ist der Grund, warum du 
die Adafruit-Lib nimmst?

von Andreas S. (igel1)


Lesenswert?

Obelix X. schrieb:
> Lass den Quatsch mit den Adafruit-Libs. Nimm Bibliotheken die viel
> verbreiterter sind wie z.B. die von Arduino. Was ist der Grund, warum du
> die Adafruit-Lib nimmst?

Nun ja - ich möchte meine Daten (Temperatur und Luftfeuchtigkeit) halt 
in die Adafruit Cloud zu io.adafruit.com hochladen und dafür stellt 
Adafruit diese fertige Lib zur Verfügung (um Daten dort in sogenannte 
"Feeds" zu schreiben).

Ich habe inzwischen übrigens einen kleinen Fortschritt erreicht, indem 
ich den Code der oben verlinkten Seite einfach einmal in der Arduino IDE 
ausprobiert habe - das funktionierte. Bin dabei gaaanz genau nach 
Anleitung vorgegangen - nix denken, nur malen nach Zahlen: 
https://learn.adafruit.com/adafruit-io-basics-temperature-and-humidity. 
Damit weiß ich immerhin, dass es prinzipiell funktionieren müsste.

Nun würde ich trotzdem gerne genau diesen Code auch unter pioarduino ans 
Laufen bringen ... mal sehen, ob ich das (evtl. mit Eurer Hilfe) noch 
schaffe.

Viele Grüße

Igel1

von Alexander (alecxs)


Lesenswert?

Zu deinem ursprünglichen Problem, dazu müsstest Du mal herausfinden wer 
oder was die WiFiClientSecure.cpp installiert hat. Die gibt es nämlich 
seit 2 Jahren gar nicht mehr.

https://github.com/espressif/arduino-esp32/commits/f2026f1/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp?browsing_rename_history=true&new_path=libraries/NetworkClientSecure/src/NetworkClientSecure.cpp&original_branch=f2026f1

von Andreas S. (igel1)


Lesenswert?

Alexander schrieb:
> Zu deinem ursprünglichen Problem, dazu müsstest Du mal herausfinden wer
> oder was die WiFiClientSecure.cpp installiert hat. Die gibt es nämlich
> seit 2 Jahren gar nicht mehr.
>
> 
https://github.com/espressif/arduino-esp32/commits/f2026f1/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp?browsing_rename_history=true&new_path=libraries/NetworkClientSecure/src/NetworkClientSecure.cpp&original_branch=f2026f1

Hab's gerade nochmals reproduziert:

Das besagte File wird genau dann installiert, sobald man über das 
PlatformIO-Plugin das erste Projekt anlegt und dafür "Arduino" als 
Framework auswählt.

Das File liegt dann hier:
~/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClient 
Secure/src/WiFiClientSecure.cpp

Viele Grüße

Igel1

von Alexander (alecxs)


Lesenswert?

Arduino ist jetzt bei v3.3.7 (IDF v5.5.2) - dann ist das 
PlatformIO-Plugin wohl veraltet:

https://github.com/platformio/platform-espressif32/releases/v6.12.0

> **Supported Frameworks**
> - Arduino - v2.0.17 (based on IDF v4.4.7)
> - ESP-IDF - v5.5.0

Mit pioarduino sollte das Problem gelöst sein (hast ja auch gesagt es 
kompiliert)

https://github.com/pioarduino/platform-espressif32/releases

Ansonsten vielleicht mal vscode-arduino-community probieren, damit 
spiele ich gerade rum.

Nemopuk schrieb:
> 
https://marketplace.visualstudio.com/items?itemName=vscode-arduino.vscode-arduino-community

: Bearbeitet durch User
von Andreas S. (igel1)


Lesenswert?

Ich habe das ober erwähnte, funktionierende Programm aus der Arduino IDE 
per pioarduino in VS Code importiert.

Dann sollte man ja eigentlich meinen, dass alles funktioniert.

=> Fehlanzeige:  Programm kompiliert, läuft aber nicht auf dem ESP32S3.

von Alexander (alecxs)


Lesenswert?

Experiment. Schau mal wo bei Dir auf dem Rechner diese Datei liegt.

https://github.com/espressif/arduino-esp32/blob/3.3.7/libraries/NetworkClientSecure/src/WiFiClientSecure.h

bin mir nicht sicher, irgendwo unter
1
~/Library/Arduino15
2
~/Documents/Arduino/libraries

Wenn die Ordnerstruktur es zulässt, dann lösche mal den gesamten 
`libraries` Ordner und setze einen Symlink vom arduino-esp32 Library 
Ordner ins framework-arduinoespressif32. Sollte hinterher so aussehen.
1
~/.platformio/packages/framework-arduinoespressif32/libraries/NetworkClientSecure/src/WiFiClientSecure.h <- gelöscht
2
~/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src/WiFiClientSecure.h <- neu

von Alexander (alecxs)


Lesenswert?

Ich meinte natürlich andersrum.

von Andreas S. (igel1)


Angehängte Dateien:

Lesenswert?

Alexander schrieb:
> Experiment. Schau mal wo bei Dir auf dem Rechner diese Datei liegt.

Habe auf meinem Mac mal alle Verzeichnisse unterhalb von meinem 
User-Homeverzeichnis nach "WiFiClientSecure*" durchsucht.

Das Ergebnis findest Du/Ihr im Anhang.
Notiz dazu: unterhalb von /Users/igel1/esp/ liegen meine Visual Studio 
Code Projekte für den ESP32.

Viele Grüße

Igel1


PS:  den Symlink-Test mache ich nachher noch - werde dann wieder hier 
berichten.

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Laut deiner Textdatei:
1
cd ~/.platformio/packages/framework-arduinoespressif32
2
find libraries -print -delete
3
ln -s ../../../Library/Arduino15/packages/esp32/hardware/esp32/3.3.7/libraries ./libraries

von Andreas S. (igel1)


Lesenswert?

Alexander schrieb:
> Laut deiner Textdatei:
>
>
1
> cd ~/.platformio/packages/framework-arduinoespressif32
2
> find libraries -print -delete
3
> ln -s 
4
> ../../../Library/Arduino15/packages/esp32/hardware/esp32/3.3.7/libraries 
5
> ./libraries
6
>

Gesagt, getan - Code kompiliert, läuft aber leider nicht auf dem 
ESP32S3.

Hmmmm ...

von Alexander (alecxs)


Lesenswert?

Vermutlich stimmt der Core nicht. Bleibt nur noch die letzte 
Alternative.

von Andreas S. (igel1)


Lesenswert?

Alexander schrieb:
> Vermutlich stimmt der Core nicht. Bleibt nur noch die letzte
> Alternative.

... und die wäre?

Aber ich muss gestehen: vmtl. liegt es auch ein wenig an meiner 
Ahnungslosigkeit.  Was genau meinst Du z.B. mit "Core"?

Und überhaupt ist mir nicht so ganz klar, wie das ganze funktioniert:

- Wird bei der Initialisierung eines Projektes im Verzeichnis 
`~/.platform` ein Arduino-Betriebssystem hinterlegt?

- Wenn ja: wie finde ich die Version dieses Arduino-Betriebssystems 
heraus?

- Verbirgt sich hinter diesem "Betriebssystem" im Falle des ESP32S3 in 
Wirklichkeit ein FreeRTOS?

Viele Grüße

Igel1

von Andreas S. (igel1)


Lesenswert?

Andreas S. schrieb:
> - Wenn ja: wie finde ich die Version dieses Arduino-Betriebssystems
> heraus?

Die AI sagt mir gerade:  pio pkg list -g

Das ergibt das Ergebnis im Anhang.

Aber mir sagt der ganze Quatsch nicht viel.

Viele Grüße

Igel1

von Alexander (alecxs)


Lesenswert?

Das Experiment hat ja nur die Libs vom Arduino ESP Framework 
eingebunden, nicht das ganze Framework. Das passt alles nicht 
zueinander. Experiment gescheitert, und da ich selbst nur dummer Arduino 
Nutzer bin keine Lust da rumzufrickeln. Wenn die das nicht mal 
hinkriegen oder keine Lust haben.

Der ESP32-S3 ist ne leicht andere Hardware und im core/ gibts da für die 
verschiedenen ESP noch Unterordner, nehme an das sind die HAL Libs die 
nicht passen, bin mir aber jetzt auch nicht sicher wie platformio die 
auswählt, da ich noch kein anderes Board genutzt habe.

Also lösch den veralteten platformio Arduino Kram der nicht funktioniert 
und installiere die vscode-arduino-community Extension.

Dazu die Datei vscode-arduino-darwin-x64.vsix herunterladen.

In VS Code - Extensions - oben rechts drei Punkte - Install from VSIX

https://github.com/tylerjwatson/vscode-arduino/releases/tag/v0.6.1

Danach neustarten, unten in der Statusleiste ESPTool (zum flashen) 
auswählen, Board auswählen, COM Port auswählen, usw.

von Andreas S. (igel1)


Angehängte Dateien:

Lesenswert?

... sorry - anbei noch der Anhang zum letzten Post

von Andreas S. (igel1)


Lesenswert?

Habe jetzt mal alle Teile des Codes, die AdafruitIO zum Hochladen der 
Daten nutzen, aus dem Programm geworfen.

Es bleibt das reine Lesen und Ausgeben der Temperatur und 
Luftfeuchtewerte des DHT22 Sensors übrig - das funktioniert.

Ganz so übel scheint der pioarduino-Core also nicht zu sein.
(ich nutze ja pioarduino statt plattformIO).

Viele Grüße

Igel1

PS: und Danke an Dich, Alexander, für Deine Mühen!

von Andreas S. (igel1)


Angehängte Dateien:

Lesenswert?

Anbei nochmals ein modifiziertes Testprogramm - es hängt sich punktgenau 
bei Zeile 52 auf, nämlich bei:
1
  io.connect();

Das ist also genau dann, wenn mit der AdafruitIO-Bibliothek eine 
Verbindung zu deren Cloud per WLAN aufgebaut werden soll.

Viele Grüße

Igel1

von Alexander (alecxs)


Lesenswert?

Wenn es in der Arduino IDE funktioniert dann auch mit der Community 
Extension.

von Andreas S. (igel1)


Lesenswert?

Alexander schrieb:
> Also lösch den veralteten platformio Arduino Kram der nicht funktioniert
> und installiere die vscode-arduino-community Extension.
>
> Dazu die Datei vscode-arduino-darwin-x64.vsix herunterladen.
>
> In VS Code - Extensions - oben rechts drei Punkte - Install from VSIX
>
> https://github.com/tylerjwatson/vscode-arduino/releases/tag/v0.6.1

Ich muss gestehen, dass ich diesen Weg nur ungern gehen möchte, weil die 
Datei 3 Jahre alt ist und das Projekt scheinbar tot ist.

Ich würde lieber  "mainstream" bleiben, weil ich auf möglichst viel Doku 
im Internet angewiesen bin und auch gerne an Aktualisierungen und 
Neuerungen der jeweiligen Projekte teilnehmen möchte.

Viele Grüße

Igel1

von Alexander (alecxs)


Lesenswert?

Hier ist die aktuelle Version als Nachfolger der offiziellen Extension.

https://github.com/vscode-arduino/vscode-arduino

von Obelix X. (obelix)


Lesenswert?

Andreas S. schrieb:
> Das ist also genau dann, wenn mit der AdafruitIO-Bibliothek eine
> Verbindung zu deren Cloud per WLAN aufgebaut werden soll.

Evtl. gibt es ja eine Alternative zur Adafruit-Cloud.

gerade auch deswegen :

Andreas S. schrieb:
> Ich würde lieber  "mainstream" bleiben, weil ich auf möglichst viel Doku

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Das Gute an der Extension ist ja (wie ich gelernt habe) dass die direkt 
auf das installierte Arduino (CLI) zugreifen kann, es hostet gar keine 
Kopie des Frameworks selber.

von Andreas S. (igel1)


Lesenswert?

Obelix X. schrieb:
> Evtl. gibt es ja eine Alternative zur Adafruit-Cloud.

Bin für alles offen.

Kennt Ihr häufig benutzte Clouds, in die man einfach (am besten per 
vorgefertigte Lib) Daten aus dem ESP32 hochschieben kann?

Gerne auch mit REST- und MQTT-Unterstützung.

Viele Grüße

Igel1

von Andreas S. (igel1)


Lesenswert?

Alexander schrieb:
> Hier ist die aktuelle Version als Nachfolger der offiziellen Extension.
>
> https://github.com/vscode-arduino/vscode-arduino

Nach all den vielen Fehlversuchen, brauchte ich heute eine kleine Pause, 
um die ganzen Niederlagen zu verarbeiten.

Ich werde es dann nochmals mit dem o.g. Plugin probieren - allerdings 
bin ich auch damit nicht so ganz glücklich, denn auch in diesem Projekt 
ist seit einem Jahr nix mehr passiert.

Wenn allerdings, wie Du in Deinem weiteren Post beschreibst, von dem 
Plugin sowieso nur das Original-Arduino-Framework einer (dann vmtl. 
notwendigen) Arduino-IDE Parallelinstallation angezapft wird, so sollte 
das nicht so schlimm sein, weil ja dann die Arduino-IDE-Installation die 
Framework-Aktualisierung übernimmt.

Hast Du, Alexander, dieses Plugin ebenfalls im Einsatz?

Viele Grüße

Igel1

von Roland S. (roschmi)


Lesenswert?

Hallo, ich würde meine ersten Versuche mit dem 'normalen' ESP32 (z.B.: 
AZ-DELIVERY ESP-32 Dev Kit C V4) machen. Mit diesem Board gibt es sicher 
mehr Erfahrungen als mit der S3 Varianten und das Board wird von 
PlatformIO unterstützt. Ich persönlich verwende es seit Jahren 
erfolgreich, um per https Daten auf Azure Table Storage Tabellen 
hochzuladen.
z.B. -https://github.com/RoSchmi/Esp32_WiFiManager_HeatingSurvey
Viele Grüße
Roland

von Alexander (alecxs)


Lesenswert?

Andreas S. schrieb:
> Wenn allerdings, wie Du in Deinem weiteren Post beschreibst, von dem
> Plugin sowieso nur das Original-Arduino-Framework einer (dann vmtl.
> notwendigen) Arduino-IDE Parallelinstallation angezapft wird, so sollte
> das nicht so schlimm sein, weil ja dann die Arduino-IDE-Installation die
> Framework-Aktualisierung übernimmt.

Richtig. Das Arduino IDE Verzeichnis war bei mir schon drauf, lediglich 
die arduino-cli.exe musste ich mir selbst runterladen und in %PATH% 
hinzufügen.

https://docs.arduino.cc/arduino-cli/installation

Andreas S. schrieb:
> Hast Du, Alexander, dieses Plugin ebenfalls im Einsatz?

Definiere Einsatz. Ich nutze VS Code nicht. Der genannte Nutzer der es 
mir empfohlen hat hat es wieder gelöscht. Sonst kenne ich keinen der es 
im Einsatz hat.

Alexander schrieb:
> Ansonsten vielleicht mal vscode-arduino-community probieren, damit
> spiele ich gerade rum.

von Alexander (alecxs)


Lesenswert?

Ich hatte Zeit noch mal zu schauen, die Arduino CLI besteht nur aus 
einer Binary - ich hab sie mir unter 
`C:\Users\User\AppData\Local\Arduino15\arduino-cli\arduino-cli.exe` 
abgelegt. Ich lese aber gerade das ist gar nicht nötig, die Extension 
hat diese schon bundled.

Hier mal meine Config. Ist halt Windows.

`C:\Users\User\AppData\Local\Arduino15\arduino-cli.yaml`
1
board_manager:
2
    additional_urls:
3
        - https://espressif.github.io/arduino-esp32/package_esp32_index.json

`C:\Users\User\AppData\Roaming\Code\User\settings.json`
1
{
2
  "telemetry.telemetryLevel": "off",
3
  "arduino.disableIntelliSense": false,
4
  "arduino.useArduinoCli": true,
5
  "arduino.verbose": true,
6
  "arduino.logLevel": "verbose",
7
  "arduino.allowPDEFiletype": false,
8
  "arduino.enableUSBDetection": true,
9
  "arduino.disableTestingOpen": false,
10
  "arduino.skipHeaderProvider": false,
11
  "arduino.additionalUrls": [
12
    "http://espressif.github.io/arduino-esp32/package_esp32_index.json"
13
  ],
14
  "C_Cpp.default.configurationProvider": "vsciot-vscode.vscode-arduino",
15
  "C_Cpp.intelliSenseEngine": "Default",
16
  "C_Cpp.default.includePath": [
17
    "C:\\Users\\User\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp32-libs\\*\\include\\**",
18
    "${workspaceFolder}\\**"
19
  ],
20
  "C_Cpp.default.compilerPath": "C:\\Users\\User\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esp-x32\\*\\bin\\xtensa-esp32-elf-g++"
21
}

von Andreas S. (igel1)


Lesenswert?

Alexander schrieb:

> Richtig. Das Arduino IDE Verzeichnis war bei mir schon drauf, lediglich
> die arduino-cli.exe musste ich mir selbst runterladen und in %PATH%
> hinzufügen.

Hmmm - in der Installationsanleitung des Plugins wird empfohlen der 
(angeblich mit dem Plugin mitgelieferte?) Arduino CLI zu verwenden:

"Either the legacy Arduino IDE or Arduino CLI are required. The 
recommended approach is to use the version of Arduino CLI that comes 
bundled with the extension, which works out of the box. Support for the 
legacy Arduino IDE will be removed in a future version of the 
extension."

Kümmere mich am Wochenende mal näher darum.
Ihr hört von mir.

Viele Grüße

Igel1

von Alexander (alecxs)


Lesenswert?

Andreas S. schrieb:
> use the version of Arduino CLI that comes
> bundled with the extension

bei mir gefunden unter 
`C:\Users\User\.vscode\extensions\vscode-arduino.vscode-arduino-communit 
y-0.7.2-win32-x64\assets\platform\win32-x64\arduino-cli\arduino-cli.exe`

(übrigens ohne Source-Code, Verstoß gegen GPL‑3.0)

: Bearbeitet durch User
von Andreas S. (igel1)


Lesenswert?

Also:

Habe die das Plugin "Arduino Community Edition" in der Version 0.7.2 in 
mein VS Code installiert und in den Setting > Extensions > Arduino 
Configuration die Option "Use Arduino CLI" aktiviert, dann Neustart.

Dann ein funktionierendes Projekt aus meiner Original Arduino IDE nach 
VS Code kopiert und in den Workspace importiert.

Dann über den Arduino Board Manager das "esp32 by Espressif Systems" 
ausgewählt, das gab aber schon folgenden Fehler:
1
[Starting] Install package - esp32...
2
esp32:esp32:3.3.7
3
[Error] Exit with code=null"

Watt nu?

Keine Ahnung, keine Doku, nix ...
Komme irgendwie auf keine grünen Zweig ...

Viele Grüße

Igel1

von Alexander (alecxs)


Lesenswert?


von Roland S. (roschmi)


Lesenswert?

Habe mal ein kurzes Beispielprojekt, das mir die Copilot KI gegeben hat 
unter VS-Code, Platformio Extension kompiliert. Kompilierung lief ohne 
Fehlermeldungen.

platformio.ini:
[env:seeed_xiao_esp32s3]
platform = espressif32
board = seeed_xiao_esp32s3
framework = arduino
lib_deps = adafruit/Adafruit IO Arduino@^4.3.3

Code:
#include <Arduino.h>
#include "AdafruitIO_WiFi.h"
#define IO_USERNAME "dein_username"
#define IO_KEY "dein_aio_key"
#define WIFI_SSID "dein_wifi"
#define WIFI_PASS "dein_passwort"
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
AdafruitIO_Feed *temperature = io.feed("temperature");

void setup() {
  Serial.begin(115200);
  io.connect();
  while(io.status() < AIO_CONNECTED) { delay(500);
  }
  temperature->save(23.5);
}
void loop() {
  io.run();
}

von Andreas S. (igel1)


Lesenswert?

Roland S. schrieb:
> Habe mal ein kurzes Beispielprojekt, das mir die Copilot KI gegeben hat
> unter VS-Code, Platformio Extension kompiliert. Kompilierung lief ohne
> Fehlermeldungen.

Hallo Roland,

das ist sehr nett von Dir, dass Du die Kompilierung auf Deinem Computer 
(Windows?) einmal ausprobiert hast.

Richtig interessant wäre, ob der Code auch auf Deinem ESP läuft.
Solltest Du keinen ESP32S3 zur Hand haben, so nimm einfach einen 
anderen.

Insbesondere, wenn Du den Code ein wenig modifizierst und vor und hinter 
das io.connect() noch ein Serial.print("vor connect");  bzw. 
Serial.print("nach connect"); hinzufügst.

Bei mir kompilierte der Code nämlich ebenfalls (zumindest unter 
pioarduino), hing dann aber genau bei io.connect(), wenn ich ihn auf den 
ESP32S3 gespielt habe.

Viele Grüße

Igel1

von Andreas S. (igel1)


Lesenswert?

Alexander schrieb:
> Da muss ich raten. Versuche es mal damit.
>
> https://forum.arduino.cc/t/esp32-devkit1-library-not-downloading/1422002/4

Habe ich - brachte leider keine Besserung.
Aber danke für die Mühen!

Viele Grüße

Igel1

von Alexander (alecxs)


Lesenswert?

Dann installiere Dir mal die aktuelle Arduino CLI (und lösche 
vorsichtshalber die bundled bzw ersetze durch Symlink falls nötig)

https://github.com/vscode-arduino/vscode-arduino/issues/54

https://github.com/microsoft/vscode-arduino/issues/1681

: Bearbeitet durch User
von Roland S. (roschmi)


Lesenswert?

Andreas S. schrieb:

> Bei mir kompilierte der Code nämlich ebenfalls (zumindest unter
> pioarduino), hing dann aber genau bei io.connect(), wenn ich ihn auf den
> ESP32S3 gespielt habe.
>
> Viele Grüße
>
> Igel1


Bei mir auf dem ESP32 das Gleiche.
Scheint eine längere Fehlersuche zu werden.
Grüße
Roland

von Alexander (alecxs)


Lesenswert?

So ich hab mal in der VS Code Arduino Community Edition über `F1 -> 
Arduino: Library Manager -> Adafruit IO Arduino` die Library 
installiert. Das Beispiel aus dem Release v4.3.3 hat nicht kompiliert, 
das aus dem Master hingegen schon:

https://github.com/adafruit/Adafruit_IO_Arduino/blob/222440c/examples/adafruitio_15_temp_humidity/adafruitio_15_temp_humidity.ino#L49
1
---- Opened the serial port COM3 ----
2
ets Jul 29 2019 12:21:46
3
4
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
5
configsip: 0, SPIWP:0xee
6
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
7
mode:DIO, clock div:1
8
load:0x3fff0030,len:4980
9
load:0x40078000,len:16612
10
load:0x40080400,len:3500
11
entry 0x400805b4
12
Connecting to Adafruit IO.......
13
---- Closed serial port COM3 due to disconnection from the machine ----
Ich sehe Connecting to Adafruit IO....... und die Punkte werden immer 
mehr (falls Du das mit hängen meinst?) Ich habe nichts konfiguriert.

In der `settings.json` habe ich als `arduino.path` den übergeordneten 
Pfad der arduino-cli Binary angegeben (ohne Dateinamen) damit ist 
sichergestellt das mein selbstinstalliertes Arduino-CLI verwendet wird.
1
{
2
    "telemetry.telemetryLevel": "off",
3
    "arduino.disableIntelliSense": false,
4
    "arduino.useArduinoCli": true,
5
    "arduino.verbose": true,
6
    "arduino.logLevel": "verbose",
7
    "arduino.allowPDEFiletype": false,
8
    "arduino.enableUSBDetection": true,
9
    "arduino.disableTestingOpen": false,
10
    "arduino.skipHeaderProvider": false,
11
    "arduino.path": "C:\\Users\\User\\AppData\\Local\\Arduino15\\arduino-cli",
12
    "arduino.additionalUrls": [
13
        "http://espressif.github.io/arduino-esp32/package_esp32_index.json"
14
    ],
15
    "C_Cpp.default.configurationProvider": "vsciot-vscode.vscode-arduino",
16
    "C_Cpp.intelliSenseEngine": "Default"
17
}
Bei MacOS musst Du evtl. noch den Gatekeeper für die arduino-cli 
deaktivieren wenn Du diese Meldung `Exit with code=null` hast, das ist 
ein Mac spezifisches Problem.

: Bearbeitet durch User
von Roland S. (roschmi)


Lesenswert?

Hallo,
ich habe jetzt zunächst einfach mal versucht ohne die AdafruitIO_WiFi 
library per REST einen Wert hochzuladen. Das hat schon mal geklappt.

-https://github.com/RoSchmi/Esp32_Adafruit_IO_REST_Test

Viele Grüße
Roland

von Andreas S. (igel1)


Lesenswert?

Roland S. schrieb:
> Hallo,
> ich habe jetzt zunächst einfach mal versucht ohne die AdafruitIO_WiFi
> library per REST einen Wert hochzuladen. Das hat schon mal geklappt.
>
> -https://github.com/RoSchmi/Esp32_Adafruit_IO_REST_Test
>
> Viele Grüße
> Roland

Hallo Roland,

bin schwer beeindruckt!
Du hast Dir richtig viel Mühe gemacht und Du hast es tatsächlich 
gerockt!

Darf ich fragen, welche Tool-Kombination Du jetzt letztendlich verwendet 
hast?

Dem Code nach sieht das nach VS Code + platformIO + Arduino Framework 
aus, stimmt's?

Wie generierst Du dieses schöne Projekt-Struktur?  Gibt's dafür einen 
Knopp in platformIO?

Viele Grüße

Igel1

von Andreas S. (igel1)


Lesenswert?

Alexander schrieb:
> So ich hab mal in der VS Code Arduino Community Edition über `F1 ->
> Arduino: Library Manager -> Adafruit IO Arduino` die Library
> installiert. Das Beispiel aus dem Release v4.3.3 hat nicht kompiliert,
> das aus dem Master hingegen schon:

Habe mal den Master mit der Release v4.3.3 verglichen.
Es haben sich lediglich die Beispiele und eine irrelevante Datei 
verändert.
In den Beispielen war wohl ein Bug drin.
Die eigentliche Lib ist unverändert.

Aber danke für den Tipp - das könnte ich auch nochmals probieren.

> 
https://github.com/adafruit/Adafruit_IO_Arduino/blob/222440c/examples/adafruitio_15_temp_humidity/adafruitio_15_temp_humidity.ino#L49
>
1
> ---- Opened the serial port COM3 ----
2
> ets Jul 29 2019 12:21:46
3
> 
4
> rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
5
> configsip: 0, SPIWP:0xee
6
> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
7
> mode:DIO, clock div:1
8
> load:0x3fff0030,len:4980
9
> load:0x40078000,len:16612
10
> load:0x40080400,len:3500
11
> entry 0x400805b4
12
> Connecting to Adafruit IO.......
13
> ---- Closed serial port COM3 due to disconnection from the machine ----
14
>
> Ich sehe Connecting to Adafruit IO....... und die Punkte werden immer
> mehr (falls Du das mit hängen meinst?) Ich habe nichts konfiguriert.

Nein - meiner scheint sich in io.connect() aufzuhängen - ein 
print-statement danach wurde nicht mehr ausgedruckt.

> In der `settings.json` habe ich als `arduino.path` den übergeordneten
> Pfad der arduino-cli Binary angegeben (ohne Dateinamen) damit ist
> sichergestellt das mein selbstinstalliertes Arduino-CLI verwendet wird.

Das werde ich ebenfalls noch probieren.
Die arduino-cli habe ich bereits separat installiert.

>
1
> {
2
>     "telemetry.telemetryLevel": "off",
3
>     "arduino.disableIntelliSense": false,
4
>     "arduino.useArduinoCli": true,
5
>     "arduino.verbose": true,
6
>     "arduino.logLevel": "verbose",
7
>     "arduino.allowPDEFiletype": false,
8
>     "arduino.enableUSBDetection": true,
9
>     "arduino.disableTestingOpen": false,
10
>     "arduino.skipHeaderProvider": false,
11
>     "arduino.path": 
12
> "C:\\Users\\User\\AppData\\Local\\Arduino15\\arduino-cli",
13
>     "arduino.additionalUrls": [
14
>         "http://espressif.github.io/arduino-esp32/package_esp32_index.json"
15
>     ],
16
>     "C_Cpp.default.configurationProvider": 
17
> "vsciot-vscode.vscode-arduino",
18
>     "C_Cpp.intelliSenseEngine": "Default"
19
> }
20
>


> Bei MacOS musst Du evtl. noch den Gatekeeper für die arduino-cli
> deaktivieren wenn Du diese Meldung `Exit with code=null` hast, das ist
> ein Mac spezifisches Problem.

Wow - das ist ein toller Hinweis - darauf wäre ich im Leben nicht 
gekommen. Keine Ahnung, ob ich den Gatekeeper für die arduino-cli 
deaktiviert bekomme. Mal schauen.

Habe dummerweise aktuell nicht so viel Zeit, um alles, was ich probieren 
möchte, auch tatsächlich auszutesten. Es rufen leider auch andere 
Pflichten ...

Viele Grüße

Igel1

von Roland S. (roschmi)


Lesenswert?

Andreas S. schrieb:

> Darf ich fragen, welche Tool-Kombination Du jetzt letztendlich verwendet
> hast?
 > Wie generierst Du dieses schöne Projekt-Struktur?  Gibt's dafür einen
> Knopp in platformIO?

Danke für das Lob.
Ja, VS-Code + PlatformIO Extension + Arduino Framework. Den passenden 
Code liefert mir jetzt häufig Copilot, und das verblüffend gut, wenn man 
Ihm die richtigen Fragen stellt.
Die PlatformIO Extension gibt die Projektstruktur ja schon weitgehend 
vor und erzeugt auch sozusagen auf Knopfdruck das lokale Git Repository.
In den Ordner include schreibe ich immer eine spezielle .gitignore und 
die Kombination config_secret.h und config_secret_template.h, damit ich 
nicht immer versehentlich die Credentials auf Github hochlade.
Die Arduino IO Cloud wollte ich mir schon länger mal ansehen, bin aber 
etwas enttäuscht, dass die Daten in der kostenlosen Variante nur 4 
Wochen erhalten bleiben? Die Bezahlversion ist nicht gerade billig.
Da lob ich mir doch Azure Storage Tables. Da zahl ich aktuell ca. 30 
Cent im Monat und hab die Sensordaten von vielen zurückliegenden Jahren 
in der Cloud.

Viele Grüße
Roland

von Andreas S. (igel1)


Lesenswert?

Mann - ich bin echt abgenervt - ich bekomme das Arduino Community Plugin 
einfach nicht ans Laufen - selbst mit den Beispielen nicht.

Irgendetwas muss ich falsch machen.
Bin's langsam wirklich leid - es ist zum Mäusemelken.

von Alexander (alecxs)


Lesenswert?

Falls es immernoch das Problem `"Exit with code=null"` ist dann lies Dir 
bitte die beiden Issues komplett durch.

https://translate.google.com/translate?sl=en&tl=de&u=https://www.mikrocontroller.net/topic/goto_post/8013540

Vielleicht kann sich hier auch einer mit Mac mal erbarmen und die Lösung 
posten.

von Andreas S. (igel1)



Lesenswert?

Heureka - es funktioniert!

Mein DHT22 Temperatur/Humidity Sensor sendet jetzt seine Daten per 
ESP32S3-Board in die AdafruitIO-Cloud.

Als Code habe ich dafür das Original Beispiel aus der Adafruit IO 
Arduino Library verwendet (adafruitio_15_temp_humidity.ino).

Die verwendete Toolsuite/Hardware/Config ist:

- XIAO ESP32S3 Board
- Arduino-CLI v1.4.1 (nicht die Arduino IDE)
- VS Code v1.109.5
- Arduino Community Edition Plugin v0.7.2
- Board Manager: "esp32 by Expressif Systems"
- Board Configuration:  "XIAO_ESP32S3 (esp32)" mit default-Einstellungen
- Adafruit IO Arduino Libs v4.3.4
- Beispielcode "adafruitio_15_temp_humidity" aus der vorgenannten Lib
    ... DATA_PIN in der *.ino angepasst und credentials in config.h
        angepasst

Für die Nachwelt habe ich alles haarklitzeklein in anliegender Datei 
dokumentiert.

@Alexander und Roland:

Ich bin super stolz und happy, dass ich es final nun doch noch geschafft 
habe - ich war zwischenzeitlich arg frustriert gewesen.

Aber Ihr habt mich mit Euren Ideen und Vorschlägen die ganze Zeit super 
unterstützt und bei der Stange gehalten - dafür hier ein dickes 
Dankeschön an Euch beide!

Viele Grüße

Igel1


PS: letztlich konnte ich leider nicht mehr herausfinden, warum meine 
ersten Versuche allesamt gescheitert waren: war's meine Unfähigkeit 
(vermutlich)? Oder haben die vielen Updates die vorgestern reinkamen die 
Wende gebracht? Egal - Hauptsache es läuft jetzt endlich.

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Welche Updates, macOS 26.3 (Tahoe)?

von Andreas S. (igel1)


Lesenswert?

Alexander schrieb:
> Welche Updates, macOS 26.3 (Tahoe)?

Ja, mein MacOS habe ich auch upgedated, aber ich glaube kaum, dass es 
daran lag.

Viel wahrscheinlicher könnte es an der Adafruit IO Arduino Lib gelegen 
haben - die wurde  am Wed Feb 25 20:24:46 2026 +0000 von 4.3.3. auf 
4.3.4. upgedated.

Zusätzlich meine ich aus dem Augenwinkel ebenfalls bemerkt zu haben, 
dass auch die Arduino IDE upgedated wurde (bin mir aber nicht ganz 
sicher und eigentlich verwende ich die ja auch gar nicht in meinem VS 
Code Plugin).

Ich könnte jetzt alles nochmals zurückdrehen auf die alten Versionen und 
herausfinden, woran es tatsächlich lag, aber ... dafür bin ich 
schlichtweg zu faul bzw. es ist mir nicht wichtig genug.

Aktuell wundere ich mich gerade, warum der Code nicht läuft, wenn mein 
ESP32S3 Board nicht mit dem Mac  verbunden ist und wenn dort nicht der 
Serielle Monitor gestartet ist ...  Aber auch das werde ich noch 
herausfinden ... kann ja nicht so schwierig sein wie das 
Eingangsproblem.

Viele Grüße

Igel1

von Nemopuk (nemopuk)


Lesenswert?

Andreas S. schrieb:
> Aktuell wundere ich mich gerade, warum der Code nicht läuft, wenn mein
> ESP32S3 Board nicht mit dem Mac  verbunden ist und wenn dort nicht der
> Serielle Monitor gestartet ist

Wahrscheinlich wartet er darauf, dass im Sendepuffer Platz frei wird. Da 
niemand ihn ausliest, hängt das Programm nun. Ist bei STM32 auch so.

In einer anderen (eigenen) Implementierung breche ich das Warten nach 10 
ms ab, und wenn das USB Kabel abgezogen ist, wird das Senden sofort 
abgebrochen.

von Andreas S. (igel1)


Lesenswert?

Hat sich inzwischen geklärt: war das "while(!Serial)" Kommando.
Einfach weglassen und alles ist supi.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.