NEWS
Ein script für x buttons. Welcher Button hat das Script aufgerufen?
-
Hallo zusammen,
als totaler Anfänger habe ich im VIS 64 Buttons defiert und alle sollen das gleiche Script aufrufen: "Object ID = javascript.0.scriptEnabled.Garten.Beleuchtung.On". Wie kann ich herausfunden welcher Button das Script aufgerufen hat?
Ich möchte nicht für jeden Button ein eigenes Script bauen.
Das Script sieht so aus und funktioniert für ein Button:on({id: 'javascript.0.scriptEnabled.Garten.Beleuchtung.On'}, function(obj){
getState("mqtt.0.Garten.Beleuchtung.Zeiten.on.so", (err, state) => {
console.log("State.val: "+state.val+" neu: "+addHour(state.val));
setState("mqtt.0.Garten.Beleuchtung.Zeiten.on.so",addHour(state.val));
})
}); -
ich befürchte, das wird nicht gehen.
Aber vielleicht hat ja ein genialer Geist hier noch eine Idee.
Interessehalber aber die Frage...
Warum müssen 64 Button das gleiche tun? Was ist der Anwendungsfall? -
@Burgi sagte in Ein script für x buttons. Welcher Button hat das Script aufgerufen?:
VIS 64 Buttons defiert
- Lege 64 boolean Objekte an. (also true und false)
- Schreibe Script mit on (welches objekt geht auf true)
damit weißt du dann genau welcher button gedrückt wurd. - Im o.g. Script dann dein script aufrufen.
Nachteil:
du musst 64 Objekte anlegen und diese dann deinen buttons zuordnen.P.S.
das Anlegen geht auch per Script:
createState('javascript.0.64_Buttons.Button_x', true, {type: 'boolean',name: 'Button x',read: true,write: true,role: 'per Script'});dies dann 64 mal nach unten kopieren und x mit der fortlaufenden zahl ersetzen; Script starten und dann hast du 64 Objekte
-
@bahnuhr sagte in Ein script für x buttons. Welcher Button hat das Script aufgerufen?:
dies dann 64 mal nach unten kopieren und x mit der fortlaufenden zahl ersetzen; Script starten und dann hast du 64 Objekte
Oder man nimmt das Konstrukt, das es in der Programmierung dafür gibt: Schleifen.
// 64 States mit fortlaufender Nummerierung erstellen for (let i = 1; i <= 64; i++) { createState('javascript.0.64_Buttons.Button_' + i, true, { type: 'boolean', name: 'Button ' + i, read: true, write: true, role: 'per Script' }); }
@Burgi sagte in Ein script für x buttons. Welcher Button hat das Script aufgerufen?:
Object ID = javascript.0.scriptEnabled.Garten.Beleuchtung.On
Eigene Datenpunkte sollten niemals unter
scriptEnabled
erstellt werden! -
@AlCalzone sagte in Ein script für x buttons. Welcher Button hat das Script aufgerufen?:
Oder man nimmt das Konstrukt, das es in der Programmierung dafür gibt: Schleifen.
Ja, so gehts einfacher.