NEWS
SayIt - Ausgabe bei MOTION
-
habe den Script "SayIt - Ausgabe bei Wetterwarnung (DWD)" laufen.
nun wollte ich eine Ansage machen wenn der Bewegungsmelder auf der Terasse auslöst.
Leider habe ich es wohl noch nicht verstanden
Hier mein "nicht funktionierender" Script
var idSayIt = "sayit.0.tts.text"; var MOTION = "hm-rpc.0.LEQxxxxxxx.1.MOTION"; subscribe(MOTION, function (obj) { if (obj.newState.val !==true) { setState (idSayIt, "Achtung Bewegung auf der Terasse") ; } if (obj.newState.val ===false) { setState (idSayIt, "Alles wieder ruhig") ; } });wer kann mir einen Tipp geben?
Gruß
Jürgen
-
Hallo Jürgen,
wie gut, dass ich nichts von js verstehe, aber so etwas würde ich nicht machen:
@derAuge:var MOTION = "hm-rpc.0.LEQxxxxxxx.1.MOTION"; `
Gruß
Rainer
-
ein paar kleine Anpassungen
var idSayIt = "sayit.0.tts.text"; var Bewegung = "hm-rpc.0.LEQxxxxxxx.1.MOTION"; subscribe(Bewegung, function (obj) { if (obj.newState.val ===true) { setState (idSayIt, "Achtung Bewegung auf der Terasse") ; } if (obj.newState.val ===false) { setState (idSayIt, "Alles wieder ruhig") ; } });Gruß
Jürgen
-
Hallo Jürgen ich kämpfe auch noch mit JS
probiere mal
on('hm-rpc.0.LEQXXXXXXX.1.MOTION', function (obj) { // Bewegung überwachen if (obj.newState.val ===true) { setState (idSayIt, "Achtung Bewegung auf der Terasse") ; } if (obj.newState.val ===false) { setState (idSayIt, "Alles wieder ruhig") ; } });Gruß Stephan
-
Oder so was.
Immer wenn man Zweifeln hat muss man Debug Ausgaben einbauen:
var idSayIt = "sayit.0.tts.text"; var idBewegung = "hm-rpc.0.LEQxxxxxxx.1.MOTION"; on(idBewegung, function (obj) { log('Bewegung: ' + JSON.stringify(obj.newState)); if (obj.newState.val === true || obj.newState.val === "true" || obj.newState.val === 1 || obj.newState.val === "1") { setState (idSayIt, "Achtung Bewegung auf der Terasse") ; } else { setState (idSayIt, "Alles wieder ruhig") ; } }); -
if (obj.newState.val === true || obj.newState.val === "true" || obj.newState.val === 1 || obj.newState.val === "1") `
Javascript macht doch implizite Typwandlungen. Genügt da nicht die Abfrageif (obj.newState.val)egal, welche von den 4 Varianten stimmt ?
EDIT: Bei Zeichenketten funktioniert die implizite Typwandlung nicht, da nur leere Zeichenketten (Länge 0) ein false liefern.
-
if (obj.newState.val === true || obj.newState.val === "true" || obj.newState.val === 1 || obj.newState.val === "1") `
Javascript macht doch implizite Typwandlungen. Genügt da nicht die Abfrageif (obj.newState.val)egal, welche von den 4 Varianten stimmt ?
EDIT: Bei Zeichenketten funktioniert die implizite Typwandlung nicht, da nur leere Zeichenketten (Länge 0) ein false liefern. `
Richtig. Z.B.console.log(!"0")
liefert false.
Auch
console.log(!"false");
liefert false.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden