NEWS
Anfängerfrage
-
Liebe Experten,
entschuldigt die Frage, aber irgendwie komme ich nicht weiter.
Zwei Probleme habe ich
1.) Warum zeigt dieses Script die Id nicht korrekt an ?
var MotionDetectId; var MotionDetectStatus; //=true; createState("Kamera.MotionDetectStatus", false, { name: "Kamera Informationen", type: "boolean" }); MotionDetectId = getIdByName('javascript.1.Kamera.MotionDetectStatus'); //MotionDetectStatus = GetState("javascript.1.Kamera.MotionDetectStatus"); //MotionDetectStatus = GetState("javascript.1.Kamera.MotionDetectStatus").val; console.log("ID = " + MotionDetectId); console.log("Status = " + MotionDetectStatus); console.log('Ausgabe OK');
Ausgabe:
20:05:36.753 [info] javascript.1 Stop script script.js.Test_States 20:05:39.555 [info] javascript.1 Start javascript script.js.Test_States 20:05:39.557 [info] javascript.1 script.js.Test_States: ID = undefined 20:05:39.557 [info] javascript.1 script.js.Test_States: Status = undefined 20:05:39.557 [info] javascript.1 script.js.Test_States: Ausgabe OK 20:05:39.558 [info] javascript.1 script.js.Test_States: registered 0 subscriptions and 0 schedules
2. Warum wird hier ein Fehler beim Starten gezeigt (und zwar unabhängig ob ich ".val" am Ende von GetState habe oder nicht)
var MotionDetectId; var MotionDetectStatus; //=true; createState("Kamera.MotionDetectStatus", false, { name: "Kamera Informationen", type: "boolean" }); //MotionDetectId = getIdByName('javascript.1.Kamera.MotionDetectStatus'); //MotionDetectStatus = GetState("javascript.1.Kamera.MotionDetectStatus"); MotionDetectStatus = GetState("javascript.1.Kamera.MotionDetectStatus").val; console.log("ID = " + MotionDetectId); console.log("Status = " + MotionDetectStatus); console.log('Ausgabe OK');
Ergebnis
20:07:48.648 [info] javascript.1 Start javascript script.js.Test_States 20:07:48.649 [error] javascript.1 script.js.Test_States: ReferenceError: GetState is not defined at script.js.Test_States:14:22
Vielen Dank
/RaBu
-
Die ID muss zugewiesen werden. getState(id) beginnt mit kleinem "g".
var MotionDetectId = 'javascript.1.Kamera.MotionDetectStatus'; var MotionDetectStatus; //=true; createState("Kamera.MotionDetectStatus", false, { name: "Kamera Informationen", type: "boolean" }); MotionDetectStatus = getState(MotionDetectId).val; log("ID = " + MotionDetectId); log("Status = " + MotionDetectStatus); log('Ausgabe OK');
-
Teil 2 der Frage: Weil da ein KLEINES g hingehört -> getState()
-
Vielen Dank Euch beiden!
..manchmal sieht man den Wald vor lauter Bäumen nicht .. das mit dem kleinen "g" - danach hätte ich noch Stunden gesucht.
Jetzt verstehe ich auch was "getIdByName" macht.
Vielen Dank
/RaBu
-
Ich häng mich mal hier dran.
Hab 2 Skripte mit Blockly gebaut. Es wird aber nicht ausgelöst.
on({id: 'fritzbox.0.calls.ring', val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("telegram.0.communicate.response"/*Send text through telegram*/, (String('Anruf von:') + String(String(getState("fritzbox.0.calls.ringLastNumber").val) + String(String(getState("tr-064.0.callmonitor.inbound.callerName").val) + String(String(getState("tr-064.0.callmonitor.inbound.timestamp").val) + String(''))))), true); });
-
Schade. Komm hier einfach nicht weiter.
-
Ich häng mich mal hier dran.
Hab 2 Skripte mit Blockly gebaut. Es wird aber nicht ausgelöst. `
Wird es nicht ausgelöst oder kommt nichts bei Telegram an? das sind zwei verschiedene Sachen.
Bau mal eine Ausgabe ins log ein und schau nach
on({id: 'fritzbox.0.calls.ring', val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; log("Das Telefon klingelt"); setState(..........); });
EDIT: Hast Du das Skript aktiviert? d.h. steht im log sowas wie:
javascript.0 Start javascript script.js.Testing.Skript1
-
Danke für deine Hilfe.
Ok so hab ich rausgefunden das es nicht gestartet war, denn oben war noch ein Fehler drin.
Richtig:
on({id: 'fritzbox.0.calls.ring', val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("telegram.0.communicate.response"/*Send text through telegram*/, (String('Anruf von:') + String(String(getState("fritzbox.0.calls.ringLastNumber").val) + String(String(getState("tr-064.0.callmonitor.inbound.callerName").val) + String(getState("tr-064.0.callmonitor.inbound.timestamp").val)))), true); });
Was mich jetzt wundert, ich hatte das gestern Abend schonmal probiert, hatte aber keine Lust Screenshots zu machen.
Da stand im Log ebenfalls das das Teil gestartet worden wäre.
In dem jetzt unten eingebauten LOG stand es nichtmehr.
Kann man die LOG-Größe verändern?
Muss ich das Script ggf wie den Cloud Adapter alle X-Minuten neustarten?
Hatte heute Anruf bekommen, hat aber wieder nicht geklappt.
Wenn ich deinen Code einbauen will, zerstört es mit den Blockly-Modus.
2094_anruf2.png
2094_anruf3.png
2094_anruf4.png -
Danke für deine Hilfe.
Ok so hab ich rausgefunden das es nicht gestartet war, denn oben war noch ein Fehler drin.
Richtig:
on({id: 'fritzbox.0.calls.ring', val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("telegram.0.communicate.response"/*Send text through telegram*/, (String('Anruf von:') + String(String(getState("fritzbox.0.calls.ringLastNumber").val) + String(String(getState("tr-064.0.callmonitor.inbound.callerName").val) + String(getState("tr-064.0.callmonitor.inbound.timestamp").val)))), true); });
Was mich jetzt wundert, ich hatte das gestern Abend schonmal probiert, hatte aber keine Lust Screenshots zu machen.
Da stand im Log ebenfalls das das Teil gestartet worden wäre.
In dem jetzt unten eingebauten LOG stand es nichtmehr.
Kann man die LOG-Größe verändern?
Muss ich das Script ggf wie den Cloud Adapter alle X-Minuten neustarten?
Hatte heute Anruf bekommen, hat aber wieder nicht geklappt.
Wenn ich deinen Code einbauen will, zerstört es mit den Blockly-Modus. `
Log ist der debug Block in Blockly… Ich hab das nur schnell per Hand rein geschrieben. -
Mal gucken was passiert:
on({id: 'fritzbox.0.calls.ring', val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log((String('Anruf von:') + String(String(getState("fritzbox.0.calls.ringLastNumber").val) + String(String(getState("tr-064.0.callmonitor.inbound.callerName").val) + String(getState("tr-064.0.callmonitor.inbound.timestamp").val))))); setState("telegram.0.communicate.response"/*Send text through telegram*/, (String('Anruf von:') + String(String(getState("fritzbox.0.calls.ringLastNumber").val) + String(String(getState("tr-064.0.callmonitor.inbound.callerName").val) + String(getState("tr-064.0.callmonitor.inbound.timestamp").val)))), true); });