Seite 5 von 10

Re: Homematic IP Geräte mit CUxD loggen

Verfasst: 22.06.2018, 15:15
von Chris203
Was nicht gelingt ist die Anzeige der Werte der HM-IP Thermostat im CUxD-Highchart.
Mache ich da etwas falsch, oder geht das aktuell einfach nicht.
Ich habe exakt dasselbe Problem und habe keine Ahnung wonach ich hier suchen muss?

Hat jemand tipps?

Hier mein Script:

Code: Alles auswählen

!Schlafzimmer
var aktuelleTemp = (datapoints.Get("HmIP-RF.000E5709A90E91:1.ACTUAL_TEMPERATURE")).Value();
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("Temp. Schlafzimmer"#";"# aktuelleTemp );

!Ben
aktuelleTemp = (datapoints.Get("HmIP-RF.000E5709A90B03:1.ACTUAL_TEMPERATURE")).Value();
dom.GetObject("CUxD.CUX2801001:2.LOGIT").State("Temp. Ben"#";"# aktuelleTemp );
Hier die CuxD Config:

Code: Alles auswählen

;INI-File for cuxd
LISTENPORT=8700
HM-SCRIPTHOST=127.0.0.1
HM-SCRIPTPORT=8181
RPCHOST=127.0.0.1
RPCPORT=8701
HTTP-REFRESH=5
TERMINALLINES=25
RCVLOGSIZE=10000
USERLOGIN=
CUXINITCMD=X21
LOGFILE=/tmp/devicelogs.log
LOGLEVEL=1
LOGSIZE=0
LOGFILEMOVE=/usr/local/mnt/VM1/Data/RASPI_DATA/DeviceLogs/
LOGIT=CUX2801001:1
LOGIT=CUX2801001:2
LOGIT=CUX2801001:3
LOGIT=CUX2801001:4
LOGIT=CUX2801001:5
LOGIT=CUX2801001:6
DEVLOGFILE=/usr/local/mnt/VM1/Data/RASPI_DATA/DeviceLogs/devicelogs.log
DEVLOGSIZE=10000000
DEVLOGMOVE=
DEVLOGMOVE-HR=
DEVLOGEXPORT=
DEVTIMEFORMAT=%Y-%m-%dT%X
DEVDATAFORMAT=
DEVLOGOLDALIAS=0
SUBSCRIBE-RF=1
SUBSCRIBE-WR=1
AUTOSAVE=1
MOUNTCMD=mount -t nfs4 192.168.178.36:/mnt/RAID5 /usr/local/mnt/VM1/
UMOUNTCMD=umount -f /usr/local/mnt/VM1/
BACKUPCMD=
SYSLOGMOVE=
SYSLOGMOVEDAILY=
TH-DIR=
TH-DIR-FILTER=
ADDRESS-BUFFER=120
CLOUDMATIC_CMD=/etc/config/addons/mh/cloudmatic
WEBCAMCONFIG=/usr/local/addons/cuxd/webcamconfig.ini
WEBCAMSNAPSHOT=/tmp/snapshots
WEBCAMCACHE=/tmp/webcams
SYSLOGFILENAME=/var/log/messages
CUXD-CHARTS=/etc/config/addons/www/cuxchart/index.html
DFU_ERASE=./dfu-programmer $TARGET$ erase
DFU_FLASH=./dfu-programmer $TARGET$ flash $HEXFILE$
DFU_START=./dfu-programmer $TARGET$ start
XMLDEBUG-LOG=
INTERNAL=
Im Logfile werden Werte erzeugt:

Code: Alles auswählen

2018-06-21T23:25:06 Temp._WoZi_K<FC>che 23.200000
2018-06-21T23:25:13 Temp._Schlafzimmer 20.300000
2018-06-21T23:25:13 Temp._Ben 22.900000
2018-06-21T23:25:13 Temp._Becca 21.900000
2018-06-21T23:25:13 Temp._Bad 22.400000
2018-06-21T23:25:13 Temp._Miriam 22.200000
2018-06-21T23:25:13 Temp._WoZi_K<FC>che 23.200000
2018-06-21T23:26:01 Temp._Schlafzimmer 20.300000
2018-06-21T23:26:01 Temp._Ben 22.900000
2018-06-21T23:26:01 Temp._Becca 21.900000
2018-06-21T23:26:01 Temp._Bad 22.400000
2018-06-21T23:26:01 Temp._Miriam 22.200000
2018-06-21T23:26:01 Temp._WoZi_K<FC>che 23.200000
2018-06-21T23:30:00 Temp._Schlafzimmer 20.300000
2018-06-21T23:30:00 Temp._Ben 22.900000
2018-06-21T23:30:00 Temp._Becca 21.900000
2018-06-21T23:30:00 Temp._Bad 22.400000
2018-06-21T23:30:00 Temp._Miriam 22.200000
2018-06-21T23:30:00 Temp._WoZi_K<FC>che 23.200000
2018-06-21T23:35:00 Temp._Schlafzimmer 20.300000


Re: Homematic IP Geräte mit CUxD loggen

Verfasst: 22.06.2018, 16:21
von uwe111
Chris203 hat geschrieben:Hat jemand tipps?
Wahrscheinlich kann HighCharts keine Beziehung zwischen Deinen Datenpunkten im Logfile und dem auf der CCU angelegten Gerät herstellen. Anhand des Namens ist das ja nicht möglich.

In Kapitel 9 der CUxD Doku habe ich deshalb auch eine andere Vorgehensweise über den .POSTIT-Datenpunkt gewählt.

Viele Grüße

Uwe

Re: Homematic IP Geräte mit CUxD loggen

Verfasst: 22.06.2018, 18:25
von fairtv
Ich lasse sämtliche HM-IP Logs über den gleichen LOGIT Eintrag laufen:

Code: Alles auswählen

LOGIT=CUX9000001:1
Der Scriptcode sieht so aus:

Code: Alles auswählen

object dp = dom.GetObject("$src$");
if (dp)
{
	dom.GetObject("CUxD.CUX2801001:1.LOGIT").State( (dom.GetObject((dp.Channel()))).Name() #" "# dp.HssType() #";"#dp.Value());
}
Da Boolwerte (und % leider auch) leider so nicht wie sonst auf der zweiten Achse landen, skaliere ich sie, damit sie etwas sichtbarer werden:

Code: Alles auswählen

object dp = dom.GetObject("$src$");
if (dp)
{
    if (dp.Value() == "true" |  dp.Value() == "false")
    {
        dom.GetObject("CUxD.CUX2801001:1.LOGIT").State( (dom.GetObject((dp.Channel()))).Name() #" "# dp.HssType() #";"#(dp.Value().ToInteger() * 20));
    }
    else
    {
        dom.GetObject("CUxD.CUX2801001:1.LOGIT").State( (dom.GetObject((dp.Channel()))).Name() #" "# dp.HssType() #";"#dp.Value());
    }
}
Meine Log Einträge im Vergleich zu deinen:

Code: Alles auswählen

2018-06-22T02:31:55 Thermo_Wohnzimmer:1_ACTUAL_TEMPERATURE 20.900000
2018-06-21T23:25:13 Temp._Ben 22.900000
Damit das mit dem $src$ klappt, sollte das Klickscript drumrum so aussehen:
HM-Log-IP.png
Datensparsame können noch auf Änderung statt Aktualisierung gehen, dann dauert es aber u.U. länger bis die Kurve in HighCharts weitergemalt wird.

Und damit sehe ich sie auch in HighCharts.
Das mit dem .POSTIT (mit original Sample Code) erzeugt bei mir auf der Zentrale leider nur einen Fehler, den ich bislang nicht gefunden habe. Daher bin ich auf die "alte" Methode zurück gekehrt.

Re: Homematic IP Geräte mit CUxD loggen

Verfasst: 22.06.2018, 22:39
von Chris203
Aaaaalso....

Mit .POSTIT habe ich es nicht hin bekommen. Keine Ahnung was da nicht geht, aber ich sehe dann nichts im Log.
Dafür habe ich es jetzt mit .LOGIT geschafft.

Uwe, dein Hinweis, dass HighCharts die Datenpunkte nicht zuordnen kann, war Gold Wert.
Das Problem waren definitiv die Namen... Ich habe daraufhin die Namen in der Gerätekonfiguration nochmal überarbeitet, und meine Scripte geändert.

Da ich alle 10 Minuten das Script für alle Temperatursensoren aufrufe, kann ich nicht mit %src% arbeiten, sondern muss die Geräte direkt ansprechen.

Falls jemand das selbe vorhat, hier mein Script:

Code: Alles auswählen

!Wohnzimmer
var aktuelleTemp = (datapoints.Get("HmIP-RF.000E5709A90B32:1.ACTUAL_TEMPERATURE")).Value();
if(aktuelleTemp > 0)
{
  dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("TemperaturWoZiKuecheWert:1_ACTUAL_TEMPERATURE"#";"# aktuelleTemp );
}

!Schlafzimmer
aktuelleTemp = (datapoints.Get("HmIP-RF.000E5709A90E91:1.ACTUAL_TEMPERATURE")).Value();
if(aktuelleTemp > 0)
{
  dom.GetObject("CUxD.CUX2801001:2.LOGIT").State("TemperaturSchlafzimmerWert:1_ACTUAL_TEMPERATURE"#";"# aktuelleTemp );
}

!Ben
aktuelleTemp = (datapoints.Get("HmIP-RF.000E5709A90B03:1.ACTUAL_TEMPERATURE")).Value();
if(aktuelleTemp > 0)
{
  dom.GetObject("CUxD.CUX2801001:3.LOGIT").State("TemperaturBenWert:1_ACTUAL_TEMPERATURE"#";"# aktuelleTemp );
}

!Becca
aktuelleTemp = (datapoints.Get("HmIP-RF.000E5709A90AF1:1.ACTUAL_TEMPERATURE")).Value();
if(aktuelleTemp > 0)
{
  dom.GetObject("CUxD.CUX2801001:4.LOGIT").State("TemperaturRebeccaWert:1_ACTUAL_TEMPERATURE"#";"# aktuelleTemp );
}

!Bad
aktuelleTemp = (datapoints.Get("HmIP-RF.000E5709A90A1F:1.ACTUAL_TEMPERATURE")).Value();
if(aktuelleTemp > 0)
{
  dom.GetObject("CUxD.CUX2801001:5.LOGIT").State("TemperaturBadObenWert:1_ACTUAL_TEMPERATURE"#";"# aktuelleTemp );
}

!Miriam
aktuelleTemp = (datapoints.Get("HmIP-RF.000E5709A90DE2:1.ACTUAL_TEMPERATURE")).Value();
if(aktuelleTemp > 0)
{
  dom.GetObject("CUxD.CUX2801001:6.LOGIT").State("TemperaturMiriamWert:1_ACTUAL_TEMPERATURE"#";"# aktuelleTemp );
}

Ich werde das gleiche jetzt noch für die Luftfeuchtigkeit machen...
Falls jemand interesse an dem resultierenden Script hat, kann ich dies gerne dann posten.

Danke für eure Hilfe!

Re: Homematic IP Geräte mit CUxD loggen

Verfasst: 13.07.2018, 11:30
von grmpf
Also ich habe seit vorhin den HMIP-SLO Helligkeitssensor.

Auf der CCU2 natürlich problemlos.
Logging über CUXD - geht nicht
bin nach Kap. 9 der Beschreibung für 2.0 vorgegangen und habe das Skript nicht geändert.
Bei LOGIT habe ich im Setup folgendes probiert:

LOGIT=000FFFFFFFFFFF:
LOGIT=000FFFFFFFFFFF:1
LOGIT=: CURRENT_ILLUMINATION
LOGIT=: AVERAGE_ILLUMINATION

2801001 ist schon ewig im CUXD/CCU2 angelegt.
Es sind keine Fehler im Syslog. Das Programm der CCU2 läuft ebenfalls regelmäßig.

Wo ist mein Denkfehler?

Re: Homematic IP Geräte mit CUxD loggen

Verfasst: 13.07.2018, 12:16
von grmpf
Also POSTIT geht nur ganz selten und nur einer der Werte wird geloggt
LOGIT geht super und ist mir sogar lieber.

Re: Homematic IP Geräte mit CUxD loggen

Verfasst: 08.11.2019, 19:02
von grmpf
Soooo - ich stehe hier auf dem Schlauch!
Ich habe eine nagelneue Installation (nur HMIPW) und will die Temperatur-Ist der HMIP-WTH mitloggen. CCU3 und CUXD sind auf den neuesten Versionen. In der WebUI habe ich das entsprechende Programm zum loggen der Werte angelegt und bei Änderung der IST-Temp wird folgendes Skript ausgeführt.

Code: Alles auswählen

object o = dom.GetObject("$src$");
if (o) {
dom.GetObject("CUxD.CUX2801001:5.LOGIT").State(o.Name()#";"#o.Value());
}
Ja, CUXD2801001 existiert und wird bei mir zum Aufruf von System Execs fleißig benutzt.
Es sind keine Fehler im SYSLOG zu sehen - aber es wird auch nichts geloggt. Auch nicht bei der Variante .POSTIT
Im Setup von CUXD habe ich folgendes ausprobiert:

Code: Alles auswählen

LOGIT=: ACTUAL_TEMPERATURE
LOGIT=0099999999830F:1 ACTUAL_TEMPERATURE
LOGIT=0099999999830F
Aber nach meinem Verständnis muss da eigentlich gar nichts stehen!
Wenn ich LOGIT=: eintrage wird eine ganze Menge "Unsinn" von der CCU geloggt. Habe ich nur zum testen mal gemacht.
Wo ist mein Fehler?

Re: Homematic IP Geräte mit CUxD loggen

Verfasst: 08.11.2019, 19:29
von debianatoe
Also bei mir funktioniert es mit
LOGIT=001CDA498F830F:1 ACTUAL_TEMPERATURE MeineTemperatur

Ich habe allerdings einen HmIP-STH.

Re: Homematic IP Geräte mit CUxD loggen

Verfasst: 08.11.2019, 19:47
von grmpf
Siehe oben: Bei mir nicht. Ist das Skript bei Dir identisch? Ich habe das aus der CUxD-Beschreibung genutzt und nur den Kanal 5 verwendet statt 1 oder 8. Aber das dürfte egal sein.
Beim expliziten loggen der Device mit folgendem Skript funktioniert es - aber es sollte doch auch gemäß CUxD-Doku funktionieren, oder?

Code: Alles auswählen

var temp1 = (datapoints.Get("HmIP-RF.0099999999830F:1.ACTUAL_TEMPERATURE")).Value();
if(temp1 > 0)
{
  dom.GetObject("CUxD.CUX2801001:5.LOGIT").State("EG Thermostat Arbeitszimmer:1_ACTUAL_TEMPERATURE"#";"# temp1 );
}

Re: Homematic IP Geräte mit CUxD loggen

Verfasst: 08.11.2019, 19:51
von alchy
grmpf hat geschrieben:
08.11.2019, 19:02
und bei Änderung der IST-Temp wird folgendes Skript ausgeführt.
Du musst aber auch dafür sorgen das $src$ der Auslöser ist und ausgelöst wird.

Alchy