mirror of https://github.com/arendst/Tasmota.git
Added Command KNX_PA
Added Command KNX_PA for changing the device KNX Physical Address
This commit is contained in:
parent
77181854a7
commit
a294a9179d
|
@ -198,9 +198,10 @@ const char *device_param_cb[] = {
|
||||||
#define D_CMND_KNXTXVAL "KnxTx_Val"
|
#define D_CMND_KNXTXVAL "KnxTx_Val"
|
||||||
#define D_CMND_KNX_ENABLED "Knx_Enabled"
|
#define D_CMND_KNX_ENABLED "Knx_Enabled"
|
||||||
#define D_CMND_KNX_ENHANCED "Knx_Enhanced"
|
#define D_CMND_KNX_ENHANCED "Knx_Enhanced"
|
||||||
enum KnxCommands { CMND_KNXTXCMND, CMND_KNXTXVAL, CMND_KNX_ENABLED, CMND_KNX_ENHANCED } ;
|
#define D_CMND_KNX_PA "Knx_PA"
|
||||||
const char kKnxCommands[] PROGMEM = D_CMND_KNXTXCMND "|" D_CMND_KNXTXVAL "|" D_CMND_KNX_ENABLED "|" D_CMND_KNX_ENHANCED ;
|
enum KnxCommands { CMND_KNXTXCMND, CMND_KNXTXVAL, CMND_KNX_ENABLED, CMND_KNX_ENHANCED, CMND_KNX_PA } ;
|
||||||
|
const char kKnxCommands[] PROGMEM = D_CMND_KNXTXCMND "|" D_CMND_KNXTXVAL "|" D_CMND_KNX_ENABLED "|"
|
||||||
|
D_CMND_KNX_ENHANCED "|" D_CMND_KNX_PA ;
|
||||||
|
|
||||||
byte KNX_GA_Search( byte param, byte start = 0 )
|
byte KNX_GA_Search( byte param, byte start = 0 )
|
||||||
{
|
{
|
||||||
|
@ -1125,6 +1126,33 @@ boolean KnxCommand()
|
||||||
command, XdrvMailbox.data );
|
command, XdrvMailbox.data );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (CMND_KNX_PA == command_code) {
|
||||||
|
if (XdrvMailbox.data_len) {
|
||||||
|
if (strstr(XdrvMailbox.data, ".")) { // Process parameter entry
|
||||||
|
char sub_string[XdrvMailbox.data_len +1];
|
||||||
|
|
||||||
|
int pa_area = atoi(subStr(sub_string, XdrvMailbox.data, ".", 1));
|
||||||
|
int pa_line = atoi(subStr(sub_string, XdrvMailbox.data, ".", 2));
|
||||||
|
int pa_member = atoi(subStr(sub_string, XdrvMailbox.data, ".", 3));
|
||||||
|
|
||||||
|
if ( ((pa_area == 0) && (pa_line == 0) && (pa_member == 0))
|
||||||
|
|| (pa_area > 15) || (pa_line > 15) || (pa_member > 255) ) {
|
||||||
|
snprintf_P (mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"" D_ERROR "\"}"),
|
||||||
|
command );
|
||||||
|
return true;
|
||||||
|
} // Invalid command
|
||||||
|
|
||||||
|
KNX_addr.pa.area = pa_area;
|
||||||
|
KNX_addr.pa.line = pa_line;
|
||||||
|
KNX_addr.pa.member = pa_member;
|
||||||
|
Settings.knx_physsical_addr = KNX_addr.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
KNX_addr.value = Settings.knx_physsical_addr;
|
||||||
|
snprintf_P (mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"%d.%d.%d\"}"),
|
||||||
|
command, KNX_addr.pa.area, KNX_addr.pa.line, KNX_addr.pa.member );
|
||||||
|
}
|
||||||
|
|
||||||
else { return false; } // Incomplete command
|
else { return false; } // Incomplete command
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue