IP-Symcon via Docker Engine

Hi,

es ist nachvollziehbar, dass der Support unterschiedlichster Linux-Plattformen nicht wirkich umsetzbar ist. Da ich jedoch nicht Ubuntu einsetze sondern Debian oder teilweise Red Hat Derivate, musste eine Lösung her.

Die „Docker engine“ leistet hierbei hervorragende Dienste. Sowohl für die Entwicklung, als auch für die Distribution sind elegante Lösungswege vorhanden.Insbesondere lassen sich „Docker-Umgebungen“ auf nahezu allen Plattformen starten.
Für das Team hinter IP-Symcon eröffnet sich dadurch die Möglichkeit, bereits vorkonfigurierte Appliances verteilen zu können.

Hier mein 1. Wurf bzgl. IP-Symcon:

docker build -t symcon-image http://blog.schmidt.ps/dl/symcon_Dockerfile
  • Starten des Image
docker run -p 3777:3777 --name="symcon" -d symcon-image /usr/bin/symcon

Ab diesem Zeitpunkt ist IP-Symcon unter der IP des Hosts auf dem Docker läuft, erreichbar.
Als Basis stehen folgende Kommandos zur Verfügung:


docker stop symcon
docker start symcon
docker attach symcon

Mehr Infos unter: https://docs.docker.com/
Es stehen noch weitaus mehr Konfigurationen insbesondere Host<->Container Intepedenzen zur Verfügung

[ul]
[li]Interne Kommunikation zwischen Containern[/li][li]Mounten von Host Verzeichnissen[/li][li]uvm…[/li][/ul]

Hoffe damit einige Anregungen für „mehr“ gegeben zu haben…

Viele Grüße
Sascha

Wie bekomme ich meine alte Konfiguration in den Container?

Zum Zeitpunkt des Image-Baus wurde ein virtuelles Volume für „/usr/share/symcon“ angelegt.

Mit dem Kommando:

docker inspect symcon

lässt sich der lokale Pfad dorthin herausfinden. D.h. dass dieser lokale Pfad, dem Pfad im Container entspricht.

Ich würde gerne ein fertiges Image über die Docker Registry bereitstellen wollen. Darf ich hier die IP-Symcon Software mit hinzufügen? Oder ist diese nur „Testern“ vorbehalten? Somit könnte ggf. direkt ein Test-Image über Docker bezogen werden…

Habt Ihr hierzu Ideen? Anregungen? Hinweise?

Solange wir die Public-Beta durchführen und die Dateien von uns öffentlich zum Download angeboten werden (also ohne vorher die Lizenz angeben zu müssen) sehe ich kein Problem. Sofern sich das in Zukunft mal ändern sollte, müssen wir ggf. eine andere Regelung finden.

Achtet bitte darauf, dass du nicht zufällig deinen Lizenzkey mit anbietest.

paresy

Gute Idee! Aber: die Daten werden nicht persistiert :frowning:

Hi,

hast Du zufällig HomeMatic in IP-Symcon im Docker am laufen ?

Ich habe die Ports 2000, 2001, 3777 und 5544 vom Host auf den Docker Container gemappt aber irgendwie bekommt er keine Verbindung.

Gruß
Tobias

Hallo Zusammen

ich häng mich mal an diesen Thread.
Nachdem mein neuer Server unter Fedora 22 läuft, bin ich gerade dabei einige Anwendungen wie z.B. tvheadend und eben IPS in Docker-Container zu verpacken.

tvheadend als TV-Server mit 2 DVB-S2-Doppeltunern käuft schon problemlos im Container und jetzt habe ich mal mit IPS angefangen. Das erste Image findet ihr auf https://registry.hub.docker.com/u/blockmove/symcon/

wenn ihr docker bereits auf eurem System habe, dann erfolgt die Installation des Images mit

docker pull blockmove/symcon

Wie bereits weiter oben angemerkt sind die Daten im Container nicht persistent.
Daher mussen Verzeichnisse (Volumes) vom Host dem Container übergeben werden.
In meinem Fall handelt es sich hier um:

[ul]
[li]/etc/symcon[/li][li]/root[/li][li]/usr/share/symcon[/li][/ul]
Diese Verzeichnisse werden beim Start des Containers mit der Option -v übergeben

Das Durchreichen der Devices erfolgt mit der Option –device. Diese Option könnt ihr mehrfach aufrufen und so alle eure benötigten Devices dem Container verfügbar machen
Nähere Details findet ihr in der Docker Dokumentation.
Der Start des Containers zu Versuchszwecken kann so aussehen:

docker run -i -t --name="symcon" --net="host" --device /dev/USB0:/dev/USB0 -v /mnt/data1/@appdata/symcon/etc:/etc/symcon -v /mnt/data1/@appdata/symcon/share:/usr/share/symcon -v /mnt/data1/@appdata/symcon/root:/root blockmove/symcon

Am einfachsten startet ihr den Container einmal und stoppt ihn gleich danach.
Anschliessend kopiert ihr die Konfiguration in die entsprechenden Hostverzeichnisse.

Über Feedback würde ich mich freuen.

17.07.2015:
Ich hatte etwas Zeit und hab nun die Netwerk-Zugriffe (z.B. für Homematic-Status) zum Laufen gebracht.
Startet man docker run mit der Option –net=„host“ dann klappt es. Ein Übergeben der Ports ist nicht mehr notwendig.

05.07.2015:
Ich habe Port 5544 für Homematic hinzugefügt
Das Repository ist umgestellt auf „Automated Build“ und das Dockerfile nun verfügbar
Das Volume „/usr/share/symcon“ habe ich hinzugefügt

Gruß
Dieter

Bislang läuft bei mir Homematic ohne IPS. Hab es aber gerade mit meinem Docker-Image getestet. Das Einlesen der Teilnehmer über Homematic-Konfigurator klappt. Eine Schaltsteckdose kann ich anlegen und über die Test-Buttons auch schalten.
Die Homematic-Ports musste ich nicht extra mappen.

Gruß
Dieter

Nur um es deutlicher zu Beschreiben für HM.
IPS braucht 5544 eingehend. Der muss weitergeleitet werden, sonst geht der Rückkanal (Events wenn Geräte z.b. per Hand/CCU bedient werden) nicht.
Die beiden anderen sind aus IPS Sicht nur abgehend (IPS schaltet oder fragt Gerät ab).
@Tobias
Kann somit eigentlich nur an der CCU-Seite liegen.
Michael

Am einfachsten ist es wohl, wenn man docker run mit der Option –net=„host“ startet.

Gruß
Dieter

Hallo,

ich konnte den Fehler jetzt verifizieren, Homematic funktioniert.

Der Fehler der mich etwas verwirrt hat ist der bereits beschriebene bzgl. der Aktualisierung von Homematic Geräten.
Geräte werden geschaltet aber der Zustandwird nicht aktualisiert.

Gruß
Tobias

Ich hatte heute etwas Zeit und hab mich mit dem Homematic-Status beschäftigt … Nun klappt es :slight_smile:
Startet man docker run mit der Option --net=„host“, dann funktionieren alle Zugriffe.

Wer will kann ja mal testen.

https://registry.hub.docker.com/u/blockmove/symcon/

docker pull blockmove/symcon

Viel Spass

Dieter

Habe es getestet, das war’s.
Funktioniert jetzt prima.

Gruß
Tobias

Super! IPSymcon läuft bei mir damit jetzt auf einer Synology im Docker Container.

Kleine Ergänzung noch zur Installation auf der Synology mit der Docker App:
Leider kennt die Synology App kein --net , --device und -i. Da muss ich die Geräte wohl übers Netzwerk reingeben
Das /docker-Verzeichnis ist ein Share, man darf hier nicht den physischen Pfad auf der Synology angeben.


docker run -t --name="symcon" -p 3777:3777 -v /docker/symcon/etc:/etc/symcon -v /docker/symcon/share:/usr/share/symcon -v /docker/symcon/root:/root blockmove/symcon

Die Unterverzeichnisse symcon/etc, root und share muss man zuvor manuell anlegen.

Hier ein paar Screenshots:




Man muss natürlich über die Remote Konsole die Lizenz installieren und das remote Password setzen. Ich verwende zum setzen des Passwortes dieses Script:

#!/bin/bash
if [ -e /root/.symcon ]; then
	echo "Enter new IPSymcon remote concole password:"
	read -s PASS
	B64=$(echo -n "$PASS" |base64)
	#delete alt entry, if any
	sed -i -e '/Password=/d' /root/.symcon
	#set new entry
	sed -i -e "$ a Password=${B64}" /root/.symcon
	echo "finished, Please restart to activate!"
else
	echo "/root/.symcon missed"
	echo "please set license first via remote console connecting to port 3777"
	echo "this will create /root/.symcon"
fi

Das kopiert man auf die synology in /docker/symcon/root

Tommi

Ich habe auch Symcon unter Docker auf einer Synology laufen.
Wenn Du den Container das erste mal von Hand auf der Konsole erstellst nimmt er die Optionen --net und -i.

Bei mir sieht der Aufruf auf der Syno dann so aus:

docker run -i -t --name="symcon" --net="host" -v /volume1/data/symcon:/usr/share/symcon -p 3777:3777 -p 5544:5544 symcon:0.1-185 /usr/bin/symcon

Das Volume und das Abbild muss nätürlich angepasst werden.

Gruß
Tobias

Hey jungs, Hammer Sache!

Habe gestern meinen neuen Server bekommen und gleich ubuntu und docker installiert. Aus jucks - ich ging davon aus dass es sicherlich nichts davon gibt - habe ich nach ipsymcon und docker gegoogelt. Hammer!

Ich werde es in den nächsten Tagen ausprobieren.

gruss Andi

Wenn du Probleme hast, dann kannst du mich melden. Das blockmove Image ist von mir.

Gruß
Dieter

Hallo zusammen,

Danke mal für die hervorragende Arbeit… läuft soweit ganz gut auf einem Synology NAS.

Wie aktualisiere ich ip-symcon im docker container?

Falls du mein Image (blockmove/symcon) verwendest, dann gibt es primär keine Möglichkeit ip-symcon im Container zu aktualisieren. IPS ist quasi statisch im Image.
Wenn ich im Forum lese, dass es eine neue Linux-Version von IPS gibt, dann erstelle ich ein neues Image.
Dieses kannst du dann bei dir aktualisieren. Ich weiss nicht ob es bei deinem Nas eine GUI dafür gibt, per Kommandozeile funktioniert dies mit „docker pull blockmove/symcon“
Deine Konfig bleibt erhalten … sofern du sie dem Container als Volume übergeben hast.

Gruß
Dieter

Hallo zusammen

Auf Basis von Dieter’s image, habe ich mir ein eigenes Dockerfile geschrieben, da ich noch so einiges anderes darauf haben wollte. SFTP Server, python, apc Server und und und…

Source und Konfig sind im container bei mir und werden täglich oder bei Bedarf gebackuped. Sobald ich ein neues Image erstelle, kopiere ich die Sourcen wieder rein, wobei das Neu-Erstellen zur Zeit nicht notwendig ist. Das Image ist bei mir so aufgebaut, dass ich das update auf dem container vornehmen kann ohne ein neues Image zu schreiben. Wenn Ihr interesse habt, kann ich hier mein Docker-File posten.

gruss Andi