Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

E3DC Control als Docker #4

Open
merlin2539 opened this issue Mar 20, 2019 · 8 comments
Open

E3DC Control als Docker #4

merlin2539 opened this issue Mar 20, 2019 · 8 comments

Comments

@merlin2539
Copy link

Dieses Minitool E3DC als Docker bereitstellen, so ist ein einfaches Update aber auch Wartung möglich. Jenkins kann dies sehr einfach mit einem Mini Linux Alpine erstellen. Dann kann man es sehr einfach auf einem Raspi laufen lassen

@merlin2539
Copy link
Author

Dockerfile wurde entsprechend in neuem Branch hinzugefügt und ist in Dockerhub Verfügbar für Raspi (Hypriot Image)

@stevie77
Copy link

stevie77 commented Jun 4, 2020

Und ganz Faule können sich hier auch ein fertiges (hoffentlich meist aktuelles) Image herunterladen. ;-)
https://hub.docker.com/r/stehada/e3dc-control

@ChrisKuBa
Copy link

@stevie77 Gibt es dazu eine Dockerfile? Auch die Infos vor dem Squash?
Ich versuche ein Image für Homeassistant mit Alpine zu bauen und wollte deine Dockerfile adaptieren.
Hassio Add On
Btw: Stößt du den Bau der Images noch manuell an oder wie läuft das bei dir?

@stevie77
Copy link

@chrkulbe Persönliche Nachrichten kann man sich hier nicht schreiben, oder? Wollte das jetzt nicht hier posten...
Ich baue alle paar Monate (bewusst) ein manuell angestoßenes Image mit einer bestimmten Versionsnummer, nämlich dann, wenn eba im Photovoltaikforum in seinem Thread schreibt, dass er eine größere Neuerung eingebaut hat (für die er auch eine Versionsnummer vergeben hat). Da das nicht soo oft vorkommt, lohnt sich (für mich) der Aufwand nicht. Hatte das ursprünglich auch nur mal für mich selbst gebaut und dann eben mal hochgeladen, weil ich wissen wollte, wie das mit dem Docker-Hub funktioniert...scheinbar fanden es dann aber doch ein paar Leute nützlich...

@ChrisKuBa
Copy link

Ich hänge mich mal wieder hier etwas rein.

Da ich Purist bin, wollte ich wie stevie77 ebenfalls auf Alpine aufsetzen. stevie77 DockerImage basiert aktuell aber auf Debian.

@Eba-M
Zwei Dinge hindern mich:

  1. Ich möchte so wenig wie notwendig auf dem Alpine installieren. Dh kein gcc sondern rein das vorhandene g++.
    g++ mag kein memcpy(&vecDynamicBuffer[0], &vecDynamicBuffer[0] + auf einem überlappenden, hier den selben, Bereich.
    https://en.cppreference.com/w/cpp/string/byte/memcpy
    Daher ist es besser memmove zu verwenden.
    https://en.cppreference.com/w/cpp/string/byte/memmove
    Ich weiß, das ist Originalcode von E3DC, aber vielleicht hat hier jemand mehr Expertise als ich und kann zusichern, dass diese Anpassung neutral ist. gcc scheint mit dem überlappenden memcpy keine Probleme zu haben.

  2. Ich hatte den Pfad für die Log Datei falsch angegeben und das Programm brach immer ab. Das liegt daran, dass du überall auf ein exsitierendes Handle zur Logdatei prüfst, bis auf eine Stelle:

    fp = fopen(fname,"w"); // altes logfile löschen
    fclose(fp);

    Zusätzlich hier noch geschweifte Klammern (beide { } ) tun ebenfalls Wunder:
    if(fp)
    fprintf(fp,"%s\n",Log);
    fclose(fp);}

Ich stelle dir gerne einen PullRequest zur Verfügung wenn du magst.

@ChrisKuBa
Copy link

Offtopic:
@Eba-M: Wie sieht es mit CodeFormatern/Lintern aus? Ist teilweise schwierig den Codeblöcken zu folgen.
Kann dabei auch gerne unterstützen, bzw. einen separaten Issue/Branch dafür aufmachen, wenn dir das Recht wäre.

@ChrisKuBa
Copy link

ChrisKuBa commented Aug 28, 2021

Kleiner Nachtrag:
Hat jemand eine Ahnung, warum ich diesen Fehler bekomme?
Mit "%u" klappt es.

RscpExampleMain.cpp:2304:56: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'std::vector<unsigned char>::size_type' {aka 'unsigned in
t'} [-Wformat=]
 2304 |                 printf("Maximum buffer size exceeded %lu\n", vecDynamicBuffer.size());
      |                                                      ~~^     ~~~~~~~~~~~~~~~~~~~~~~~
      |                                                        |                          |
      |                                                        long unsigned int          std::vector<unsigned char>::size_type {aka unsigned int}
      |                                                      %u

Nachtrag:
Habs jetzt mit einem plattformübergreifenden Casting gelöst:
(unsigned long) vecDynamicBuffer.size()
Von int nach long geht ja nichts verloren und damit can size sowohl int als auch long sein, je nach Systemarchitektur.

@ChrisKuBa
Copy link

Für Minimalisten und Freunde von Alpine
https://hub.docker.com/r/chriskuba/e3dc-control

Bonus:
Falls Screen versehentlich mit CTRL+C beendet wird, wird eine neue Screen Session innerhalb von 10 Sekunden aufgemacht.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants
@ChrisKuBa @merlin2539 @stevie77 and others