Schau doch einfach mal hier rein, dann weißt Du woher der Wind weht. Äsop lässt grüßen.
Gruß Xel66
Moderator: Co-Administratoren
wie schräg bist du denn drauf?
In nimm dafür den Administrator von den Hm-internals. Da kannst du das wie in der WebUI einfach mit dem gewollten Datentyp komplett anlegen wie die normalen in der WebUI. Also Name -> Datentyp -> Werte -> Kanalverküpfung -> Klick und fertig
Code: Alles auswählen
!1.Skript
string SysVarName = "Letzter_Regentag";
var AktDatum;
object SVrObj = dom.GetObject(ID_SYSTEM_VARIABLES).Get(SysVarName);
if (SVrObj) {
if (SVrObj.Value().Type() == "string") {
AktDatum = localtime;
} else {
AktDatum = localtime.ToInteger();
}
} else {
WriteLine("Variablenname ist falsch");
quit;
}
!WriteLine(AktDatum);
SVrObj.State(AktDatum);
Code: Alles auswählen
!2.Skript
!vorheriges Datum wieder auslesen
!und Differenztage berechnen.
integer TagesSek=86400 ;
string SysVarName = "Letzter_Regentag";
time heute= ((localtime.ToString()).Substr(0,10) # " 12:00:00").ToTime();
var letzter;
object SVrObj = dom.GetObject(ID_SYSTEM_VARIABLES).Get(SysVarName);
if (SVrObj) {
if (SVrObj.Value().Type() == "string") {
letzter = ((SVrObj.Value()).Substr(0,10) # " 12:00:00").ToTime();
} else {
letzter = (((SVrObj.Value().ToTime()).ToString()).Substr(0,10) # " 12:00:00").ToTime();
}
} else {
WriteLine("Variablenname ist falsch");
quit;
}
integer tage = (heute-letzter).ToInteger()/TagesSek;
string tag_arr = "ist heute;war gestern;war vorgestern;war vor $$ Tagen";
string msg = "letzter Regentag ";
if (tage < 3) {
msg = msg # tag_arr.StrValueByIndex(";", tage);
} else {
msg = msg # (tag_arr.StrValueByIndex(";", 3)).Replace("$$", tage);
}
!WriteLine(msg)
string SysVarName = "Regen_vor_Tagen";
object SVrObj = dom.GetObject(ID_SYSTEM_VARIABLES).Get(SysVarName);
if (SVrObj) {
if (SVrObj.Value().Type() == "string") {
SVrObj.State(msg);
} else {
SVrObj.State(tage);
}
} else {
WriteLine("Variablenname für "#SysVarName#" ist falsch");
}
Gibs nen Grund für das umständlich so zu tunTyfys hat geschrieben: ↑18.03.2023, 12:02Code: Alles auswählen
if (SVrObj.Value().Type() == "string") {
Code: Alles auswählen
if (SVrObj.Value().Type() == "string") {
Code: Alles auswählen
if (SVrObj.ValueType() == ivtString) {
Nicht direkt.
Ah, ok
das hab ich vor ner Zeit angfangen zu dokumentieren