Jag var inte nöjd med att få senast använda ljusstyrka då lampan tändes med väggsändare samt sättet att förändra dimmernivå.
Ville ha en funktion som såg till att ljusstyrkan var fördefinierad då man tänder med väggsändare. Dimring skulle ske mellan fasta lägen. Men, inte vara beroende av att NexaHome är i drift för att kunna tända/släcka belysning.
Funktion med nedanstående bsh filer
- Väggsändare tänder med fördefinierad nivå (kan inte förändra nivå, "on" återställer nivå).
- Dimring (max, grund och min) med hjälp av extra fjärrkontroll.
- Extra fjärrkontroll kan nyttjas för att tända (med fördefinierad nivå)/släcka.
- NexaHome kan tända med valfri nivå.
Har valt att sätta dimmermottagarens "Repeat" till noll för att få en bättre response då man ökar eller minskar dimmernivå med extra fjärrkontroll. Kan nu ha värde noll pga en bättre antenn (GP433).
Edit: 2014-12-31 Funktion direkt efter uppstart av NexaHome var inte optimal. Ny version av 23.bsh!
11.bsh
Code: Select all
device_1 = "11"; //dimmermottagare som styrs direkt av väggsändare
device_2 = "23"; //extra fjärrkontroll
level = getDeviceLevel(device_1);
setData("device_level_" + device_1, level + "%");
level_grund ="60%"; //grundnivå
//echo("11 - " + getExecutedBy() + " level = " + level);
if (executedByUpdate()) {
flag = getData("flag_" + device_1);
if (flag == null || flag.length() == 0) { //väggsändare!
if (deviceIsOn(device_1)) {
setData("device_level_" + device_1, level_grund);
deviceLevel(device_1, level_grund);
} else {
setData("device_level_" + device_1, "0%");
}
} else {
setData("flag_" + device_1, "");
}
} else if (executedByCmd()){
setData("flag_" + device_1, level);
}
Code: Select all
if (executedByUpdate()) {
//echo(getExecutedBy());
device_1 = "11"; //dimmermottagare som styrs direkt av väggsändare
device_2 = "23"; //extra fjärrkontroll
level_max = 70; //max
level_grund = 60; //grundnivå
level_min = 50; //min
level = getData("device_level_" + device_1);
if (level != null) {
level_value = Float.parseFloat(level.substring(0, level.length() - 1));
String new_level = null;
if (deviceIsOn(device_2)) {
//öka
if (level_value == 0) {new_level = level_grund + "%";} //tänd
else if (level_value >= level_grund) {new_level = level_max + "%";}
else if (level_value >= level_min) {new_level = level_grund + "%";}
else if (level_value < level_min) {new_level = level_min + "%";}
} else {
//minska
if (level_value > level_max) {new_level = level_max + "%";}
else if (level_value > level_grund) {new_level = level_grund + "%";}
else if (level_value > level_min ) {new_level = level_min + "%";}
else if (level_value <= level_min) {new_level="0%";} //släck!
}
if (new_level != null) {
setData("flag_" + device_1, new_level);
setData("device_level_" + device_1, new_level);
if (new_level.equals("0%")) {deviceOff(device_1);}
else {
deviceLevel(device_1, new_level);
}
}
} else {
new_level = level_grund + "%"; //tänd
setData("flag_" + device_1, new_level);
setData("device_level_" + device_1, new_level);
deviceLevel(device_1, new_level);
}
}