Kann mir jemand einen Tip geben, wo mein Fehler ist.
Code: Alles auswählen
string x_cmd = ("cat /usr/local/addons/test/temp1.txt")/1000;
Moderator: Co-Administratoren
Code: Alles auswählen
string x_cmd = ("cat /usr/local/addons/test/temp1.txt")/1000;
Ja, du solltest dich zunächst mit der HomeMatic Script Dokumentation beschäftigen.
Beispiel: "5432"
Code: Alles auswählen
string data;
system.Exec("cat /usr/local/tmp/Zahl.txt", &data);
WriteLine((data.ToFloat()/1000.0).Round(1).ToString(1));
Code: Alles auswählen
------------------------------- Scriptausgabe -------------------------------
5.4
Wird durch .Round(1) gerundet. .ToString(1) schneidet dann ab, macht aber nur Sinn wenn die Ausgabe nicht weiter verarbeitet werden soll und in eine SysVar Typ:Text gespeichert wird.
Code: Alles auswählen
string x_cuxd = "CUxD.CUX2801001:5.";
string x_cmd = ("cat /usr/local/addons/test/temp1.txt");
dom.GetObject (x_cuxd # "CMD_SETS").State (x_cmd);
dom.GetObject (x_cuxd # "CMD_QUERY_RET").State (1);
dom.GetObject ("_Test1").State (dom.GetObject (x_cuxd # "CMD_RETS").State());
Code: Alles auswählen
dom.GetObject (x_cuxd # "CMD_RETS").State()
Mein Versuch hat leider nicht geklappt! Ich habe versucht, x_cuxd durch x_cuxd / 1000 zu ersetzen.MichaelN hat geschrieben: ↑26.11.2021, 22:15Wieso so eine Salami Taktik?
Die Lösung wäre schon fertig, wenn du von Anfang an alle Karten auf den Tisch gelegt hättest.
Du musst nur dein Skript und das von Baxxy kombinieren.
Die Zahl wird durch diesen Ausdruck repräsentiertCode: Alles auswählen
dom.GetObject (x_cuxd # "CMD_RETS").State()
Wenn meine Zahl durch den Ausdruck repräsentiert wird, kann ich mir den Inhalt mit WriteLine anzeigen lassen?string x_cuxd = "CUxD.CUX2801001:5.";
string x_cmd = ("cat /usr/local/addons/test/temp1.txt");
dom.GetObject (x_cuxd # "CMD_SETS").State (x_cmd);
dom.GetObject (x_cuxd # "CMD_QUERY_RET").State (1);
string x_cuxd = ((x_cuxd.ToFloat()/1000.0).Round(1).ToString(1));
dom.GetObject ("_Test1").State (dom.GetObject (x_cuxd # "CMD_RETS").State());
dom.GetObject (x_cuxd # "CMD_RETS").State()
Warum nimmst du nicht einfach meine Version und schreibst das Ergebnis in deine gewünschte SysVar?
Code: Alles auswählen
dom.GetObject (ID_SYSTEM_VARIABLES).Get ("_Test1").State((data.ToFloat()/1000.0).Round(1).ToString(1));
Code: Alles auswählen
dom.GetObject (ID_SYSTEM_VARIABLES).Get ("_Test1").State((dom.GetObject (x_cuxd # "CMD_RETS").State().ToFloat() / 1000.0).Round(1).ToString(1));
und wie war die Lösung?