NEWS
Javascript: Mehrere Raffstores über einen Schalter hoch oder herunter fahren
-
Hallo liebe Leute,
ich möchte mit einem Button alle meine Raffstores über Shelly2 und seinen Adapter gerne hoch- und herunter fahren.
Ich erstelle also unter commons ein Script für nauf und eines für runter:
const myStateId = 'Raff_runter';
// Datenpunkt anlegen
createState(myStateId , {name: 'Raffstores runter', type: 'boolean', def: false, read: true, write: true, role: 'switch'});
on('javascript.0.'+myStateId , function (obj) {
var val = obj.state.val;
// Mehrer States schalten
setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);
setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);
setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);
setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);
})
ich aktiviere das Script und binde den Schalter (javascript.0.Raff_runter) im vis ein. Warum passiert jetzt aber gar nichts wenn ich den Button klicke?
-
Ungetestet, nur kleine Korrektur bezüglich des Datenpunktes. Habe die Konstante auch groß geschrieben, da gängige Praxis.
const MY_STATE_ID = 'javascript.0.Raff_runter'; // Datenpunkt anlegen createState(MY_STATE_ID , {name: 'Raffstores runter', type: 'boolean', def: false, read: true, write: true, role: 'switch'}); on(MY_STATE_ID , function (obj) { // Mehrer States schalten setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true); setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true); setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true); setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true); })
-
Warum passiert jetzt aber gar nichts wenn ich den Button klicke? `
Wenn es tatsächlich ein Button ist, dann ändert sich nicht der Wert beim Klicken. Deshalb bei jeder Aktualisierung des Zeitstempels triggern.on({id: 'javascript.0.' + myStateId}, function() {
-
Auf Paul ist Verlass Das fehlende "id:" hatte ich übersehen, so sollte es gehen.
-
Wow vielen Dank schon mal für die rasche Hilfe:
aber jetzt habe ich es so und das Script scheint jetzt defekt:
const MY_STATE_ID = 'javascript.0.Raff_runter';
// Datenpunkt anlegen
createState(MY_STATE_ID , {name: 'Raffstores runter', type: 'boolean', def: false, read: true, write: true, role: 'switch'});
on({id: 'javascript.0.' + myStateId}, function() {
var val = obj.state.val;
// Mehrer States schalten
setState("shelly.0.SHSW-21#32B74B#1.Shutter.Close", val);
setState("shelly.0.SHSW-21#32B8C6#1.Shutter.Close", val);
setState("shelly.0.SHSW-21#32BF9F#1.Shutter.Close", val);
setState("shelly.0.SHSW-21#5B2AFA#1.Shutter.Close", val);
})
19:34:59.001 [error] javascript.0 script.js.common.Raff_runter: script.js.common.Raff_runter:6
19:34:59.001 [error] javascript.0 at script.js.common.Raff_runter:6:27
-
In Zeile 6 verweist Du auf eine nicht definierte Variable, daher:
const MY_STATE_ID = 'javascript.0.Raff_runter'; // Datenpunkt anlegen createState(MY_STATE_ID , {name: 'Raffstores runter', type: 'boolean', def: false, read: true, write: true, role: 'switch'}); on({id: MY_STATE_ID}, function(obj) { var val = obj.state.val; // Mehrer States schalten setState("shelly.0.SHSW-21#32B74B#1.Shutter.Close", val); setState("shelly.0.SHSW-21#32B8C6#1.Shutter.Close", val); setState("shelly.0.SHSW-21#32BF9F#1.Shutter.Close", val); setState("shelly.0.SHSW-21#5B2AFA#1.Shutter.Close", val); })
-
warn: Wrong type of shelly.0.SHSW-21#32B74B#1.Shutter.Open: "string". Please fix, while deprecated and will not work in next versions.
Kann es sein das am Ende, also nach dem Schalter nicht "val" stehen muss, sondern "true"?
so?
const MY_STATE_ID = 'javascript.0.Raff_runter';
// Datenpunkt anlegen
createState(MY_STATE_ID , {name: 'Raffstores runter', type: 'boolean', def: false, read: true, write: true, role: 'switch'});
on({id: MY_STATE_ID}, function(obj) {
var val = obj.state.val;
// Mehrer States schalten
setState("shelly.0.SHSW-21#32B74B#1.Shutter.Close", true);
setState("shelly.0.SHSW-21#32B8C6#1.Shutter.Close", true);
setState("shelly.0.SHSW-21#32BF9F#1.Shutter.Close", true);
setState("shelly.0.SHSW-21#5B2AFA#1.Shutter.Close", true);
})
Vielen Dank, mit true läuft es jetzt!!!
Super
-
also nach dem Schalter nicht "val" stehen muss, sondern "true"? `
Ja, aber wie kommt ein String in den Button-Datenpunkt ? -
Vielen Dank für die tolle Hilfe.
Ich habe zu dem Thema noch ein Ergänzungsfrage:
Aktuell haben wir einen Wind das die Raffstores klappern. Wenn ich diese alle für ca eine halbe Sekunde nach oben fahre, bleiben sie noch geschlossen, klappern jedoch weniger.
Wie setze ich jetzt jeden Raffstore für ca eine halbe Sekunde auf "öffnen"?
Vielen Dank