mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-28 13:16:32 +00:00
Merge pull request #9888 from ascillato/patch-2
KNX: Change DPT9 to DPT14 for sensors and KnxTX
This commit is contained in:
commit
d237bc4294
@ -83,5 +83,7 @@ uint32_t ESPKNXIP::data_to_4byte_uint(uint8_t *data)
|
|||||||
|
|
||||||
float ESPKNXIP::data_to_4byte_float(uint8_t *data)
|
float ESPKNXIP::data_to_4byte_float(uint8_t *data)
|
||||||
{
|
{
|
||||||
return (float)((data[1] << 24) | (data[2] << 16) | (data[3] << 8) |data[4]);
|
union { float f; uint32_t i; } num;
|
||||||
}
|
num.i = (uint32_t)((data[1] << 24) | (data[2] << 16) | (data[3] << 8) | (data[4] << 0));
|
||||||
|
return num.f;
|
||||||
|
}
|
||||||
|
@ -182,7 +182,13 @@ void ESPKNXIP::send_4byte_uint(address_t const &receiver, knx_command_type_t ct,
|
|||||||
|
|
||||||
void ESPKNXIP::send_4byte_float(address_t const &receiver, knx_command_type_t ct, float val)
|
void ESPKNXIP::send_4byte_float(address_t const &receiver, knx_command_type_t ct, float val)
|
||||||
{
|
{
|
||||||
uint8_t buf[] = {0x00, ((uint8_t *)&val)[3], ((uint8_t *)&val)[2], ((uint8_t *)&val)[1], ((uint8_t *)&val)[0]};
|
union { float f; uint32_t i; } num;
|
||||||
|
num.f = val;
|
||||||
|
uint8_t buf[] = {0x00,
|
||||||
|
(uint8_t)((num.i & 0xFF000000) >> 24),
|
||||||
|
(uint8_t)((num.i & 0x00FF0000) >> 16),
|
||||||
|
(uint8_t)((num.i & 0x0000FF00) >> 8),
|
||||||
|
(uint8_t)((num.i & 0x000000FF) >> 0)};
|
||||||
send(receiver, ct, 5, buf);
|
send(receiver, ct, 5, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -561,7 +561,7 @@ void KNX_CB_Action(message_t const &msg, void *arg)
|
|||||||
dtostrfd(tempvar,0,tempchar);
|
dtostrfd(tempvar,0,tempchar);
|
||||||
} else {
|
} else {
|
||||||
// VALUE
|
// VALUE
|
||||||
float tempvar = knx.data_to_2byte_float(msg.data);
|
float tempvar = knx.data_to_4byte_float(msg.data);
|
||||||
dtostrfd(tempvar,2,tempchar);
|
dtostrfd(tempvar,2,tempchar);
|
||||||
}
|
}
|
||||||
AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX D_RECEIVED_FROM " %d.%d.%d " D_COMMAND " %s: %s " D_TO " %s"),
|
AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX D_RECEIVED_FROM " %d.%d.%d " D_COMMAND " %s: %s " D_TO " %s"),
|
||||||
@ -630,18 +630,18 @@ void KNX_CB_Action(message_t const &msg, void *arg)
|
|||||||
}
|
}
|
||||||
else if (chan->type == KNX_TEMPERATURE) // Reply Temperature
|
else if (chan->type == KNX_TEMPERATURE) // Reply Temperature
|
||||||
{
|
{
|
||||||
knx.answer_2byte_float(msg.received_on, last_temp);
|
knx.answer_4byte_float(msg.received_on, last_temp);
|
||||||
if (Settings.flag.knx_enable_enhancement) {
|
if (Settings.flag.knx_enable_enhancement) {
|
||||||
knx.answer_2byte_float(msg.received_on, last_temp);
|
knx.answer_4byte_float(msg.received_on, last_temp);
|
||||||
knx.answer_2byte_float(msg.received_on, last_temp);
|
knx.answer_4byte_float(msg.received_on, last_temp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (chan->type == KNX_HUMIDITY) // Reply Humidity
|
else if (chan->type == KNX_HUMIDITY) // Reply Humidity
|
||||||
{
|
{
|
||||||
knx.answer_2byte_float(msg.received_on, last_hum);
|
knx.answer_4byte_float(msg.received_on, last_hum);
|
||||||
if (Settings.flag.knx_enable_enhancement) {
|
if (Settings.flag.knx_enable_enhancement) {
|
||||||
knx.answer_2byte_float(msg.received_on, last_hum);
|
knx.answer_4byte_float(msg.received_on, last_hum);
|
||||||
knx.answer_2byte_float(msg.received_on, last_hum);
|
knx.answer_4byte_float(msg.received_on, last_hum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef USE_RULES
|
#ifdef USE_RULES
|
||||||
@ -737,10 +737,10 @@ void KnxSensor(uint8_t sensor_type, float value)
|
|||||||
uint8_t i = KNX_GA_Search(sensor_type);
|
uint8_t i = KNX_GA_Search(sensor_type);
|
||||||
while ( i != KNX_Empty ) {
|
while ( i != KNX_Empty ) {
|
||||||
KNX_addr.value = Settings.knx_GA_addr[i];
|
KNX_addr.value = Settings.knx_GA_addr[i];
|
||||||
knx.write_2byte_float(KNX_addr, value);
|
knx.write_4byte_float(KNX_addr, value);
|
||||||
if (Settings.flag.knx_enable_enhancement) {
|
if (Settings.flag.knx_enable_enhancement) {
|
||||||
knx.write_2byte_float(KNX_addr, value);
|
knx.write_4byte_float(KNX_addr, value);
|
||||||
knx.write_2byte_float(KNX_addr, value);
|
knx.write_4byte_float(KNX_addr, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s " D_SENT_TO " %d.%d.%d "),
|
AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s " D_SENT_TO " %d.%d.%d "),
|
||||||
@ -1050,10 +1050,10 @@ void CmndKnxTxVal(void)
|
|||||||
float tempvar = CharToFloat(XdrvMailbox.data);
|
float tempvar = CharToFloat(XdrvMailbox.data);
|
||||||
dtostrfd(tempvar,2,XdrvMailbox.data);
|
dtostrfd(tempvar,2,XdrvMailbox.data);
|
||||||
|
|
||||||
knx.write_2byte_float(KNX_addr, tempvar);
|
knx.write_4byte_float(KNX_addr, tempvar);
|
||||||
if (Settings.flag.knx_enable_enhancement) {
|
if (Settings.flag.knx_enable_enhancement) {
|
||||||
knx.write_2byte_float(KNX_addr, tempvar);
|
knx.write_4byte_float(KNX_addr, tempvar);
|
||||||
knx.write_2byte_float(KNX_addr, tempvar);
|
knx.write_4byte_float(KNX_addr, tempvar);
|
||||||
}
|
}
|
||||||
|
|
||||||
AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %s " D_SENT_TO " %d.%d.%d"),
|
AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %s " D_SENT_TO " %d.%d.%d"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user