NEWS
[gelöst] up/Down Dimmen über einen Taster
-
Hallo zusammen,
ich bastel gerade an einem Script, dass mir das Dimmen einer Lampe über gedrückten Taster (Homematic) ermöglichen soll.
So lange der Taster gehalten wird, wird ein Datenpunkt immer wieder aktualisiert. Ich habe es soweit geschafft, dass dann auch hoch oder runter gedimmt wird.
Jetzt möchte ich gerne noch, dass wenn der Taster losgelassen wird und erneut gedrückt wird die Richtung geändert wird.Hier ein Auszug aus meinem Script:
function lichtfinn1dim() { if (down){ setState(idLichtFinn1dim, getState(idLichtFinn1dim).val - 15); } else { setState(idLichtFinn1dim, getState(idLichtFinn1dim).val + 15); } }; on({id: idTasterFinn + ".2.PRESS_CONT", change: "any"}, function (obj) { if(obj.state.val) { if(timerpause) clearTimeout(timerpause); timerdimm = setInterval(lichtfinn1dim, 200); } else { // Loslassen clearInterval(timerdimm); down = !down; timerpause = setTimeout(function() {down = !down}, 1000); } });Wenn ich jetzt drückt wird das licht Heller. Aber nach einem erneuten drücken wird es nicht dunkler. Hat jemand einen Tipp was ich machen kann ?
Kann es sein, dass es daran liegt, dass der Datenpunkt immer auf true steht und nur aktualisiert wird?
Dann ist bestimmt dieser Teil nicht korrekt:if(obj.state.val) {Vielen Dank
-
Hallo zusammen,
ich bastel gerade an einem Script, dass mir das Dimmen einer Lampe über gedrückten Taster (Homematic) ermöglichen soll.
So lange der Taster gehalten wird, wird ein Datenpunkt immer wieder aktualisiert. Ich habe es soweit geschafft, dass dann auch hoch oder runter gedimmt wird.
Jetzt möchte ich gerne noch, dass wenn der Taster losgelassen wird und erneut gedrückt wird die Richtung geändert wird.Hier ein Auszug aus meinem Script:
function lichtfinn1dim() { if (down){ setState(idLichtFinn1dim, getState(idLichtFinn1dim).val - 15); } else { setState(idLichtFinn1dim, getState(idLichtFinn1dim).val + 15); } }; on({id: idTasterFinn + ".2.PRESS_CONT", change: "any"}, function (obj) { if(obj.state.val) { if(timerpause) clearTimeout(timerpause); timerdimm = setInterval(lichtfinn1dim, 200); } else { // Loslassen clearInterval(timerdimm); down = !down; timerpause = setTimeout(function() {down = !down}, 1000); } });Wenn ich jetzt drückt wird das licht Heller. Aber nach einem erneuten drücken wird es nicht dunkler. Hat jemand einen Tipp was ich machen kann ?
Kann es sein, dass es daran liegt, dass der Datenpunkt immer auf true steht und nur aktualisiert wird?
Dann ist bestimmt dieser Teil nicht korrekt:if(obj.state.val) {Vielen Dank
-
Hi, danke für deine Info.
Die variable hab eich außerhalb deklariert. Hatte es nur nicht mir hier rein kopiert. -
@paul53 sagte in Dimmen über ein Taster:
on({id: idTasterFinn + ".2.PRESS_CONT"}, function (obj) { log('PRESS_CONT: ' + obj.state.val); });
Danke für deine Hilfe.
Hier das Log File:2019-03-30 07:45:36.901 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:37.105 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:37.368 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:37.629 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:37.872 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:38.126 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:38.411 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:38.634 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:38.871 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:39.138 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:39.385 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:39.640 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true -
@paul53 sagte in Dimmen über ein Taster:
on({id: idTasterFinn + ".2.PRESS_CONT"}, function (obj) { log('PRESS_CONT: ' + obj.state.val); });
Danke für deine Hilfe.
Hier das Log File:2019-03-30 07:45:36.901 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:37.105 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:37.368 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:37.629 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:37.872 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:38.126 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:38.411 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:38.634 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:38.871 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:39.138 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:39.385 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true 2019-03-30 07:45:39.640 - info: javascript.2 script.js.Test.Test_Taster: PRESS_CONT: true@mctom Das Log zeigt, dass während eines langen Tastendrucks alle ca. 250 ms eine Aktualisierung erfolgt und der Wert true bleibt. Damit ist eine Abfrage
if(obj.state.val) {sinnlos und man kann sich das Intervall sparen, denn das liefert der Datenpunkt.
on({id: idTasterFinn + ".2.PRESS_CONT"}, function () { lichtfinn1dim(); if(timerpause) clearTimeout(timerpause); timerpause = setTimeout(function() { down = !down; timerpause = null; }, 600); });