Hallo,
LIGHT_FLASH_OFF_SECS = 0.5
LIGHT_FLASH_ON_SECS = 0.5
-- State of flashing light
gTimeSinceLastFlash = 0
gLightFlashOn = false
gFirstLightFlash = true
Alles anzeigen
Man hat relativ viel Spielraum, was die Definition der Variablen angeht. Wenn Du Dich an eine vorhandene Funktion hältst, dann wird das für Dich sicher einfacher. Du musst aber im ursprünglichen Skript schauen, wo überall die Variablen verwendet wurden, denn diese Skriptbereiche werden alle (!) auch für das Blinken benötigt.
Im ersten Schritt solltest Du versuchen das entsprechende Licht nur ein und aus zu schalten.
Wenn das Funktioniert, dann kannst Du Dich um das Blinken kümmern.
Bei den obigen Variablen legen die ersten beiden die Aus- und Einschaltdauer des Lichtes fest. Diese vorgegebenen Zeiten werden später in der Updatefunktion mit dem aufsummierten Wert verglichen. Die Variable gTimeSinceLastFlash speichert die aufsummierte Zeit (siehe Beispiel von Taurus 0815). gLightFlashOn speichert den aktuellen Status der Lichtnode. Die letzte Variable gFirstLightFlash startet das erste Blinken, damit der Rhythmus in Gange kommt.
Zum Beispiel nur der Teil zum Blinken:
if (gTimeSinceLastFlash > LIGHT_FLASH_OFF_SECS and gLightFlashOn) then
Call( "xxx:Activate", 0)
gTimeSinceLastFlash = 0
gLightFlashOn = false
elseif (gTimeSinceLastFlash > LIGHT_FLASH_ON_SECS and not gLightFlashOn) or gFirstLightFlash then
Call( "xxx:Activate", 1)
gTimeSinceLastFlash = 0
gLightFlashOn = true
gFirstLightFlash = false
end
Wenn das Blinken per Schalter beendet werden soll, dann müssen die obigen Variablen, die mit "g" beginnen wieder auf die Startwerte gesetzt werden.
Gruß Schuster