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
fhempy docker container #99
Comments
Hi, |
Verstehe, hmm klingt ungünstig. Was ist denn die Voraussetzung, dass dieses Inatallieren beim define funktioniert? |
Das ist alles in requirements.txt drin. Ich habe mal das gesamte Log angefragt, wahrscheinlich hat die Installation von tinytuya nicht funktioniert. |
Das kann ich mir gut vorstellen, dass das installieren von etwas was nicht vorhanden ist, dann auch nicht funktioniert. Da ich zu dieser Variante mit manifest.json nichts an Dokumenten finden konnte, weiss ich nicht wie das installieren abläuft. |
genau das wird ausgeführt, mehr nicht. |
Ok, das wird nicht funktionieren. Vielleicht kann ich die Requirements absuchen und vorher alles installieren, danke für die Aufklärung |
Kann im Docker nichts "live" installiert werden? Alles zu installieren von allen Modulen ist ein Overkill, das sollte man nicht machen. |
So ist das in einem docker Container nicht gedacht. Der Container beinhaltet die komplette Applikation inkl. Laufzeitumgebung. |
Vielleicht findest du bei Home Assistant Hilfe. Die bieten auch Docker Container an und nutzen genauso die Installation wie es fhempy macht. Ich würde es nämlich schade finden, wenn man den Container aktualisieren muss, nur weil man fhempy aktualisieren will. Das wäre aus User Perspektive etwas umständlich, da die Update Funktion in FHEM dann nicht mehr funktioniert. |
Den Container zu aktualisieren hat den Vorteil, dass alles was im Image enthalten ist, mit aktualisiert wird. Da braucht dann auch nichts mehr compiliert werden, der alte wird gestoppt der neue gestartet. Wenn es nicht läuft, lädt man einfach wieder den alten. |
Schau mal wie es bei HA gelöst ist, die machen die Installationen genauso wie fhempy. Dort habe ich auch die Lösung mit den on-demand Installationen abgeschaut. |
Was ich da weiß ist, sie haben ein wheel Repository und legen dort (alle?) Python Packages als fertiges wheel ab. Das führt natürlich dazu, dass es lokal nicht compiliert werden muss und sich das ganze auf Download und Installation reduziert. :) Im Docker Image selbst konnte ich da nichts besonderes finden, sie installieren halt unter Angabe des Wheel Repositorys die benötigten Pakete. Ob da dann alles installiert wird oder nur ein Teil, da fehlt mir aktuell die detail Kenntnisse. Meine Idee weicht davon nicht so groß ab, ich würde im build Prozess auch alle wheels erzeugen die in den Abhängigkeiten referenziert sind. Ein erster Test gestern Abend hat auch schon funktioniert. Dauert halt nur ewig, so dass ich einen cache aufbauen möchte. Die Wheels würde ich dann allerdings direkt in das Finale Image installieren, denn eine nachträgliche Installation im laufenden Container, kann ja nichts, was im Image steckt ersetzen, sondern bei jeder Installation wird ein weiterer Layer über die vorhandenen gelegt und der Overhead steigt stetig an. Alternativ könnten wir alle Module die installiert werden auf ein separates Volume legen und dann mit viel Magie symlinks setzen, damit die Pakete geladen werden. Das wäre theoretisch möglich am einfachsten vielleicht auch für alle Pakete pauschal noch überschaubau, da nur ein Link nötig. |
Wie ist das jetzt zu verstehen? Download und Installation geht, aber nur compilieren macht Probleme? Generell werden immer wheel Packages runtergeladen, außer es muss etwas gebaut werden, weil kein wheel existiert. Das ist wahrscheinlich der Fall bei einer der Crypto Abhängigkeiten bei bestimmten Systemarchitekturen bei tinytuya. Das kann es aber immer geben, das kannst nur schwer vermeiden. Hier die HA Infos gefunden: |
Gehen tut alles, sowohl compilieren als auch herunterladen. Die Ganze Idee ein docker Image für fhempy zu bauen kam ja daher, dass jemand versucht hatte, fhempy in dem "FHEM" Container zum laufen zu bringen. Für den FHEM Container wurden vor langer Zeit Entscheidungen getroffen die heute nur schwer auszubügeln sind. Der Hinweis mit den wheel Packages war, dass bei homeassistant wheels gebaut werden die in einem repository abliegen. Wenn ich annehme, dass dort alle packages als wheel abliegen, dann entfällt der compiler sowie die Bibliotheken, allerdings wird dann immer noch für jede Installation eines packages ein layer aufgebaut. |
Hi, ich klink mich hier mal ein. Ich habe fhempy im offiziellen fhem Container laufen und das fast problemlos, sowohl mit fhempy local als auch als Peer... Bin dann wahrscheinlich der Glücksfall... Ich habe auch den fhempy Container getestet. Lief soweit eigentlich ganz gut, jedoch wenn es eine exeption gab, hat sich der container schlafen gelegt und musste manuell neu gestartet werden. |
Mit welcher Version des Images hattest Du dieses Verhalten? |
Oh schwierig zu sagen.. Das war die Version von vor ca 2 Wochen. Fhempy version um die 0.1.477.. |
Hmm naja, seit Version 1.0 ist ein Health Check enthalten. Die gibt es seit 13 Tagen :) |
OK, werde ich mal mein container aktualisieren und reaktivieren ;-) Muss wohl schon die letzte Version installiert gehabt haben... Also auch mit health check startet der Container leider nicht neu.. |
Für amd64 ist es wie immer recht einfach. Installieren lassen sich die wheels allerdings nicht, was die bessere Lösung wäre, da es von manchen packages mehrere Versionen in den Abhängigkeiten gibt. Auf ARM sieht das leider etwas anders aus. Gefühlt bin ich also wieder am Ursprünglichen Problem der Abhängigkeiten der Python Pakete. |
Ich denke wir können das Issue hier schließen. |
Ich habe mich nun in die Tiefen von wheels, builds usw. begeben und kann ähnlich wie das home-assistant mach, prinzipiell alle wheels inkl. der in den Modulen referenzierten in einer Pipeline bauen lassen. Nun habe ich das ganze versuchsweise mit Nach meinem Verständnis, hätte jetzt alles was fhempy zum starten braucht vorhanden sein müssen. So etwa 9 millisekunden, nachdem fhempy im container gestartet wurde, wird das python Paket Mich wundert jetzt aber natürlich, das es einen Installationsversuch des Paketes gibt. |
Hi, async upnp Client ist hier: |
Ok, woher weiss ich, dass dieses Modul verwendet wird? Ich dachte bislang, die Module werden je nach Bedarf geladen. Je nachdem, was per define in FHEM definiert ist. Ich könnte jetzt nicht finden, wo eine Abhängigkeit auf das Modul "core" vermerkt wird. |
Kann es sein, dass tinytuya in den Requirements fehlt?
Hier wird es importiert:
fhempy/FHEM/bindings/python/fhempy/lib/tuya/tuya.py
Line 7 in 6b3639e
Hier wird von einem Problem im Container berichtet und da fehlt tinytuya:
fhem/fhempy-docker#33
The text was updated successfully, but these errors were encountered: