Zuletzt geändert am 27. Oktober 2024 um 18:41

PlatformIO Infosammlung

Private Credentials (z.B. Wifi-Passwort) ablegen

Damit private Credentials wie Passwörter oder API-KEYs nicht versehentlich mit einem Projekt mitveröffentlicht werden, bietet es sich an, diese in einer speziellen Stelle im Home/User-Verzeichnis abzulegen und nur per Include ins Projekt zu holen.


Im Home (Unix/Linux/MacOS) bzw. User (Windows) Verzeichnis gibt es einen versteckten .platformio Ordner.

Der Pfad unter Windows ist: C:\Users\<USERNAME>\.platformio.

Unter Mac/Linux/Unix ist der Pfad ~/.platformio/. Beim Mac-Finder muss ggf. Command + Shift + . gedrückt werden, damit die versteckten Ordner sichtbar werden.

Unter diesem .platformio Ordner nun folgende Ordnerstruktur mit der MyCreds.h-Datei erstellen:

.platformio/lib/MyCreds/MyCreds.h

Es können auch mehrere Dateien mit anderen Namen im MyCreds-Ordner liegen, z.B. eine MyCredsHackffm.h.

Diese Datei bekommt dann z.B. folgenden Inhalt:

#ifndef WIFI_SSID
#define WIFI_SSID "MyWiFiSSID"
#define WIFI_PASSWORD "MyWiFiPassword"
#endif

Im PlatformIO-Projekt kann man dann einfach auf diese Credentials zugreifen:

#include <WiFi.h>
#include <MyCreds.h>

...

void setup() {
  ...
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(500);
  }
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  ...
}

Temporäre Dateien nicht archivieren (.gitignore / seafile-ignore.txt)

Bei jedem Kompilieren werden viele temporäre Dateien erzeugt, insbesondere werden die Bibliotheken komplett geladen. Das macht sich nicht gut, wenn man seine Projekte in GIT oder auch Cloudspeichern ablegen will - gerne kommen Cloudspeicher da durcheinander, wenn sehr viele Dateien beim Build-Prozess umgebaut werden. Das kann man mit entsprechenden Ingore-Dateien verhindern:

Seafile

Die seafile-ignore.txt Datei muss ins Hauptverzeichnis der Seafile-Bibliothek, wo irgendwo das PlatformIO-Projekt liegt. Der Inhalt bei mir:

# put in Seafile library root folder, otherwise will not have effect
*/.pio/
*/.git/

GIT

.gitignore

Die .gitignore Datei muss ins GIT-Projekt-Hauptverzeichnis. Ich nutze folgenden Inhalt:

.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch

Github nutzen

Leider kenne ich keine gute Möglichkeit ein bestehendes Platform.io Projekt direkt nach Github zu bringen. Der folgende Weg funktioniert aber:

  • Neues nahezu leeres Projekt in Github anlegen, dabei werden nur die Dateien LICENSE und README.md erzeugt
  • Von diesem Projekt den HTTPS Link kopieren
  • Unter Platformio - Quick Access - Miscellaneous - Clone Git Project wählen, dann den Link oben einfügen.
  • Als Speicherort reicht ein Ordner wie HackffmGIT, denn darin wird automatisch ein Unterordner mit dem Gitnamen erstellt.
  • Anschliessend kann man in dieses Projekt die ganzen Projekt-Dateien per Drag'n'Drop direkt in VSCode hinzufügen. Beim Anlegen und Speichern der platformio.ini wird daraus dann auch das Platformio-Projekt und die Build-Ziele erscheinen.
  • Unter dem Source Control Symbol ganz links können nun GIT-Operationen durchgeführt werden. Hier erscheinen geänderte bzw. hinzugefügte Dateien. Man kann diese Adden oder einfach Commit drücken und die Frage entsprechend beantworten, so dass alles dem Repo hinzugefügt wird. Ein weiterer Klick Synct das lokale GIT-Repo mit dem Entfernten.