IPS_SetScriptTimer

Hallo paresy,

der ScriptTimer bleibt nach setzen auf 0 auf dem letzen Wert stehen. Das ist ungünstig.
Das Script bleibt stehen nur der Wert ist halt nicht 0.

IPS_SetScriptTimer ist eine Funktion zur Abwärtskompatibilität. Der Timer wird bei der Angabe 0 nicht auf 0 gesetzt, sondern IPS_SetEventActive(ID, false) ausgeführt. Gibt man einen Wert >0 an wird der mit IPS_SetEventCyclic gesetzt und IPS_SetEventActive(ID, true) ausgeführt. Hat also alles seine Ordnung. IPS_CreateEvent und IPS_SetEventTrigger haben beim ersten Aufruf auch noch eine Rolle.

Hallo,

ich habe ein kleines Problem mit IPS_SetScriptTimer. Die Anweisung IPS_SetScriptTimer($IPS_SELF, 0); soll den Timer abschalten - funktioniert bei mir nicht. …SetScriptTimer… auf einen beliebigen Wert funktioniert.

Hat da jemand eine Idee wie der Timer ausgeschaltet wird ?

Gruß Michael

IPS_SetScriptTimer($IPS_SELF, 0); ist der richtige Syntax dazu.
Was passiert wenn Du in einem leeren Scipt IPS_SetScriptTimer($script_id, 0);ausführts?
Gibt der Befehl auch true zurück?

Ja, gibt true zurück. Ich kann auch alle Zeiten setzen, von 1 bis x Sekunden. Nur die „0“ ignoriert er höflich, gibt aber true zurück.

Gruß, Michael

Hallo Michael,

meinst du vielleicht soetwas, wie im angehängten Screenshot von mir?

Da brauchst du dir keine Sorgen machen.
Es wird einfach nur die letzte befohlene Scripttimer-Zeit angezeigt, durch IPS_SetScriptTimer($IPS_SELF, 0); auf inaktiv gesetzt und ist dadurch grau markiert.

Mich hat das anfangs auch verwirrt, weil ich es besser finden würde, wenn der Eintrag entweder verschwindet, oder auf 0 steht.

@paresy
Feature, visueller Bug oder Schönheitsfehler?

Hi Michael,
Vielleicht liegt eine Verwechslung vor! Bei mir funktioniert der Syntax ganz gut. Möglicherweise wendest du den Script im falschen Script an? Oder zur falschen Zeit!

bzw. [i]Was[/i] läßt dich letztlich zu dem Schluß kommen, das er bei dir die ‚0‘ ignoriert?

Grauenhaft, soll das heißen daß IPS-SetScriptTimer(,0) durch IPS_SetEventActive(, false) ersetzt werden sollte? Warum erfährt man solche Sachen immer nur durch PUREN Zufall!? (Deine >>Ordnung<< kann ich hier als ‚dummer‘ User nicht erkennen)

Ähmmm, schau mal auf das Datum. :smiley:

Ähhmm, ändert das was am Inhalt meiner Antwort?? :D:D (vorallem das mit dem puren Zufall)

@nancilla
Richtig, genau das ist der Effekt. Wir war nur nicht klar, dass die „0“ wirklich übernommen wird. Folgerichtig wäre, wenn beim setzten eines Wertes <> „0“ der Timer nicht ausgegraut wäre, bei =„0“ meinetwegen ausgegraut.

@hinti
… weil er nicht auf „0“ gesetzt wird.

O.K. sehe gerade, das sich da noch mehr Aktivitäten entwickelt haben … muss mir das jetzt erseinmal ansehen.

Gruß, Michael

In diesem Zusammenhang steht dann auch mein alter Wunsch:

Ich hab die Themen zusammengeführt. Wie Horst es sagte: Diese Funktion ist ein V1 Funktion, die intern die Funktionen der V2 nutzt. Dabei wird bei einem Wert von 0 das Ereignis deaktiviert. Welche der beiden Möglichkeiten, du also als… ich zitiere… dummer User… nutzt, ist IP-Symcon egal. Die SetScriptTimer Funktion ist halt eine Abkürzung, die gerne genutzt werden kann. Es führen des öfteren mehrere Wege nach Rom…

paresy

PS: Außerdem… Würde in IPS stehen „Alle 0 Sekunden ausführen“, wäre das noch verwirrender… Der nächste schlaue User fragt dann, ob das Skript unendlich schnell ausgeführt werden würde… :wink:

Dann lass doch diesen Event in der Ansicht einfach verschwinden:confused:

Ich habe mich zwar dran gewöhnt und weiss dass das die Funktion funktioniert, aber… man lese…

Dann lass doch diesen Event in der Ansicht einfach verschwinden:confused:

Ich müsste bei jedem Aufruf das Ereignis löschen und wieder neu anlegen. Dabei würde es immer eine neue ID bekommen… und es wäre von der Performance bestimmt 1000 mal langsamer (eher noch langsamer). Die aktuelle Version ist, denke ich, ein sehr guter Kompromiss…

paresy

OK… daran habe ich auch nicht gedacht;)