NEWS
[gelöst] Aus Skript ein weiteres Skript starten
-
Ich möchte aus einem Skript heraus ein weiteres Skript starten. Kann mir jemand den Befehl sagen ??
Gesendet von meinem Lenovo TAB 2 A10-70L mit Tapatalk
-
Hallo,
kannst du etwas genauer werden? Im Javascript-Adapter sind die Skripte an sich ja keine Programme, wie in der HM-Webui. Du kannst ja theoretisch alle Logik in ein einziges riesiges und unübersichtliches Skript packen. Es sind also nur übersichtliche Einzelteile der Logik, die sich nicht separat starten lassen. Wenn ein bestimmter Teil eines Skriptes von mehreren Stellen ausgelöst werden soll, dann macht es Sinn, ihn in eine Funktion zu packen. Wenn die Funktion dann von mehreren Skripten aus gestartet werden soll, kannst du sie entweder zB oben in jedes dieser Skripte kopieren oder gleich in ein neues, globales Skript packen.
Ich mache das so zB mit den Sayit-Ansagen.
! ````
/* global sayit
Skript setzt Sayit Objekt
und schaltet dafür das iPad zur Tonausgabe mit ipad_schalten(zustand, meldung) ein.
! 18.07.2015 erstellt von Pix
03.08.2015 Verzögerung auf 3s
22.09.2015 Abfrage, ob iPad ein oder aus, Verzögerung auf 4s, wenn aus
*/
! // Sayit
function sayit(ansage) {
var idStatusanzeige = "hm-rpc.0.MEQ1234567.1.STATE"/Stromlose Statusanzeige Flur:1.STATE/,
statusanzeige = getState(idStatusanzeige).val;
var lastSay = null;
if (statusanzeige) {
if (!lastSay || ((new Date()).getTime() - lastSay) > 3000) {
lastSay = (new Date()).getTime();
setState("sayit.0.tts.text"/Text to speech/, ansage);
}
} else {
ipad_schalten(1, "Wandtablet Flur wegen Sprachmeldung eingeschaltet"); // ipad_schalten ist auch eine globale Funktion
setTimeout(function () {
if (!lastSay || ((new Date()).getTime() - lastSay) > 3000) {
lastSay = (new Date()).getTime();
setState("sayit.0.tts.text"/Text to speech/, ansage);
}
}, 4000); // 4s Verzögerung damit iPad anschalten kann
}
}In den Skripts, die eine Ansage produzieren nutze ich dann nur den Aufruf sayit('anzusagender text'); Gruß Pix
-
Hi HKF8770,
wie bei Buttons in vis vorgehen. Also ein Objekt "Auslöser" für dein 2tes script, im 2ten script "on({id: Auslöser, val: true})" usw. Im ersten script "setState("Auslöser", true).
Gesendet von meinem Jolla mit Tapatalk
-
Hey Jey Cee… Danke für den Tipp. Also direkter Start ist nicht möglich. Dafür einfach einen virtuellen Schaler setzen, welcher dann dass andere Skript startet.
Gesendet von meinem Lenovo TAB 2 A10-70L mit Tapatalk