NEWS
Shelly - Rollo via einen Taster
-
Moin
ich möchte gerne ein Rollo auf/zu/stop über einen Taste realesieren. Aber irgentwie will das nicht so wie ich ds möchte.. Glaube der fehler liegt in der if Anweisung / string?
Könnt ihr mir einen Denkanstoss geben?on({id: 'zigbee.0.00158d0002178/c.right_click'/*Right click event*/, val : true}, function() { // rechtr Taster var state = getState('shelly.0.SHSW-25#0045NN#1.Shutter.state'/*state*/).val; var pos = getState('shelly.0.SHSW-27#00748D#1.Shutter.Position'/*Position*/).val; if(pos < 80 && state === "stop") { setState('shelly.0.SHSW-25#004MMD#1.Shutter.Close'/*Close*/,true); }; if(pos < 20 && state === "stop") { setState('shelly.0.SHSW-25#004MMD#1.Shutter.Open'/*Open*/,true); } if("open" || "close") { setState('shelly.0.SHSW-25#0045xx#1.Shutter.Pause'/*Pause*/,true); } });
-
@thomson sagte in Shelly - Rollo via einen Taster:
if(pos < 80 && state === "stop") { setState('shelly.0.SHSW-25#004MMD#1.Shutter.Close'/*Close*/,true); };
Eventuell Klammersetzung?
versuch malif((pos < 80) && (state === "stop")) { setState('shelly.0.SHSW-25#004MMD#1.Shutter.Close'/*Close*/,true); };
-
Leider ohne erfolg. Es passert nicht
-
Ich finde einen Fehler einfach nicht Es passiert nichts...
Könnt ihr da bitte mal n blick drauf werfen?
Danke!on({id: 'zigbee.0.00158d00021xxxxc.right_click', val: true}, function(obj) { console.log('gedrückt'); var value = obj.state.val; var oldValue = obj.oldState.val; if((obj.state ? obj.state.val : "")) { if(getState('shelly.0.SHSW-25#00xxxx#1.Shutter.state').val != `stop`) { setState('shelly.0.SHSW-25#00xxxx#1.Shutter.Pause',true); console.log('STOPP'); } else if( getState('shelly.0.SHSW-25#00xxxx#1.Shutter.state').ts < getState('shelly.0.SHSW-25#00xxxx#1.Relay1.Switch').ts) { setState('shelly.0.SHSW-25#00xxxx#1.Shutter.Open'/*Open*/,true); console.log('öffnen'); } else if( getState('shelly.0.SHSW-25#00xxxx#1.Relay0.Switch').ts > getState('shelly.0.SHSW-25#00xxxx#1.Relay1.Switch').ts) { setState('shelly.0.SHSW-25#00xxxx#1.Shutter.Close'/*Close*/,true); console.log('schließen'); } } });
-
Hi
dein erstes Skript fand ich ganz gut deshalb korrigiere ich das mal:@thomson sagte in Shelly - Rollo via einen Taster:
if("open" || "close") { setState('shelly.0.SHSW-25#0045xx#1.Shutter.Pause'/*Pause*/,true);
die letzte Bedingung ist immer true und stoppt dann immer deine Rollofahrt gleich wieder
sollte vermutlich:if(state==="open" || state ==="close")
heißen.
und bei dem ersten If müsste es wohl heißen >80, statt kleiner und aus der zweiten würde ich nen else if machen
und die dritte am besten gleich auchif(pos > 80 && state === "stop") //..... else if(pos <20 && state === "stop") //...
Außerdem sind deine ID vom Shelly alle unterschiedlich, die sollten alle vom selben Shelly sein, falls du sie nicht absichtlich verfremdet hast....
bei deinem zweiten Skript steig ich gar nicht richtig durch was du machen willst wirkt irgendwie strange,kommen deine Konsolen ausgaben?
vermutlich ist die erste Bedingung schon nicht richtig.@thomson sagte in Shelly - Rollo via einen Taster:
if((obj.state ? obj.state.val : "")) {
viele grüße
-
vielen Dank. nun klappt es