Systemvariable loggen mit CUxD und Highcharts

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

Moderator: Co-Administratoren

dodi
Beiträge: 125
Registriert: 26.12.2016, 11:59

Re: Systemvariable loggen mit CUxD und Highcharts

Beitrag von dodi » 24.04.2017, 16:40

dodi hat geschrieben:Hi alchy,
was meinst du mit speichere den Wert einfach unter einem anderen Namen?
Die Variablen würde ich am liebsten ja nicht umbenennen.

Dein Skript schreibt ja den Wert unter dem Namen des originalen Namens ins Devlog.

Code: Alles auswählen

object tmpA = dom.GetObject("$src$");
if (tmpA) {
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State(tmpA.Name()#";"#tmpA.Value());
}
Wie kann ich den bei diesem Namen die Punkte entfernen, oder durch Unterstriche ersetzen?

Highcharts hat definitiv ein Problem mit dem Punkt.
Habe eine Variable mal zum testen umbenannt, und dann funktioniert es...

Grüße
Sascha
@Uwe: Könntest du das machen, oder hast du das vielleicht schon auf dem Schirm?

alchy
Beiträge: 8105
Registriert: 24.02.2011, 01:34

Re: Systemvariable loggen mit CUxD und Highcharts

Beitrag von alchy » 24.04.2017, 18:20

Den Namen kannst du benennen wie du willst.

Code: Alles auswählen

object tmpA = dom.GetObject("$src$");
if (tmpA) {
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State("irgendeinname_ohne_punkte;"#tmpA.Value());
}
Nur ist das natürlich sehr mühselig, immer den richtigen Namen da reinzutüteln.
Eine Möglichkeit die . im Namen einer Systemvariable durch _ zu ersetzen für die Speicherung, wäre z.b. durch ein Script möglich wie das hier:

Code: Alles auswählen

object input = dom.GetObject("$src$");
if (input) {
string inputName = input.Name();
string output= "";
string i; integer punkt;
punkt = inputName.Find(".");
if (punkt == -1) { output = input.Name(); }else{
foreach(i,inputName.Split(".")) { 
output = (output#i#"_");}
output = output.Substr(0, output.Length()-1);
}
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State(output#";"#input.Value());
}
Sollte funktionieren, mit Bestimmtheit kann ich es aber nicht sagen, da ungetestet.
Theoretisch, solltest du das als Ersatz nehmen können für alle Systemvariablen.
Enthält der Name der Systemvariablen einen . dann wird dieser . durch ein _ ersetzt. Enthält der Name keinen . wird der Originalname zur Speicherung genommen.
Theoretisch zumindest, kannst dich ja melden. :wink:

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.

dodi
Beiträge: 125
Registriert: 26.12.2016, 11:59

Re: Systemvariable loggen mit CUxD und Highcharts

Beitrag von dodi » 24.04.2017, 21:55

@alchy:
Du bist der Hammer. Vielen Dank.
Habe das Skript eingespielt, und es läuft auf anhieb!!!!

Super. Ganz lieben Dank.

Gruß
Sascha

Martinfun1987
Beiträge: 4
Registriert: 10.01.2017, 10:05

Re: Systemvariable loggen mit CUxD und Highcharts

Beitrag von Martinfun1987 » 01.11.2017, 11:33

Hallo Leute,
ich versuche verzweifelt Systemvariablen zu loggen.
1.
Das CUX2801002 SystemExec Device ist es egal was das ist, Fernbedienung, Wandtaster usw. ?

2.
Das mit dem Namen habe ich soweit hinbekommen das nicht nur ${sysVarPresence} angezeigt wird.
Ich sehe in meiner Loggfile es wird geloggt, aber nicht als zahl sondern nur als Logikwer.
Meine Systemvariable habe ich schon als Zeichenkette und als Zahl angelegt das ändert aber leider nichts.
Die zeile aus der Loggfile siegt so aus: 2017-11-01T11:22:43 Kaltwasser false oder 2017-11-01T11:28:00 Kaltwasser true

Code: Alles auswählen

object homeduino_HR_imp2 = dom.GetObject("$src$");
if (homeduino_HR_imp2) {
dom.GetObject("CUxD.CUX2801002:1.LOGIT").State("Kaltwasser;"#homeduino_HR_imp2.Value());
}
was muss ich im Code Ändern?

Vielen Dank schonmal

MathiasZ
Beiträge: 1095
Registriert: 29.03.2015, 09:54
Wohnort: München

Re: Systemvariable loggen mit CUxD und Highcharts

Beitrag von MathiasZ » 25.01.2018, 08:21

Ich habe das Problem, dass ich im CuxD-Status meine Systemvariblen sehe, diese aber nicht im highcharts angezeigt werden.
Speziell meine "Alarmanlage" wäre wichtig.

Ich habe als SysVar Alamanlage
als zustand:

"unscharf, intern scharf und extern scharf" genommen.
unscharf ist klar,
intern scharf betrifft alles Fenster und Türen, weil man da zuhause ist.
Extern scharf betrifft zusätzlich noch alle Bewegungsmelder, weil man da eben NICHT zuhause ist.
Hat jemand eine Idee?
Der Skript von Alchy macht leider nichts.

Gruß,
Mathias
P.S. Ich habe das von unterwegs aus getippelt und habe die Skripte nicht zur Hand.
RaspberryMatic 3.41.11.xxxxxxxx mit Tinkerboard S, CuxD Highcharts und viele Aktoren und Sensoren. Es kommen hin und wieder mal neue dazu. Nun versuche ich mich mit ein paar Xiaomi Smarthome-Aktoren und dem Xiaomi Gateway 2. Diese sollen am IObroker, Beebox I5, 120GB HDD, Ubuntu 18.04, angebunden werden. Die Anwesenheitskennung läuft zuverlässig über IObroker und Radar2 mit G-Tags.

nseith
Beiträge: 211
Registriert: 23.06.2013, 11:08
Wohnort: bei Karlsruhe

Re: Systemvariable loggen mit CUxD und Highcharts

Beitrag von nseith » 03.05.2018, 00:40

Abend,

auch wenn schon aelter - aber denke bei Dir MathiasZ liegt das am RESET.

@UWE - vielen Dank fuer das Highcharts - einfach super!
@Alchy - Danke fuer das PIKO Solar Script!

Jetzt mit der Anleitung von hier kann ich endlich die PV in Highcharts Visualisieren!

Besten Dank allen unermuetlichen!

Gute N8

manolo
Beiträge: 47
Registriert: 04.12.2018, 11:23

Re: Systemvariable loggen mit CUxD und Highcharts

Beitrag von manolo » 21.12.2018, 15:47

Hi zusammen,

ich möchte meine Systemvariablen auch loggen, komme aber zu keinem Ergebnis mit den Scripten hier. Ich nutze derzeit:

Code: Alles auswählen

object dp = dom.GetObject("$src$");
if (dp) { dom.GetObject("CUxD.CUX2801001:1.LOGIT").State(dp.Name()#" "#dp.Value().ToInteger() );}
Habe auch schon die Zwischenlösungen mit ; und dem 999Value versucht, aber es fehlt immer etwas.

Ich logge boolean, Zahlen mit Nachkommastellen sowie Wertelisten in einem Programm. Muss ich das aufteilen damit das Log richtig funktioniert oder gibt es ein "Allrounder Script"?

alchy
Beiträge: 8105
Registriert: 24.02.2011, 01:34

Re: Systemvariable loggen mit CUxD und Highcharts

Beitrag von alchy » 22.12.2018, 19:20

Dazu könntest du uns mitteilen, welches Problem du hast.
"Zu keinem Ergebnis" kommen, würde bedeuten das das Script nicht das tut, was es soll.
Ergo Programm als Bild, Script in Codetags und Fehlerprotokoll zur Ausführungszeit posten

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.

manolo
Beiträge: 47
Registriert: 04.12.2018, 11:23

Re: Systemvariable loggen mit CUxD und Highcharts

Beitrag von manolo » 24.12.2018, 13:40

Hi Alchy,

in der Tat, nicht die glücklichste Beschreibung von mir.

Hab aber nun geschafft was ich haben wollte. Also falls noch jemand Zahlen, Bool und Wertelisten in einem Script loggen will kann er das so machen. Die Liste der Werte kann dabei natürlich frei erweitert werden. Vermutlich hätte man auch etwas wie dp.Value() == FELDTYP oder != Zahl machen können, da habe ich aber einfach keine Ahnung von. Vielleicht zaubert ja noch einer das erste If universeller...

Code: Alles auswählen

object dp = dom.GetObject("$src$");
if (dp)
{
    if (dp.Value() == "true" |  dp.Value() == "false" |  dp.Value() == "keine Gefahr" |  dp.Value() == "Warnung "|  dp.Value() == "Alarm")
    {
        dom.GetObject("CUxD.CUX2801001:1.LOGIT").State(dp.Name()#";"#dp.Value().ToInteger()*30 );
    }
    else
    {
        dom.GetObject("CUxD.CUX2801001:1.LOGIT").State( (dom.GetObject((dp.Channel()))).Name() #" "# dp.HssType() #";"#dp.Value());
    }
}
Grüße

Manuel

Gut-Drauf
Beiträge: 49
Registriert: 22.01.2018, 19:29

Re: Systemvariable loggen mit CUxD und Highcharts

Beitrag von Gut-Drauf » 06.01.2019, 18:55

Hallo,
ich bekomme vom "Rainyman" div. Werte in verschiedene Systemvariable eingetragen. Jetzt möchte ich diese mit CUxD und Highchart loggen. Ich habe in der WebUI ein Programm erstellt, welches bei Aktualisierung einer Variablen (Ein oder Aus) folgendes Script auslöst:

object o = dom.GetObject("$src$");
if (o) {
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State( (dom.GetObject((o.Channel()))).Name() #";"#(o.Value().ToInteger() * 10));
}

In CUxD wird zwar etwas gelogged, aber da steht dann immer:

2019-01-06T18:23:22 null
2019-01-06T18:24:28 null

Was mache ich falsch?
Gruß, F.

CCU3, 1x HMIP-SWDO, 1x HM-LC-Sw4-PCB, 1x HM-WDS30-OT2-SM, 5x HmIP-BWTH, 3x HmIP-SRH, 1x HM-LC-Sw2PBU-FM, 6x HM-Sec-SCo, 1x Rainyman, CUxD, CUxD-Highcharts

Antworten

Zurück zu „CUxD“