[gelöst] Platformio.ini extern liegen variable einbinden

Begonnen von Knallkopp_02, 28 Dezember 2019, 12:10:52

Vorheriges Thema - Nächstes Thema

Knallkopp_02

Hallo liebe Community,

im ersten moment hört sich die Frage evtl etwas komisch an, aber ich versuche mal zu erläutern was ich vorhabe.

Ich habe mir ein generelles Grundgerüst gebaut, woraus ich neue Projekte bauen will.
darin ist eine Datei mit allen generellen Einstellengen/Variablen enthalten, die ich per include in meine in mein Main hole. Soweit alles ok und auch einfach.
Nun versuche ich aber in der platformio.ini auch eine dieser Variablen zu nutzen. Ich wollte eigendlich immer nur in einer Datei (Confiruration.h) editieren.

Ist es möglich einer Variable aus einer externen Datei in die platformio.ini zu holen?

Gruß Knallkopp_02
Ich bin kein Programmierer und habe keine Ahnung.

Raspberry PI 3B+ mit HM-MOD-RPI-PCB,     
HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-SEC-SCo
Raspberry PI 3B+ mit 7" Touchdisplay

pjakobs

Hmm... ganz aus der Hüfte und ohne es wirklich zu wissen: platform.ini und irgendwas.h werden zu ganz unterschiedlichen Zeiten von ganz unterschiedlichen genutzt.
Die platform.ini beschreibt das build System, sagt PlatformIO also im Extremfall sogar, welchen Compiler und welche Umgebung es nutzen soll, header files nutzt der c-compiler oder genauer der Präprozessor.
Eine Variable von der build Umgebung an den Präprozessor zu übergeben (zumindest Compiler / Linker Flags) dürfte möglich sein, umgekehrt eher nicht.

Grüße,

pj

Gesendet von meinem HTC U11 mit Tapatalk


Knallkopp_02

Ich will das Ganze noch mal etwas konkretisieren.

ich habe in meinen Configuration.h einige Definitionen stehen, unteranderem auch

#define WLAN_HOSTNAME "ESP8266_test" 

diese Variable kann ich mir in der main.cpp ja holen, da ich die Configuration.h inkludiert habe.

den Hostnamen möchte ich nun auch als mDNS Namen benutzen.

ESP8266_test.local

Das funktioniert soweit auch gut, da alles in der main.cpp abläuft.

Nun zum "Problem", da ich den ESP nun per OTA flashen will und ich nicht immer die IP raussuchen will, oder noch schlimmer das Ding abbauen will, habe ich gehofft, dass ich den "upload_port", der in der ini definiert wird irgendwie aud der Configuraten.h zu lesen, oder das irgendwie anders zu lösen.

du meintest, in dieser Konstellation würde es nicht gehen, aber andersrum könnte es klappen.

Wenn ich jetzt alles was ich in der Configuration.h habe in die ini packe, könnte ich das dann übergeben in die main.cpp?

Ich möchte vermeiden, dass ich an zu vielen Ecken editieren muß, wenn ich etwas ändere.

Gruß Knallkopp_02
Ich bin kein Programmierer und habe keine Ahnung.

Raspberry PI 3B+ mit HM-MOD-RPI-PCB,     
HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-SEC-SCo
Raspberry PI 3B+ mit 7" Touchdisplay

pjakobs

Genau, Du kannst Variablen aus der platformio.ini dem preprocessor übergeben und dort wie ein #define nutzen.
Siehe hier: https://docs.platformio.org/en/latest/projectconf/section_env_build.html

Gesendet von meinem HTC U11 mit Tapatalk


Knallkopp_02

jetzt habe ich noch eine Frage,

ist es möglich in der platformio.ini auch eigene Variablen zu nutzen und diese zu verketten?

Beispiel:

NAME = ESP8266_test

upload_protocol = espota
upload_port = NAME.local  //ESP8266_test.local

build_flags =
    '-D WLAN_HOSTNAME=NAME'  //ESP8266_test


Dass ich nicht alles mehrfach konfigurieren muß (Fehlerquelle)

Dazu habe ich so  nichts gefunden

Gruß
Ich bin kein Programmierer und habe keine Ahnung.

Raspberry PI 3B+ mit HM-MOD-RPI-PCB,     
HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-SEC-SCo
Raspberry PI 3B+ mit 7" Touchdisplay

pjakobs

Zitat von: Knallkopp_02 am 30 Dezember 2019, 09:18:52
jetzt habe ich noch eine Frage,

ist es möglich in der platformio.ini auch eigene Variablen zu nutzen und diese zu verketten?

Beispiel:

NAME = ESP8266_test

upload_protocol = espota
upload_port = NAME.local  //ESP8266_test.local

build_flags =
    '-D WLAN_HOSTNAME=NAME'  //ESP8266_test


Dass ich nicht alles mehrfach konfigurieren muß (Fehlerquelle)

Dazu habe ich so  nichts gefunden

Gruß
Die Antwort ist ziemlich sicher ja, schau Dir mal die PlatformIO Konfiguration von Tasmota an, die machen extrem viel über die .ini Dateien.

Grüße,

pj

Gesendet von meinem HTC U11 mit Tapatalk


Knallkopp_02

Das war genau die Hilfestellung die ich gebraucht habe.

Herzlichen Dank und Gruß

Und guten Rutsch ins neue Jahr
Ich bin kein Programmierer und habe keine Ahnung.

Raspberry PI 3B+ mit HM-MOD-RPI-PCB,     
HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-SEC-SCo
Raspberry PI 3B+ mit 7" Touchdisplay

pjakobs

super, freut mich, dass das funktioniert hat. Ich hatte das noch nie ausprobiert aber es schien mir logisch ;-)

pj