Hej
Jag hanterar alla lampor i mitt kök med hjälp av knappar och scheman i NexaHome. De lampor som styrs är t.ex. bänkbelysning, takbelysning, köksbord, fönsterlampor m.m.
Nu har jag införskaffat en IR-detektor som känner av när någon rör sig i köket. Den skickar tänd-signal direkt och släck-signal 10 minuter efter att rörelse slutat. Denna har jag programmerat in som en egen device i NexaHome.
Nu vill jag kunna styra kökslamporna så att de släcks när alla lämnat rummet och tänds igen till föregående inställt värde när någon kommer in i köket igen. När IR indikerar Off skulle jag alltså behöva spara undan alla lampors status, t.ex. bänkbelysning på, takbelysning av, köksbord 40% innan jag skickar släck-kommandon för dem. Sedan när IR indikerar On igen så ska dessa värden läsas tillbaka och respektive On och Level-kommando ska skickas för att återställa allt till som det var innan.
Finns det någon bra lösning på detta?
Minne och återställning
Re: Minne och återställning
Skapa två bsh filer, den andra filen ska ha samma namn som din IR-detektors device id.
level_cmd.bsh
8.bsh
Testa om ovanstående funkar.
level_cmd.bsh
Code: Select all
bsh_file = "level_cmd";
params = getData(bsh_file + ".params_");
if (params != null) {
var len = Integer.parseInt(params);
if (len >= 2) {
String cmd = getData(bsh_file + ".param1_");
String device = getData(bsh_file + ".param2_");
if (cmd.equals("set") && len >= 3) {
levelNew = getData(bsh_file + ".param3_").toLowerCase();
percent = levelNew.endsWith("%");
levelCurrent = getDeviceLevel(device);
if (percent) {
levelCurrent = levelCurrent + "%";
} else {
if (levelCurrent.equals("100")) {
levelCurrent = "on";
} else {
levelCurrent = "off";
}
}
setData(level_cmd + "." + device + ".level", levelCurrent);
if (percent) {
deviceLevel(device, levelNew);
} else if (levelNew.equals("on")) {
deviceOn(device);
} else {
deviceOff(device);
}
} else if (cmd.equals("restore")) {
levelPrevious = getData(level_cmd + "." + device + ".level");
if (levelPrevious != null) {
percent = levelPrevious.endsWith("%");
if (percent) {
deviceLevel(device, levelPrevious);
} else if (levelPrevious.equals("on")) {
deviceOn(device);
} else {
deviceOff(device);
}
}
}
}
}
Code: Select all
device = "8";
if (deviceIsOn(device)) {
execFile("level_cmd.bsh");
execParam("restore");
execParam("15"); // device id
execFile("level_cmd.bsh");
execParam("restore");
execParam("5");
} else {
execFile("level_cmd.bsh");
execParam("set");
execParam("15"); // device id
execParam("0%"); // level
execFile("level_cmd.bsh");
execParam("set");
execParam("5");
execParam("off");
}
Henrik | http://easyhomeauto.se
Re: Minne och återställning
Jisses! Det fungerar alldeles utmärkt. Tack så hemskt mycket, det där hade jag aldrig fixat själv.
Det blev även en liten donation.
Det blev även en liten donation.