Skip to content

Instantly share code, notes, and snippets.

@Katheesh
Created December 17, 2025 05:09
Show Gist options
  • Select an option

  • Save Katheesh/386a914bd00fdb0416fa55a618dd72b6 to your computer and use it in GitHub Desktop.

Select an option

Save Katheesh/386a914bd00fdb0416fa55a618dd72b6 to your computer and use it in GitHub Desktop.
#ifdef WITH_RS485_PEER
#define MY_ADDRESS 0x21
uint8_t peers[] = {0x21, 0x22};
uint8_t peerCount = 2;
#endif
uint8_t SWITCHES[] = {1,2,3,4,5}; //Anantara BKA Room
const char* THERMOSTAT_NAME = "bka_living_thermostat";
void setupModbusDevices(){
addModbusDevice(15, 30, 3, 100, true); //"thermostat_modbus"
addModbusDevice(40, 0, 4, 100, false); //"entrance_panel"
addModbusDevice(10, 0, 1, 100, false); //"powder_room"
addModbusDevice(31, 0, 3, 100, false); //"living_room_panel"
addModbusDevice(70, 0, 15, 100, false); //"corridor"
addModbusDevice(71, 0, 0, 1000, false); //"bell"
addModbusPointer(15, 30, THERMOSTAT_NAME, "fcu", "roomtemp", "{\"actuator\": 22}");
addModbusPointer(15, 31, THERMOSTAT_NAME, "fcu", "setpoint", "{\"actuator\": 22}");
addModbusPointer(15, 32, THERMOSTAT_NAME, "fcu", "fanmode", "{\"l\": 6, \"m\": 7, \"h\": 8}");
addModbusPointer(40, 0, "master", "scene", "master", "{\"toggle\": [1,2,3,4,5]}");
addModbusPointer(40, 1, "bka_corridor_light", "switch", "1", "{}");
addModbusPointer(40, 2, "mur", "scene", "mur", "{}");
addModbusPointer(40, 3, "dnd", "scene", "dnd", "{}");
addModbusPointer(10, 0, "bka_powder_room_light", "switch", "2", "{}");
addModbusPointer(31, 0, "living_room", "scene", "group", "{\"toggle\": [3,4]}");
addModbusPointer(31, 1, "bka_living_tv_light", "switch", "4", "{}");
addModbusPointer(31, 2, "bka_balcony_light", "switch", "5", "{}");
addModbusPointer(70, 0, "speakerbell", "bell", "mbbell", "{}");
}
void setupSensors(){
addSensor(1, "corridor_sensor", "presence", "{}");
addSensor(2, "living_room_sensor", "presence", "{}");
addSensor(3, "living_door_sensor", "door", "{}");
}
void activate_nor(){
writeDeviceHoldingRegister(70,12,0);
delay(10);
writeDeviceHoldingRegister(40,12,0);
delay(10);
writeDeviceHoldingRegister(70,11,0);
delay(10);
writeDeviceHoldingRegister(40,13,0);
}
void activate_dnd(){
writeDeviceHoldingRegister(70,11,1);
delay(10);
writeDeviceHoldingRegister(40,13,1);
delay(10);
writeDeviceHoldingRegister(70,12,0);
delay(10);
writeDeviceHoldingRegister(40,12,0);
}
void activate_mur(){
writeDeviceHoldingRegister(70,12,1);
delay(10);
writeDeviceHoldingRegister(40,12,1);
delay(10);
writeDeviceHoldingRegister(70,11,0);
delay(10);
writeDeviceHoldingRegister(40,13,0);
}
void ring_bell(){
writeDeviceHoldingRegister(71,10,1);
}
#ifdef WITH_RS485_PEER
#define MY_ADDRESS 0x22
uint8_t peers[] = {0x21, 0x22};
uint8_t peerCount = 2;
#endif
uint8_t SWITCHES[] = {1,2,3,4,5,6}; //Anantara BKA Room Ctrl - 02
const char* THERMOSTAT_NAME = "bka_bedroom_thermostat";
void setupModbusDevices(){
addModbusDevice(15, 30, 3, 100, true); //"thermostat"
addModbusDevice(41, 0, 4, 100, false); //"bedroom_panel"
addModbusDevice(30, 0, 3, 100, false); //"bathroom_panel"
addModbusDevice(61, 0, 6, 100, false); //"bed_right"
addModbusDevice(60, 0, 15, 100, false); //"bed_left"
addModbusPointer(15, 30, THERMOSTAT_NAME, "fcu", "roomtemp", "{\"actuator\": 22}");
addModbusPointer(15, 31, THERMOSTAT_NAME, "fcu", "setpoint", "{\"actuator\": 22}");
addModbusPointer(15, 32, THERMOSTAT_NAME, "fcu", "fanmode", "{\"l\": 9, \"m\": 10, \"h\": 11}");
addModbusPointer(41, 0, "bedroom_master", "scene", "group", "{\"toggle\": [1,2,3,4,5,6]}");
addModbusPointer(41, 1, "bka_ceiling_light", "switch", "1", "{}");
addModbusPointer(41, 2, "mur", "scene", "mur", "{}");
addModbusPointer(41, 3, "dnd", "scene", "dnd", "{}");
addModbusPointer(41, 4, "master", "scene", "master", "{\"toggle\": [1,2,3,4,5,6]}");
addModbusPointer(30, 0, "bka_bathroom_light", "switch", "6", "{}");
addModbusPointer(30, 1, "bka_curtain_down", "curtain", "close", "{\"open\": 8, \"close\": 7, \"delay\": 38000}");
addModbusPointer(30, 2, "bka_curtain_up", "curtain", "open", "{\"open\": 8, \"close\": 7, \"delay\": 38000}");
addModbusPointer(61, 0, "bka_bedside_lamp", "switch", "2", "{}");
addModbusPointer(61, 1, "bka_bed_light", "switch", "3", "{}");
addModbusPointer(61, 2, "bedroom_master", "scene", "group", "{\"toggle\": [1,2,3,4,5,6]}");
addModbusPointer(61, 3, "bka_mirror_light", "switch", "4", "{}");
addModbusPointer(61, 4, "bka_ceiling_light", "switch", "1", "{}");
addModbusPointer(61, 5, "bka_tv_light", "switch", "5", "{}");
addModbusPointer(60, 0, "bedroom_master", "scene", "group", "{\"toggle\": [1,2,3,4,5,6]}");
addModbusPointer(60, 1, "bka_bed_light", "switch", "3", "{}");
addModbusPointer(60, 2, "bka_bedside_lamp", "switch", "2", "{}");
addModbusPointer(60, 3, "bka_tv_light", "switch", "5", "{}");
addModbusPointer(60, 4, "bka_ceiling_light", "switch", "1", "{}");
addModbusPointer(60, 5, "bka_mirror_light", "switch", "4", "{}");
}
void setupSensors(){
addSensor(1, "bathroom_sensor", "presence", "{}");
addSensor(2, "bedroom_sensor", "presence", "{}");
}
void activate_nor(){
writeDeviceHoldingRegister(41,13,0);
delay(10);
writeDeviceHoldingRegister(41,12,0);
}
void activate_dnd(){
writeDeviceHoldingRegister(41,13,1);
delay(10);
writeDeviceHoldingRegister(41,12,0);
}
void activate_mur(){
writeDeviceHoldingRegister(41,12,1);
delay(10);
writeDeviceHoldingRegister(41,13,0);
}
void ring_bell(){
writeDeviceHoldingRegister(71,10,1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment