Migration von einer Homematic CCU2 zu IP Symcon 4.0

Ich möchte hier meinen Umstieg von meinem Aktuell rein mit einer Homematic CCU2 gesteuerten Smarthome auf ein IP Symcon gesteuertes System Dokumentieren das mir in Zukunft folgende Vorteile bieten wird:

  • eine Bessere Integration von Anderen Systemen (1-Wire, KNX, usw…)
  • Höhere Zuverlässigkeit (Timer ohne cuxd.timer in der CCU sind nicht zuverlässig!)
  • Modernes Web UI (über den Reverse Proxy Nutzbar!)
  • Möglichkeit der Integration einer Erweiterten Visualisierung.
  • Einfache Skalierbarkeit der Zentralen Steuer Hardware (von einem PI bis hin zu einem x86 Server)

Warum das den nun?

Ich wollte weg von einer Reinen Bastel- Lösung wie es alle Alternativen aktuell sind und möchte auch in Zukunft Updates und auch Support.

Ziel ist es nur noch einmal alle Programme in ein anderes System zu migrieren sowie einen fließenden Übergang von CCU auf IP Symcon!

Nachdem die Version 4.0 von IP Symcon nun auch native unter Linux Lauffähig ist habe ich diese getestet und bin gerade dabei mein Homematic System auf IP Symcon zu migrieren.

Weiters gefällt mir PHP als Programmiersprache viel besser als die Alternativen von (FHEM, OpenHab, io.Broker usw…)

Konzept

In Zukunft wird es auch weiterhin eine CCU geben, diese wird aber nur mehr zum Anlernen von HM Komponenten und zum Verwalten der Direktverknüpfungen sowie von IP Symcon als „Gateway“ zu allen HM Funk und Wired Komponenten genutzt.

Hardware Anforderungen

Da ich meine Aktuelle CCU2 schon als LXCCU auf einem Raspberry PI 2 betreibe habe ich IP Symcon 4 direkt auf dem PI Installiert somit gibt es keinen bedarf einer neuen Hardware. Wenn natürlich in Zukunft die IP Symcon Installation wächst und die Leistung des PI nicht mehr ausreichen sollte kann ich die Installation einfach auf eine andere Leistungsfähigere Hardware migrieren.

Installation

IP Symcon am Server

Diese ist sehr einfach da nur das Repository und der Key von IP Symcon hinzugefügt werden muss und von da an bekommt ihr die Updates über das Betriebssystem.

Das Repository in die sources.list eintragen

sudo nano /etc/apt/sources.list

dort dann die Zeile

deb http://apt.ip-symcon.de/ stable main

den key installieren mit:

wget -qO - http://apt.ip-symcon.de/symcon.key | sudo apt-key add -

und nun alles neu einlesen / aktualisieren mit:

sudo apt-get update && sudo apt-get upgrade

sowie ip symcon installieren:

sudo apt-get install symcon

Beim Installieren wird ein Dienst der beim neustart symcon automatisch startet angelegt dieser kann nun einfach mit:

sudo service symcon [start / stop / restart] 

manuell gesteuert werden.

Client Console

Nachdem wir den symcon Dienst nun Installiert und gestartet haben können wir uns mit der Remote Verwaltungskonsole zum Server verbinden. Die Verwaltungskonsole wird am Client gestartet und diese findet ihr unter folgendem Link: ips_console.exe

Nach dem Starten dieser müsst ihr noch die Benutzerdefinierte Verbindung wie folgt einrichten:

Solltet ihr auch mit einem Linux System als Client arbeiten und dort die Remote Verwaltungskonsole ausführen so führt folgende Schritte auf eurem Linux Client aus:

sudo apt-get update && sudo apt-get install wine winetricks

dann die fehlenden Pakete installieren:

sudo winetricks msxml3  
sudo winetricks gecko  
sudo winetricks corefonts
sudo winetricks volnum  
sudo winetricks vcrun2008

Nun kann einfach mit:

sudo wine /pfad/zur/ips_console.exe /<ip von symcon server>:3777

Die Konsole gestartet werden.

Konfiguration

Installieren der Lizenz

In der Konsole einfach mit dem Assistenten den Benutzernemen / Email Adresse eingeben und die Lizenz Datei auswählen:

Lizenz Installieren

Hinzufügen der CCU

In Der Konsole auf „Konfiguratoren verwalten“ Klicken

hier auf [NEU] Klicken und dann Homematic Auswählen:

Die IP Adresse der CCU sowie des IP Symcon Server's (Ereignissserver) Eingeben / überprüfen:

Nach Klicken auf Übernehmen sollten nun die auf der CCU verfügbaren Geräte angezeigt werden.

Geräte aus der CCU in IP Symcon hinzufügen

Standardmäßig werden nicht alle Geräte der CCU in IP Symcon angelegt, dies muss manuell für jedes Gerät erfolgen. Auch übernimmt IP Symcon nur die Homematic Adresse (Seriennummer) und nicht den Namen des Gerätes, die Benennung in IP Symcon muss nach dem Erstellen manuell erfolgen.

Da IP Symcon die Lizenz über die Anzahl der Variablen Berechnet macht es durchaus sinn nicht alle Geräte und vor allem nicht alle Kanäle der Geräte in IP Symcon anzulegen! Z.B. ein Raumthermostat hat vier Kanäle, der erste mit den aktuellen Temperatur / Luftfeuchte Werten und der Zweite mit der Klima Regelung und der dritte mit Service (Batterie) und dem Sollwert machen sinn aber der vierte mit dem Fensterkontakt für mich nicht womit Variablen „gespart“ werden.

Bei mir benötigt ein Raum mit Heizungsregelung und Rollladen sowie Fensterkontakt 27 Variablen, sollte noch Licht dazu kommen sind es natürlich je nach verwendeten Aktor und in IP Symcon erstellten Kanal mehr. Aber ich habe bei allen Batterie Betriebenen Komponenten auch den MAINTENANCE Kanal in IP Symcon erstellt (in dem oben Beschriebenen Raum sind es drei die jeweils 6 Variablen benötigen) weil ich den Batteriestatus damit Überwachen / Dokumentieren kann, außerdem sind hier auch die RSSI (Empfangswerte) und diese können so auch einfach bei Problemen Aufgezeichnet werden.

Je nach Gerät werden bei der Erstellung aller Kanäle bis zu dreizehn Variablen (Schaltaktor mit Leistungsmessung) benötigt!

Am einfachsten sie öffnen das CCU Webinterface und dort die Einstellungen / Geräte Seite, hier sehen sie in der Spalte „Seriennummer“ des gewünschten Gerätes und können dieses in der IP Symcon Verwaltungskonsole suchen und dann dort auf Erstellen Klicken.

Die soeben erstellten Geräte werden dann in der IP Symcon Konsole unter Objektbaum / Logische Baumansicht angezeigt:

Dort können wir diese nun einfach Umbenennen sowie in die Kategorien verschieben.

Wie überall Empfholen habe ich auch eine Kategorie Struktur nach Räume / Geschoß / Raum erstellt. Es dürfen auch die selben Namen in verschiedenen Kategorien verwendet werden, das macht auch sinn weil jeder Raum einen Raumthermostat hat und durch die Struktur seine Zugehörigkeit ersichtlich ist.

Mögliche Konfiguration / Darstellung eines Raumes

Auch können wir die Geräte eines Raumthermostats zusammenfassen indem wir z.B das CLIMATECONTROL_REGULATOR Ausblenden:

und nur den Datenpunkt SETPOINT im Raumthermostat anzeigen:

Hier als Beispiel die Einstellungen der Variablen in der Konsole mit der daraus resultierenden Ansicht des Web Interfaces:

Systemvariablen Übernehmen

Da die CCU keine Möglichkeit anbietet mit RPC die System variablen auszulesen muss dies Manuell gepollt werden.

Das hört sich schlimmer an als es ist und auch hat keine andere Software eine bessere Lösung an die Systemvariablen zu kommen.

Wenn es das hier vorgestellte Modul auch für Linux gibt ist dies dem folgenden vorzuziehen! Weil dies ohne XML AddOn sowohl die System variablen aus der CCU lesen und auch schreiben kann sowie auch alle Programme der CCU in IPS anzeigt und Ausführbar macht.

Ich habe den weg über das bei mir in der CCU bereits Installiert AddOn XML-API gewählt, dazu muss in der CCU eben dieses Addon Installiert werden. Wie das geht findet ihr hier

Die Informationen dazu habe ich von hier.

Wir legen eine Kategorie „Systemvariablen“ im Objektbaum an:

Hier ein neues Script:

dem wir den namen „read_sysvars“ geben:

dann den Inhalt aus dem Link oben https://www.symcon.de/wiki/Systemvariablen#Mit_installierten_XML-API_Patch einfügen und die IP Adresse der CCU so wie im folgenden Bild dargestellt eingeben:

Nun können wir das Script manuell Starten über das Kontex Menü:

Wenn dies erfolgreich gelaufen ist und die System variablen erstellt wurden können wir einfach ein Zeitgesteuertes Ereignis welches das Script alle 30 Sekunden ausführt hinzufügen:

Programme

Beispiel eines Programms das alle „Lichter“ schalten kann. Im Gegensatz zu Homematic wo per Skript alle Geräte eines Gewerks durchlaufen werden können kann in IP Symcon per Script alle Variablen welche ein Profil zugeordnet haben durchgehen. Dies ist unabhängig welches System dahinter steht, also egal ob Homematic, FS20, KNX…

Den Code habe ich hier gefunden.

<?
/* ----------------------------------------------------------------------
Alle Lichter aus / anschalten
 
Dieses Script ermittelt alle Lichter anhand eines Profils und schaltet
diese ein bzw. aus.
 
Wird das Skript normal aufgerufen, schaltet es aus. Über runScriptEX kann
aber auch der Wert mitgegeben werden:
IPS_RunScriptEx(<SCRIPTID>, Array("VALUE"=>true, "FORCE"=>true);
 
$c_profiles: string,  Variablenprofil das geprüft werden soll
$c_force: true/false, Wenn TRUE wird auf jeden Fall geschalten, egal
             ob der aktuelle Wert in IPS bereits den Zielwert hat.
             Bei Systemen ohne Rückkanal notwendig.
$c_delay: integer, Millisekunden Pause bis zum nächsten Schaltvorgang
 
----------------------------------------------------------------------*/
 
$c_profiles[] = "Licht";
$c_profiles[] = "Lichter";
 
$c_force = false; // S.o.
$c_delay =  250;
 
 
 
/* End of configuration ------------------------------------------------*/
DEFINE("ZWAVE","{101352E1-88C7-4F16-998B-E20D50779AF6}");
DEFINE("FS20", "{48FCFDC1-11A5-4309-BB0B-A0DB8042A969}");
DEFINE("HOME_MATIC","{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");
DEFINE("XCOMFORT","{1B7B5B7D-CAA9-4AB5-B9D8-EC805EC955AD}");
DEFINE("LCN","{2D871359-14D8-493F-9B01-26432E3A710F}");
 
// status Lesen -
$stat = @$_IPS['VALUE'];
settype($stat, "boolean");
 
$force = (isset($_IPS['FORCE']))? $_IPS['FORCE'] : $c_force;
settype($force, "boolean");
 
 
// Alle Lichter ausschalten (mit Profil Licht!)
$a_var = IPS_GetVariableList();
foreach($a_var as $varid){
    $var_info = IPS_GetVariable($varid);
    $var_prof = (!empty($var_info["VariableCustomProfile"]))?
                $var_info["VariableCustomProfile"] :
                $var_info["VariableProfile"];
    $var_data = getValue($varid);
 
    if(in_array($var_prof,$c_profiles) && (($var_data != $stat) || $force) ){
        // Übergeordnete Instanz ermitteln.
        $instid = IPS_GetParent($varid);
        $inst_info = IPS_GetInstance($instid);
        switch($inst_info["ModuleInfo"]["ModuleID"]){
            case ZWAVE:
                ZW_SwitchMode($instid, $stat);
                break;
            case FS20:
                FS20_SwitchMode($instid, $stat);
                break;
            case LCN:
                LCN_SwitchMode($instid, $stat);
                break;
            case XCOMFORT:
                MXC_SwitchMode($instid, $stat);
                break;                 
            case HOME_MATIC:
                HM_WriteValueBoolean($instid, "STATE", $stat);
                break;
        } // Switch
        IPS_Sleep($c_delay);
    } // if
}
?> 
manuals/ip-symcon_migration.txt · Zuletzt geändert: 2015/10/08 16:55 von paulg4h
Recent changes RSS feed Creative Commons License Donate Minima Template by Wikidesign Driven by DokuWiki