Änderungen
Aus Hackerspace Ffm
/* Private Credentials (z.B. Wifi-Passwort) ablegen */
== Private Credentials (z.B. Wifi-Passwort) ablegen ==
=== .platformio Verzeichnis ===
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.
Unter Mac/Linux/Unix ist der Pfad '''~/.platformio/'''. Beim Mac-Finder muss ggf. '''Command + Shift + .''' gedrückt werden, damit die versteckten Ordner sichtbar werden.
=== Credentials in C Header Dateien ===
Unter diesem '''.platformio''' Ordner nun folgende Ordnerstruktur mit der MyCreds.h-Datei erstellen:
<pre>.platformio/lib/MyCreds/MyCreds.h</pre>
}
</pre>
=== Credentials nutzen in der Datei platformio.ini ===
Es lassen sich Credentials auch in die platformio.ini includieren und nutzen. Das ist z.B. hilfreich um ein Upload-Passwort für ArduinoOTA anzugeben und für den Upload zu nutzen.
Dazu im privaten '''.platformio''' Ordner nun folgende Ordnerstruktur mit der MyCreds.ini-Datei erstellen:
<pre>.platformio/lib/MyCreds/MyCreds.ini</pre>
Hier kommt nun das Upload-Passwort hinein, in dem man einfach eine Variable im "[common]" Abschnitt definiert:
<pre>
private_upload_auth = "upload_password"
</pre>
Im öffentlichen Projekt kann man nun diese Datei includieren und so die Variable nutzen, ohne das der Inhalt später z.B. im öffentlichen GIT landet. Auf den User-Ordner greift man über <pre>${platformio.core_dir}</pre> zu. In der platformio.ini könnte dazu folgendes stehen wenn das Passwort für den OTA-Upload genutzt werden soll:
<pre>
[platformio]
extra_configs = ${platformio.core_dir}/lib/MyCreds/MyCreds.ini
[env]
framework = arduino
platform = espressif32@6.8.1
;this is to add the upload authentification password stored in the extra_config file
upload_flags = --auth=${common.private_upload_auth}
build_flags = -D DEF_UPLOAD_AUTH='${common.private_upload_auth}'
upload_protocol = espota
upload_port = 10.0.0.100
</pre>
Per Precompiler-Konstante wurde die Variable in DEF_UPLOAD_AUTH übergeben und kann nun genutzt werden:
<pre>
const char upload_auth[] = DEF_UPLOAD_AUTH;
// irgendwo in der Setup-Routine...
ArduinoOTA.setPassword(upload_auth);
</pre>