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); });
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