Öka/minska dimmernivå med extra fjärrkontroll
Posted: Fri Mar 17, 2023 9:45 am
Började med att koppla in en Nexa dimmermottagare WMR-252 bakom strömbrytare för att kunna tända/släcka via NexaHome. Med denna koppling så vet man inte om lampan redan är tänd med strömbrytare. Valde att ersätta Eljo brytare med en Nexa väggsändare WT-1 (Eljo variant) för att få en bättre funktion.
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
23.bsh (revision 2)
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);
}
}