Feature: Detect if inverter supports 'Power Distribution Logic'

The detection of 'Power Distribution Logic' is based on the firmware version for specific models and is needed to disable any means of overscaling, as it simply does not work when 'Power Distrbution Logic' is available.

Based on the code from @AndreasBoehm
This commit is contained in:
Thomas Basler 2024-12-31 16:08:37 +01:00
parent c37397acca
commit a0e6942537
13 changed files with 64 additions and 12 deletions

View File

@ -45,7 +45,9 @@
"Refreshing": "Refrescando",
"Pull": "Tira hacia abajo para refrescar",
"Release": "Soltar para refrescar",
"Close": "Cerrar"
"Close": "Cerrar",
"Yes": "Yes",
"No": "No"
},
"wait": {
"NotReady": "OpenDTU is not yet ready",
@ -193,7 +195,10 @@
"FirmwareVersion": "Versión del firmware",
"FirmwareBuildDate": "Fecha de construcción del firmware",
"HardwarePartNumber": "Número de parte de hardware",
"HardwareVersion": "Versión de hardware"
"HardwareVersion": "Versión de hardware",
"SupportsPowerDistributionLogic": "'Power Distribution Logic' supported",
"Yes": "@:base.Yes",
"No": "@:base.No"
},
"gridprofile": {
"NoInfo": "@:devinfo.NoInfo",

View File

@ -45,7 +45,9 @@
"Refreshing": "Aggiorna",
"Pull": "Trascina in basso per aggiornare",
"Release": "Rilascia per aggiornare",
"Close": "Chiudi"
"Close": "Chiudi",
"Yes": "Yes",
"No": "No"
},
"wait": {
"NotReady": "OpenDTU is not yet ready",
@ -193,7 +195,10 @@
"FirmwareVersion": "Versione Firmware",
"FirmwareBuildDate": "Data Firmware",
"HardwarePartNumber": "Hardware Part Number",
"HardwareVersion": "Hardware Version"
"HardwareVersion": "Hardware Version",
"SupportsPowerDistributionLogic": "'Power Distribution Logic' supported",
"Yes": "@:base.Yes",
"No": "@:base.No"
},
"gridprofile": {
"NoInfo": "@:devinfo.NoInfo",

View File

@ -75,3 +75,10 @@ uint8_t HMS_4CH::getByteAssignmentSize() const
{
return sizeof(byteAssignment) / sizeof(byteAssignment[0]);
}
bool HMS_4CH::supportsPowerDistributionLogic()
{
// This feature was added in inverter firmware version 01.01.12 and
// will limit the AC output instead of limiting the DC inputs.
return DevInfo()->getFwBuildVersion() >= 10112U;
}

View File

@ -10,4 +10,5 @@ public:
String typeName() const;
const byteAssign_t* getByteAssignment() const;
uint8_t getByteAssignmentSize() const;
};
bool supportsPowerDistributionLogic() final;
};

View File

@ -219,3 +219,8 @@ bool HM_Abstract::sendGridOnProFileParaRequest()
return true;
}
bool HM_Abstract::supportsPowerDistributionLogic()
{
return false;
}

View File

@ -16,6 +16,7 @@ public:
bool sendRestartControlRequest();
bool resendPowerControlRequest();
bool sendGridOnProFileParaRequest();
bool supportsPowerDistributionLogic() override;
private:
uint8_t _lastAlarmLogCnt = 0;
@ -23,4 +24,4 @@ private:
PowerLimitControlType _activePowerControlType = PowerLimitControlType::AbsolutNonPersistent;
uint8_t _powerState = 1;
};
};

View File

@ -103,6 +103,9 @@ public:
virtual bool sendChangeChannelRequest();
virtual bool sendGridOnProFileParaRequest() = 0;
// This feature will limit the AC output instead of limiting the DC inputs.
virtual bool supportsPowerDistributionLogic() = 0;
HoymilesRadio* getRadio();
AlarmLogParser* EventLog();

View File

@ -35,6 +35,7 @@ void WebApiDevInfoClass::onDevInfoStatus(AsyncWebServerRequest* request)
root["hw_model_name"] = inv->DevInfo()->getHwModelName();
root["max_power"] = inv->DevInfo()->getMaxPower();
root["fw_build_datetime"] = inv->DevInfo()->getFwBuildDateTimeStr();
root["pdl_supported"] = inv->supportsPowerDistributionLogic();
}
WebApi.sendJsonResponse(request, response, __FUNCTION__, __LINE__);

View File

@ -46,6 +46,12 @@
<td>{{ $t('devinfo.HardwareVersion') }}</td>
<td>{{ devInfoList.hw_version }}</td>
</tr>
<tr>
<td>{{ $t('devinfo.SupportsPowerDistributionLogic') }}</td>
<td>
<StatusBadge :status="devInfoList.pdl_supported" true_text="devinfo.Yes" false_text="devinfo.No" />
</td>
</tr>
</tbody>
</table>
</template>
@ -53,6 +59,7 @@
<script lang="ts">
import BootstrapAlert from '@/components/BootstrapAlert.vue';
import type { DevInfoStatus } from '@/types/DevInfoStatus';
import StatusBadge from '@/components/StatusBadge.vue';
import { BIconInfoSquare } from 'bootstrap-icons-vue';
import { defineComponent, type PropType } from 'vue';
@ -60,6 +67,7 @@ export default defineComponent({
components: {
BootstrapAlert,
BIconInfoSquare,
StatusBadge,
},
props: {
devInfoList: { type: Object as PropType<DevInfoStatus>, required: true },

View File

@ -30,7 +30,9 @@
"Refreshing": "Aktualisieren",
"Pull": "Zum Aktualisieren nach unten ziehen",
"Release": "Loslassen zum Aktualisieren",
"Close": "Schließen"
"Close": "Schließen",
"Yes": "Ja",
"No": "Nein"
},
"wait": {
"NotReady": "OpenDTU ist noch nicht bereit",
@ -179,7 +181,10 @@
"FirmwareVersion": "Firmware-Version",
"FirmwareBuildDate": "Firmware-Erstellungsdatum",
"HardwarePartNumber": "Hardware-Teilenummer",
"HardwareVersion": "Hardware-Version"
"HardwareVersion": "Hardware-Version",
"SupportsPowerDistributionLogic": "'Power Distribution Logic' unterstützt",
"Yes": "@:base.Yes",
"No": "@:base.No"
},
"gridprofile": {
"NoInfo": "@:devinfo.NoInfo",

View File

@ -30,7 +30,9 @@
"Refreshing": "Refreshing",
"Pull": "Pull down to refresh",
"Release": "Release to refresh",
"Close": "Close"
"Close": "Close",
"Yes": "Yes",
"No": "No"
},
"wait": {
"NotReady": "OpenDTU is not yet ready",
@ -179,7 +181,10 @@
"FirmwareVersion": "Firmware Version",
"FirmwareBuildDate": "Firmware Build Date",
"HardwarePartNumber": "Hardware Part Number",
"HardwareVersion": "Hardware Version"
"HardwareVersion": "Hardware Version",
"SupportsPowerDistributionLogic": "'Power Distribution Logic' supported",
"Yes": "@:base.Yes",
"No": "@:base.No"
},
"gridprofile": {
"NoInfo": "@:devinfo.NoInfo",

View File

@ -30,7 +30,9 @@
"Refreshing": "Refreshing",
"Pull": "Pull down to refresh",
"Release": "Release to refresh",
"Close": "Fermer"
"Close": "Fermer",
"Yes": "Yes",
"No": "No"
},
"wait": {
"NotReady": "OpenDTU is not yet ready",
@ -179,7 +181,10 @@
"FirmwareVersion": "Version du firmware",
"FirmwareBuildDate": "Date de création du firmware",
"HardwarePartNumber": "Numéro d'article matériel",
"HardwareVersion": "Version du matériel"
"HardwareVersion": "Version du matériel",
"SupportsPowerDistributionLogic": "'Power Distribution Logic' supported",
"Yes": "@:base.Yes",
"No": "@:base.No"
},
"gridprofile": {
"NoInfo": "@:devinfo.NoInfo",

View File

@ -8,4 +8,5 @@ export interface DevInfoStatus {
hw_version: number;
hw_model_name: string;
max_power: number;
pdl_supported: boolean;
}