Homematic IP Geräte mit CUxD loggen

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

Moderator: Co-Administratoren

joesch
Beiträge: 789
Registriert: 03.02.2007, 14:57
Hat sich bedankt: 64 Mal
Danksagung erhalten: 2 Mal

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von joesch » 11.12.2017, 16:41

Ich habe jetzt
- den CUxD neu installiert
- system.exec neu angelegt
Mit POSTIT erhalte ich keine Werte im dev-log, mit LOGIT ja. Aufruf der Highcharts bring das bekannte Bild: Während bei Homematic-Geräten die Datumdelder rechts oben im Diagramm mit dem min und max-Wert vorbelegt sind, erscheint in diesen Feldern bei der mit LOGIT geloggten Werten der Eintrag "invalid date". Fehler im Syslog gibt es zwar, aber nicht zu den Zeiten der mit LOGIT erstellten Einträge im dev-log.
:?:

VG,
joesch

Benutzeravatar
uwe111
Beiträge: 4805
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von uwe111 » 11.12.2017, 17:20

Von Neuinstallation hatte ich aber nichts geschrieben. :shock:

Ich hätte vorher nur gerne herausgefunden, ob nach der Änderung von POSTIT zu LOGIT die ScriptRuntimeError Meldung weg ist.

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.11, SSH KeyDir

joesch
Beiträge: 789
Registriert: 03.02.2007, 14:57
Hat sich bedankt: 64 Mal
Danksagung erhalten: 2 Mal

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von joesch » 11.12.2017, 19:33

Sorry - tut mir leid.

- edit -> ich hatte einen falschen Entwurf gepostet - sorry dafür.

Die beschriebene Neuinstallation scheint geholfen zu haben :) Jetzt kommen im Dev-Log auch mit POSTIT Daten an.

Was bleibt ist die fehlende Darstellung in den Highcharts, obwohl die Werte erkannt werden (im vorliegenden Beispiel soll das Diagramm nur Status 0 und 1 auswerten/Präsenz ja-nein):
Unbenannt.PNG
Unbenannt.PNG (14.3 KiB) 3219 mal betrachtet
VG,
joesch

joesch
Beiträge: 789
Registriert: 03.02.2007, 14:57
Hat sich bedankt: 64 Mal
Danksagung erhalten: 2 Mal

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von joesch » 11.12.2017, 21:01

Hallo Uwe,
uwe111 hat geschrieben:allerdings sollte es funktionieren, wenn Du das Script-Beispiel zum Loggen der Systemvariablen auf Seite 99 der CUxD-Doku entsprechend anpasst.
eigentlich hätte ich schon viel früher darauf kommen können ;-): Können unabhängig von dem Problem der Darstellung in den Highcharts fehlende Werte nicht darauf basieren, dass das Skript nach der Anleitung unmittelbar aufeinanderfolgende Werte nicht verarbeiten kann?

Ich will das mal am Beispiel des HMIP-Präsenzmelders verdeutlichen: Er sendet zuerst den Präsenzstatus und danach ("fast" zeitgleich) den Helligkeitswert. Lasse ich nun das Programm auf Aktualisierung eines der Werte starten und folgt während der Verarbeitung unmittelbar der zweite zu loggende Wert (beim Präsenzmelder die Helligkeit), kann dieser Wert untergehen (?) ...

VG,
joesch
System: RaspberryMatic auf Raspberry Pi 3 Model B Rev 1.2 (rpi3) mit RPI-RF-MOD (4.4.22)

Benutzeravatar
uwe111
Beiträge: 4805
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von uwe111 » 11.12.2017, 21:17

joesch hat geschrieben:Können unabhängig von dem Problem der Darstellung in den Highcharts fehlende Werte nicht darauf basieren, dass das Skript nach der Anleitung unmittelbar aufeinanderfolgende Werte nicht verarbeiten kann?
Nein, das darf nicht passieren. Sonst wäre das eine Fehlfunktion der Logikschicht.
Aber Du musst die Programmverknüpfung sowohl bei Präsenz erkannt als auch bei Präsenz nicht erkannt ausführen.

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.11, SSH KeyDir

joesch
Beiträge: 789
Registriert: 03.02.2007, 14:57
Hat sich bedankt: 64 Mal
Danksagung erhalten: 2 Mal

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von joesch » 11.12.2017, 23:03

Hm, dann stimmt doch etwas mit dem POSTIT nicht :?: . Nutze ich das Skript

Code: Alles auswählen

object o = dom.GetObject("$src$");
if (o) {
dom.GetObject("CUxD.CUX2801001:8.LOGIT").State(o.Name()#";"#o.Value());
}
zum Logging, erhalte ich beide Werte im dev-log:

Code: Alles auswählen

2017-12-11T22:50:42 HmIP-RF.000C17099A04AB:1.PRESENCE_DETECTION_STATE false
2017-12-11T22:50:42 HmIP-RF.000C17099A04AB:1.ILLUMINATION 0.000000
Es sind also alle Werte da (wenngleich statt CURRENT_ILLUMINATION nur ILLUMINATION als Datenpunktbezeichnung erscheint).
Nutze ich

Code: Alles auswählen

object dp = dom.GetObject("$src$");
if (dp) {
 dom.GetObject("CUxD.CUX2801002:1.POSTIT").State((dom.GetObject((dp.Channel()))).Address() #"."# dp.HssType() #";"#dp.Value());
}
erhalte ich bei gleichem Aufrufprogramm nur folgende Dev-log-Einträge:

Code: Alles auswählen

2017-12-11T20:27:37 000C17099A04AB:1.PRESENCE_DETECTION_STATE 1
2017-12-11T20:30:37 000C17099A04AB:1.PRESENCE_DETECTION_STATE 1
vom gleichen HM-IP-Gerät, wenn ich

Code: Alles auswählen

LOGIT=000C17099A04AB
im Setup eingetragen habe. Also keinen Helligkeitswert.

VG,
joesch

Benutzeravatar
uwe111
Beiträge: 4805
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von uwe111 » 12.12.2017, 11:00

joesch hat geschrieben:Hm, dann stimmt doch etwas mit dem POSTIT nicht :?: . Nutze ich das Skript
Stehen im Full Syslog der CCU wieder RunTime Fehler?

.LOGIT und .POSTIT erwarten beim Aufruf die gleiche Parametersyntax. Du kannst die Funktionen zum Testen also auch tauschen.

Dann teste doch einfach mal folgendes unter "Skript testen":

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.POSTIT").State("000C17099A04AB:1.PRESENCE_DETECTION_STATE;false");
dom.GetObject("CUxD.CUX2801001:1.POSTIT").State("000C17099A04AB:1.PRESENCE_DETECTION_STATE;true");
dom.GetObject("CUxD.CUX2801001:1.POSTIT").State("000C17099A04AB:1.ILLUMINATION;0.000000");
dom.GetObject("CUxD.CUX2801001:1.POSTIT").State("000C17099A04AB:1.ILLUMINATION;10.000000");
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("000C17099A04AB:1.PRESENCE_DETECTION_STATE;false");
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("000C17099A04AB:1.PRESENCE_DETECTION_STATE;true");
WriteLine("Fertig!");
Jetzt sollten 6 neue Test-Einträge im DEVLOG erscheinen. Die letzten beiden mittels LOGIT geschrieben. Und alle fast zur gleichen Sekunde.
.POSTIT verarbeitet die Daten, also wird aus false eine 0 und aus true dann 1. Nur damit Du Dich nicht wunderst.

Du kannst das Script zum Testen auch beliebig erweitern, falls Du die Verarbeitungsgeschwindigkeit im CUxD testen möchtest.

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.11, SSH KeyDir

debianatoe
Beiträge: 471
Registriert: 05.12.2016, 19:04
Hat sich bedankt: 30 Mal
Danksagung erhalten: 4 Mal

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von debianatoe » 06.01.2018, 01:20

Ich kann diese beiden Probleme bei mir bestätigen:
1) Wenn die LOGIT-Aufrufe zeitlich zu schnell (gleichzeitig bzw. 1 Sek Abstand) erfolgen, gehen manche Einträge verloren. Welche Einträge im DEVLOG landen und welche nicht, scheint zufällig zu sein. Erhöht man den zeitlichen Abstand auf 2 Sekunden oder mehr, so ist das Problem verschwunden, d.h. die DEVLOG-Einträge sind vollständig. Mir sieht das nach einem Timing-Problem aus.
2) Wenn man die DEVLOG-Einträge für HM-IP-Geräte so erzeugt, wie oben bzw. im Handbuch beschrieben, so werden sie von HIGHCHARTS nicht dargestellt bzw. ignoriert, obwohl sie im DEVLOG zu sehen sind. Woran liegt das? Haben die Einträge evtl. ein falsches Format? Für mich ist hier momentan der Workaround, die HMIP-Geräte über CUX-Geräte (Typ 90) abzubilden und dann die CUX-Geräte zu loggen und mit HIGHCHARTS darzustellen. Das ist zwar etwas umständlicher, funktioniert aber gut.
Viele Grüße,
debianatoe

Benutzeravatar
uwe111
Beiträge: 4805
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von uwe111 » 06.01.2018, 11:58

debianatoe hat geschrieben:Ich kann diese beiden Probleme bei mir bestätigen:
zu 1) Hast Du mal die Tests aus meinem letzten Beitrag durchgeführt?

zu 2) Das liegt am CUxD-HighCharts. Hier fehlt nur jemand, der sich das mal hier https://github.com/hobbyquaker/CUxD-Highcharts ansieht und anpasst.

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.11, SSH KeyDir

debianatoe
Beiträge: 471
Registriert: 05.12.2016, 19:04
Hat sich bedankt: 30 Mal
Danksagung erhalten: 4 Mal

Re: Homematic IP Geräte mit CUxD loggen

Beitrag von debianatoe » 06.01.2018, 17:35

uwe111 hat geschrieben: zu 1) Hast Du mal die Tests aus meinem letzten Beitrag durchgeführt?
Die POSTIT-Zeilen laufen bei mir alle auf Fehler:
local0.err ReGaHss: Error: IseESP::ScriptRuntimeError
Die LOGIT-Zeilen funktionieren fehlerfrei und ich bekomme auch alle Einträge mit demselben Timestamp im DEVLOG. In diesem Test werden allerdings auch nur statische Strings ins DEVLOG geschrieben. Das Problem scheint erst dann aufzutreten, wenn der Eintrag dynamisch über ein Gerät erzeugt wird, also mit: (dom.GetObject((dp.Channel()))).Address() #"."# dp.HssType() #";"#dp.Value()
Lassen sich also die Gerätefunktionen nicht beliebig schnell hintereinander aufrufen?
uwe111 hat geschrieben: zu 2) Das liegt am CUxD-HighCharts. Hier fehlt nur jemand, der sich das mal hier https://github.com/hobbyquaker/CUxD-Highcharts ansieht und anpasst.
Wenn ich mir das Changelog ansehe, sind hier uwe111 und hobbyquaker die absoluten Spezialisten. Aber wenn das gewünscht und möglich ist, kann ich mir den Quellcode gerne mal ansehen. Wie wäre da die Vorgehensweise?
Viele Grüße,
debianatoe

Antworten

Zurück zu „CUxD“