Offizielles FHEM Docker Basis Image für verschiedene Plattformen

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

Vorheriges Thema - Nächstes Thema

maddhin

Also libglib2.0-dev installiere ich schon über apt_pkgs:( Wie auch die anderen angegeben dependencies:

sudo apt install python3 python3-pip python3-dev libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libglib2.0-dev libdbus-1-dev bluez libbluetooth-dev git libprotocol-websocket-perl

Das tuts aber leider nicht. Habe auch python3-cryptography (apt) probiert und cryptography (und fhempy) über pip_pkgs.

Manuell (bash mit fhem user) habe ich pip (erfolgreich) geupdated, die manuelle Installation von cryptography, rust (über rustup) schlagen fehl, die Installation über das rust script funktioniert, cryptography checked trotzdem aber nicht, dass rust installiert ist.
Fhempy Installation scheitert an cryptography und grundsätzlich wird scheinbar nicht die aktuelle Version installiert, wenn unter .local schon eine Version runtergeladen wurde. Ich habe immer die 0.1.242 gehabt, bis ich sie manuell gelöscht habe. Dann wurde eine aktuelle 0.1.4xx runtergeladen.

Lieben Dank für die Hilfe!!!!

Sidey

Zitat von: maddhin am 17 September 2022, 13:43:44
Fhempy Installation scheitert an cryptography und grundsätzlich wird scheinbar nicht die aktuelle Version installiert, wenn unter .local schon eine Version runtergeladen wurde. Ich habe immer die 0.1.242 gehabt, bis ich sie manuell gelöscht habe. Dann wurde eine aktuelle 0.1.4xx runtergeladen.

Also ich habe da nun auch schon einiges experimentiert. Dauert ja leider auch immer etwas auf nem raspi2.

Ich würde ja vorschlagen, wir erzeugen ein docker image für fhempy, denn ich denke, das ganze bekommen wir sicher einmal hin aber das bei jedem Update des fhem images alles wieder zu rekonstruieren wird auf Dauer kein Spaß.
Dann kann man das auch mal compilieren und wirft die compiler anschließend weg :) 
So zumindest wäre meine Idee dazu.

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

maddhin

ein Docker Image für fhempy wäre super! @dominik hat mir hier https://forum.fhem.de/index.php/topic,122288.msg1235367.html#msg1235367 schon intensiv versucht zu helfen, aber irgendwie haut das mit Docker nicht hin. Als ich im Feb22 fhempy das erste Mal installiert hatte, lief alles auch mit dem Docker Image (damals noch das experimetal Image) wunderbar. Nur jetzt nach einem Fhem-Update (ich hatte seit ein paar Monaten keines mehr gemacht), ist irgendwo etwas kaputtgegangen.

Bzgl. Image kann ich helfen zu testen. @dominik kann sicherlich fachlich am besten helfen. Es macht auch Sinn sich mit ihm kurz zuschließen bzgl. wie zukünftige Updates in das Image kommen, etc.

Lieben Dank für die Hilfe! 

Wernieman

fhempy in einem eigenen Container würde sogar der Idee von Docker entsprechen.

Verwende zwar fhempy (aktuell) nicht, aber @Sidey, kann ich Dir helfen?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Sidey

#1654
Das erste rudimentär Image ist erzeugt:

https://github.com/fhem/fhempy-docker

Aktuell ungetestet.
Todos sind noch einige, aber die erfasse ich in GitHub.

Wer mag es denn mal testen?
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

maddhin

Zitat von: Sidey am 19 September 2022, 08:18:41
Wer mag es denn mal testen?

Leider hat es ein paar Tage gedauert, aber habe es heute mal getestet - leider erfolglos:

2022-09-24 13:28:15,068 - ERROR    - __main__: Failed to load fhempy
Traceback (most recent call last):
  File "/usr/local/bin/fhempy", line 132, in <module>
    import fhempy.lib.fhem_pythonbinding as fpb
  File "/usr/local/lib/python3.9/site-packages/fhempy/lib/fhem_pythonbinding.py", line 16, in <module>
    from . import fhem, pkg_installer, utils, version
  File "/usr/local/lib/python3.9/site-packages/fhempy/lib/pkg_installer.py", line 20, in <module>
    pip_lock = asyncio.Lock()
  File "/usr/local/lib/python3.9/asyncio/locks.py", line 81, in __init__
    self._loop = events.get_event_loop()
  File "/usr/local/lib/python3.9/asyncio/events.py", line 639, in get_event_loop
    self.set_event_loop(self.new_event_loop())
  File "/usr/local/lib/python3.9/asyncio/events.py", line 659, in new_event_loop
    return self._loop_factory()
  File "/usr/local/lib/python3.9/asyncio/unix_events.py", line 54, in __init__
    super().__init__(selector)
  File "/usr/local/lib/python3.9/asyncio/selector_events.py", line 50, in __init__
    super().__init__()
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 402, in __init__
    self._clock_resolution = time.get_clock_info('monotonic').resolution
PermissionError: [Errno 1] Operation not permitted
Exception ignored in: <function BaseEventLoop.__del__ at 0x7606c898>
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 686, in __del__
    _warn(f"unclosed event loop {self!r}", ResourceWarning, source=self)
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 424, in __repr__
    f'closed={self.is_closed()} debug={self.get_debug()}>'
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 1924, in get_debug
    return self._debug
AttributeError: '_UnixSelectorEventLoop' object has no attribute '_debug'


Das andere Problem ist etwas, dass das Image ziemlich groß ist - 1.4GB. D.h. der kleine RPI2 muss ganz schön rödeln bis das fertig ist:) Die Imagegröße ist jetzt natürlich keine Prio, aber eine Überlegung wert.

Noch eine Verständnisfrage: wenn das Image bzw. der Container dann läuft würde man ein define für fhempy machen, oder würde die z.B. Tuya Cloud Erweiterung dann automatisch den fhempy Server finden?

Sidey

Zitat von: maddhin am 24 September 2022, 16:00:34
Leider hat es ein paar Tage gedauert, aber habe es heute mal getestet - leider erfolglos:

Das Paket libseccomp2 ist in deiner Version fehlerhaft und für die Meldungen verantwortlich.

Hier habe ich ein Vorgehen gefunden, wie ein aktuelleres Paket bezogen werden kann:

https://github.com/freqtrade/freqtrade/issues/6183#issuecomment-1016940306

Image Größe schau ich mir an, wenn es funktioniert. Ist halt ein Standard Python Container als Basis.

Was automatisches finden angeht, weiss ich nicht wie das arbeitet. Ich habe zum testen fhempy manuell in FHEM bekannt gemacht.

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

maddhin

Zitat von: Sidey am 24 September 2022, 16:57:39
Das Paket libseccomp2 ist in deiner Version fehlerhaft und für die Meldungen verantwortlich.
Danke für den Tipp, das manuelle Nachinstallieren hat das Problem gelöst!

Zitat von: Sidey am 24 September 2022, 16:57:39
Ich habe zum testen fhempy manuell in FHEM bekannt gemacht.
Dumme Frage: wie? Ich habe fhempy_local und den Server manuell gelöscht in FHEM. Soll ich jetzt wieder ein "define fhempy_local BindingsIo fhempy" machen, oder wird dann alles wieder installiert und das docker-fhempy ignoriert? Oder kann / soll man den Server manuell definieren? Sorry, ich stehe hier voll auf der Leitung und will nichts kaputt machen;)

Sidey

Zitat von: maddhin am 24 September 2022, 18:24:27
Soll ich jetzt wieder ein "define fhempy_local BindingsIo fhempy" machen, oder wird dann alles wieder installiert und das docker-fhempy ignoriert?

Laut fhempy Dokumentation musst Du mir dem Hostnamen oder IP Adresse von deinem Container einrichten.

Wenn der Container fhempy lautet und sich im gleichen Netzwerk wir dein fhem Container befindet, dann geht es wie folgt:


define fhempy_peer_IP BindingsIo fhempy:15733 fhempy

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

maddhin


Ok, dann kam bei mir die Fehlermeldung unten. Nachdem ich "libprotocol-websocket-perl" unter apt-pkgs eingetragen hatte, ging es dann. Ich hatte (fälschlicherweise???) alle dependencies von fhempy bei fhem entfernt. 

2022.09.24 20:59:04.299 1: reload: Error:Modul 10_BindingsIo deactivated:
Can't locate Protocol/WebSocket/Frame.pm in @INC (you may need to install the Protocol::WebSocket::Frame module) (@INC contains: ./FHEM/lib ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.32.1 /usr/local/share/perl/5.32.1 /usr/lib/arm-linux-gnueabihf/perl5/5.32 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl-base /usr/lib/arm-linux-gnueabihf/perl/5.32 /usr/share/perl/5.32 /usr/local/lib/site_perl) at ./FHEM/10_BindingsIo.pm line 13.
BEGIN failed--compilation aborted at ./FHEM/10_BindingsIo.pm line 13.

2022.09.24 20:59:04.300 0: Can't locate Protocol/WebSocket/Frame.pm in @INC (you may need to install the Protocol::WebSocket::Frame module) (@INC contains: ./FHEM/lib ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.32.1 /usr/local/share/perl/5.32.1 /usr/lib/arm-linux-gnueabihf/perl5/5.32 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl-base /usr/lib/arm-linux-gnueabihf/perl/5.32 /usr/share/perl/5.32 /usr/local/lib/site_perl) at ./FHEM/10_BindingsIo.pm line 13.
BEGIN failed--compilation aborted at ./FHEM/10_BindingsIo.pm line 13.

2022.09.24 21:00:18.018 1: reload: Error:Modul 10_BindingsIo deactivated:
Can't locate Protocol/WebSocket/Frame.pm in @INC (you may need to install the Protocol::WebSocket::Frame module) (@INC contains: ./FHEM/lib ./lib ./FHEM . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.32.1 /usr/local/share/perl/5.32.1 /usr/lib/arm-linux-gnueabihf/perl5/5.32 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl-base /usr/lib/arm-linux-gnueabihf/perl/5.32 /usr/share/perl/5.32 /usr/local/lib/site_perl) at ./FHEM/10_BindingsIo.pm line 13.
BEGIN failed--compilation aborted at ./FHEM/10_BindingsIo.pm line 13.


Nun scheint Tuya soweit zu funktionieren... Ganz lieben Dank schonmal dafür!!!!!

Sidey

Zitat von: maddhin am 24 September 2022, 21:31:42
Nachdem ich "libprotocol-websocket-perl" unter apt-pkgs eingetragen hatte, ging es dann.

Das ist im FHEM Docker Image bereits enthalten, nicht nötig, das mittels apt zu installieren.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

maddhin

Zitat von: Sidey am 24 September 2022, 22:01:05
Das ist im FHEM Docker Image bereits enthalten, nicht nötig, das mittels apt zu installieren.

OK, dann weiß ich nicht, wo der Fehler war. Vielleicht hatte sich irgendwo was aufgehängt.

Fhempy funktioniert - auch ein Update. Tuya geht auch, aber bei Umlauten im device namen kapituliert das Modul bzw. legt keinen device an (Umbennen löst das Problem).

pipp37

#1662
Fehlermeldung: too many open files
Docker Container: fhem/fhem:3.0.3-buster

Für alle die mit dem Fehler kämpfen hier meine Lösung mit Docker Compose in einer Vmware-ESX-VM.

Funktionsweise:
Es wird die pre-start.sh beim Starten des Containers verwendet um das nofile Limit in der Datei /etc/security/limits.conf für alle User (auch den FHEM user) größer 1024 zu setzen.

Das könnte man auch in das nächste Docker Image einbauen.

Check der Limits mit:

# exec into container
docker exec -it fhem bash

# become user fhem
su - fhem

# check limits
ulimit -Hn
ulimit -Sn

# check open files from fhem
ls -l /proc/$(ps -ax | grep [f]hem | head -n1 | awk '{print $1}')/fd




Verzeichnis der docker-compose.yml und pre-start.sh = /docker/fhem

File: pre-start.sh 
chmod +x pre-start.sh


#!/bin/bash
echo "**** PRESTART ****"
if ( !  grep -q "# FHEM-MARKER #" /etc/security/limits.conf ); then
    echo "Setting NOFILE"
    echo "# FHEM-MARKER #"     >> /etc/security/limits.conf
    echo "* soft nofile 26677" >> /etc/security/limits.conf
    echo "* hard nofile 46667" >> /etc/security/limits.conf
    else
    echo "Setting NOFILE already done"
fi


File: docker-compose.yml


version: '2'
volumes:
  files:
    driver: local

services:
  fhem:
    container_name: fhem
    image: "fhem/fhem:3.0.3-buster"
    restart: always
    network_mode: "host"
    privileged: true

  volumes:
      - "files:/opt/fhem"
      - type: bind
        source: ./pre-start.sh
        target: /pre-start.sh

# change because fhem only 1024 - error too many open files
    ulimits:
      nproc: 65535
      nofile:
        soft: 26677
        hard: 46677

    environment:
      TIMEOUT: 10
      RESTART: 1
      TELNETPORT: 7072
      TZ: Europe/Berlin
      APT_PKGS: "mc libmime-lite-perl libsnmp-perl libnet-snmp-perl libsnmp-session-perl libwww-curl-perl snmp openssh-client htop pv lsof"


Vmware-ESX-VM-Ubuntu 16.04 Docker Main-FHEM -> Raspberry Pi-B ser2net
HMLAN mit HomeMatic, Busware SCC433 stacked SCC868 (culfw), Jeelink, MAX Heizkörperthermostate, Enigma2 (Vudo2/DM800SE), Philips 55" Ambilight PHTV - WMBUS EnergyCam+Engelmann FAW, Intertechno-Komponenten, Ubiquiti mPower

Sidey

Zitat von: pipp37 am 25 September 2022, 12:54:17
Fehlermeldung: too many open files
Docker Container: fhem/fhem:3.0.3-buster

Hast Du denn herausbekommen warum so viele file handels offen sind?

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

pipp37

Zitat
Hast Du denn herausbekommen warum so viele file handels offen sind?

Ja. Meine Installation läuft schon seit 2016 und es sind sehr viel Geräte drinnen, die per Autocreate angelegt wurden und nicht vorhanden sind.
Ich lasse zum Filelog auch noch ein DBLOG in eine Mysql DB laufen und habe gesehen, dass die Logfiles das Problem verursachen.

Die Text-Datei zeigt meine offenen Files.


Fhem wurde kürzlich upgedated.

Latest Revision: 26438

File                  Rev   Last Change

fhem.pl               26379 2022-09-03 15:40:42Z rudolfkoenig
################################## # $Id: 99_myUtilsEMONITOR.pm 2014-8 by Elektrolurch $
90_at.pm              25248 2021-11-21 10:29:01Z rudolfkoenig
98_autocreate.pm      23727 2021-02-12 20:31:37Z rudolfkoenig
98_cloneDummy.pm      13015 2017-01-08 20:26:33Z betateilchen
98_cmdalias.pm        16300 2018-03-01 08:48:21Z rudolfkoenig
00_CUL.pm             24815 2021-08-01 16:14:02Z rudolfkoenig
10_CUL_HM.pm          25977 2022-04-18 14:48:41Z martinp876
14_CUL_MAX.pm         22175 2020-06-13 17:32:49Z Wzut
14_CUL_REDIRECT.pm    18358 2019-01-20 20:21:05Z bjoernh
14_CUL_TCM97001.pm    26180 2022-06-29 15:00:03Z Ralf9
14_CUL_TX.pm          17102 2018-08-08 05:34:42Z rudolfkoenig
14_CUL_WS.pm          20918 2020-01-08 19:20:38Z rudolfkoenig
98_CustomReadings.pm  15098 2017-09-19 16:46:33Z HCS
95_Dashboard.pm       25965 2022-04-15 15:31:56Z DS_Starter
93_DbLog.pm           26289 2022-08-05 19:15:32Z DS_Starter
70_DENON_AVR.pm       25787 2022-03-06 17:06:35Z delmar
No Id found for 99_DockerImageInfo.pm
98_DOIF.pm            26435 2022-09-20 20:49:19Z Damian
98_dummy.pm           25606 2022-02-01 10:43:57Z rudolfkoenig
70_ENIGMA2.pm         18995 2019-03-22 20:09:53Z loredo
91_eventTypes.pm      23471 2021-01-04 19:24:21Z rudolfkoenig
01_FHEMWEB.pm         26246 2022-07-19 11:05:05Z rudolfkoenig
92_FileLog.pm         26329 2022-08-17 07:57:51Z rudolfkoenig
10_FS20.pm            14888 2017-08-13 12:07:12Z rudolfkoenig
73_GasCalculator.pm   25907 2022-04-01 07:40:25Z Sailor
14_Hideki.pm          25560 2022-01-25 21:43:09Z Sidey
98_HMinfo.pm          25978 2022-04-18 14:50:17Z martinp876
00_HMLAN.pm           25204 2021-11-09 05:41:42Z martinp876
98_HTTPMOD.pm         25994 2022-04-24 18:04:22Z StefanStrobel
02_HTTPSRV.pm         20110 2019-09-05 17:30:20Z neubert
98_IF.pm              12944 2017-01-03 12:56:17Z Damian
No Id found for 93_InfluxDBLog.pm
No Id found for 98_InfratecOut.pm
98_Installer.pm       20949 2020-01-12 09:53:11Z loredo
49_IPCAM.pm           24924 2021-09-06 08:47:51Z delmar
10_IT.pm              20839 2019-12-28 09:41:47Z bjoernh
98_JsonList2.pm       23727 2021-02-12 20:31:37Z rudolfkoenig
13_KS300.pm           20008 2019-08-17 10:24:14Z rudolfkoenig
32_mailcheck.pm       16299 2018-03-01 08:06:55Z justme1968
10_MAX.pm             23517 2021-01-13 15:38:49Z Wzut
00_MQTT.pm            24981 2021-09-16 16:06:15Z hexenmeister
10_MQTT_BRIDGE.pm     17362 2018-09-17 12:57:29Z hexenmeister
10_MQTT_DEVICE.pm     24952 2021-09-11 16:20:35Z hexenmeister
75_msgConfig.pm       18995 2019-03-22 20:09:53Z loredo
No Id found for 99_myUtils.pm
91_notify.pm          25888 2022-03-27 10:22:58Z rudolfkoenig
42_npmjs.pm           20933 2020-01-10 12:27:41Z loredo
41_OREGON.pm          18660 2019-02-19 22:44:37Z Sidey
70_PHTV.pm            18995 2019-03-22 20:09:53Z loredo
73_PRESENCE.pm        20782 2019-12-19 10:51:06Z markusbloch
70_Pushover.pm        20897 2020-01-06 12:16:20Z loredo
33_readingsGroup.pm   23844 2021-02-27 19:43:24Z justme1968
19_Revolt.pm          24864 2021-08-22 05:57:16Z yoda_gh
14_SD_WS07.pm         25485 2022-01-17 20:52:47Z Sidey
16_STACKABLE_CC.pm    18467 2019-01-31 08:02:51Z rudolfkoenig
98_statistics.pm      26211 2022-07-12 05:25:06Z Beta-User
99_SUNRISE_EL.pm      24249 2021-04-14 05:45:49Z rudolfkoenig
98_SVG.pm             26418 2022-09-18 14:35:20Z rudolfkoenig
32_SYSSTAT.pm         24779 2021-07-20 09:21:08Z justme1968
50_TelegramBot.pm     24867 2021-08-23 10:23:15Z viegener
98_telnet.pm          25754 2022-02-27 16:49:52Z rudolfkoenig
59_Twilight.pm        25067 2021-10-13 04:26:30Z Beta-User
98_UbiquitiMP.pm      14319 2017-05-19 19:44:53Z Wzut
98_UbiquitiOut.pm      8471 2015-04-23 17:46:01Z wzut
10_UNIRoll.pm         20792 2019-12-20 17:32:00Z rudolfkoenig
99_Utils.pm           24128 2021-04-02 16:29:11Z rudolfkoenig
98_version.pm         15140 2017-09-26 09:20:09Z markusbloch
91_watchdog.pm        26108 2022-06-01 08:25:03Z rudolfkoenig
98_weblink.pm         26403 2022-09-16 07:47:17Z rudolfkoenig
36_WMBUS.pm           25167 2021-11-01 16:43:20Z kaihs
71_YAMAHA_AVR.pm      21538 2020-03-29 09:12:10Z markusbloch

AttrTemplate.pm       25155 2021-10-30 12:48:21Z rudolfkoenig
Blocking.pm           23268 2020-12-01 11:48:48Z rudolfkoenig
Color.pm              20813 2019-12-22 18:42:10Z justme1968
DevIo.pm              26055 2022-05-17 20:12:20Z rudolfkoenig
GPUtils.pm            19666 2019-06-20 11:17:29Z CoolTux
HMConfig.pm           25160 2021-10-30 17:38:52Z martinp876
HttpUtils.pm          26420 2022-09-18 14:56:03Z rudolfkoenig
Meta.pm               21008 2020-01-18 10:22:10Z loredo
msgSchema.pm          21075 2020-01-29 19:46:59Z CoolTux
RTypes.pm             10476 2016-01-12 21:03:33Z borisneubert
SetExtensions.pm      25286 2021-12-03 10:16:56Z rudolfkoenig
SubProcess.pm         14334 2017-05-20 23:11:06Z neubert
TcpServerUtils.pm     25866 2022-03-21 09:01:16Z rudolfkoenig
TimeSeries.pm         22980 2020-10-17 09:21:43Z neubert
WMBus.pm              25166 2021-11-01 16:04:05Z kaihs

doif.js                    24438 2021-05-14 18:08:18Z Ellert
fhemweb.js                 26334 2022-08-18 15:42:05Z rudolfkoenig
fhemweb_readingsGroup.js   15189 2017-10-03 17:53:27Z justme1968
svg.js                     23428 2020-12-27 22:07:20Z rudolfkoeni

Vmware-ESX-VM-Ubuntu 16.04 Docker Main-FHEM -> Raspberry Pi-B ser2net
HMLAN mit HomeMatic, Busware SCC433 stacked SCC868 (culfw), Jeelink, MAX Heizkörperthermostate, Enigma2 (Vudo2/DM800SE), Philips 55" Ambilight PHTV - WMBUS EnergyCam+Engelmann FAW, Intertechno-Komponenten, Ubiquiti mPower