Innerhalb der CCU gibt es viele Möglichkeiten zum Loggen von Daten. Hierfür stehen unter anderem die Funktionen „Diagramme“ oder das „Systemprotokoll“ zur Verfügung.

Diese beiden Varianten sind nur bedingt alltagstauglich, da sie wenig Spielraum zur Personalisierung und Konfiguration zulassen. Ein beliebtes Add-On für die Zentrale ist das das mit CUxD in Kombination einzusetzende Diagrammtool „CUxD Highcharts“.

Bevor ihr mit dem Loggen von Diagrammen starten könnt, benötigt ihr also zunächst eine laufende CuxD-Installation sowie CUxD-Highcharts. Wie dieses einzurichten ist, habe ich in einem separaten Bericht für euch zusammengefasst.

Einrichtung CuxD zum Loggen der Datenpunkte

Im CuxD müsst ihr nach der Installation zunächst einige Einstellungen tätigen. Hierfür wechselt in in der Systemsteuerung auf das Feld „CUx-Deamon“. Es öffnet sich die Deamon. Klickt bitte im nächsten Schritt auf SETUP.

Hier fügt ihr bitte die unten markierten Einträge in die CUxD Einstellungen mit ein. Vom Prinzip beschreiben diese Zeilen, wo die Log-Dateien abgelegt werden. 

DEVLOGFILE=/media/usb0/devlog.txt
DEVLOGSIZE=
DEVLOGMOVE=/media/usb0/cuxd/devlog
SUBSCRIBE_RF=1

Der letzte Parameter SUBSCRIBE_RF=1 beschreibt, dass grundsätzlich alle Homematic Funk-Komponenten mitgeloggt werden können. Solltet ihr noch Homematic Wired Geräte im Einsatz haben, so ist ein zusätzlicher Eintrag SUBSCRIBE_WR=1 hinzuzufügen. Für alle, die auch Homematic IP (FUNK oder Wired) mitloggen möchten, bitte ich an dieser Stelle noch um etwas Geduld. Hier ist ein Zwischenschritt nötig, den ihr am Ende des Berichtes nachlesen könnt.

Damit die Dateien auch entsprechend auf dem USB Stick abgelegt werden können, benötigt ihr noch ein Verzeichnis /cuxd/devlog/ auf eurem eingelegten USB Stick.

Hierfür klickt ihr auf der Startseite „Status“ des CUxD oben rechts auf den Punkt „Service“ und lasst folgendes Shell-Kommando durchlaufen:

mkdir -p /media/usb0/cuxd/devlog/

Nachfolgend wir das notwendige Verzeichnis auf eurer CCU3 bzw. dem USB-Stick abgelegt.

Einfügen der zu loggenden Geräte

Ebenso müsst Ihr bereits in den CUxD-Einstellungen festlegen, welche Geräte ihr mitprotokollieren und damit auch in Form von Diagrammen darstellen wollt. Hierfür schreiben wir jeweils den Eintrag LOGIT=SERIENNUMMER DES GERÄTES in die Konfiguration.

Der Logit-Parameter bietet dabei mehrere verschiedene Einstellungen:

Alle Datenpunkte aller Geräte loggen:          LOGIT=: 

Alle Datenpunkte eines Gerätes loggen:      LOGIT=MEQ1234567

Alle Datenpunkte eines Kanals loggen:        LOGIT=MEQ1234567:1

Einen Datenpunkte eines Kanals loggen:    LOGIT=MEQ1234567:1 HUMIDITY

 

Speichert nun die CUxD Einstellung und lasst die Zentrale ein paar Stunden Datenpunkte „sammeln“. 

Anzeige der Diagramme

Zum Ansehen der Diagramme wählt ihr im CUxD den Punkt INFO aus und klickt auf DEVICE-LOG.

Hier solltet ihr nun bereits viele Einträge erkennen, denn CUxD speichert die Werte der einzelnen Datenpunkte und gibt Sie an dieser Stelle protokollarisch aus. Um diese protokollarisch erfassten Werte nun als Diagramm anzeigen zu lassen, klickt ihr auf Chart.

Nachfolgend öffnet sich die Applikation CUxD-Highcharts und ihr könnt sehr einfach über Anwählen der Datenpunkte tolle Diagramme ausgeben lassen, wie beispielsweise hier das Diagramm einer Leistungsmessung.

Damit ihr nicht immer wieder CUxD-Highcharts über die WebUI, mit allen Zwischenschritten, aufrufen müsst, kann man sich den Link ins CUxD-Highcharts nun auch einfach als URL kopieren und ein Lesezeichen in seinen Browser legen. Ebenso könnt ihr diese URL natürlich auch in eure bestehenden Visualisierungen einbauen.

Besonderheit bei Homematic IP Geräten

Die oben aufgeführte Anleitung gilt ausschließlich für Homematic FUNK oder Homematic WIRED Geräte. Sofern ihr auch Homematic IP Geräte über CUxD-Highcharts als Diagramm abbilden wollt, müsst ihr einen Zwischenschritt wählen, denn Highcharts kann von Haus aus nicht die Datenpunkte von Homematic IP Geräten verarbeiten. 

Ihr benötigt hierfür zunächst einmal CUxD-EXEC Gerät. Wie ihr dieses anlegt, zeige ich euch in einem weiteren Bericht. Erstellt euch nun ein Zentralenprogramm mit folgendem Inhalt:

Die Bedingung eures Programm beinhaltet hierbei euren Datenpunkt, den ihr protokollieren wollt. In meinem Fall entspricht es der IST-Temperatur im Wohnzimmer. Bitte als Auslöser „bei Aktualisierung auslösen“ wählen, damit das Skript immer dann aufgerufen wird, wenn ein neuer Messwert vom Gerät gekommen ist.

Im zweiten Teil des Programms fügt ihr folgendes Skript ein:

object log = dom.GetObject(„$src$“);
if (log)
{
dom.GetObject(„CUxD.CUX2801001:1.LOGIT“).State( (dom.GetObject((log.Channel()))).Name() #“ „# log.HssType() #“;“#log.Value());
}

Denkt daran, dass ihr hierfür unbedingt ein CUxD-EXEC Gerät benötigt.

Nachfolgend werden die Datenpunkte nun ebenfalls als auswählbare Diagramme im CUxD-Highcharts angezeigt.

Variablenwerte im Diagramm

Wenn ihr Variablen als Diagramm darstellen wollt, könnt ihr ein ähnliches Programm schreiben. Hier wird als Auslöser die entsprechende Variable gewählt und als Aktivität folgendes Skript verwendet:

object o = dom.GetObject(„VARIABLENNAME“);
dom.GetObject(„CUxD.CUX2801001:1.LOGIT“).State(o.Name()#“;“#o.Value());

 

So könnt ihr beispielsweise den Wert eures DutyCycles als Diagramm darstellen lassen:

Ich wünsche euch nun viel Spaß beim Anfertigen eurer Lieblingsdiagramme mit CUxD-Highcharts.

17 Kommentare
  1. Avatar
    Frank Wiehl sagte:

    Nach Aufruf der CUx-Daemon Device-Log Chart kommt folgende Fehlermeldung:

    CUxD-Highcharts 1.4.5
    Datenpunkte 43 Werte 63731

    Nicht genügend Speicher, um diese Seite zu öffnen

    Antworten
  2. Avatar
    Frank Wiehl sagte:

    Hallo,
    toller Beitrag. Wo finde ich denn die Anleitung, wie man ein CUxD-EXEC Gerät anlegt?
    Danke für den Hinweis und Grüße
    Frank

    Antworten
  3. Avatar
    Nenich sagte:

    An dieser Stelle ein kleiner Verbesserungsvorschlag für die Webseite.. wäre schön wenn man „Code“ einfach copy&pasten könnte, anstatt die Anführungszeichen/Leerzeichen erstmal wieder richtig hin zu wursten. Erst Recht, wenn diese Formatierung eine gewisse Rolle beim verarbeiten der Logs spielt.

    Ist für jemanden der sich das erste mal damit beschäftigt mit Sicherheit nicht einfach dann noch auf Bugsuche zu gehen, weil das Script falsch formatiert wurde.

    Antworten
  4. Avatar
    Rene sagte:

    Hallo zusammen,

    erst einmal: SUPER Anleitung! Das hab ich sogar verstanden ;)

    Ich möchte jedoch auf 2 Sachen aufmerksam machen (das waren meine Fehler, welche nicht zum Ziel führten ;)

    1. Es kann sein, dass ein USB Stick nicht auf „usb0“ gemountet ist. Beim erstellen wird zwar ein LInk dann von usb0 auf usb1 (als Beispiel) angelegt, jedoch gab es immer nur Fehlermeldungen.

    Daher sollte man den Befehl „mkdir -p /media/usb0/cuxd/devlog/“ entsprechend anpassen. Bei mir ging es also mit „mkdir -p /media/usb1/cuxd/devlog/“ (anstatt usb0 also bei mir usb1 – kann man einfach mit Winscp nachprüfen, wie der stick gemountet ist)

    2. Unter Setup waren die u. a. Werte einzufügen

    ———
    DEVLOGFILE=/media/usb0/devlog.txt
    DEVLOGSIZE=
    DEVLOGMOVE=/media/usb0/cuxd/devlog
    SUBSCRIBE_RF=1
    ———-

    Dazu zwei Sachen:
    1. bei meiner Version von CuXD waren diese Zeilen bereits im Setup enthalten (mit entsprechenden Werten). Diese „originalen“ Zeilen habe ich mit „;“ ausmarkiert und dann wie oben beschrieben, unten noch einmal eingefügt.

    2. die letzte Zeile sollte nicht „SUBSCRIBE_RF=1“ sein sondern „SUBSCRIBE-RF=1“ (Bindestrich anstatt Unterstrich).

    Vielleicht sind diese Kommentare aber auch nur auf Grund der inzwischen neueren Version basierend richtig (will nicht Klugscheißen sondern nur helfen).

    Auf jeden Fall hat es bei mir mit den Veränderungen geklappt und ich Danke den Verfasser!!! „Daumen hoch“

    Antworten
  5. Avatar
    Chris sagte:

    Hallo Michael, super Anleitung. Ich habe diese Step für Step umgesetzt. Eine Frage habe ich zum Erzeugen des Verzeichnis via Shell Kommando durch den Befehl mkdir -p /media/usb0/cuxd/devlog/ – Bekommt man da eine visuelle Bestätigung, dass das Verzeichnis erstellt wurde? Bei mir öffnet sich ein neues Tab ohne weiteren Inhalt. Beim Aufruf in CUxD über INFO > DEVICE-LOG wird die Meldung „Can’t open file: ‚/media/usb0/devlog.txt'“ angezeigt. Wo könnte der Fehler liegen? Gesammelte Daten sollten eigentlich seit ca. 2h vorhanden sein…

    Danke und Gruß
    Chris

    Antworten
    • Avatar
      Rainer sagte:

      Hallo Chris,
      ich habe das gleiche Problem wie du das das File nicht gefunden wird.
      Hast du das problem lösen können und wenn, wie hast du das gemacht
      bzw. wo liegt der Fehler
      Gruß Rainer

      Antworten
    • Avatar
      Sascha sagte:

      hallo, eine visuelle Bestätigung gibt es nicht, aber man kann nachsehen, ob das Verzeichnis angelegt wurde:

      CUxD -> Status -> Service -> File Browser

      dort im Dateisystem unter /media schauen, unter welcher Nummer der USB Stick eingebunden ist. Bei mir steht in der Liste z.B. „usb0/ -> /media/usb1/“, das heißt, der Stick liegt auf usb1, kann aber auch als usb0 angesprochen werden (Unter Linux nennt man das einen Symlink).

      beim mkdir-Befehl habe ich die Verzeichnisse nacheinander angelegt, also erst
      mkdir -p /media/usb1/cuxd
      und danach
      mkdir -p /media/usb1/cuxd/devlog

      wegen „can’t open file“: da steht in deinem Text ein Komma vor dem /media – hast Du geprüft, ob das auch in der Setup-Datei so steht? Andernfalls kann es nur an der usb0/usb1 Problematik liegen. Wenn die logdatei nicht existiert, wird sie übrigens automatisch erstellt.

      Ansonsten einfach noch mal Schritt für Schritt der Anleitung folgen, bei mir (CCU3) hat es zumindest auf Anhieb funktioniert. Danke an den Autor!

      Antworten
  6. Avatar
    Thomas sagte:

    Hallo Michael,
    funktioniert super. Eine Frage hätte ich noch da diese Scriptprogrammierung überhaupt nicht meins ist: Kann ich beim Loggen von Systemvariablen immer den gleichen Timerkanal verwenden oder muss ich immer einen neuen Kanal verwenden?
    VG
    Thomas

    Antworten
  7. Avatar
    Dominique Siegel sagte:

    Hallo Michael habe das Script für die Variablen benutz und er meckert

    Error 1 at row 2 col 92 near ^
    Parse following code failed:
    object o = dom.GetObject(„Status_DutyCycle“);
    dom.GetObject(„CUxD.CUX2801009:1.LOGIT“).State(o.Name()#“;“#o.V

    ist irgendwas falsch

    Antworten
    • Avatar
      Michael sagte:

      Hallo Dominique,

      vermutlich hast du mit copy & paste den Code Teil in den Skript Editor eingetragen. Hierbei passiert es leider manchmal, dass Umbrüche oder sonstige Steuerzeichen mitkopiert werden. Bitte übertrage in deinem Fall händisch Zeichen für Zeichen in den Skript Editor der CCU, dann sollte der Code akzeptiert werden.

      Gruß
      Michael

      Antworten
      • Avatar
        Rainer sagte:

        Den Fehler hatte ich auch gemacht. Im Info Bereich wierden die Daten jetzt angezeigt,
        allerdings wenn ich auf Charts klicke macht er mir zwar einen neuen Tab auf nur bekomme ich nur einen leeren Bildschirm in dem ganz oben steht „Datenpunkte. 0 Werte“
        Woran kann das liegen ? Ich benutze eine CCU3 und die zusatzsoftwareversionen sind alle aktuell. Ich musste übrigens auch die original Teilen im Setup auskommentieren damit er die neuen Zeilen angenommen hat. Müssen dort ggf. noch andere Zeilen auskommentiert werden?
        Gruß Rainer

        Antworten
  8. Avatar
    Markus S. sagte:

    Schöner Artikel, kleiner Verbesserungsvorschlag:
    Zusäztlich zum Screenshot einen CODE Block mit den Zeilen für das Setup im CUxD bereitstellen – das spart viel Tipperei ;-)

    Danke und Gruß
    Markus

    Antworten
  9. Avatar
    Saibot sagte:

    Danke für die super Anleitung! Hat einwandfrei Funktioniert. Schade, dass man die Diagramme nicht auf die eh schon vorhandene interne microSD Karte speichern kann. Habe da eine 32GB Karte darin da sie nur noch minimal teuerer sind als 8GB Karten.

    Antworten

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.