ESP32-Cam

ESP32-Cam

ESP32-Cam ist mein erster ernsthafter Versuch eine vollständige App mit Hilfe einer AI-IDE von der Idee bis zur fertigen App in den jeweiligen Stores von Apple und Google umzusetzen. Eher zufällig bin ich durch ein YouTube-Video auf Kiro, die AI-IDE von Amazon aufmerksam geworden. Mit der Warteliste dieser IDE, die sich damals noch in der Preview-Phase befand, hatte ich Glück. Zwei Tage nach der Anmeldung konnte ich mit der AI-IDE loslegen.

Ziel war es eine App zu entwickeln, die möglichst friktionsfrei eine ESP32-Cam mit dem CameraWebServer Sketch als Image einbindet. Installation und technische Details zu dieser Kamera können hier gefunden werden.

Die Bilder können über einen Link nach dem Schema

http://192.168.1.1:81/stream

als Stream von JPEG-Bildern abgerufen werden.

Als Erstes habe ich Kiro die Aufgabe gestellt ein Widget zu programmieren, das gleichsam einem Daumenkino in einer Schleife die Bilder der Kamera abruft und darstellt. Diese Problemstellung hat Kiro im ersten Anlauf mit Bravour gemeistert.


Die zweite Aufgabenstellung war es eine Funktion zu schreiben, die ein Netzwerksegment nach laufenden ESP32-Kameras durchsucht, indem jeweils 1 KB von jeder IP, die auf Port 80 antwortet, eingelesen wird, und dann diese Daten nach einem bestimmten String durchsucht werden. In der ersten Version wollte diese Funktion nicht wirklich, was aber mein Fehler war, weil die Web-Oberfläche der Kamera ihre HTML-Daten gzip-ed ausliefert. Den Prompt um diese Funktionalität erweitert lieferte dann das gewünschte Ergebnis.

Als weiterer Wunsch wurde der Prompt um Parallelisierung der Suche ergänzt.


Da hat mich die KI vom Code her beeindruckt. Jeder der das Isolate-Konzept von Dart kennt, um Multithreading zu implementieren, das doch umständlicher ist als die Multithreading-Implementierungen anderer Programmiersprachen, wie zum Beispiel Java. Der KI-Code war sofort lauffähig und strukturiert aufgebaut.

Als nächsten Schritt sollte mir die KI gut aussehende Widgets zur Ansteuerung der Kamera erzeugen. Und auch hier hat mich die KI überrascht - schöne Widgets, wo ich selbst als Flutter-Entwickler mit Erfahrung lange gebraucht hätte. Die Kunst beim Stylen von Flutter-Widgets ist die deklarativen kaskadierenden Styling-Elemente so anzuordnen, dass das Endergebnis gut aussieht.


Nachdem die Core-Logik und benötigten UI-Elemente fertiggestellt waren, habe ich was die Gruppierung betrifft, doch selbst Hand angelegt. Bei dieser Aufgabenstellung neigt die KI doch manchmal zu viel des Guten zu tun.


Sehr spezielle Logik, wie z.B. der Context-Switch, zwischen der Kamera im Preview-Mode und in der Vollansicht habe ich dann doch selbst programmiert. Wahrscheinlich hätte die KI dies auch bewerkstelligen können. Da ich aber danach trachte jeden Code, den die KI erzeugt, zu reviewen, kostet das selbst schreiben manchmal doch weniger Zeit, als den Code der KI vollumfänglich zu verstehen.

Fazit - mit Hilfe der KI habe ich sicherlich die Hälfte der Zeit eingespart. Mit der gewonnen Erfahrung werde ich beim nächsten Projekt sicherlich mehr KI wagen.

Die ESP32-Cam App im Apple Store.

Die Goolge Store Version ist noch in der Review-Warteschleife.