Verwijderd schreef op zondag 14 augustus 2016 @ 14:48:
Beginnersvraag wellicht, maar ik kan niet echt een voorbeeld vinden van wat ik wil. Is er een handige manier om bijvoorbeeld een kaku dimmer in stappen te dimmen dmv aan/uit schakelaars? Ik zou zodoende graag met 1 schakelaar van bijvoorbeeld 30% naar 60% naar 100% willen gaan.
Mijn idee zou zijn om een delay op de (dummy)schakelaar te zetten zodat de schakelaar na 1 seconde weer 'uit' gaat, en in blocky voor elke stap een actie maak. Bijvoorbeeld iets als:
IF schakelaar =on AND dimmer =off DO set dimmer =30%
IF schakelaar =on AND dimmer =30% DO set dimmer =60%
enz enz, waarbij de schakelaar zichzelf dus uitzet na 1 seconde, dus je moet niet al te snel drukken.
Lijkt me vrij complex, kan dat niet handiger? En is een delay van 1 seconde de enige manier om een soort puls schakelaar te maken in domoticz? Misschien is er een trucje dat ik niet ken
EDIT: dit gaat ook niet werken, want als het script blijft lopen schiet hij meteen door zijn stappen richting 100%, want schakelaar blijft immers even ON.
Iemand?

Heb je niet eens dummy devices of variables voor nodig.
Conditioneel schakelen op 1 device is niet zo moeilijk. Een voorbeeld van de knopjes van mijn minimote, code uit mijn pass2php script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| function miniliving1s(){global $s,$i;
if($s['denon']=='Off'){sw($i['denon'],'On','Denon');usleep(800000);}
if($s['tv']=='Off')sw($i['tv'],'On','TV');
if($s['zon']<100){
if($s['kristal']=='Off')sw($i['kristal'],'On','kristal');
if($s['tvled']=='Off')sw($i['tvled'],'On','tvled');
} elseif($s['zon']>300){
if($s['kristal']=='On')sw($i['kristal'],'Off','kristal');
if($s['tvled']=='On')sw($i['tvled'],'Off','tvled');
}
file_get_contents(denon.'/MainZone/index.put.asp?cmd0=PutZone_InputFunction/SAT/CBL',false,ctx);usleep(800000);
file_get_contents(denon.'/MainZone/index.put.asp?cmd0=PutMasterVolumeSet/-42.0',false,ctx);
} |
Ziets kan je ook makkelijk toepassen voor jouw wens:
PHP:
1
2
3
4
5
6
7
| function dimmer(){global $a,$s,$i;
if($a=="On"){
if($s['dimmer']=='Off')sl($i['dimmer'],30);
elseif($s['dimmer']==30)sl($i['dimmer'],60);
elseif($s['dimmer']==60)sl($i['dimmer'],100);
}
} |
Dat brengt me trouwens op een idee. Ik heb led lampen boven de eettafel waarvan de drivers zo traag reageren dat het bijna onmogelijk is om ze te regelen met de drukknop, zelfs niet met een dimtime van 10sec. Als ik nu die drukknop op I2 aansluit en de rest via script doe wordt dat wellicht een stuk makkelijker.
Enige nadeel dat ik daar dan in zie is dat je steeds door de loop moet om hem dan weer uit te schakelen, of je moet een dubbele drukknop gebruiken (waar ik geen zin in heb, zijn nog maar pas nieuwe schakelaars).
Edit: er moet toch wat extra code bij. De status van een dimmer is immers 'Off', 'On' of 'Set Level: 15%'. Dat moet dus eerst even opgekuist worden.
Code hieronder zet een dimmer in een loopje op 1%, 8%, 15%, 100%, Off.
PHP:
1
2
3
4
5
6
7
8
9
10
| function eettafel(){global $s,$s,$i;
if($s['eettafel']=='Off')$eettafel='Off';
elseif($s['eettafel']=='On')$eettafel='On';
else $eettafel=filter_var($s['eettafel'],FILTER_SANITIZE_NUMBER_INT);
if($eettafel=='Off')sl($i['eettafel'],2);
elseif($eettafel=='On')sw($i['eettafel'],'Off');
elseif($eettafel<8)sl($i['eettafel'],9);
elseif($eettafel>=8&&$eettafel<15)sl($i['eettafel'],16);
elseif($eettafel>=15&&$eettafel<100)sl($i['eettafel'],100);
} |
[
Voor 23% gewijzigd door
Verwijderd op 15-08-2016 07:19
]