Servicemeldungen SV v3.15 (stable)
Moderator: Co-Administratoren
Re: Servicemeldungen SV v2.22 (stable)
Ok. danke für die Erklärung!
Da mein Hauptwunsch erfüllt worden ist kann ich mit der leichten Einschränkung gut leben.
Da mein Hauptwunsch erfüllt worden ist kann ich mit der leichten Einschränkung gut leben.
Viele Grüße!
Jörg
Jörg
- blackhole
- Beiträge: 3730
- Registriert: 21.07.2015, 14:03
- System: CCU
- Hat sich bedankt: 184 Mal
- Danksagung erhalten: 587 Mal
Re: Servicemeldungen SV v2.22 (stable)
Gerne geschehen.JRiemann hat geschrieben:Ok. danke für die Erklärung!
Falls Du die leichte Einschränkung noch wegoptimieren möchtest:JRiemann hat geschrieben:Da mein Hauptwunsch erfüllt worden ist kann ich mit der leichten Einschränkung gut leben.
Die gesuchte Methode für die Ermittlung der Bezeichnung eines Zahlenwertes einer Werteliste nennt sich web.webGetValueFromList() (siehe > hier* <).
Der Code-Schnippsel in dem verlinkten Beitrag ist sehr gut erklärt und kommentiert, so dass Du damit klarkommen solltest.
*Ich wusste doch, dass ich da schon einmal drüber gestolpert bin.
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Servicemeldungen SV v2.22 (stable)
Es gibt sogar mindestens 2 Möglichkeiten
Alchy
Code: Alles auswählen
WriteLine( web.webGetValueFromList((dom.GetObject(ID_SYSTEM_VARIABLES).Get("WERTELISTE")).ValueList(), (dom.GetObject(ID_SYSTEM_VARIABLES).Get("WERTELISTE")).Value()) );
Code: Alles auswählen
WriteLine( (dom.GetObject(ID_SYSTEM_VARIABLES).Get("WERTELISTE").ValueList() ).StrValueByIndex(";",dom.GetObject(ID_SYSTEM_VARIABLES).Get("WERTELISTE").Value()) );
Blacklist................... almost 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.
- blackhole
- Beiträge: 3730
- Registriert: 21.07.2015, 14:03
- System: CCU
- Hat sich bedankt: 184 Mal
- Danksagung erhalten: 587 Mal
Re: Servicemeldungen SV v2.22 (stable)
Ich schätze, dass BadenPower noch mit mindestens einer dritten Möglichkeit um die Ecke kommen könnte (falls die nicht gerade kaputtrepariert wurde).
Re: Servicemeldungen SV v2.22 (stable)
Die beiden von Alchy gezeigten Methoden geben leider nur immer den 1. Wert der Wertliste zurück...
Viele Grüße!
Jörg
Jörg
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Servicemeldungen SV v2.22 (stable)
Logisch, war was anderes gefragt?
Alchy
Alchy
Blacklist................... almost 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.
Re: Servicemeldungen SV v2.22 (stable)
Mein Wunsch ist es Geräte die in einer Variable von Typ Wertliste hinterlegt sind im Servicemeldungenskript zu nutzen um damit "var blockdevices" zu füttern...
Mit einer Variable vom Typ Zeichenkette funktioniert es mit:
var blockdevices = dom.GetObject(ID_SYSTEM_VARIABLES).Get("DEINE_SYSVAR_MIT_GERAETENAMEN").Value();
Bei der Variable vom Typ Wertliste funktioniert es leider nicht..
Ich würde gerne die Wertliste nutzen da ich diese Variable mit "Winterschlaf-Geräten" bereits verwende. Ich nutze auch noch das BadenPower "Winterschlaf-Skript" und für dieses ist die Trennung der einzelnen Geräte per Semikolon notwendig. Bei "Servicemeldungen SV" und "Servicemeldungen allinclusive" ist aber eine Trennung der Geräte per Leerschritt erforderlich...
Sollte die Umsetzung zu aufwändig sein kann ich mit diesem "Schönheitsfehler" gut leben. Ich werde dann einfach eine Wertliste und eine Zeichenkette mit den Gerätelisten füttern...
Mit einer Variable vom Typ Zeichenkette funktioniert es mit:
var blockdevices = dom.GetObject(ID_SYSTEM_VARIABLES).Get("DEINE_SYSVAR_MIT_GERAETENAMEN").Value();
Bei der Variable vom Typ Wertliste funktioniert es leider nicht..
Ich würde gerne die Wertliste nutzen da ich diese Variable mit "Winterschlaf-Geräten" bereits verwende. Ich nutze auch noch das BadenPower "Winterschlaf-Skript" und für dieses ist die Trennung der einzelnen Geräte per Semikolon notwendig. Bei "Servicemeldungen SV" und "Servicemeldungen allinclusive" ist aber eine Trennung der Geräte per Leerschritt erforderlich...
Sollte die Umsetzung zu aufwändig sein kann ich mit diesem "Schönheitsfehler" gut leben. Ich werde dann einfach eine Wertliste und eine Zeichenkette mit den Gerätelisten füttern...
Viele Grüße!
Jörg
Jörg
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Servicemeldungen SV v2.22 (stable)
Und nun willst du alle Werte der Werteliste?
gibt dir halt alle Werte aus.
Dazu müsste ich mir ja erst mal ein "fremdes" Script anschauen.
Alchy
Code: Alles auswählen
WriteLine((dom.GetObject(ID_SYSTEM_VARIABLES).Get("WERTELISTE")).ValueList());
Dazu müsste ich mir ja erst mal ein "fremdes" Script anschauen.
Selbst wenn er eine wüsste, und das wäre nicht mal abwegig, er >könnte nicht mehr helfen<.blackhole hat geschrieben: Ich schätze, dass BadenPower noch mit mindestens einer dritten Möglichkeit um die Ecke kommen könnte (falls die nicht gerade kaputtrepariert wurde).
Alchy
Blacklist................... almost 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.
- blackhole
- Beiträge: 3730
- Registriert: 21.07.2015, 14:03
- System: CCU
- Hat sich bedankt: 184 Mal
- Danksagung erhalten: 587 Mal
Re: Servicemeldungen SV v2.22 (stable)
Ich habe es schon gesehen. Unfassbar.alchy hat geschrieben:Selbst wenn er eine wüsste, und das wäre nicht mal abwegig, er >könnte nicht mehr helfen<
Re: Servicemeldungen SV v2.22 (stable)
Genau, in der Wertliste stehen aktuell 3 Geräte die ungenutzt sind.
Diese Geräte sollen im Servicemeldungen-Skript als geblockte Geräte erkannt werden (var blockdevices).
Ich möchte diese Geräte nicht direkt ins Skript eintragen weil die Geräte öfter wechseln und es per Variable komfortabler ist.
Mit dieser Zeile funktioniert es mit einer Variable vom Typ Zeichenkette:Mit einer Variable vom Typ Wertliste funktioniert es im Servicemeldungenskript nicht.
Ich möchte einerseits das BadenPower Skript und andererseits Dein bzw.das Skript von blackhole nutzen.
Und dann aus einer Variable heraus die zu blockenden Geräte abfragen.
Diese Geräte sollen im Servicemeldungen-Skript als geblockte Geräte erkannt werden (var blockdevices).
Ich möchte diese Geräte nicht direkt ins Skript eintragen weil die Geräte öfter wechseln und es per Variable komfortabler ist.
Mit dieser Zeile funktioniert es mit einer Variable vom Typ Zeichenkette:
Code: Alles auswählen
var blockdevices = dom.GetObject(ID_SYSTEM_VARIABLES).Get("DEINE_SYSVAR_MIT_GERAETENAMEN").Value();
Ich möchte einerseits das BadenPower Skript und andererseits Dein bzw.das Skript von blackhole nutzen.
Und dann aus einer Variable heraus die zu blockenden Geräte abfragen.
Code: Alles auswählen
!Servicemeldungen best‰tigen V2.0.2
!**********************************
!www.homematic-forum.de (c) by BadenPower
string lScriptName = "Servicemeldungen best‰tigen V2.0.2";
boolean hB1 = true; !zus‰tzlich auch alle STICKY_UNREACH-Meldungen von aktiven Ger‰ten lˆschen
string hS1 = "/usr/local/xmlrpc_event.tcl"; !Pfad zum TCL-Skript inkl. Dateiname
string lON1 = "";
if(system.IsVar("lON1")){
lON1 = lON1 # "SYS-Protokoll";
lON1 = lON1 # ";" # "SYS-Ger‰te-Inaktiv";
lON1 = lON1 # ";" # "IST-Servicemeldungen-gelˆscht-Aktiv";
lON1 = lON1 # ";" # "IST-Servicemeldungen-gelˆscht-Inaktiv";
}
! ----- Ende Einstellungen -----
!-----Variabeln deklarieren
string lCO1 = "";
boolean lDoNextStep = false;
string lGetOut1 = "";
string lGetErr1 = "";
object lProtocol = null;
string lSP1 = "";
integer z1 = 0;
integer hI1 = 2;
object hO1 = dom.GetObject(ID_SYSTEM_VARIABLES);
object hO2 = dom.GetObject(ID_SERVICES);
string hS2 = "http://127.0.0.1:1999/";
string hS3 = "";
boolean tB1 = false;
boolean tB2 = false;
integer tI1 = 0;
integer tI2 = 0;
integer tI3 = 0;
object tO1 = null;
object tO2 = null;
object tO3 = null;
object tO4 = null;
object tO5 = null;
object tO6 = null;
string tS1 = "";
string tS2 = "";
string tS3 = "";
string tS4 = "";
!Systemvariable-Objekte pr¸fen
z1 = 0;
foreach(lSP1,lON1.Split(";"))
{
tS1 = "0-0-0";
if(lSP1 <> "")
{
tO1 = hO1.Get(lSP1);
if(tO1)
{
! hier Sonderpr¸fungen anlegen / in diesem Skript nicht benˆtigt daher (z1 == -1)
if(z1 == -1)
{
tS1 = "1";
if((tO1.Value() == null) || (tO1.Value() == "") || (tO1.Value() == "???"))
{
tS1 = tS1 # "-0";
}
else
{
tS1 = tS1 # "-1";
}
! hier Sonderpr¸fungen2 anlegen / wird in diesem Skript nicht benˆtigt daher (z1 == -1)
if(z1 == -1)
{
if(tO1.Timestamp())
{
tS1 = tS1 # "-1";
}
else
{
tS1 = tS1 # "-0";
}
}
}
else
{
tS1 = "1-0-0";
}
}
}
if(z1 > 0)
{
lCO1 = lCO1 # ";";
}
lCO1 = lCO1 # tS1;
z1 = z1 + 1;
}
lDoNextStep = true;
if(lDoNextStep)
{
if(((lCO1.StrValueByIndex(";",0)).StrValueByIndex("-",0)).ToInteger() > 0)
{
lProtocol = hO1.Get(lON1.StrValueByIndex(";",0));
}
}
if(lDoNextStep)
{
lDoNextStep = false;
tO1 = dom.GetObject(41);
if(tO1)
{
if(tO1.Value() > 0)
{
lDoNextStep = true;
}
}
}
if(lDoNextStep)
{
if(((lCO1.StrValueByIndex(";",1)).StrValueByIndex("-",0)).ToInteger() > 0)
{
tO1 = hO1.Get(lON1.StrValueByIndex(";",1));
if((tO1.ValueType() == ivtInteger) && (tO1.ValueSubType() == istEnum))
{
hS3 = tO1.ValueList();
}
else
{
hS3 = tO1.Value();
}
}
if((hB1 == false) && ((hS3 == "") || (hS3 == "-")))
{
lDoNextStep = false;
}
}
if(lDoNextStep)
{
foreach(lSP1,hO2.EnumIDs())
{
tO1 = hO2.Get(lSP1);
if(tO1)
{
if((tO1.AlType() == atService) && (tO1.AlState() == asOncoming))
{
tI1 = tO1.AlTriggerDP();
if(tI1 <> ID_ERROR)
{
tO2 = dom.GetObject(tI1);
if(tO2)
{
tB1 = false;
tB2 = false;
tI2 = 0;
tS1 = tO2.HssType();
tS2 = tO2.Name();
tO3 = dom.GetObject(tO2.Channel());
if(tO3)
{
tO4 = dom.GetObject(tO3.Device());
if(tO4)
{
tS2 = tO4.Name();
tO5 = dom.GetObject(tO4.Interface());
if((hS3 <> "") && (hS3 <> "-"))
{
foreach(lSP1,hS3.Split(";"))
{
if(lSP1 == tO4.Address())
{
tB1 = true;
}
}
}
}
}
if((tB1) || ((hB1) && (tS1 == "STICKY_UNREACH")))
{
if(tS1 == "STICKY_UNREACH")
{
tO1.AlReceipt();
tB2 = true;
}
else
{
if((tS1 == "UNREACH") || (tS1 == "ERROR"))
{
if(tO5)
{
tI2 = tO2.Operations();
if(true)
{
tO2.Operations(7);
tO2.State(0);
tS3 = "string";
if(tO2.ValueType() == ivtBinary) { tS3 = "bool"; }
if(tO2.ValueType() == ivtInteger) { tS3 = "int"; }
tS4 = "tclsh " # hS1 # " " # hS2 # " " # tO5.Name() # " " # tO3.Address() # " " # tS1 # " " # tS3 # " 0";
system.Exec(tS4,&lGetOut1,&lGetErr1);
tB2 = true;
}
tO2.Operations(tI2);
}
}
}
if(tB2)
{
if(lProtocol)
{
lProtocol.State("Servicemeldung " # tS1 # " best‰tigt: " # tS2);
}
tI2 = hI1;
if(tB1)
{
tI2 = hI1 + 1;
}
if(((lCO1.StrValueByIndex(";",tI2)).StrValueByIndex("-",0)).ToInteger() > 0)
{
tO6 = hO1.Get(lON1.StrValueByIndex(";",tI2));
tI3 = tO6.Value();
if(tI3 == 1000000) { tI3 = 0; }
tO6.State(tI3 + 1);
}
}
}
}
}
}
}
}
}
! erreichen des Skript-Ende protokollieren
if(lProtocol)
{
lProtocol.State("Skript beendet: " # lScriptName);
}
Viele Grüße!
Jörg
Jörg