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:
/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
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 ...
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.
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?
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.
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.
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.
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/WiFiClientSecure/src/WiFiClientSecure.cpp
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.
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
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.
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.
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?
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
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.
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.
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.
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.
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-community-0.7.2-win32-x64\assets\platform\win32-x64\arduino-cli\arduino-cli.exe
(übrigens ohne Source-Code, Verstoß gegen GPL‑3.0)
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 ...
Habe mal ein kurzes Beispielprojekt, das mir die Copilot KI gegeben hat unter VS-Code, Platformio Extension kompiliert. Kompilierung lief ohne Fehlermeldungen.
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.
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
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:
---- 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.
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.
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.
> ---- 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.
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 ...
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.
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.
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.
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.