Du hast Visual Studio Code zusammen mit Platformio als Plugin gemäß dieser Anleitung installiert und fragst dich nun, wie du ESPuino als Projekt dort reinbekommst? Und du fragst dich auch, wie du es mit wenig Aufwand aktuell hältst? Dann bist du hier richtig!
So in der Art sollte es am Ende aussehen:
Code runterladen
Grundsätzlich ist ESPuino bereits ein Platformio-Projekt, was für dich den Vorteil hat, dass du es nur runterladen musst und als Projekt öffnen. Dafür gibt es zwei unterschiedliche Wege:
Variante 1: git
- Ggf. musst du zuerst Git runterladen.
- Lade dir in Visual Studio Code auch gleich „Gitlens“ als Plugin herunter. Dafür musst du links auf das Symbol mit den vier Quadraten wechseln und in die Suche „Gitlens“ eingeben + das Plugin installieren.
- Drücke STRG + SHIFT + P. Es öffnet sich oben in der Mitte ein Fenster. Hier wählst du „Git: Clone“ aus. Es öffnet sich ein neues Fenster, in dem du gebeten wirst, die URL einzutragen. Hier fügst du
https://github.com/biologist79/ESPuino
ein. - Nun öffnet sich ein Fenster, in dem du gebeten wirst, einen Ort anzugeben/auszuwählen, wohin das ESPuino-Projekt gespeichert werden soll. Wenn das erledigt ist, so wirst du gefragt, ob du das frisch runtergeladene Repository öffnen willst. Das bestätigst du. Du befindest dich nun im frisch geclonten ESPuino-Projekt:
Hier wird nun einiges runtergeladen und konfiguriert. Das kann mitunter ein paar Minuten dauern!
Variante 2: Zip-File
- Besuche mein GitHub-Respository (
https://github.com/biologist79/ESPuino
) und lade ESPuino herunter:
- Entpacke es in deinem Dateisystem und merke dir den Ort.
- Über das Pulldown-Menü „Datei“ von Visual Studio Code öffnest du jetzt den Ordner.
Klicke nun auf „Open“ in der Spalte daneben.
Konfigurationen vornehmen
Nachdem das Projekt nun geöffnet ist, wirst du nun deine Konfiguration vornehmen wollen.
-
Wähle zuerst das passende Environment aus. Welches auszuwählen ist, hängt von deinem verwendeten Develboard ab. Auswählen kannst du es, indem du am unteren Bildschirmrand „env:…“ suchst und das passende Profil auswählst. Im nachfolgenden Bildbeispiel ist „env:lolin_d32_pro_sdmmc_pe“ ausgewählt:
-
Passe nun deine Konfiguration an. Im Normalfall ist dies
settings.h
und die Konfigurationsdatei, die zu deinem gewählten Environment passt. Im Falle von „env:lolin_d32_pro_sdmmc_pe“ wäre diessettings-lolin_d32_pro_sdmmc_pe.h
, welches sich im Unterordner „src“ befindet. Du erreichst diese links über den Dateibrowser. Speichere die Änderungen mit STRG+S ab. -
Wenn du mit der Konfiguration fertig bist, kann die Firmware kompiliert und auf dem ESP32 hochgeladen werden. Dafür klickst du links auf den Alienkopf und im Anschluss auf „Upload and Monitor“.
Die Firmware wird nun kompiliert; dies kann mehrere Minuten in Anspruch nehmen. Im Anschluss wird sie, wenn alles klappt, auf den ESP32 geflasht. Das alles kannst du unten im groĂźen Fenster beobachten.
- In der seriellen Konsole (ebenfalls unten), kannst du nun schauen, wie der ESP32 reagiert. Du kannst diese, wenn der ESP32 angeschlossen ist, auch jederzeit über „Monitor“ wieder aufrufen.
ESPuino aktuell halten
Der größte Vorteil der oben beschriebenen Git-Variante ist, dass man den Quellcode aktualisieren kann, ohne jedes Mal das ganze Repository runterladen zu müssen. Du musst dafür lediglich unten links in Visual Studio Code auf die Pfeile klicken, die im Kreis angeordnet sind:
Du wirst dann gefragt, ob du die Aktualisierung wirklich durchführen willst. Das bestätigst du. Und schon wird der Code mit meinem GitHub-Repository synchronisiert. Hinweis: Klickst du auf master, so kannst du auch in einen anderen Branch wechseln:
Mögliche Probleme durch Arbeiten mit git
Mögliche Probleme beim Aktualisieren kann es zahlreiche geben; ich picke mir hier ein paar wenige heraus. Solltest du dich unsicher fühlen: Es gibt im Internet zahlreiche Tutorials zu git, die du dir durchlesen/anschauen kannst.
Problem 1) Du hast z.B. Settings-Dateien angepasst und nicht per Commit im Repository gepeichert. Git verweigert das Aktualisieren (pull), weil es lokale die Änderungen überschreiben würde. Hier musst du vor dem pull deine Änderungen entweder rückgängig machen oder mit Stash arbeiten. Bei einem Stash würdest du deine Änderungen ohne Commit zwischenspeichern und nach dem Aktualisieren wieder zurückspielen. Möchtest du einen solchen Stash durchführen (lies den Absatz besser zu Ende, bevor du dies tust), dann klickst du unter Changes auf das linke Symbol mit dem Pfeil zurück + Plus „Stash all Changes“.
Es öffnet sich dann am oberen Bildschirmrand ein Fenster, in dem du aufgefordert wirst, dem Stash einen Namen zu geben:
Ich nenne ihn hier einfach exemplarisch „meine Config“. Das bestätige ich dann. Im Anschluss ist die Änderungsliste leer, dafür taucht dann links unten unter Stashes dieser Stash auf:
Klickst du in diesem Stash auf das Symbol mit dem Pfeil nach oben (Apply Stash),
so öffnet sich oben ein Fenster, in dem du gefragt wirst, was genau du tun willst:
Mit Apply Stash kannst du den Zustand herstellen, den du zuvor hattest. Mit „Pop Stash“ wird zusätzlich ein Commit durchgeführt.
Das Stashen kann sehr praktisch sein, jedoch auch ggf. zu „Problemen“ führen, wenn sich bei der Aktualisierung ausgerechnet in solchen Dateien Änderungen finden, die du auch geändert hast. Denn in diesem Falle müssen die Änderungen zusammengeführt werden.
Für die meisten Leute wird’s daher vermutlich einfacher sein, die Änderungen rückgängig zu machen und im Anschluss, nach dem Aktualisieren, neu zu setzen. Änderungen rückgängig machen ist relativ einfach: Zuerst mal siehst du auf der linken Seite, dass du z.B. zwei Dateien editiert hast:
Nun willst du vielleicht wissen, welche Ă„nderungen zu eigentlich gemacht hast. Nichts leichter als das: Du klickst die Dateien einfach nacheinander an und siehst dann eine Anzeige, in der die Unterschiede dargestellt werden:
Nun gehst du mit dem Mauspfeil über das Zurücksymbol, welches direkt links neben dem Plus bei Changes zu finden ist. Dort sollte etwas angezeigt werden wie „Discard All Changes“. Das führst du aus.
Im Anschluss ist die Liste dann wieder leer:
Nun kannst du das Repository aktualisieren:
Und dann deine zuvor gelöschten Änderungen
Problem 2) Du hast zwar deine Änderungen im Repository per Commit abgespeichert (unter Punkt 1 hatte ich Änderungen beschrieben, bei denen kein Commit erfolgt war), jedoch treffen deine Änderungen einen Bereich, in dem durch die Aktualisierung auch weitere Änderungen reinkommen. Git ist bestrebt, das Ganze möglichst automatisch zusammenzuführen „mergen“, wird dir jedoch ggf. sagen, dass ein automatisches Merge nicht möglich war und du (punktuell) selbst entscheiden musst, was jetzt übernommen werden soll. Das finale Ergebnis wird man, nachdem man es getestet hat, dann üblicherweise per Commit ins lokale Repository überführen wollen.
Ein paar Sätze zum Arbeiten mit git:
Wichtig zu verstehen ist: Wenn du Änderungen gemacht hast und diese in deinem lokalen Repository nicht gespeichert hast (commit), dann gelten diese als temporär und ein git checkout
wĂĽrde diese normalerweise ĂĽberschreiben. Tut es jedoch nicht, sondern wirft dir einen Fehler, dass du deine Ă„nderungen zuerst comitten (oder stashen) sollst, bevor du den Befehl ausfĂĽhren darfst.
Klingt total kompliziert und ist es vielleicht auch, aber du kannst in Visual Studio Code auch schön sehen, welche Dateien du verändert hast:
Im Bild siehst du die Zahl 13, welche besagt, dass ich in verschiedenen Projekten, an insgesamt 13 Dateien Änderungen gemacht habe. Unter Änderungen sieht man nun welche Dateien ich im Projekt ESPuino verändert habe (M steht für modified; auch neue Dateien etc pp werden hier aufgeführt). Man kann so eine Datei einfach anklicken und kriegt dann eine sehr schöne Gegenüberstellung angezeigt:
Im Bild sieht man, dass ich die main.cpp
markiert habe. Klicke ich auf diesen gebogenen Pfeil zurück, so mache ich alle Änderungen an der Datei sofort rückgängig. Es ist dann wieder die Version aktiv, die im Repository als letzter Stand gespeichert wurde. Klicke ich auf +, so überführe ich diese Datei ins „Staging“. Was ist das nun wieder? Beispiel: Ich (@biologist) habe lokal ein Feature programmiert, das Änderungen an 11 Dateien mit sich bringt. Ich musste für meine lokalen Tests aber auch die settings.h
anpassen, weil das fĂĽr meine Testhardware notwendig war. Die Ă„nderungen der settings.h
sollen jedoch nicht ins Repository, da dies gewisse Voreinstellungen ĂĽberschreiben wĂĽrde. Daher ĂĽberfĂĽhre ich nur solche Dateien ins Staging, die auch im Repository landen sollen.
Hier sieht man nun, dass ich drei Dateien ins Staging überführt habe. Hinweis: Änderst du an einer gestageten Datei nachträglich nochmal was, so landen diese Änderungen nicht mehr im Staging. Du musst die Dateien durch Klicken auf „-“ wieder aus dem Staging rausholen und wieder neu reinnehmen, damit die Änderungen aktiv werden.
Ist man nun soweit, dass man alle Änderungen beisammen hat, alle zugehörigen Dateien im Staging sind und nun in einem Commit landen sollen, so trägt man eine Commit-Nachricht ein, was ich im Bild mal exemplarisch getan habe. Man drückt dann „Shift+Enter“ und deine Änderungen sind im Repository abgelegt. Keine Angst: Sie landen dadurch nicht automatisch bei GitHub oder sonstwo. Sie sind wirklich nur bei dir lokal.
Fazit: Mit git lässt sich komfortabel arbeiten, aber zugegebenermaßen bedarf es einiges an Wissen, damit das möglich ist. Aber auch wenn man sagt, dass man seine lokalen Änderungen (im Endeffekt reden wir bei den meisten Leuten ja eh nur von den Settings-Dateien) halt vor dem Aktualisieren rückgängig macht, weil man Angst hat, etwas kaputt zu machen, ist es immer noch komfortabler, als es per ZIP runterzuladen.
Das Ganze reißt das Thema git nur ganz oberflächlich an. Aber ich hoffe mal, dass es für den ein oder anderen User hilfreich ist. Schreibt gerne in weiteren Kommentaren, wenn ihr Tipps / Meinungen / Anregungen habt.