diff --git a/idm/idm.cpp b/idm/idm.cpp index 5489f2b..899db67 100644 --- a/idm/idm.cpp +++ b/idm/idm.cpp @@ -104,6 +104,18 @@ void Idm::onReceivedHoldingRegister(int slaveAddress, int modbusRegister, const if (value.length() == 2) { m_info->m_roomTemperature = ModbusHelpers::convertRegisterToFloat(&value[RegisterList::RoomTemperatureHKA - modbusRegister]); } + m_modbusMaster->readHoldingRegister(Idm::ModbusUnitID, Idm::RoomTemperatureTargetHeatingHKA, 2); + break; + case Idm::RoomTemperatureTargetHeatingHKA: + if (value.length() == 2) { + m_info->m_targetRoomTemperature = ModbusHelpers::convertRegisterToFloat(&value[RegisterList::RoomTemperatureTargetHeatingHKA - modbusRegister]); + } + m_modbusMaster->readHoldingRegister(Idm::ModbusUnitID, Idm::CurrentPowerConsumptionHeatPump, 2); + break; + case Idm::CurrentPowerConsumptionHeatPump: + if (value.length() == 2) { + m_info->m_powerConsumptionHeatPump = ModbusHelpers::convertRegisterToFloat(&value[RegisterList::CurrentPowerConsumptionHeatPump - modbusRegister]); + } /* Everything read without an error * -> set connected to true */ diff --git a/idm/idm.h b/idm/idm.h index 4832eb0..6d8b28c 100644 --- a/idm/idm.h +++ b/idm/idm.h @@ -130,7 +130,7 @@ private: TargetRoomTemperatureZ1R1 = 2004, // Zonenmodul 1 Raumsolltemperatur Raum 1 CurrentPhotovoltaicsSurplus = 74, // Aktueller PV-Überschuss CurrentPhotovoltaicsProduction = 78, // Aktueller PV Produktion - CurrentPowerConsumption = 4122, // Aktuelle Leistungsaufnahme Wärmepumpe + CurrentPowerConsumptionHeatPump = 4122, // Aktuelle Leistungsaufnahme Wärmepumpe }; /* Note: This class only requires one IP address and one diff --git a/idm/idminfo.h b/idm/idminfo.h index 7b51380..1139f8a 100644 --- a/idm/idminfo.h +++ b/idm/idminfo.h @@ -62,6 +62,9 @@ struct IdmInfo { /** RegisterList::HumiditySensor */ double m_humidity; + /** RegisterList::CurrentPowerConsumptionHeatPump */ + double m_powerConsumptionHeatPump; + /** RegisterList::OperationModeSystem */ QString m_mode; diff --git a/idm/integrationpluginidm.cpp b/idm/integrationpluginidm.cpp index 951c8cc..472079c 100644 --- a/idm/integrationpluginidm.cpp +++ b/idm/integrationpluginidm.cpp @@ -155,6 +155,7 @@ void IntegrationPluginIdm::onStatusUpdated(IdmInfo *info) thing->setStateValue(navigator2TargetTemperatureStateTypeId, info->m_targetRoomTemperature); thing->setStateValue(navigator2TargetWaterTemperatureStateTypeId, info->m_targetWaterTemperature); thing->setStateValue(navigator2HumidityStateTypeId, info->m_humidity); + thing->setStateValue(navigator2CurrentPowerConsumptionHeatPumpStateTypeId, info->m_powerConsumptionHeatPump); thing->setStateValue(navigator2ModeStateTypeId, info->m_mode); thing->setStateValue(navigator2ErrorStateTypeId, info->m_error); } diff --git a/idm/integrationpluginidm.json b/idm/integrationpluginidm.json index e2d1f4a..5292ce0 100644 --- a/idm/integrationpluginidm.json +++ b/idm/integrationpluginidm.json @@ -105,6 +105,16 @@ "defaultValue": 46.00, "writable": true }, + { + + "id": "b98fb325-100d-4eae-bf8d-97e8f7e1eb00", + "name": "currentPowerConsumptionHeatPump", + "displayName": "Current power consumption heat pump", + "displayNameEvent": "Current power consumption heat pump changed", + "displayNameAction": "Change current power consumption het pump", + "type": "double", + "defaultValue": 0 + }, { "id": "e539366b-44da-4119-b11b-497bcdb1f522", "name": "mode",