 Genau, in meinem Vortrag geht es um die Entwicklung einer Platine zum Auslesen von Solarlade-Reglern und alles, was so dazugehört, lessons learned, was man falsch machen kann und was man wie machen kann. Da das hier mein erster Vortrag ist und auch das erste Mal, dass ich hier auf der GPN bin, kurz zu mir, wird ja gerade schon vorgestellt, ich bin Software-Entwickler schon seit über acht Jahren. Mein Interessen sind Elektrotechnik, 3D-Druck und Lichttechnik. Ich bin auch in den sozialen Medien präsent und dann zum Inhalt einmal erkläre ich, wie es überhaupt zu diesem Projekt gekommen ist, also die Vorgeschichte, das Problem, also was mich so gestört hat und warum das zustande gekommen ist, dann die vier Iterationen, die diese Platine schon durchlaufen hat und dann so einen kleinen Ausblick, was man noch in Zukunft machen kann. Zur Vorgeschichte, also meine erste Solaranlage, das war 2019, die habe ich einfach hinter das Fenster geklemmt, mit ein paar Blechdosen befestigt, also relativ simpel vom Aufbau her, das sind zwei 100-Watt-Paneele. Dazu habe ich dann so ein bisschen Hardware genommen, einfach so eine ganz normale Bleisäure-Batterie, die hat so ungefähr eine Kilowattstunde Speicher, man sollte aber dann nur so 60% oder weniger von nutzen, damit auch die Kapazität über die lange Zeit gegeben ist. Dazu hatte ich dann einen kleinen Wechselrichter, um Vettelatoren oder was man auch immer in der Wohnung hat, anzuschließen. Also es ist wirklich eine Inselanlage gewesen und dazu dann für mobile Geräte, so einen kleinen Autoladestecker. Und jetzt zu dem, was mich eigentlich gestört hat, ist ja dieser Laderegler da und dieses Bluetooth-Modul, aber nochmal kurz zum Interesse im zeitlichen Verlauf, also wenn man sich das mal anschaut, dieses Thema Balkonkraftwerk, das ist ja erst so ziemlich 2022 in aller Munde gewesen, deswegen 2019 war das noch nicht so weit verbreitet, dass man sowas überhaupt macht, sondern eher Fotovoltaik an sich auf dem Hausdach oder sowas. Und dann sieht man auch jetzt hier seit 2023 geht die Kurve steil bergauf, also ist super interessant. Es gab ja auch mehrere andere Vorträge heute auch und gestern zu dem Thema. Genau das Problem, was mich gestört hat, also dieser Bluetooth-Empfänger von diesem Laderegler, der hat einen ziemlich eingeschränkten Zugriff, man kann halt nur innerhalb von 10 Metern hat man Verbindung zu dem Teil, das Teil hat ein Standard-App-Passwort, was man jedes Mal eingeben muss, wenn man die App öffnet, was auch super nervig ist, wenn man da immer 1, 2, 3, 4, 5, 6, 7, 8 eingebt, was jetzt auch nicht gerade sicher ist, man kann es auch nicht ändern, also eigentlich total unnötig. Man kann die Daten nicht exportieren, man kann sich zwar die Daten in der App anzeigen lassen, auch historisch, aber nicht wirklich was damit anfangen. Auch weil das Teil 40 Euro kostet, ist jetzt die Preisleistung nicht wirklich gegeben. Genau, was ist jetzt so meine Wunschliste, was hätte ich gerne? Also ich möchte gerne einen vollen Zugriff auf die Daten haben, am besten eine eigene Datenhaltung, also eine eigene Datenbank, eine bessere Benutzauberfläche, die man auch aus der Ferne zugreifen kann, genau, und über WLAN, dann über PV Output, das ist so eine Internetseite, da kann man sich seine Solardaten hochladen, und dann kann man sich da schöne Grafen generieren lassen und das dann auch aufsummieren lassen übers Jahr, und ganz viele Informationen sich daraus holen, also zum Beispiel auch hier die Generation, zu welcher Tageszeit, wie viel Energie aus der Solaranlage erzeugt wird, und natürlich auch wichtiges Thema Home Assistant und MQTT, jeder kennt das, der macht auch schöne Grafen, da kann man mal sehen, das war jetzt vor ein paar Tagen am 31. Mai, ich habe jetzt auch mittlerweile noch einen größeren Energiespeicher, fünf Kilowattstunden, und dann kann man da schön sehen, dass viel Energie aus der Solar dann genutzt wird den Tag über. Genau, wo fängt man an? Ein erster Ansatz, was habe ich gemacht? Ich habe mir diesen Laderegler angeschaut, und wenn man jetzt unten rechts schaut, dann hat der so eine erst 232 Schnittstelle, was ist das? Eine serielle Schnittstelle aus den 1960er Jahren, die hat so ein Spannungsbereich, plus minus 12 Volt werden die Signale übertragen, gibt aber auch unterschiedliche Spannungen, je nach Hersteller oder wie die das umsetzen. Diese Schnittstelle kann 115 Kbit pro Sekunde übertragen und mehr, aber bei solchen Sachen ist meistens 9.600 Bit pro Sekunde üblich. Genau, wie bin ich da jetzt dran gegangen? Ich habe mir so einen Adapter bei Amazon bestellt, den habe ich da dran gesteckt, und dann mal die Signale ausgeschnüffelt mit dem Bluetooth-Modul, habe ich das Kabel durchgeschnitten, da dran angeschlossen. Auf dem Oszilloskop sieht das dann so aus, das kann man dann dekodieren, dann kommt man da drauf, ah, das ist eine Modbus-Schnittstelle, was da drüber läuft. Also das ist dann jetzt ein Protokoll, das ist aus 1979, das ist aktuell in der Industrie de facto Standard, also so gesehen ein technischer Standard, der nicht durch einen Normgeremium, sondern durch die Industrieunternehmen definiert wurde. Und dieses Protokoll, das ermöglicht das Lesen und Schreiben von einzelnen Registern. Ein Register ist immer 2-Bite groß, also, und ich glaube, man kann maximal 255 Register haben, wenn ich jetzt richtig liege. Und es gibt drei Arten von Modbus, einmal dieses Serielle RTU und ASCII, und dann Modbus über TCP, in dem Fall ist es jetzt RTU. Eigentlich hätte ich mir auch die ganze Arbeit ersparen können, um herauszufinden, wo jetzt welche Signale auf dem Kabel anliegen. Wenn man ein bisschen im Internet googelt, dann findet man diese Solar Charge Controller Modbus Protocol Version 1.7 Dokument oder PDF, das dann auch gleich das Pinout beschrieben von dem Stecker. Das heißt, man hätte das gar nicht alles auseinanderreißen müssen. Also, das schon mal lessons learned. Erst mal vorher schauen, ob nicht jemand anders schon was gemacht hat. Genau, dann habe ich das da so angeschlossen, habe mir auch noch so ein USB zuerst, 232 Adapter geholt und das dann mal am PC angeschlossen. Da gibt es dann unterschiedliche Python-Programme, zum Beispiel auf Stack Overflow oder hier GitHub, mit dem man das dann so ein bisschen auslesen kann. So, jetzt ist die Frage, wie lesen wir jetzt die Daten aus und speichern uns das in der Datenbank? Da habe ich mir überlegt, könnte man so einen Zinnkleint nehmen. Die haben direkt schon so eine erst 232 Schnittstelle hinten dran am Rechner und ziemlich viel IO. Das ist nur so 10 bis 20 Euro, ist teilweise günstiger als ein Raspberry Pi und die kriegt man direkt bei eBay für teilweise 10 Euro mit Netzteil, also eigentlich eine super Sache. Was habe ich dann gemacht? Ich habe den Zinnkleint genommen, dann mit Python Script so ein bisschen Web-Oberfläche gebaut, mit Angular und hatte erst diesen erst 232 Adapter, den brauchte man nicht, kabelgebastelt, was man dann einfach direkt hinten dran stecken konnte und dann in den Laderegler. Genau, das war dann eine MySQL Datenbank. Den Stecker brauchte ich dann nicht, dann spart man sich noch ein bisschen was. Die Nachteile hier ist jetzt auch nur lokaler Zugriff, außer wenn man jetzt einen VPN benutzt. Energieverbrauch ist ziemlich hoch, so ein Schnitt 10 Watt, also da das ja auch eine kleine Solaranlage ist, ist da jedes Watt, was man sich sparen kann, goldwert. Und der Platzverbrauch ist relativ hoch, also das Ding ist eigentlich genauso groß wie der ganze Laderegler. Genau, in meiner Web-Oberfläche konnte ich mir dann auch die schönen Kurven anzeigen lassen, mit Strom, Spannung, alles was von der Batterie, Panneel und so weiter und so fortkam. Wie können wir das jetzt besser machen? In der zweiten Iteration habe ich mir gedacht, möchte ich das ganze miniaturisieren, damit es nicht mehr so viel Platz weg nimmt und weniger Energie verbraucht. Was macht man da? Man guckt mal so, was gibt es so für Mikrocontroller und so weiter und so fort. Da gibt es ziemlich viele Firmen, die da was anbieten, also Arduino oder Microchip und Espressive, eigentlich sehr beliebt. Ich habe mich jetzt für Espressive entschieden bei mir, da gibt es ja diese ESPs. Zu der Zeit gab es halt diese ESP8266 auf der linken Seite in diesen unterschiedlichen Formfaktoren und auf der rechten Seite die ESP32. Ich habe mich dann für das ESP01 entschieden, weil es vom Formfaktor her mit eins der kleinsten ist und es hat zwar wenig IO, aber trotzdem ausreichend für diesen Anwendungsfall. Was ich jetzt heute nehmen würde, ist dieses ESP12 wahrscheinlich, weil es mehr GPRO hat und ein bisschen besser ist, aber da kommen wir später noch mal zu. Was machen wir jetzt? Wir müssen jetzt Gedanken über die Stromversorgung von dem ganzen machen. Also die Mikrocontroller, die brauchen meistens 3,3 bis 5 Volt, ist jetzt ziemlich wenig. Aus dem Laderegler kommen 5 bis 17 Volt. Wenn man das jetzt einfach anschließt, dann kommt halt der magische Rauch raus. Das geht dann einfach kaputt. Also was muss man machen? Am besten mit so einem linearen Regulator oder Abwärtswandler. Da ist jetzt der Unterschied der Linearegulator. Also hier ist nochmal das Schaltbild für diese Regulatoren und wie die aussehen unten links der Linearegulator und rechts der Backkonverter, Abwärtswandler. Der Unterschied ist eigentlich, dass der Linearegulator die ganze Energie oder die Spannung, die man nicht braucht, in Wärme umwandelt. Das heißt, wenn ich jetzt von 17 auf 3,3 Volt will, dann muss ich 14 Volt in Wärme umwandeln. Bei dem Abwärtswandler ist das ein bisschen effizienter. Da hole ich dann mehr aus der Energie raus. Da hat man weniger Abwärme einfach. Deswegen habe ich mich dann auch für den Backkonverter für die Platine entschieden. Genau. Dann für die Kommunikation gibt es jetzt auch viele Unternehmen, die dort Mikrocontroller oder ICs anbieten, die direkt dieses Protokoll sprechen. Da habe ich mich für zum Beispiel jetzt Maxim Integrated entschieden, weil die einen Chip haben, der 3 bis 5,5 Volt Eingangspannung haben kann. Man braucht wenig zusätzliche Komponenten, also nur vier Kondensatoren auf der Platine. Und was das Ganze halt so schön macht, ist, dass diese integrierte Ladungspumpe hat, die dann aus den 3 bis 5,5 Volt diese plus minus 12 Volt erzeugt, die man für das Signal, für die Datenübertragung braucht. Also eigentlich super geeignet für so ein Mikrocontroller. Genau, dann habe ich mal so einen Prototypen zusammengebastelt, also einfach zusammengelötet auf einer Lochraster-Platine. Das hat dann auch ganz gut funktioniert. Und war dann der erste Einstieg anzufangen, Software dafür zu schreiben. Die Software, die habe ich jetzt in C++ geschrieben, mit der Arduino IDE und Visual Studio Code als Oberfläche zum Programmieren, weil die ein bisschen schöner ist. Genau, für die Weboberfläche. Da gibt es ein schönes Projekt auf GitHub auch, das nennt sich ISPUI. Da kann man im Code die Benutzeroberfläche programmieren und das macht ihr dann die Weboberfläche für dich und hat vorgefertigte UI-Elemente. Also ziemlich einfach, man kann es programmatisch machen, man muss da nicht Web-Development oder so irgendwas kennen. Das sieht dann so aus, da hat man dann die unterschiedlichen, also man kann auch mehrere Taps machen und Einstellungen und das wird dann übertragen mit Callbacks. Aber da gehe ich jetzt nicht so tief in die Materie, das könnt ihr euch dann auf GitHub angucken. Genau, dann für MQTT. Da habe ich mich dann für Pangolin MQTT entschieden, die Bibliothek auf GitHub. Zu dem Zeitpunkt aber dazu später noch mal ein bisschen was. Für Modbus, da gibt es eigentlich nur eine Bibliothek für Mikrocontroller, die heißt Modbus Master. Die ging dann in die Software rein und da wir auch die aktuelle Uhrzeit brauchen für Webrequests und sowas, da habe ich noch einen NTP client genommen, der sich dann die aktuelle Uhrzeit holt. Für PFA Output, die haben eine Rest-Schnittstelle, da habe ich dann einfach eigenen Code für geschrieben. Da schaut man sich dann die API-Definition an und bastelt sich das dann zusammen, bis es funktioniert. Genau, für das Leiterplattendesign, also das hier, da gibt es auch unterschiedliche Software, die man nutzen kann, um mal ein paar zu nennen. Keycard, Eagle Altium, Design Spark oder EasyIDA. EasyIDA ist zum Beispiel eine Web-Programm, aber gibt es auch als Desktop-Applikation. Ja, ich habe Keycard genommen, weil es Open-Sources und an sich ganz schön ist. Man kann dafür auch, also man kann auch Multi-Layer-Platine machen. Die sind jetzt zwei Layer, also Vorder- und Rückseite, kann man die Leiterbahn machen und man kann aber auch mehr machen damit. Also ich habe auch schon eine Platine gemacht, um eine Leiterplattenbestückungsautomaten zu steuern. Da ist man dann eher bei vier Schichten, die man dann routen darf. Genau, worauf man da noch ein bisschen achten sollte beim Leiterplattendesign, wenn man diesen Schallplan macht, muss man auch immer angeben, wie die Bauteile auf der Platine die Footprints haben. Also Footprints sind einfach die Lötstellen, wo die Bauteile mit der Platine verlötet werden. Da muss man halt darauf achten, dass da die Pins nicht in der falschen Reihenfolge sind oder das Bauteil irgendwie doch anders ist, wie man dachte, weil es ein anderer Hersteller ist oder sowas. Genau, das sieht dann in der Software so aus. Dann machen wir einfach einen Schallplan. Also das ist jetzt nur beispielhaft. Genau, dann Platine-Layout ist dann der nächste Schritt, wenn man den Schallplan einmal hat. Dann kann man übergehen und die ganzen Leiterbahnen auf der Platine miteinander verbinden. Da muss man dann ein bisschen schauen, ob man jetzt auf der Rückseite oder Vorderseite macht, ob man Durchkontaktierung braucht, um halt einfach diesen Schallplan in die Realität umzusetzen. Das macht man dann auch in derselben Software. Das sieht dann so aus. Es sieht eigentlich aus wie ein ziemlich großes Rattennest, ein ganz schönes Chaos. Da verbringt man auch so ein paar Stunden mit, bis man das fertig hat, je nachdem, wie komplex das ganze Design ist. Da sollte man auch darauf achten, dass man die Designregeln des Herstellers oder wenn man es selber macht, die Platine einhält, weil sonst kriegt man das Design einfach wieder zurück und kann dann nochmal neu dran rumprobieren. Also Designregeln sind zum Beispiel, welche Abstände dürfen die Leiterbahnen minimal haben und die Durchkontaktierung. Und genau wie groß muss der Abstand zwischen Copperfilz, also Flächen von Kupfer, zu den Leiterbahnen haben und also was es steht aber immer auf der Internetseite des Herstellers. Das findet man relativ leicht. Dann exportiert man das Ganze, also diese Gerber-Dateien. Da sollte man nochmal prüfen, dass man wirklich alle Ebenen exportiert hat, weil ansonsten kann es auch mal passieren, dass man die Platine bekommt, wo kein Lötstop-Lack drauf ist. Das ist dann blöd, es ist ein bisschen schwierig zu löten. Genau, und dann kann man sich auch noch Gedanken machen, wenn man jetzt mehrere von den Platinen braucht, also größere Stückzahlen, dass man die panelisiert. Also dass man einfach dasselbe Design mehrfach hintereinander auf einer Platine hat, die man dann hinterher auseinander bricht. Hier ist das nochmal... Also muss man schauen, welche Größe man da macht. Zu groß ist auch schlecht, weil dann ist es nicht mehr leicht managebar, wenn man das zusammenlöten will alleine oder halt, wenn man die bestücken möchte, die Platine. Genau. Dann Hersteller kann man entweder DIY machen, da braucht man aber ein paar Komponenten. Das zeige ich gleich nochmal. Oder man nimmt halt irgendein der Online-Ambiiter. Eisler, Euro-Circles, JLC, PCB oder PCB-Ways. Es gibt da Wiesand am Meer welche und die haben auch immer alle unterschiedliche Angebote. Also da muss man einfach mal gucken, wo es für einen am günstigsten ist. Genau, Leiterplatte kann man mal machen. Wie funktioniert das? Wenn man das jetzt selber machen will, dann drückt man das Ganze auf eine Plastikfolie. In dem Fall mussten wir 2 Plastikfolien nehmen, die übereinanderkleben, weil ansonsten die Platine, wenn man sich die kauft, dann kriegt man so fertige Leiterplatten mit Kupfer auf einer oder beide Seite und dann macht man da so ein UV-Schutz drauf oder eine Folie, die wasserlöslich ist, da wo glaube ich UV draufgekommen ist und da wo UV nicht draufgekommen ist oder umgekehrt, ich weiß jetzt nicht ganz genau. Auf jeden Fall bestrahlt man dann diese Platte mit seinem Muster. Das sieht dann drin so aus und genau überall wo Schwarz ist, also wo kein UV durchkommt, da bleibt halt diese Folie drauf. Wenn man sich in dem Wasser ablöst und überall wo UV hinkommt, löst es sich dann ab und das wird dann weggeätzt. Dann schmeißt man das Ganze in so ein Ads-Bad, da muss man dann auch drauf achten, dass man es nicht zu lange drin lässt. Also hier mal ein Beispiel, die rechte Platine, die war definitiv zu lange drin, weil dann sind die ganzen feinen Leiterbahnen weg. Auf der linken Seite, die war eigentlich perfekt, da sind dann auch noch alle Details da. Dann, was muss man als nächstes machen, die Löcher bohren, damit man auch die Bauteile da reinmachen kann. Das dauert auch ziemlich lange, da hat man auch ziemlich kleine Bohrer. Da ist man dann ja eine Weile mit beschäftigt, aber lohnt sich dann auch. Dieses Do-it-yourself, das ist eigentlich eher dafür, wenn ich jetzt morgen einen Prototypen brauche, dann kann ich das heute Design, ätzend bohren und bestücken, und dann kann ich das morgen dann direkt testen. Wenn ich jetzt da nicht so Zeitansprüche habe, dann kann ich es auch online bestellen und jemand anderen diese ganze Arbeit machen lassen, weil das funktioniert halt, ist halt meistens das Ergebnis besser. Die Hersteller, die können das Ganze dann auch eigentlich direkt bestücken, wenn man es sogar möchte. Also es kostet auch nicht viel mehr, das einfach alles den Hersteller machen zu lassen. Dann kriegt man eine komplett fertige Platine, die man dann einfach anschließend, die nicht funktioniert. Meistens ist aber auch die erste Platine, die die nicht funktioniert. Genau, dann habe ich mir die jetzt bestellt, und was war, war natürlich alles Mist. Die Footprints waren falsch. Die Anschlüsse von dem Connector, dem RJ12, die waren komplett invertiert, weil der, also da muss man auch darauf achten, ob das Kabel jetzt, wie rum das jetzt gedreht ist und wie die Anschlüsse da sind und ob das Kabel jetzt invertiert ist oder nicht. Und genau da war es dann halt falsch, musste ich dann auch die Löcher, die Löcher, glaube ich, für den IC, also für den RS232 Chip, die waren zu klein, deswegen musste ich den so auf die Platine löten. Und ich weiß nicht, ich habe die Platine auch mitgebracht, wer sich das nochmal angucken möchte. Genau, musste auf jeden Fall eine neue Version her, habe ich dann auch machen lassen und damit hat es dann auch geklappt. Die haben wir dann bei uns selber genutzt und ich habe mir gedacht, andere Leute finden das vielleicht auch ganz interessant, so was zu haben, weil der Hersteller so was nicht anbietet. Deswegen habe ich dann angefangen, diese Platinen auch zu verkaufen, zum Beispiel online. Da gibt es unterschiedliche Systeme, wie man das machen kann, zum Beispiel Tindi oder Electron Z. Das ist jetzt relativ leicht, da lädt man einfach ein paar Bilder hoch und die Preise und die kümmern sich dann um alles. Man kriegt dann Geld und gesagt, wo man es hinschicken muss und dann schicken wir das Ganze einfach raus. Man kann sich aber auch mehr Mühe machen, wenn man jetzt einen eigenen online Shop machen will, zum Beispiel mit Shopify oder was auch immer, was da alles gibt. Worauf man achten sollte bei diesen Plattformen, man muss Plattformgebühren bezahlen, also einmal für die Bezahlmethode plus Provision. Das skaliert dann natürlich, die teurer das Produkt, desto mehr Provision nehmen die sich. Das sollte man so ein bisschen darauf achten. Was auch wichtig ist, wenn man in Europa verkauft, die Platinen müssen CE zertifiziert sein. Das kann man selber machen. Man muss halt sagen können, das entspricht der und der Norm, habe ich getestet dann und dann mit dem Testaufbau, mit dem Ergebnis. Kann man auch andere Firmen machen lassen, kostet dann im fünfstelligen Bereich oder mehr. Das ist dann sehr teuer. Deswegen, da gibt es so eine kleine Grauzone, wenn man einen Bausatz macht, den der Kunde selber zusammenlötet, dann braucht man das nicht. Weil dann ist der Kunde Schuld, wenn das Haus abbrennt oder so was. Was auch noch interessant war, wenn man günstigen weltweiten Versand haben möchte, dann ist DHL, was da so preisleistung angeht, hier in Deutschland eigentlich unschlagbar. Aber das sind jetzt nur meine Erfahrungen. Also je nachdem wer das macht, es kann auch anders sein. Ich habe dann von der Platine 53 Stück verkauft weltweit. Ich habe dann natürlich auch 4 Kundenerfahrungen bekommen. Es waren viele Softwarefehler noch drin. Die findet man dann relativ schnell. Weil die Leute machen irgendwas anders, als wie man sich das vorher gedacht hat. Und kommen dann halt ja, funktioniert nicht stürzt ab oder was auch immer. Da muss man das beheben. Genau, da haben wir halt noch herausgefunden, dass mit diesem ESP01 gab es viele Stabilitätsprobleme. Das konnte ich dann lösen, dass ich mehr Kondensatoren auf die Platine gelötet habe. Dann haben halt Kunden, die das Produkt später gekauft haben, haben dann das dann schon direkt mit vorgelötet bekommen, damit die sich da selber nicht drum kümmern müssen. Was wir auch herausgefunden haben, ist, dass für diese ESP01 Stromleitungen böse sind. Das heißt, wenn das Gerät in der Nähe von der Stromleitung war, dann hat es nicht funktioniert. Findet man auch meistens erst dann aus. Genau, was war auch noch. Laderegler hatten Stromversorgungsprobleme. Also der Hersteller schafft es anscheinend nicht bei unterschiedlichen Modellen, dieselbe Ausgangsspannung zu liefern. Also es gab Modelle, da kommen 5 Volt raus über das Kabel. Manche machen 17 Volt. Und wenn man dann ein bisschen Last gezogen hat, dann ist die Spannung auch abgefallen. Weswegen dann dieser Boost- und Backconverter nicht mehr richtig funktioniert hat. Da mussten dann die Kunden das Gerät dann per USB betreiben, weil es einfach über dieses Kabel nicht funktioniert hat, oder das Kabel war zu lang. Genau, da gab es auch noch ein paar Schnittstellenprobleme. Weil manche Laderegler, also bei diesem Modbus-Protokoll, da schickt man so eine Klein-ID mit. Und wenn man bei manchen Ladereglern die Klein-ID 1 geschickt hat, dann haben die nicht geantwortet. Wenn man 255 geschickt hat, was aus so einer Broadcast-Adresse ist, dann haben die immer geantwortet. Manche haben sich relativ schnell rausgefunden. Was wir auch rausgefunden haben, manche Leute hatten Laderegler von anderen Herstellern, haben sich auch das Produkt gekauft und hat auch damit funktioniert. Also ist dann einfach gerebrandet worden von denen, ist dann eigentlich dasselbe Produkt steht, nur ein anderes Logo drauf. Genau, was wollten wir dann? Die Kunden haben sich natürlich auch mehr Funktionen gewünscht. Dann sind wir zur Iteration 3 gekommen. Natürlich einmal mehr Stabilität von dem Produkt. Die Benutzauberfläche, die war jetzt nicht so toll, kann man besser machen. Benachrichtigungen für Software-Updates wären schön, also weil die Software-Updates, die lad ich immer auf GitHub hoch. Und wenn dann ein neues Software-Update da ist, wäre es ja auch schön, wenn der Kunde darüber informiert wird, direkt von dem Produkt. Manche haben sich auch eine Rest-Schnittstelle gewünscht, damit die halt das Produkt einfach hacken können und man kann das mit den Lade-Regler, weil nicht jeder das über MQTT machen möchte. Und was auch der Lade-Regler zum Beispiel kann, ist der hat einen kleinen Lastausgang, da kann man 20 Ampere draus ziehen, den kann man über den Lade-Regler ein- und ausschalten. Das wäre natürlich auch prima, wenn man das direkt dann über die Benutzauberfläche machen kann. Dann auch noch zusätzliche Steuerkanäle, damit man zum Beispiel ein Generator oder so was damit steuern kann mit den Geräten, die man zu Hause hat. Und was sich auch noch jemand gewünscht hatte, dass man diesen MQTT-Zyklus ändern kann, weil dann hatte ich jetzt alle zwei Sekunden, das war ihm dann zu viel, der wollte das lieber einmal pro Minute haben. Was machen wir für mehr Stabilität? Da habe ich dann einfach, bin ich zu dem ESP8266 im Format ESP12 gewechselt, weil das geschirmt ist, das heißt, die Stromleitung stören das nicht mehr. Das sieht man auch an diesen Metallkasten, der da drum ist. Und das hat auch eine bessere Antennenleistung, weil es ein bisschen größer ist, die Antenne ist größer. Und was wir auch jetzt haben, ist 4 Megabyte an Speicher für unser Programm anstatt 512 Kilobyte oder einem B. Also es war schon schwierig, die Software bei der alten Platine drauf zu bekommen, weil es einfach platztechnisch nicht gereicht hat teilweise. Also da muss man schon, also dieses ESPUI, da bin ich einmal den ganzen Code durchgegangen und das komplett refactored, damit es einfach weniger Speicher verbraucht, die ganze Bibliothek. Also da fließt dann schon sehr viel Arbeit rein. Genau, durch die 4MB Flash habe ich dann gesagt, gut, dann überarbeiten wir einfach den ganzen Code und schreiben den nochmal neu. Da habe ich mich dann, habe ich diesen Pangolin MQTT client ersetzt durch PubSub client, weil der besser war. Der ließ sich nicht mehr kompilieren der Pangolin MQTT, weil der mehr Abhängigkeiten brauchte, dass man ja auch gerne möchte, so wenig Abhängigkeiten von anderen Softwareprojekten wie möglich, weil wenn die irgendwas kaputt machen, dann ist mein Produkt auch kaputt, wenn ich ein Software Update mache oder sowas. Ich habe auch statt dieses Sprint F direkt Arduino JSON genommen, also weil die Daten bei MQTT, die habe ich über JSON Format bereitgestellt und das dann halt über hart gekodete Sprint F Methoden zu machen, ist dann doch einfacher, das einfach mit objektorientierten Code über Arduino JSON zu machen. Also das war schon eine Erleichterung. Und was ich rausgeschmissen habe, ist das ISPUI, die Ticker Library und den NTP client, weil die ESP Software, also der Hersteller Espressiv, der hat ja für diese Arduino Geschichte eigenen Code bereitgestellt, damit man das dafür kompilieren kann und der hat intern schon auch so ein NTP client. Also da muss man einfach nur warten, wenn er mit dem WLAN verbunden ist, dann hat er die aktuelle Uhrzeit, die holt er sich dann. Was habe ich für die Benutzerweihfläche gemacht? Da war ich überlegen, was nehme ich jetzt? Angular, Flutter oder ViewJS, Beautify. Flutter ist natürlich prima, weil es Multi-Plattform ist. War jetzt aber nicht machbar, weil einfach die, also wir haben ja nur 4 Megabyte Speicher auf der Platine, die da alles drauf passen. Das heißt, Angular und Flutter sind halt rausgeflogen, weil die, also die kompilierte HTML-Datei, die ist einfach zu groß, die passt nicht auf den Mikro-Kontroller. Mit ViewJS und Beautify hat es dann funktioniert, da hat man dann Material Design als Benutzerweihfläche. Es sieht auch sehr schön aus, zeige ich gleich mal. Dann habe ich auch für die zweite Benutzerweihfläche überlegt, in die Oberfläche, um sie anzuzeigen. Die Rest-Schnittstelle war ja eh gewünscht, das heißt, für Konfigurationen, Laden und Speichern würde ich jetzt in allen Fällen eine Rest-Schnittstelle machen. Ist sehr einfach und robust. Und für die Live-Daten in der Benutzerweihfläche, da war ich überlegen, nehme ich jetzt WebSockets oder Server-Send-Events. Da ist halt der Unterschied, WebSockets sind bidirektional, Server-Send-Events sind unidirektional. Der kann nur der Kleindaten empfangen. Da habe ich mich dann für die Server-Send-Events entschieden, weil bei der Produktentwicklung ist aufgefallen, dass die einfach viel robuster sind. Bei den WebSockets, da gab es manchmal Verbindungsprobleme mit dem Mikro-Kontroller. Das hat einfach immer funktioniert, ohne Probleme. Was habe ich noch gemacht? Da das Ganze auf GitHub ist, das ist der Code. Da habe ich mir das dann noch automatisiert, dass wenn ich eine neue Version mache, dass der mir automatisch die kompilierte Header-Datei baut, die ich dann einfach nur als Submodul in dem Hauptprojekt einbinde, damit ich das selber nicht machen muss. Vorteil von dieser Automatisierung durch Actions ist, dass man immer mit denselben Softwareabhängigkeiten, die fest definiert sind, und der Vorteil ist davon, dass wenn ich jetzt bei mir lokal irgendwas bastle und irgendwelche Abhängigkeiten ändere, dass dann der Bild einfach nicht kaputt geht. Also da ist es halt wichtig für mich, dass wenn ich für die Kunden die Software baue, dass auch wirklich funktioniert. Das Ganze sieht dann so aus, also ein bisschen übersichtlicher als vorher, nicht mehr ganz so bunt. Dann habe ich die Teile splittert in unterschiedliche Rubriken, die Batterie, den Lastausgang, das Panel, die Controllerinformation, die schaltbaren Ausgänge, da komme ich gleich noch zu und den Status, und dass man auch oben das Software Update angezeigt bekommt. Wenn man jetzt die Software aktualisieren will, da habe ich immer so ein kleines Video, ich weiß nicht, ob das funktioniert. Da müssen wir mal warten, bis das wieder von vorne anfängt. Und zwar kann man dann jetzt über die Benutzerfläche in den Einstellungen, drückt man auf dieses Software Update, jetzt fängt es neu an, da webt man die Binary Datei aus, die man sich von Github geholt hat, dann lädt er das hoch und startet dann in der neuen Version neu. Das ist dann halt für den Kunden einfacher, das anstatt das am Rechner anschließen zu müssen. Was hatten die Kunden sich auch gewünscht? Zusätzliche Steuerkanäle, weil dieser Lastausgang von dem Laderegler reicht halt nicht aus, also wenn ich da Lasten anschließe, dann möchte ich da nur die Lasten dran haben. Wenn ich jetzt aber über die Solaranlage vielleicht ein Generator starten möchte, wenn der Akku leer ist oder sowas, dann brauche ich halt zusätzliche Steuerkanäle. Wie macht man sowas? Ich habe mir überlegt, ich nehme da drei OpenCollector Ausgänge, was heißt jetzt OpenCollector Ausgang? Und zwar sieht das Ganze so aus, der hat einfach einen Transistor, den steuert man vom Mikro-Kontroller an, der ist dann mit dem Minuspol oder Ground verbunden auf der einen Seite und auf der anderen Seite lasse ich einfach die Leitung offen, da kann der Kunde sich dann dran anschließen. Also der Kunde kriegt Ground und diesen OpenCollector und dann kann er da seine externe Elektronik anschließen. Was ist daran jetzt so interessant? Beim OpenCollector Ausgang ist es so, dass der Kunde selber wählen kann, welche Spannung er von der externen Logik steuern möchte. Also ich kann mein Relais oder was auch immer an diesen OpenCollector Ausgang anschließen und kann dann die Versorgungsspannung von dem Relais frei wählen. Also ob das jetzt 12V hat oder 24V, das interessiert dann meinen Mikro-Kontroller nicht, der bei 3,3V läuft. Was man natürlich berücksichtigen muss, ist, dass die Spannung und der Strom, der von diesem externen Relais oder was auch immer verbraucht wird innerhalb der Grenzen des Transistors liegt, den ich jetzt bei mir auf der Platine verbaut habe. Da habe ich einfach so einen handelsüblichen 2N22222 Transistor genommen, der kann glaube ich 1A, das reicht vollkommen aus für die meisten Niedervolt Relais. Man kann dann theoretisch damit auch 230V Geräte steuern, weil dann nämlich einfach ein 230V Relais was dann auf der einen Seite eine 12V Spule hat und die schließe ich daran dann an. Auf der Platine sieht das dann so aus, da habe ich dann diese drei Anschlüsse mit Schraub, Klemmen, die kann man einfach rein und raus stecken und dann hat man immer ein Collector und ein Minuspol, um dann sein Relais anschließt. Ich möchte auch zur Statusanzeige benutzen, weil ich jetzt, also ich komme jetzt dazu, wie jetzt diese Steuerkanäle von der Platine gesteuert werden. Das Ganze kann man über die Benutzauberfläche machen, da geht man in die Einstellungen zum Beispiel und da habe ich das jetzt so gelöst, dass man für jeden Ausgang einzeln auswählen kann, wie der gesteuert wird. Zum Beispiel über den State of Charge, den Batterieladezustand in Prozent, die Batteriespannung, die Panelspannung oder den Strom des Solarpanels und dann, wenn man das ausgewählt hat, kann man sich dann die obere und untere Schaltgrenze auswählen, wo dann dieser Ausgang ein- und ausgeschaltet wird, damit man halt auch so eine Schaltschwelle hat. Also man möchte ja nicht, dass bei 25 Volt oder 25 Prozent abgeschaltet und auch bei 25 Prozent ausgewählt, weil wenn durch das Ein- und Ausschalten dann die Kapazität ein bisschen schwankt, dann wird er sich die ganze Zeit immer nur ein- und ausschalten, deswegen ist das so gelöst. Hier ist dann nochmal dieser zweite Prototyp, was man auch sieht. Ich habe dann die Farbe geändert von der Platine, also ursprünglich ich war sehr rot. Ich habe dann jetzt hier Lila genommen, damit man die besser unterscheiden kann, dann kann man einfach den Kunden fragen. Also wir mussten den Kunden dann nicht fragen, welche Version du hat er, sondern welche Farbe hat deine Platine und dann weiß ich direkt, ah, das ist Version 2, weil jede Version hat eine andere Farbe. Mit ESP sieht das dann so aus. Wenn man jetzt so viele Bestellungen hat, dann möchte man die natürlich auch schnell abwickeln, weil ich möchte jetzt nicht den ganzen Nachmittag damit verbringen, Bestellungen zu packen oder sowas. Da habe ich mir dann mit Flatter noch eine kleine Applikation geschrieben, das ist öffentlich zugänglich, wie die definiert ist. Die kann man über Rest abfragen, welche Bestellungen man hat und sowas. Da habe ich auch für Flatter eine Package gemacht. Das kann dann jeder frei verwenden, um von seinem Shop die Bestellungen abfragen zu können. Dann von DHL gibt es auch eine API, um die Versand-Labels automatisch zu erstellen. Das ist dann in SOAP geschrieben mit XML Requests. Das habe ich aber alles in der Flatter-App gemacht. Und zum Drucken der Labels benutze ich das Printing Package. Das verbindet sich einfach mit dem Labeldrucker und druckt das dann für mich aus. Damit ich nicht immer alle Bestellungen über die Tindy-API abfragen muss, habe ich noch Firebase genommen, um das Ganze dann noch in einer Datenbank zu speichern. Dann frage ich immer nur die letzten fünf Bestellungen ab, gleich das mit meiner Datenbank ab. Wenn die Bestellungen alle bekannt sind, dann brauche ich die Tindy-API nicht noch mal abfragen, ob es noch weitere Bestellungen gibt. Das sieht dann so aus. Da habe ich mir einfach so eine kleine Oberfläche gemacht. Da sieht man dann, was bestellt wurde, so wie viel. Mit dem Druckknopf kann man das Ganze dann drucken. Als kleines Gimmick habe ich mir dann noch ein Package installiert, damit ich sehen kann, was jetzt die Flagge des Landes ist. Man sieht dann direkt, wo die Bestellung herkam. Wenn man dann da drauf geht auf die Bestellung, dann sieht man, wer hat das bestellt, wo wohnt der, was hat der bestellt. Dann kann ich auch da direkt abhaken. Was habe ich schon in die Versandtasche gepackt. Dieses Generate Message ist noch dafür da. Man kann dem Kunden eine Nachricht schicken, wenn er was bestellt hat bei Tindy. Da ich das auch nicht immer copy und pasten will und die Information habe, wie der Kunde heißt, ziehe ich mir dann da die ganzen Daten raus und mache dann eine personalisierte Nachricht für den Kunden. Da drücke ich einmal drauf, packt es dann in die Nachricht rein und kopiere mir dann von oben auch noch den Versandcode, damit er das tracken kann. Das paste ich dann einmal, das geht viel schneller, als das alles von Hand zu machen. Was waren dann die zweiten Kundenerfahrungen? Von der neuen Platine habe ich dann 46 Stück verkauft. Kunden hatten das dann an einem Quick Charge Adapter dran. Der kann die Platine stören. Also ist nicht empfohlen, QC Adapter zu benutzen. Manche Leute haben irgendwie diese SMD-Bau-Teile, die haben die Tüte ausgeschüttet und dann waren sie weg. Dann fragen sie einen, was ist das denn für ein Bauteil? Welche Daten hat das, damit die das nachbestellen können? Ich habe auch schon manchen Leuten die Sachen mal geschickt, aber Versand kostet so 6 Euro weltweit. Die ist dann teuer. Man verdient dann nicht mehr so viel daran. Also wenn es darum geht, dieses Projekt zu finanzieren. Die Leute wollten gerne Gehäuse haben. Da habe ich mich dann auch dran gesetzt. Dann kommen wir gleich noch zu. Es gab auch jemanden, der wollte gerne einen Antennenanschluss haben, damit er dann eine leistungsstärkere Antenne dran machen kann. Dann müsste er dann wahrscheinlich einen Antennenanschluss haben. Die haben so was drauf. Von diesem Hersteller gibt es auch noch Batterien- und Wechselrichter, die auch eine erst 232 oder erst 485 Schnittstelle haben. Da gab es dann auch Leute, kann ich das nicht auch an meine Batterie anschließen und die Daten davon auslesen. Natürlich nicht, weil es natürlich wieder andere Register oder anderes Kommunikationsprotokoll um die auszulesen. Manche Leute wollten auch gerne, dass man mehrere Laderegler an einer Platine anschließt. Es ist dann auch ein bisschen komplizierter bei erst 232, weil es auch nicht wirklich dafür gedacht ist, mehrere Teilnehmer in dem Bus zu haben. Bei erst 485 geht das schon eher mit Daisy Chaining. Was war auch der Hersteller von diesen Ladereglern, der macht jetzt zunehmend mehr erst 485. Die Kunden, die wollten gerne die Platine haben, kann man aber nicht anschließen, weil anderes Protokoll. Dann iteration 4, was habe ich gemacht? Erst 485 ist auch eine serielle Schnittstelle, also da ist jetzt auch wieder ein anderer Laderegler von dem Hersteller, der hat dann ein erst 485 Anschluss, ist diesmal ein RJ 12-Stecker-Statten, den RJ 45-Stecker-Statten, RJ 12-Stecker. Erst 485 ist auch eine serielle 1990er-Jahre, also ein bisschen jünger. Die hat dann plus minus 1,5 bis plus minus 6 Volt, ist diesmal symmetisch, also die andere Schnittstelle, die ist nicht symmetisch, das heißt einfach die beiden Datenleitungen, die eine bleibt dann immer bei 0 Volt oder Ground, und die andere macht dann die Spannung mit, also diese plus minus 12 Volt und die Differenz zwischen den beiden kriege ich dann mein Signal, ist ein bisschen störenfällig, weil wenn ich da jetzt eine Störung drauf mache, dann kann ich das nicht mehr so ganz unterscheiden, ob das jetzt ein Bit war oder nicht, meiner symmetrischen Schnittstelle, da ist es so, dass man zwei Leitungen hat, die eine macht genau das Gegenteil, was die andere macht. Wenn da jetzt eine Störung drauf ist, dann interessiert die mich nicht, weil ich die subtrahiert sich da einfach raus. Das ist so, dass ich das 12 Mbit pro Sekunde möglich und genau hier sind auch wieder für solche Applikationen 9600 Bit pro Sekunde üblich, also da hat sich nicht viel geändert. Die neue Platine, diesmal in schwarz, damit ich sie wieder von den anderen unterscheiden kann, was hier auch wichtig ist, das Platinlayout und die Größe, die ist genau gleich geblieben und auch die Anschlüsse und so was weil, ich hatte auch erwähnt, die Kunden wollten gerne Gehäuse haben, also habe ich dann mit FreeCut, das ist so eine Cutsoftware die ist auch Open Source, also wer die noch nicht benutzt hat, gerne mal ausprobieren, die ist echt gut. Es gibt aber auch noch andere, also Tinkercut ist wieder so eine Webgeschichte, OpenScut ist eher was für Programmierer, da kann ich dann per Code meine ganzen Objekte definieren oder die Form und so, wie die angeordnet sind, oder mit Blender und Reno3D, also da gibt es auch wieder Software wie Sand am Meer, FreeCut habe ich benutzt, weil ich es ganz gut finde. Da ich das die Platinen jetzt dasselbe Layout hatten, kann ich dann für die V2 Version, für die V3 Version, für die V3 erst 232 und erst 485 dasselbe Gehäuse nehmen, die passen da alle rein. Das ist dann halt einfach einfacher, dass man da nicht so viele unterschiedliche Gehäuse dann drucken muss. Genau. Kundenerfahrung 3.0 von der Version habe ich jetzt 31 Stück verkauft, insgesamt sind das jetzt schon 130 Stück. Hier habe ich mal auf einer Weltkarte geplottet, wo die Bestellungen überall alle hingegangen sind, also man sieht vielen Australien, Kanada, USA und Europa, jetzt vor drei Tagen hat noch jemand aus Finland eine Bestellung geholt, die ist schon nicht mit drauf. Also man sieht, es ist sehr interessant, wo so die Sachen hingehen, also was da auch alles ausgelassen wird, weil es gibt da weit aus sonnenreichere Regionen, wo man eher denken würde, dass sie vielleicht sowas brauchen, statt jetzt in Finland oder so. Genau, Ausblick. Was kann man noch alles so machen? Da ich ja jetzt bei meiner neuen Solaranlage von Victron Energy Produkte nutze, da wollte ich das auch gerne, dass die Daten von der Platine, weil ich die auch selber benutze in das Victron System mit eingespeist werden, da habe ich jetzt an einer Schnittstelle gearbeitet, sieht man auch unten rechts in dem Bild, das ist jetzt im Victron System und da kommen dann die Daten aus der Platine, holt der sich dann über die Rest-Schnittstelle. Genau, was auch noch interessant wäre, wäre Platinen für Laderegler anderer Hersteller anzubieten, die ein anderes Pin-out haben oder ein anderes Modbus-Protokoll oder andere Register, z.B. von IPF, der da und was auch sehr schön wäre, wäre, wenn man jetzt auch noch diese Leiterplattenbestückung komplett automatisiert machen könnte, mit zum Beispiel so einem Leiterplatten- Bestückungsautomaten. Der ist jetzt zum Beispiel selbst gebaut, da gibt es jemanden, der hat da Open Hardware-mäßig diesen Leiterplatten-Bestückungsautomaten entwickelt, da drückt man sich dann, also man kann den entweder als Kit kaufen für 1.500 Dollar oder so oder man drückt sich alles selber, holt sich die Bauteile und bastelt sich das dann selber zusammen und dann kann man damit auch Leiterplatten bestücken. Wenn man das selber macht dann zahlt man, glaube ich, für die ganzen Bauteile so unter 500 Euro also ist es schon relativ attraktiv so was auch dann mal selber zu machen. Damit sehen wir auch schon am Ende des Vortrags falls ihr noch Fragen habt, gerne Fragen. Ich habe einen Discord-Server, da könnt ihr gerne Fragen stellen oder über meine Internetseite da findet ihr auch den Link zu Discord, zu den YouTube-Kanälen also da sind alle Links also genau. Dann vielen Dank.