Homematic IP Geräte mit CUxD loggen

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

alchy
Beiträge: 9539
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 15 Mal
Danksagung erhalten: 215 Mal

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von alchy » 17.02.2020, 21:09

Ich habe mal ein wenig rum gespielt. Geht doch.
IP Geräte funktionieren schon mal genau so wie die RF Geräte.
uwe111 hat geschrieben:
14.02.2020, 23:00
Das stimmt nicht! Die "invalid date" Meldung hatte ich ich auch schon früher auf meiner CCU1. Aktuell habe ich sie nicht.
Klar stimmt das. Weil ein Datenpunktname automatisch ein . enthält. Hab ich ja geschrieben.
Wenn du das nicht hast, liegt das daran, das du keine . im Namen der geloggten Sachen an der falschen Stelle hast.
Logge einfach mal eine Systemvariabe mit . im Namen und wähle sie aus. invalide Date ist vorprogrammiert.

Unlustigerweise muss ich jetzt trotzdem noch mal schauen, wo jetzt genau der beschriebene Bug drin steckt.


Alchy

.................... full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Benutzeravatar
uwe111
Beiträge: 4119
Registriert: 26.02.2011, 22:22
Danksagung erhalten: 37 Mal
Kontaktdaten:

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von uwe111 » 17.02.2020, 22:35

alchy hat geschrieben:
17.02.2020, 21:09
uwe111 hat geschrieben:
14.02.2020, 23:00
Das stimmt nicht! Die "invalid date" Meldung hatte ich ich auch schon früher auf meiner CCU1. Aktuell habe ich sie nicht.
Klar stimmt das. Weil ein Datenpunktname automatisch ein . enthält. Hab ich ja geschrieben.
Wenn du das nicht hast, liegt das daran, das du keine . im Namen der geloggten Sachen hast.
Also entweder reden wir jetzt aneinander vorbei oder warum stehen dann in meinem DEVLOGFILE die folgenden Einträge mit . und ich habe keine "invalid Date" Meldung im HighCharts?

Code: Alles auswählen

2020-02-17T16:00:12 000A9707A0A204:1.SET_POINT_TEMPERATURE 20.000000
2020-02-17T16:00:12 000A9707A0A204:1.ACTUAL_TEMPERATURE 20.500000
2020-02-17T17:00:10 000A9707A0A204:1.SET_POINT_TEMPERATURE 17.000000
2020-02-17T17:00:10 000A9707A0A204:1.ACTUAL_TEMPERATURE 20.500000
2020-02-17T17:10:24 000A9707A0A204:1.SET_POINT_TEMPERATURE 17.000000
2020-02-17T17:10:24 000A9707A0A204:1.ACTUAL_TEMPERATURE 20.600000
Oder passiert das nur, wenn ich Systemvariablen logge? Das habe ich jetzt nicht probiert.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.4.3, RFD-Monitor, Vellemann K8055, SSH KeyDir

alpa
Beiträge: 1
Registriert: 10.03.2020, 19:56

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von alpa » 10.03.2020, 21:12

Servus!

Wie bereits andere User, hatte ich leider ähnliche Probleme mit dem Graphen. Nach mehreren Anläufen, hats aber dann irgendwann doch was angezeigt. Ich stand zunächst ein wenig auf dem Schlauch, weil das Device Logging eigentlich von Anfang an solide funktioniert hat, nur irgendwie wollte es mit der Anzeige nicht.

Also bin ich dem ganzen ein wenig hinterher getaucht, und hab mich an dem invalid date erstmal entlang gehangelt und denke auch das Problem mehr oder weniger gefunden zu haben.

Wie alchy bereits erwähnt hat, gibt es wohl einen Bug was die Anzeige von Einträgen mit einem "." im Namen angeht. Es ist nicht ganz wenig Code zum durchsteigen, kenn mich leider mit Highcharts nicht unbedingt gut aus und weiß als blutiger Homematic User auch nicht unbedingt genau wie das mal funktioniert hat bzw. gedacht war.

Soweit ich das bisher verstanden habe, versucht das Script mit Hilfe des "." den String zu spliten um anhand des Teiles nach dem "." den Anzeigetyp für den Graphen zu bestimmen. Jetzt ist es nur irgendwie so, dass noch an anderer Stelle gesplitet wird und dabei u.a. der hintere Teil wieder hinten dran gehängt wird (sieht dann so aus 000123456789AB:1.ACTUAL_TEMPERATURE.ACTUAL_TEMPERATURE), was sich dann im weiteren dann irgendwie verschluckt.

Ich vermute den Übeltäter hier:

Code: Alles auswählen

var tmpArr = [];
for (var dp in cuxchart.dates) {
    var tmp = dp.split(".");
    if (!tmp[1]) { <-- im Fall von "_" true und ergibt einen leeren String
        tmp[1] = "";
    } else {
        tmp[1] = "." + tmp[1];
    }
    tmpArr.push(cuxchart.dpInfos[dp].ChannelName + tmp[1]); <-- hier wird im Fall von "." der Teil danach ein zweites mal an den Channel gehängt
}
tmpArr.sort();
var serie;
for (var i = 0; i < tmpArr.length; i++) {
    if (cuxchart.revDpInfos[tmpArr[i]]) {
        serie = cuxchart.revDpInfos[tmpArr[i]];
    } else {
        serie = tmpArr[i];
    }
    cuxchart.addSeries(serie);
}
Ob cuxchart.dates oder cuxchart.dpInfos[dp].ChannelName evtl. nicht richtig sind so weit bin ich bisher nicht durchgestiegen.

Das invalid date kommt glaub ich dann zu Stande, wenn man ausschließlich Einträge mit "." in der Devicelog hat, bzw. er dann auch in der Legende nichts anzeigt. Ich hab bisher nur zwei HMIP Geräte an der CCU, da fällt es dann relativ leicht auf wenn es mit dem "." im Programm nicht, aber dafür mit dem "_" funktioniert (wenn man's mal herausgefunden hat woran es liegt).

Zum maintainen wird meine Zeit aktuell leider nicht reichen, aber ich könnte versuchen das gefixt zu bekommen und nen PR zu machen. Vielleicht steckt jemand tiefer drin und kann mir zumindest verraten wie das gedacht war, weil ich da noch was gefunden hab:

Code: Alles auswählen

case "TEMPERATURE":
case "ABS_HUMIDITY":
case "DEW_POINT":
case "TEMP_MAX_24H":
case "TEMP_MIN_24H":
valueDecimals = 1;
type = "spline";
break;
Das würde im Fall von dem Script aus der CUxD Readme:

Code: Alles auswählen

object dp = dom.GetObject("$src$");
if (dp) {
dom.GetObject("CUxD.CUX2801001:1.POSTIT").State((dom.GetObject((dp.Channel()))).Address() #"."# dp.HssType() #";"#dp.Value());
}
auch nicht ganz matchen weil das wäre bei mir z.B. ACTUAL_TEMPERATURE und nicht TEMPERATURE.

Wäre nett wenn sich vielleicht wer melden mag und mir paar Infos dazu stecken kann. Ich wüsste z.B. auch nicht wie das mit den Alias funktioniert (hat) etc.

Kleiner Nachtrag:
Anstatt den zusammen gestampften Code zu debuggen, den originalen zu benutzen hilft ungemein. Allerdings ist mir dabei noch was aufgefallen. Die Backend Schnittstellen bestehen aus tcl/perl(?) Scripts die dann irgendwie auf die Script Ebene von der CCU zugreifen? Mit JS bin ich relativ fit aber damit hab ich jetzt irgendwie bissl meine Probleme.

Grüße,
Alex

Benutzeravatar
uwe111
Beiträge: 4119
Registriert: 26.02.2011, 22:22
Danksagung erhalten: 37 Mal
Kontaktdaten:

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von uwe111 » 11.03.2020, 23:56

Hallo Alex,
alpa hat geschrieben:
10.03.2020, 21:12
Wäre nett wenn sich vielleicht wer melden mag und mir paar Infos dazu stecken kann. Ich wüsste z.B. auch nicht wie das mit den Alias funktioniert (hat) etc.
Den Alias habe ich nur aus historischen Gründen noch drin. Ich denke er wird jetzt ans Ende der Zeile geschrieben und dann vor der Übergabe mittels logfilter weggefiltert. Das müsste man mal prüfen. Ich bin mir da nicht mehr so sicher.
alpa hat geschrieben:
10.03.2020, 21:12
Die Backend Schnittstellen bestehen aus tcl/perl(?) Scripts die dann irgendwie auf die Script Ebene von der CCU zugreifen? Mit JS bin ich relativ fit aber damit hab ich jetzt irgendwie bissl meine Probleme.
Für den Zugriff auf die Logs habe ich dieses kleine Programm geschrieben: https://github.com/jens-maus/cuxd/tree/ ... /logfilter

Du kannst Programm auch direkt von der Kommandozeile aufrufen, falls Du die Ausgabe kontollieren möchtest:

Code: Alles auswählen

/usr/local/addons/cuxd/extra/logfilter
Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.4.3, RFD-Monitor, Vellemann K8055, SSH KeyDir

Antworten

Zurück zu „CUxD“