Zum Inhalt

FAQ

Wie wechsle ich von der CCU1 auf die CCU2

Um die HomeMatic Installation von einer CCU1 auf eine CCU2 umzustellen, muss wie im nachfolgenden Abschnitt beschrieben ist, vorgegangen werden.

  1. Zunächst muss der VPN-Dienst auf der WebUI der CCU1 unter Einstellungen > Systemsteuerung > meine-homematic.de > Dienste der VPN-Dienst deaktiviert werden.
  2. Nun muss das bestehende CloudMatic-Konto nach der Anleitung mit der neuen CCU2 verknüpft werden.
  3. Für einen Fernzugriff mit Apps, Alexa oder CloudMatic Smarthome, müssen die Firewall Einstellungen auf der neuen CCU2 entsprechend angepasst werden.

Damit sind alle notwendigen Einstellungen gemacht, der Zugriff über CloudMatic erfolgt nun auf CCU2 wie zuvor auf die CCU1.

Wie wechsle ich von der CCU2 auf die CCU3

Um die HomeMatic Installation von einer CCU2 auf eine CCU3 umzustellen, muss wie im nachfolgenden Abschnitt beschrieben ist, vorgegangen werden.

  1. Zunächst muss der VPN-Dienst auf der WebUI der CCU2 unter Einstellungen > Systemsteuerung > CloudMatic > Dienste der VPN-Dienst deaktiviert werden.
  2. Nun muss das bestehende CloudMatic-Konto nach der Anleitung mit der neuen CCU3 verknüpft werden.
  3. Für einen Fernzugriff mit Apps, Alexa oder CloudMatic Smarthome, müssen die Firewall Einstellungen auf der neuen CCU3 entsprechend angepasst werden.

Damit sind alle notwendigen Einstellungen gemacht, der Zugriff über CloudMatic erfolgt nun auf CCU3 wie zuvor auf die CCU2.

Warum funktioniert die App nicht, obwohl der Fernzugriff klappt?

Wenn der Fernzugriff auf die WebUI der HomeMatic Zentrale über den persönlichen Link (https://xxxxx.meine-homematic.de) funktioniert, aber in einer der verwendeten App, welche über unseren Tunnel kommunizieren soll, dennoch keine Daten angezeigt werden (oder die App über unseren Tunnel keine Verbindung aufbauen kann), liegt dies wahrscheinlich an den Firewall-Einstellungen der HomeMatic Zentrale, welche einen Zugriff von außen unterbindet.

In diesem Fall muss die Firewall-Einstellungen der HomeMatic Zentrale geprüft werden. Dies ist im Abschnitt Firewall der HomeMatic Zentrale beschrieben.

Es muss auch sichergestellt werden, dass das verwendete Endgerät über eine Internetverbindung verfügt.

Mein VPN-Zugang ist sporadisch nicht erreichbar, was kann ich tun?

Es kann viele Gründe dafür geben, warum der VPN-Dienst manchmal nicht erreichbar ist, es ist nicht immer einfach diesen zu finden. Es kann z.B. an einer mangelnden oder zu langsamen Internetverbindung liegen. Wir haben ein Skript erstellt, um es zu ermöglichen den Dienst auf der HomeMatic Zentrale zu überwachen und den Fehler einzugrenzen.

Das Skript erstellt automatisch die folgenden Variablen.

Name Variablentyp
StatusCloudMaticVPN Zeichenkette
IstCloudMaticVPNOnline Logikwert
IstInternetOK Logikwert
IstNamensauflösungOK Logikwert
IstCloudMaticErreichbar Logikwert

Es muss ein Programm erstellt werden, welches periodisch alle 5-10 Minuten das folgende Skript ausführt.

! Folgende Variable werden auf der HomeMatic Zentrale angelegt
! Variable vom Typ 'Zeichenkette' mit dem Namen 'StatusCloudMaticVPN'
! Variable vom Typ 'Logikwert' mit dem Namen 'IstCloudMaticVPNOnline'
! Variable vom Typ 'Logikwert' mit dem Namen 'IstInternetOK'
! Variable vom Typ 'Logikwert' mit dem Namen 'IstNamensauflösungOK'
! Variable vom Typ 'Logikwert' mit dem Namen 'IstCloudMaticErreichbar'

! Systemvariable vom Typ Zeichenkette wird definiert und mit Startwert gefüllt
string  svName = "StatusCloudMaticVPN";
object  svObj  = dom.GetObject(svName);
if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
    svObj = dom.CreateObject(OT_VARDP);
    svObjects.Add(svObj.ID());
    svObj.Name(svName);   
    svObj.ValueType(ivtString);
    svObj.ValueSubType(istChar8859);
    svObj.DPInfo("Status des CloudMatic-VPNs");
    svObj.ValueUnit("");
    svObj.DPArchive(true);
    svObj.State("");
    svObj.Internal(false);
    svObj.Visible(true);
    dom.RTUpdate(false);
}

string  svName = "IstCloudMaticVPNOnline";
object  svObj  = dom.GetObject(svName);
if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
    svObj = dom.CreateObject(OT_VARDP);
    svObjects.Add(svObj.ID());
    svObj.Name(svName);   
    svObj.ValueType(ivtBinary);
    svObj.ValueSubType(istBool);
    svObj.DPInfo("Ist der CloudMatic-VPN Online?");
    svObj.ValueName0("Nein");
    svObj.ValueName1("Ja"); 
    svObj.ValueUnit("");
    svObj.DPArchive(true);
    svObj.State(true);
    svObj.Internal(false);
    svObj.Visible(true);
    dom.RTUpdate(false);
}

string  svName = "IstInternetOK";
object  svObj  = dom.GetObject(svName);
if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
    svObj = dom.CreateObject(OT_VARDP);
    svObjects.Add(svObj.ID());
    svObj.Name(svName);   
    svObj.ValueType(ivtBinary);
    svObj.ValueSubType(istBool);
    svObj.DPInfo("Ist die CCU mit dem Internet verbunden?");
    svObj.ValueName0("Nein");
    svObj.ValueName1("Ja"); 
    svObj.ValueUnit("");
    svObj.DPArchive(true);
    svObj.State(true);
    svObj.Internal(false);
    svObj.Visible(true);
    dom.RTUpdate(false);
}

string  svName = "IstNamensauflösungOK";
object  svObj  = dom.GetObject(svName);
if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
    svObj = dom.CreateObject(OT_VARDP);
    svObjects.Add(svObj.ID());
    svObj.Name(svName);   
    svObj.ValueType(ivtBinary);
    svObj.ValueSubType(istBool);
    svObj.DPInfo("Ist die Namensauflösung okay?");
    svObj.ValueName0("Nein");
    svObj.ValueName1("Ja"); 
    svObj.ValueUnit("");
    svObj.DPArchive(true);
    svObj.State(true);
    svObj.Internal(false);
    svObj.Visible(true);
    dom.RTUpdate(false);
}                

string  svName = "IstCloudMaticErreichbar";
object  svObj  = dom.GetObject(svName);
if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
    svObj = dom.CreateObject(OT_VARDP);
    svObjects.Add(svObj.ID());
    svObj.Name(svName);   
    svObj.ValueType(ivtBinary);
    svObj.ValueSubType(istBool);
    svObj.DPInfo("Sind die CloudMatic Server erreichbar?");
    svObj.ValueName0("Nein");
    svObj.ValueName1("Ja"); 
    svObj.ValueUnit("");
    svObj.DPArchive(true);
    svObj.State(true);
    svObj.Internal(false);
    svObj.Visible(true);
    dom.RTUpdate(false);
}       

! Status des Open VPN Prozesses auslesen
integer stdOutOpenVpnProcess;
var stdErrorOpenVpnProcess;
system.Exec("pidof openvpn",&stdOutOpenVpnProcess, &stdErrorOpenVpnProcess);

! Status des Open VPN Tunnels auslesen
var stdOutOpenVpnTun;
var stdErrorOpenVpnTun;
system.Exec("ifconfig",&stdOutOpenVpnTun, &stdErrorOpenVpnTun);

! Status Internet prüfen
integer stdOutInternetPing;
var stdErrorInternetPing;
system.Exec("ping -c 4 8.8.8.8",&stdOutInternetPing, &stdErrorInternetPing);

! Namesauflösung prüfen
integer stdOutDns;
var stdErrorDns;
system.Exec("ping -c 4 google.de",&stdOutDns, &stdErrorDns);

! Erreichbarkeit des CloudMatic Clusters prüfen
integer stdOutCludMaticCluster;
var stdErrorCloudMaticCluster;
system.Exec("ping -c 4 cluster1.meine-homematic.de",&stdOutCludMaticCluster, &stdErrorCloudMaticCluster);

! Ausgaben auswerten
boolean isTun0Online = stdOutOpenVpnTun.Find("tun0") > 0;
boolean isOpenVpnProcessRunning = stdOutOpenVpnProcess > 0;
boolean isInternetAvailable = stdOutInternetPing.Find("4 packets transmitted, 4 packets received") > 0;
boolean isDnsOk = stdOutDns.Find("4 packets transmitted, 4 packets received") > 0;
boolean isCloudMaticClusterReachable = stdOutInternetPing.Find("4 packets transmitted, 4 packets received") > 0;

var state;
if(isTun0Online) {
    state = "VPN-Tunel ist online. ";
} else {
    state = "VPN-Tunel ist offline! ";
}

if(isOpenVpnProcessRunning) {
    state = state # "VPN-Prozess ist gestartet. ";
} else {
    state = state # "VPN-Prozess ist beendet! ";
}

if(isInternetAvailable) {
    state = state # "Internet ist verfügbar. ";
} else {
    state = state # "Internet nicht verfügbar! ";
}

if(isDnsOk) {
    state = state # "DNS OK. ";
} else {
    state = state # "DNS Fehler! ";
}

if(isCloudMaticClusterReachable) {
    state = state # "CloudMatic Cluster erreichbar. ";
} else {
    state = state # "CloudMatic Cluster nicht erreichbar! ";
}

! Status in die Systemvariable schreiben
dom.GetObject("StatusCloudMaticVPN").State(state);
dom.GetObject("IstCloudMaticVPNOnline").State(isTun0Online);
dom.GetObject("IstInternetOK").State(isInternetAvailable);
dom.GetObject("IstNamensauflösungOK").State(isDnsOk);
dom.GetObject("IstCloudMaticErreichbar").State(isCloudMaticClusterReachable);

WriteLine("IstCloudMaticErreichbar: " # isCloudMaticClusterReachable);
WriteLine("IstNamensauflösungOK: " # isDnsOk);
WriteLine("IstCloudMaticVPNOnline: " # isTun0Online);
WriteLine("IstInternetOK: " # isInternetAvailable);
WriteLine("StatusCloudMaticVPN: " # state);

VPN-Dienst automatisiert neu starten, wenn keine Verbindung zu den CloudMatic Servern besteht

Es kann mit den erstellten Variablen geprüft werden, ob die VPN-Verbindung zu den CloudMatic Servern erfolgreich aufgebaut wurde. Dementsprechend kann ein Programm auf der CCU erstellt werden, welches prüft, ob eine Verbindung zum Internet besteht und den VPN-Dienst ggf. neu startet. Dies ist nützlich, wenn die VPN-Verbindung gelegentlich abbrechen sollte.

Achtung

Sollte die VPN-Verbindung regelmäßig abbrechen, sollte sich an den Support gewendet werden.

restartVPN

Verwendete Skripte im Programm:

Skript zum Beenden des VPN-Dienstes:

system.Exec("/bin/sh /etc/config/addons/mh/dienstaus.sh");

Skript zum Starten des VPN-Dienstes:

system.Exec("/bin/sh /etc/config/addons/mh/dienstan.sh");

Benachrichtigung, wenn offline

Nun ist es möglich, sich benachrichtigen zu lassen, wenn der VPN-Tunnel offline ist. Mehr Informationen zu möglichen Benachrichtigungen ist im Abschnitt CloudMatic NotifyMe beschrieben.

Internetverbindung muss vorhanden sein

Für den Versand von E-Mail und SMS wird eine Verbindung zum Internet benötigt!