Docker Image pipp37/fhem_jessie Online

Begonnen von pipp37, 22 März 2016, 10:42:17

Vorheriges Thema - Nächstes Thema

pipp37

Hallo.
Mein Docker Image in der 2. Version (1/2017) ist ab sofort online.

https://hub.docker.com/r/pipp37/fhem_jessie/

Grundlage ist Debian 8 (jessie).
Im Image laufen einige Damons für cron, Nfs Client, Autofs mit Netzwerk-Mounts  in /net, SSH usw. 
Der SSH Daemon ist über Port 2222 zu erreichen: root / fhem!
Weiters wurden auch die USB Tools installiert und ein HM-CFG Adapter zum Testen eingebunden.

Features:
* volume /opt/fhem
* volume /opt/yowsup-config
* Imagemagic
* avrdude - firmware flash
* Python - yowsup (separate volume) for whatsapp client - volume: /opt/yowsup-config
* Open-SSH daemon
* Exposed ports: 2222/SSH, 7072 Fhem-raw, 8083-8085 Fhem Web, 9001 supervisord
* supervisord for fhem, ssh
* cron daemon / at
* NFS client and autofs /net
* ssh root password: fhem!
* USB tools for CUL hardware
* Fhem start mit PID
* supervisor web-ui at port 9001 (user:admin pass:admin) (** new **)
* perl db Module für dblog (Tested SQLITE + MYSQL) (** new **)



Holen:
docker pull pipp37/fhem_jessie

Run:

docker run -d --name fhem --cap-add SYS_ADMIN -p 7072:7072 -p 8083:8083 -p 8084:8084 -p 8085:8085 -p 2222:2222 pipp37/fhem_jessie


Wenn NFS nicht funktioniert mit  --privileged     starten.
docker run -d --name fhem --privileged -p 7072:7072 -p 8083:8083 -p 8084:8084 -p 8085:8085 -p 2222:2222  pipp37/fhem_jessie

Run with volume on host:
docker run -d --name fhem --cap-add SYS_ADMIN -v /var/fhemdocker/fhem:/opt/fhem -p 7072:7072 -p 8083:8083 -p 8084:8084 -p 8085:8085 -p 2222:2222 -p 9001:9001 pipp37/fhem_jessie

USB:
Parameter z.B. --device=/dev/bus/usb/001/002
Mit lsusb am host die devices suchen.
lsusb -v | grep -E '\<(Bus|iProduct|bDeviceClass|bDeviceProtocol)' 2>/dev/null


Diverse Befehle:
Running containers:
docker ps
docker ps -a

Attach shell to container with:
docker exec -it ContainerID /bin/bash

Stop FHEM inside container supervisorctl stop fhem Start FHEM inside container supervisorctl start fhem
Stop
docker stop fhem

Start
docker start fhem

GUI FHEM: http://ipaddress:8083 GUI supervisord: http://ipaddress:9001
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

betateilchen

Kannst Du mir mal bitte die Stelle aus dem Dockerfile zeigen, an der Du ENTRYPOINT oder CMD definiert hast?

Ich scheitere bei meinen eigenen Docker-Basteleien seit Stunden daran, das automatische Starten von fhem im container zu realisieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

pipp37

#2
https://github.com/pipp37/fhem_jessie


Ich hab alles auch auf Github.


Info: Ich hab den Fhem Start mit dem supervisord gemacht.


Dockerfile ..

ADD run.sh /root/run.sh
ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
ENTRYPOINT ["./run.sh"]


run.sh

#!/bin/bash
# Run command for docker service fhem and sshd

# check if ssh-keys exists
test -x /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server
/etc/init.d/ssh start
echo "Current directory : $(pwd)"
echo "Environment RUNVAR: $RUNVAR"
echo "There are $# arguments: $@"

# make pidfile rundir for fhem (because /var/run  ist tmpfs in ram)
if [ ! -d /var/run/fhem  ]; then
    mkdir /var/run/fhem
    chown -R fhem:root /var/run/fhem
fi

if [ -z "$1" ]; then
    echo "No argument supplied. Start supervisord"
    /etc/init.d/dbus restart

    # nfsclient / rpcbind
    mkdir /run/sendsigs.omit.d
    service rpcbind restart

    # autofs
    service autofs restart

    service avahi-daemon start
    service cron restart
    /usr/bin/supervisord
  else
    echo "Execute: $1 "
    $1
fi




supervisord


[supervisord]
nodaemon=true

[program:fhem]
command=/etc/init.d/fhem start
# autostart=true
# autorestart=true
# stopasgroup=true

stderr_logfile=/var/log/fhem.err.log
stdout_logfile=/var/log/fhem.out.log
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

pipp37

Nachtrag:
Fhem darf nicht als Daemon laufen - darum der supervsord.
LG
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

betateilchen

ok, danke. Ich schau mal, ob ich damit weiterkomme.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Chris8888

Hallo,
ich habe dein Dockerimage gerade auf meiner Qnap installiert.

Läuft bisher super, die Perfomance ist deutlich besser als mein Pi1.

Nur leider bekomme ich den CUL nicht aktiviert.

Die Qnap erkennt den CUL sauber:
[~] # lsusb
Bus 001 Device 002: ID 1c05:2074 
Bus 001 Device 003: ID 1005:b155 Apacer Technology, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 03eb:204b Atmel Corp. LUFA USB to Serial Adapter Project
...

Alle Testversuche per
define CUL_HM CUL /dev/ttyUSB0 4333
define CUL_HM1 CUL /dev/ttyACM0 4444
define CUL_HM2 CUL /dev/ttyAMA0 4555
enden in einem "Disconnected".

Liegt es an einem falschen "Pfad" oder kann der Container gar kein USB durchgereicht bekommen?
In den Settings habe ich den Container als "Priviliegert" markiert und alle "Geräte" freigegeben.

Muss man da noch mehr machen?

Vielen Dank für eine Idee vorab!

Viele Grüße
Christian
FHEM 6.0 auf einem PI4 mit div. Homematic-Komponenten, Alexa, Tablet-UI und Homebridge...und läuft einfach. Erweitert mit CCU3 und Homematic-IP...und läuft immer noch.

betateilchen

Du musst das usb device genauso wie ein Speichervolume als mountpoint an docker uebergeben.

docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb <image> <command>
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Chris8888

Hallo Betateilchen,

danke für deinen Tip.
Da ich bisher alles per Web-Gui eingerichtet habe, muss ich mich wohl erst einmal mit der Kommandozeile von Docker beschäftigen.

Ich fürchte, ich werde verzweifeln....ich schubse eigentlich nur Mäuse. ;-)

VG
Christian
FHEM 6.0 auf einem PI4 mit div. Homematic-Komponenten, Alexa, Tablet-UI und Homebridge...und läuft einfach. Erweitert mit CCU3 und Homematic-IP...und läuft immer noch.

fhemwallah

Hi Armin,

ich bin gerade dabei, Dein Docker file sevolino/fhem zu installieren.

Hast Du Rückmeldungen, ob es sich auf Synology installieren lässt?

Hast Du Erfahrungen mit ModBus? Ist 99_modbus.pm in Deinem Paket enthalten? Muss ich bei einer Docker-Installation etwas mehr tun, als bei einer "normalen" Installation?
(https://forum.fhem.de/index.php/topic,12655.0.html)

Wieviel UI/Frontend ist in Deinem Dockerfile bereits enthalten?

Vielen Dank,

FHEMwallah


pipp37

Hallo.
Das Image sollte laufen - habe jedoch noch keine Rückmeldung zu Synology.
Installiere es einfach mal.  Geht ja rasch dank Docker.

Modbus verwende ich selbst nicht. Ich habe es auch nicht in das Image integriert. Du kannst aber jedes zusätzliche Modul per SSH Port 2222 in das Docker Image installieren.

Ich habe gerade das Image zum Testen in einer nackten virt. Maschine installiert und ein update mit shutdown restart im Fhem Frontend gefahren. Alles problemlos und ohne Fehler. :) :)
LG
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

wopl

#10
Hallo,
auch ich versuche gerade FHEM unter Docker im QNAP zu installieren.
Ich bekomme jedoch auch den USB Cul nicht eingebunden.

Zitat von: betateilchen am 16 Mai 2016, 19:14:24
Du musst das usb device genauso wie ein Speichervolume als mountpoint an docker uebergeben.

docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb <image> <command>

Muß da wirklich /dev/bus/usb stehen oder muß ich mir erst den Richtigen raussuchen?
Weder im QNAP noch im Docker ist ein /dev/ttyACM0 (oder so ähnlich) sichtbar. Muß ich hier noch den CDC-ACM Treiber installieren oder sollte es mit obigem Kommando direkt laufen?
Sollte der CUL dann in Docker auch unter /dev/ttyACM0 oder etwa unter /dev/bus/usb/001/002 via FHEM angesprochen werden?

Zu viele Fragen, um alle kombinatorischen Möglichkeiten auszuprobieren. Daher vielen Dank für jede Hilfe.
Gruß Wolfram

So, nach ein paar Stunden googeln und probieren hab ich den CUL jetzt endlich initialisiert bekommen.
Zunächst habe ich im QNAP Server den cdc-acm Treiber eingebunden:

depmod cdc-acm

!!! nur aktiv bis zum nächsten Boot, da muß ich mich noch drum kümmern !!!

Dann ein RUN des Docker-Containers (von der Konsole, da ich z.Zt. noch nicht weiß, ob die grafische Oberfläche das --device einbinden kann:

docker run -t -i --name fhemtest --privileged -p 7072:7072 -p 2323:2323 -p 8083:8083 -v /share/Data/docker/fhem/usrsharefhem:/usr/share/fhem --device=/dev/ttyACM0 woppl/fhem /bin/bash

!!! auch obiger Code nur als Beispiel. Läuft z.Zt. interaktiv in der bash. Wenn ich nun FHEM in /opt/fhem starte, ist mein CUL zumindest mal initialisiert.

Vielleicht hilfts ja jemandem ein wenig Zeit bei der Recherche zu sparen.
Gruß Wolfram


Haussteuerung mit 300 Devices, Kopplung mit Wago SPS, InfluxDB (Grafana), HomeMatic, Tinkerforge (Fensterkontakte), SmartMeter, Heizungsüberwachung/-logging... Installation in QNAP NAS Docker container vollautomatisiert mit Ansible und GITlab

somansch

Hallo Pipp37,

ich habe deinen Docker-Container gerade auf meiner QNAP getestet, da ich diesen Lösungsansatz sehr charmant finde  ;)

Prinzipiell funktioniert FHEM, jedoch habe ich kein DNS verfügbar und kann somit später FHEM nicht aktualisieren  :-[

Dies ist die Rückmeldung nach "update check": "http://fhem.de/fhemupdate/controls_fhem.txt: Can't connect(1) to http://fhem.de:80: IO::Socket::INET: Bad hostname 'fhem.de:80'"

Beim Starten kommt folgender Eintrag, welcher sehr wahrscheinlich dafür verantwortlich ist:
"[....] Starting Avahi mDNS/DNS-SD Daemon: avahi-daemonTimeout reached while wating for return value                                                                                                                                   
Could not receive return value from daemon process.                                                                                                                                                                                   
(warning). 
"

Habe auch schon ein Downgrade der "Container Station" durchgeführt, da laut QNAP mit der aktuellen Version noch Probleme bestehen?! Siehe: https://forum.qnapclub.de/thread/38713-internetzugriff-aus-containern-nicht-mehr-m%C3%B6glich/

Komme aus der IT-Welt, habe jedoch kein tiefgehendes Wissen über Linux und Docker, daher wäre eine "DAU-Anleitung" für weiteres Troubleshooting hilfreich  ;D

Danke im voraus,
Andreas

Bastler

Hallo Andreas,

hatte auch mal versucht auf einer QNAP TS-251 FHEM in dem Docker von Pipp37 zum laufen zu bekommen.
Bin aber daran gescheitert, dass die NAS den Jeelink als UPS erkennt und 100% Systemlast erzeugt.
In der QNAP gibt es im aktuellen Stand keine Möglichkeit den UPS Support auszuschalten.
Alle Tricks die ich im Internet gelesen habe waren keine dauerhafte Lösung. :-(
Der Support ist auch nicht wirklich gewillt das Problem zu lösen. Nach drei Wochen Mailverkehr habe ich aufgegeben.

Wenn Du aber keinen Jeelink hast der per USB angeschlossen ist, dann ist der Docker Container von Pipp37 die erste Wahl.

Gruß
Otto
fhem5.8@VNWare ESXi 6.5 Intel_NUC6i5

somansch

Hallo Otto,

danke für dein Feedback. Ich plane, einen CUL einzusetzen, welcher diese Woche geliefert wird. Bezieht das "UPS" Problem generell auf alle USB Devices?

Im Moment scheitert es jedoch schon am fehlenden DNS...

Viele Grüße,
Andreas

Bastler

Hallo Andreas,

das Problem liegt an dem USB-Serial Chip des Jeelink. Die QNAP NAS ordnet den FTDI Chipsatz des Jeelink der UPS Stromversorgung zu.
Glaub mir es gibt schönere Mölichkeiten seine Zeit zu verschwenden.
QNAP hat in der Version 6 den Punkt zur Deaktivierung der UPS aus dem Konfigurationsmenü herausgenommen.

Wenn Du FHEM auf der QNAP betreiben willst, dann versuch es mal mit dem LacrosseGateway über das Netzwerk. Das sollte gehen, habe ich aber noch nicht getestet.

Gruß
Otto
fhem5.8@VNWare ESXi 6.5 Intel_NUC6i5