Lägg in följande i bsh filen för den device du vill ska trigga igång sekvensen,Valmor wrote:Jag undrar om det redan finns möjlighet att på något sätt sekvens-styra flera händelser efter varandra. Går det? Jag har sett att man kan lägga till lite för att en släck-händelse inte ska inträffa innan tändhändelsen med "Cmd Group", men det är inte så jag menar.
Jag tänker mig att ett normalt förlopp är att man släcker de lampor man passerar när man går och lägger sig. Jag skulle vilja kunna emulera det på ett trovärdigt sätt. Eftersom man inte går och lägger sig på precis samma tid så krävs en viss slumpning av tid, men då slumpas alla tider på de olika lamporna varpå vissa lyser långt efter att de andra slocknat. Jag skulle vilja ha en funktion där man kan välja i vilken ordning lampor ska släckas och ställa in en viss slumpad tid innan nästa släcks, och att man kan ange vilka som ev kan byta plats i sekvensen.
T.ex. Device 1 = A, Device 2 = B, Device 3 = B, Device 4 = C där då Device 2 och 3 får slumpen avgöra vilken som släck först, men båda slocknar innan Device 4 släcks.
Denna funktionen skulle sedan kunna slumpas ut olika starttider på olika kvällar.
Om denna funktionen redan finns, hur gör man?
exempelvis 31.bsh
Code: Select all
device = "31";
if (deviceIsOn(device)) {
sequence = "go_to_sleep_1";
if (!timerIsRunning(sequence)) {
startTimer(sequence, 0); // no delay
}
deviceOff(device);
}
go_to_sleep_1.bsh
Code: Select all
sequence_without_number = "go_to_sleep_";
sequence = sequence_without_number + "1";
int step = 1;
previous_step = getData(sequence + ":step");
if (previous_step != null) {
step += Integer.parseInt(previous_step);
}
echo("step:" + step);
switch(step) {
case 1:
deviceOff("Device 1"); // use device Name or Id here
startTimer(sequence, randomValue(15, 20)); // min/max seconds delay before next step in sequence
break;
case 2:
startTimer(sequence_without_number + randomValue(2, 3), 0); // execute "sequence_2" or "sequence_3" with no delay
default:
step = 0;
}
setData(sequence + ":step", step);
Code: Select all
sequence = "go_to_sleep_2";
int step = 1;
previous_step = getData(sequence + ":step");
if (previous_step != null) {
step += Integer.parseInt(previous_step);
}
echo("step:" + step);
switch(step) {
case 1:
deviceOff("Device 2"); // use device Name or Id here
startTimer(sequence, randomValue(2, 4)); // min/max seconds delay before next step in sequence
break;
case 2:
deviceOff("Device 3");
startTimer(sequence, randomValue(5, 10));
break;
case 3:
startTimer("sequence_4", 0); // no delay
default:
step = 0;
}
setData(sequence + ":step", step);
Code: Select all
sequence = "go_to_sleep_3";
int step = 1;
previous_step = getData(sequence + ":step");
if (previous_step != null) {
step += Integer.parseInt(previous_step);
}
echo("step:" + step);
switch(step) {
case 1:
deviceOff("Device 3"); // use device Name or Id here
startTimer(sequence, randomValue(2, 4)); // min/max seconds delay before next step in sequence
break;
case 2:
deviceOff("Device 2");
startTimer(sequence, randomValue(5, 10));
break;
case 3:
startTimer("sequence_4", 0); // no delay
default:
step = 0;
}
setData(sequence + ":step", step);
Code: Select all
sequence = "go_to_sleep_4";
int step = 1;
previous_step = getData(sequence + ":step");
if (previous_step != null) {
step += Integer.parseInt(previous_step);
}
echo("step:" + step);
switch(step) {
case 1:
deviceOff("Device 4"); // use device Name or Id here
default:
step = 0;
}
setData(sequence + ":step", step);