Skip to content

Ermöglicht eine zeitgesteuerte Datensicherung von Logfiles von der Homematic CCU2 auf Google Drive.

License

Notifications You must be signed in to change notification settings

MAF1981/HomematicCCU2-GoogleDriveBackup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 

Repository files navigation

HomematicCCU2-GoogleDriveBackup

Zeitgesteuerte Datensicherung von der Homematic CCU2 Zentrale auf einen Google Drive Account.

Einleitung

Mit diesem Skript lassen sich Daten von einer CCU2 Zentrale des Smart-Home Systems Homematic der Firma eQ-3 auf einem Google Drive Account in der Cloud sichern. Dabei lässt sich das Skript entweder über die Homematic Weboberfläche mittels Programmverknüpfung und dem Zeitmodul steuern oder kann - unabhängig - direkt auch als Cronjob auf der CCU2 laufen. Das TCL-Skript kommt dabei ohne weitere Bibliotheken oder Abhängigkeiten aus. Dies ist insofern interessant, als das die Homematic Zentrale mit der TCL Version 8.2 ausgeliefert wird - das Release-Datum dieser TCL-Version war der 16.12.1999! In dieser Version gab es keinen Support für JSON und auch viele andere Sprachkonstrukte, die das Leben einfacher machen, waren noch nicht implementiert.

  1. Einrichten der Google Developer Console
  2. Einrichten von Google Drive
  3. Anpassungen im Skript
  4. Einrichten des Backups auf der CCU2

Voraussetzungen

Folgende Voraussetzungen werden für das Projekt benötigt:

  • Google Account
  • Die Zentrale des Homematic Smart-Home Systems CCU2 der Firma eQ-3
  • Auf der Homematic CCU2 muss das AddOn CUxD (CUx Daemon) installiert sein
  • FTP Zugriff auf die Homematic CCU2 (bpsw. FileZilla)
  • SSH Zugriff auf die Homematic CCU2 (bspw. PuTTY)

Kurzanleitung

  1. In Google Developer Console (http:https://console.developers.google.com) die Google Drive API aktivieren und dazu einen OAuth 2.0 Client (Web-Applikation) anlegen um client ID und client secret Schlüssel zu bekommen
  2. TCL-Skript öffnen und als Werte für die Parameter google_client_id und google_client_secret die Werte des OAuth 2.0 Clients setzen.
  3. TCL-Skript in ein Verzeichnis auf die Homematic CCU2 hochladen (bspw. /usr/local/gdrive) und Verzeichnis + TCL-Skript mit folgenden Berechtigungen versehen (CHMOD): 755
  4. Mit PuTTY auf die Homematic CCU2 einloggen, in das Verzeichnis (/usr/local/gdrive) des TCL-Skriptes wechseln und dann folgenden Befehl ausführen:
>tclsh ./gdrive_backup -r

muss mit diesen Schlüsseln ein Webservice der Google Drive API aufgerufen werden, welcher eine eindeutige Geräte-Id und einen Gerätecode zurückliefert. Mit dem Geräte-Code muss

Schritt-für-Schritt Anleitung

Im Folgenden wird Schrittweise erklärt, welche Einstellungen vorgenommen und welche Parameter gesetzt werden müssen, damit das automatische Backup nach Google Drive funktioniert.

Google Developer Console

Text nochmal überarbeiten

Als erstes werden die Voraussetzungen geschaffen, dass man sich bei Google Drive authentifizieren kann um dessen API zu verwenden. Die Authentifizierung erfolgt über das OAuth Verfahren, bei dem man sich mit einer Client-Id und einem geheimen "Client-Secret" Schlüssel bei der Google Drive API anmelden muss. Hat man die Schlüssel erzeugt ist das weitere Vorgehen wie folgt: Von dem Gerät, von dem aus man den Zugang zur Google Drive API benötigt (in unserem Fall die Homematic CCU2), wird ein spezieller Webservice aufgerufen, als Parameter werden die OAuth Schlüssel übergeben. Die Antwort enthält wiederum einen eindeutigen Geräteschlüssel und einen Geräte-Code, mit dem man sich einmalig manuell bei Google das Gerät freischalten lassen muss. Danach erfolgt ein einmaliger Aufruf eines anderen Webservices, welcher einen s.g. Access-Token und - viel wichtiger - einen Refresh-Token mitliefert. Letzterer ist wichtig, da der Access-Token nur immer 60 Minuten (3600 Sekunden) gültig ist. Mit dem Refresh-Token lässt sich dann ein neuer Access-Token generieren.

Aber der Reihe nach!

Schritt 1: Login Developer Console

Wir loggen uns mit dem User an der Google Developer Console an, bei dem später das Backup in Google Drive landen soll: http:https://console.developers.google.com

Schritt 2: Projekt anlegen

Nach dem Login landet man in der Dashboard-Ansicht. Diese ist entweder noch leer oder enthält bereits andere, existierende Projekte des Benutzers. Hier legen wir nun ein (weiteres) neues Projekt an, indem man oben im Menü auf Select a project klickt und dann über Create ein neues erstellt. Existiert bisher kein Projekt, bekommt man direkt auf der Dashboard Seite schon den Link Create Project angezeigt.

Nun vergeben wir bei Project name einen Projektnamen, bspw.: Homematic CCU2

Nachdem das Projekt erfolgreich angelegt wurde, landet man nun auf dessen Übersichtsseite. Da wir unsere Dateien von der CCU2 auf Google Drive sichern möchten, müssen wir uns im nächsten Schritt für die Google Drive API freischalten lassen.

Schritt 3: Google Drive API aktivieren

Die Google Drive API lässt sich für das Projekt aktivieren, indem man auf der Dashboard-Seite des Projektes über einen der Library Links die Google Drive API sucht:

Die API muss nun noch aktiviert werden, indem man auf Enable klickt:

Der aktuelle Benutzer ist jetzt für die Google Drive API freigeschalten und kann sie verwenden.

Schritt 4: Google Drive API Authentifizierung

Nun ist der Benutzer zwar für die Google Drive API freigeschalten, kann Sie aber noch nicht verwenden, da man sich bei der API authentifizieren muss. Dazu benötigen wir neue Credentials, die sich auf der Übersichtsseite über die entsprechenden Links anlegen lassen.

Beim Anlegen der neuen Credentials entscheiden wir uns für den Punkt OAuth client ID:

Bevor wir nun aber eine neue client ID anlegen können, werden wir aufgefordert, den Consent screen zu konfigurieren. Hierbei handelt es sich um einige Angaben, die für die OAuth Zertifizierung benötigt werden. Also klicken wir auf den entsprechenden Knopf Configure consent screen:

Viele Felder sind optional und für unsere Zwecke auch nicht relevant, allerdings ist der Produktname obligatorisch. Da die Email-Adresse bereits voreingestellt ist, vergeben wir folgenden Namen bei Product name shown to users: Homematic Backup

Nachdem wir unsere Einstellungen gespeichert haben, wird uns wieder die vorherige Ansicht angezeigt, allerdings können wir nun einen Application type auswählen. Für unsere Zwecke selektieren wir hier den Wert Web application und vergeben noch einen Namen: Homematic CCU2 Zentrale

Sobald wir nun auf Create klicken und uns die Anmeldeinformationen erzeugen lassen, werden diese danach in einem Popup angezeigt:

Die beiden Werte für client ID und client secret sind nun wichtig für uns. Diese müssen wir uns kopieren, da wir sie später in das TCL-Skript einfügen werden:

client ID: 346571031919-1ah7notaarq75dalaid32hceb226nl4p.apps.googleusercontent.com client secret: uXkYrz_oSE-Miptql89ue_8Y

Mit diesen Werten ist es nun möglich über einen Webservice bei Google Drive weitere Informationen anzufordern, die für das TCL-Skript benötigt werden.

Schritt 5: Geräte-Code für die CCU2 erzeugen und Geräte bestätigen

Nachdem wir client ID und client secret verfügbar haben, müssen wir damit von unserer Homematic CCU2 einen Google Drive Webservice aufrufen, der uns für das Gerät (also unsere Homematic CCU2) eine eindeutige Geräte-Id und einen Gerätecode zurückliefert. Die Geräte-Id benötigen wir später wieder im TCL-Script und mit dem Geräte-Code muss man die Homematic CCU2 einmalig manuell über eine Webseite für die Google Drive API freischalten!

Google Drive Einrichten

Dieses Kapitel dient hautpsächlich dazu, dass das später verwendete Beispiel nachvollziehbar ist/bleibt. Bei der Anpassung des eigentlichen TCL-Skriptes wird sich auf diesen Punkt bezogen. In Google Drive bekommt jeder Ordner eine eindeutige Id zugeordnet, diese wird im TCL-Skript benötigt, wenn man seine Daten in einem bestimmten Unterverzeichnis speichern möchte und nicht alles im Root-Verzeichnis seines Google Drive Accounts liegen haben möchte.

Anpassung des Skriptes

TODO