Offizielles FHEM Docker Basis Image für verschiedene Plattformen

Begonnen von Loredo, 28 Juli 2018, 21:24:57

Vorheriges Thema - Nächstes Thema

Loredo

Zitat von: eisler am 08 Mai 2019, 16:56:37
2. /dev/fd/63 existiert nicht

Ich vermute du hast /dev/fd/63 irgendwo als LOGFILE gesetzt. Das ist natürlich absoluter quatsch und das musst du irgendwie beheben.

Zitat von: Schlimbo am 09 Mai 2019, 05:47:14
bei dem Text2Speech Modul haben sich die Abhängigkeiten etwas geändert. Bekomme mir der aktuellen Version folgende Meldung:
[.....]
Könntest du die fehlenden Abhängigkeiten bitte noch mit aufnehmen?

Done.

Zitat von: kjmEjfu am 09 Mai 2019, 18:50:38
Ist es eventuell möglich die aktuellen Module für DoorBird noch zu integrieren? https://forum.fhem.de/index.php/topic,41758.msg937826.html#msg937826

Die Abhängigkeiten sind etwas exotischer, weshalb das eigentlich eher Kandidaten für die Umgebungsvariablen APT_PKGS oder CPAN_PKGS sind (siehe README.md). Hast du das mal versucht?
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

kjmEjfu

Zitat von: Loredo am 11 Mai 2019, 10:14:06
Die Abhängigkeiten sind etwas exotischer, weshalb das eigentlich eher Kandidaten für die Umgebungsvariablen APT_PKGS oder CPAN_PKGS sind (siehe README.md). Hast du das mal versucht?

Hmm, also ich rufe den Container jetzt so auf:

sudo docker run -d --name fhem -p 8083:8083 -e CPAN_PKGS="Crypt::Argon2 Crypt::NaCl::Sodium Alien::Base::ModuleBuild Alien::Sodium" -v /opt/fhem:/opt/fhem fhem/fhem

allerdings kann dann DoorBird nicht definiert werden, weil laut Logfile diese Module fehlen. Mache ich beim Aufruf etwas falsch? Oder werden die nachgelagert installiert und stehen dadurch beim Start von FHEM noch nicht zur Verfügung?
Migriere derzeit zu Home Assistant

kotaro

Hallo,

seit neusten ist mir aufgefallen, das der FHEM Container den Raspi ständig belastet Außerdem hört die SD Karte kaum auf zu lesen..
es scheint dem Log geschuldet zu sein...
denn unter htop sehe ich, das vorallem der Prozess cp -1 ca 15% CPU-Last dauerhaft fährt.. das ist auf meinen Raspi 2b jetzt nicht ganz so pralle....
gibt es eine Möglichkeit, das die last wieder verringert wird? bin auf dem DEV-Build. und habe vor 1h ein Pull gemacht...

lg

Loredo

#363
Zitat von: kjmEjfu am 11 Mai 2019, 16:23:05
Hmm, also ich rufe den Container jetzt so auf:

sudo docker run -d --name fhem -p 8083:8083 -e CPAN_PKGS="Crypt::Argon2 Crypt::NaCl::Sodium Alien::Base::ModuleBuild Alien::Sodium" -v /opt/fhem:/opt/fhem fhem/fhem

allerdings kann dann DoorBird nicht definiert werden, weil laut Logfile diese Module fehlen. Mache ich beim Aufruf etwas falsch? Oder werden die nachgelagert installiert und stehen dadurch beim Start von FHEM noch nicht zur Verfügung?


Du startest damit nur den schon vorhandenen Container. Du musst den Container aber komplett neu anlegen, damit auch die Startphase so abläuft, dass auch Pakete nachinstalliert werden. Das passiert nur ein einziges Mal, wenn du den Container aktualisiert oder neu angelegt hast.


Ob die Pakete installiert werden und ob das erfolgreich ist, siehst du im Docker Logfile für den Container.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Zitat von: kotaro am 12 Mai 2019, 00:21:08
seit neusten ist mir aufgefallen, das der FHEM Container den Raspi ständig belastet Außerdem hört die SD Karte kaum auf zu lesen..
es scheint dem Log geschuldet zu sein...
denn unter htop sehe ich, das vorallem der Prozess cp -1 ca 15% CPU-Last dauerhaft fährt.. das ist auf meinen Raspi 2b jetzt nicht ganz so pralle....


Bist du sicher, dass der Befehl so heißt, wie heißt der denn ganz genau und unter welchem Benutzer wird er ausgeführt? Einen solchen Befehl gibt es in keinem der Scripts innerhalb des Docker Containers. Das Logfile wird schon seit jeher von FHEM selbst geschrieben, das ist auch keine Besonderheit vom Docker Image. Wenn du ein entsprechend hohes Loglevel eingestellt hast, wird auch mehr produziert und damit auch (regelmäßig) abgespeichert. Es gibt bei FHEM derzeit keinen Modus, um die Logdatei zeitversetzt und resourcenschonender zu schreiben. Das macht wahrscheinlich auch wenig Sinn, denn man möchte in der Regel die Logausgaben sehr zeitnah sehen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

kotaro

#365
Zitat von: Loredo am 12 Mai 2019, 09:46:20

Bist du sicher, dass der Befehl so heißt, wie heißt der denn ganz genau und unter welchem Benutzer wird er ausgeführt? Einen solchen Befehl gibt es in keinem der Scripts innerhalb des Docker Containers. Das Logfile wird schon seit jeher von FHEM selbst geschrieben, das ist auch keine Besonderheit vom Docker Image. Wenn du ein entsprechend hohes Loglevel eingestellt hast, wird auch mehr produziert und damit auch (regelmäßig) abgespeichert. Es gibt bei FHEM derzeit keinen Modus, um die Logdatei zeitversetzt und resourcenschonender zu schreiben. Das macht wahrscheinlich auch wenig Sinn, denn man möchte in der Regel die Logausgaben sehr zeitnah sehen.

Morgen,

Den Befehl gibt es in /src/Entry.sh
Und hier zu finden:

# Function to print FHEM log in incremental steps to the docker log.
[ -s "$( date +"${LOGFILE}" )" ] && OLDLINES=$( wc -l < "$( date +"${LOGFILE}" )" ) || OLDLINES=0
NEWLINES=${OLDLINES}
FOUND=false
function PrintNewLines {
  if [ -s "$( date +"${LOGFILE}" )" ]; then
  NEWLINES=$(wc -l < "$(date +"${LOGFILE}")")
  (( OLDLINES <= NEWLINES )) && LINES=$(( NEWLINES - OLDLINES )) || LINES=${NEWLINES}
  tail -n "${LINES}" "$(date +"${LOGFILE}")"
  [ -n "$1" ] && grep -q "$1" <(tail -n "$LINES" "$(date +"${LOGFILE}")") && FOUND=true || FOUND=false
  OLDLINES=${NEWLINES}
  fi
}[/codeA]

Es läuft in der treeansicht unter dem Docker wo auch fhem läuft.
Kann ich dir am Rechner ein Screenshot machen.


Edit: na gut. Mein Docker-image wird auch als Unhealthy  betitelt...

Container health
Status    unhealthy
Failure count   196
Last output   Health check exceeded timeout (10s)

Loredo

#366
Zitat von: kotaro am 12 Mai 2019, 10:39:36
Den Befehl gibt es in /src/Entry.sh
Und hier zu finden:


Ich kann da keinen "cp -1" Befehl finden, tut mir leid.
Alle Befehle, die in dem von dir gezeigten Ausschnitt ausgeführt werden, sind nur lesend aktiv und schreiben nichts.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

kotaro

Zitat von: Loredo am 12 Mai 2019, 11:04:41

Ich kann da keinen "cp -1" Befehl finden, tut mir leid.
Alle Befehle, die in dem von dir gezeigten Ausschnitt ausgeführt werden, sind nur lesend aktiv und schreiben nichts.

ja du hast auch absolut recht... ich meine auch wc -1 weshalb ich den teil rausgesucht habe.. war wohl gestern abend etwas zu spät ^^
sorry...
kann ja mal spontan den ganzen Container neu bauen lassen, vielleicht ist dann das unhealthy weg...

Loredo

Ah! Du meinst 'wc -l' mit kleinem 'L', das ist keine 1/Eins ;-)


Der Grund fürs unhealthy steht ja im Docker Statusfeld drin. Wahrscheinlich hast du kein Telnet device, was ohne Passwort auf localhost und Port 7072 horcht.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

kotaro

Zitat von: Loredo am 12 Mai 2019, 11:49:48
Ah! Du meinst 'wc -l' mit kleinem 'L', das ist keine 1/Eins ;-)


Der Grund fürs unhealthy steht ja im Docker Statusfeld drin. Wahrscheinlich hast du kein Telnet device, was ohne Passwort auf localhost und Port 7072 horcht.

Hab ich dann iegendein Device gelöscht? Früher hat er Healthy gesagt... jetzt komischer weise nicht. Kann ich da was korrigieren?

Loredo

Ich kenne deine FHEM Installation nicht.
Bei einer frischen Installation, bei der du kein FHEM mitbringt, wird ein Telnet Device angelegt, welches auf Port 7072 auf localhost hört. Das musst du manuell anlegen, wenn du eine bestehende Installation mitbringst und den Health Status bzw. DockerImageInfo nutzen willst. Dabei darf der Zugriff zumindest für localhost nicht über ein allowed Device beschränkt sein. Steht auch in der README, es gilt das gleiche wie für configDB in diesem Fall.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

KraxelHuber

Ich würde das Docker Image gerne in mein Version Control System einbinden, so wie auf der Github Seite beschrieben. Es gibt aber leider Probleme :-(
Wenn ich in einem ersten Schritt den Container starte, läuft alles bestens. Ich habe Zugriff auf die an meinem RPi angeschlossenen USB-Sticks (Z-Wave, CUL) und alles scheint gut zu funktionieren. Hier ist die docker-compose.yml, die ich benutze:

version: '2.3'

networks:
  net:
    driver: bridge
    # enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: 172.27.0.0/24
          gateway: 172.27.0.1
        # - subnet: fd00:0:0:0:27::/80
        #   gateway: fd00:0:0:0:27::1

services:

  fhem:
    image: fhem/fhem:latest
    container_name: fhem_slave
    restart: always
    networks:
      - net
    ports:
      - "8083:8083"
    volumes:
      - "./fhem/:/opt/fhem/"
    devices:
      - "dev/ttyACM0:/dev/ttyACM0"
      - "dev/ttyACM1:/dev/ttyACM1"
      - "dev/ttyAMA0:/dev/ttyAMA0"
    environment:
      FHEM_UID: 6061
      FHEM_GID: 6061
      TIMEOUT: 10
      RESTART: 1
      TELNETPORT: 7072
      TZ: Europe/Berlin


Nun habe ich leichte Änderungen an der Konfiguration vornheme, z.B. ein 'update all' und die Änderungen committet und in mein online Repo gepusht. Im Anschluss stoppe und lösche ich den Container. Außerdem lösche ich das gesamte /docker/home/ Verzeichnis, um das Einspielen des "Backups" zu testen. Nachdem ich mein Online Repo dann wieder in dieselben Verzeichnisse gecloned habe, startet der Container beim Aufruf von docker-compose up -d nicht mehr richtig. Er hängt sich anscheinend in einer Art Endlosschleife auf. Ein Aufruf von docker ps zeigt mir im Status "Restarting" an. Ist dieses Phänomen hier irgendwie bekannt? Wo und wie sollte ich evtl. nach dem Fehler suchen?

antonwinden

Kann es sein das
attr global exclude_from_update 88_VantagePro2.pm
in fhem.cfg ignoriert wird? Bei einem update all kommt bei mir:
2019.05.17 18:53:17.145 1 : UPD FHEM/88_VantagePro2.pm
2019.05.17 18:53:17.190 1 : open ./FHEM/88_VantagePro2.pm failed: Permission denied, trying to restore the previous version and aborting the update

KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

KraxelHuber

Zitat2019.05.17 18:53:17.145 1 : UPD FHEM/88_VantagePro2.pm
2019.05.17 18:53:17.190 1 : open ./FHEM/88_VantagePro2.pm failed: Permission denied, trying to restore the previous version and aborting the update

Diese Meldungen tauchen bei mir nach einem "update all" überhaupt nicht auf. Der Event Monitor sieht eigentlich ganz normal ohne merkwürdige Meldungen aus.

Es ist wirklich wie verhext. Nach einem

update all

git add -A
git commit -m "Test"
git push

docker stop fhem_slave
docker remove fhem_slave

sudo rm -r /docker/home
cd /docker

sudo git clone HTTPS_ADRESSE_MEINES_REPOS.git home


sieht die Verzeichnisstruktur praktisch genauso aus, wie vor dem ganzen Löschvorgang. Aber der Container will dann einfach nicht starten sondern hängt sich in dieser Endlos-Schleife auf.

Loredo

Zitat von: KraxelHuber am 16 Mai 2019, 21:13:16
Ist dieses Phänomen hier irgendwie bekannt? Wo und wie sollte ich evtl. nach dem Fehler suchen?


Nein, ist mir nicht bekannt. "docker ps" hilft dir nicht, du musst in die Log Ausgabe von Docker gucken:
https://docs.docker.com/config/containers/logging/


Also "docker logs fhem_slave".
Die Meldungen dort werden dir wahrscheinlich weiterhelfen. Meine Vermutung ist, dass deine Verzeichnisstruktur nicht richtig passt.


Zitat von: antonwinden am 17 Mai 2019, 18:54:42
Kann es sein das
attr global exclude_from_update 88_VantagePro2.pm
in fhem.cfg ignoriert wird?


Der Container hat keinerlei Einfluss darauf. Wahrscheinlich hast du exclude_from_update aber falsch benutzt, ich glaube man schreibt dort nur "88_VantagePro2" rein - ohne ".pm".
Wenn da irgendwelche Verzeichnisberechtigungen nicht stimmen, liegt das nicht am Docker Container. Dort werden beim Start alle Rechte ordentlich gesetzt. Was während der Laufzeit so passiert, liegt an dir. Vermutlich hast du die Datei dort manuell hinkopiert und die Berechtigungen dabei nicht korrigiert.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER