diff --git a/mennekes/integrationpluginmennekes.cpp b/mennekes/integrationpluginmennekes.cpp index cd307f2..5a37e01 100644 --- a/mennekes/integrationpluginmennekes.cpp +++ b/mennekes/integrationpluginmennekes.cpp @@ -398,6 +398,16 @@ void IntegrationPluginMennekes::setupAmtronECUConnection(ThingSetupInfo *info) } qCDebug(dcMennekes()) << "Connection init finished successfully" << amtronECUConnection; + + QString minimumVersion = "5.22"; + if (!ensureAmtronECUVersion(amtronECUConnection, minimumVersion)) { + qCWarning(dcMennekes()) << "Firmware version too old:" << QByteArray::fromHex(QByteArray::number(amtronECUConnection->firmwareVersion(), 16)) << "Minimum required:" << minimumVersion; + hardwareManager()->networkDeviceDiscovery()->unregisterMonitor(monitor); + amtronECUConnection->deleteLater(); + info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("The firmware version of this wallbox is too old. Please upgrade the firmware to at least version 5.22.")); + return; + } + m_amtronECUConnections.insert(thing, amtronECUConnection); info->finish(Thing::ThingErrorNoError); @@ -426,8 +436,13 @@ void IntegrationPluginMennekes::setupAmtronECUConnection(ThingSetupInfo *info) qCDebug(dcMennekes()) << "min current limit changed:" << minCurrentLimit; thing->setStateMinValue(amtronECUMaxChargingCurrentStateTypeId, minCurrentLimit); }); - connect(amtronECUConnection, &AmtronECUModbusTcpConnection::maxCurrentLimitChanged, thing, [thing](quint16 maxCurrentLimit) { + connect(amtronECUConnection, &AmtronECUModbusTcpConnection::maxCurrentLimitChanged, thing, [this, thing](quint16 maxCurrentLimit) { qCDebug(dcMennekes()) << "max current limit changed:" << maxCurrentLimit; + // If the vehicle or cable are not capable of reporting the maximum, this will be 0 + // We'll reset to the max defined in the json file in that case + if (maxCurrentLimit == 0) { + maxCurrentLimit = supportedThings().findById(amtronECUThingClassId).stateTypes().findById(amtronECUMaxChargingCurrentStateTypeId).maxValue().toUInt(); + } thing->setStateMaxValue(amtronECUMaxChargingCurrentStateTypeId, maxCurrentLimit); }); connect(amtronECUConnection, &AmtronECUModbusTcpConnection::hemsCurrentLimitChanged, thing, [thing](quint16 hemsCurrentLimit) { diff --git a/mennekes/translations/c7c3c65c-a0cc-4ab1-90d8-4ad05bfcdc38-en_US.ts b/mennekes/translations/c7c3c65c-a0cc-4ab1-90d8-4ad05bfcdc38-en_US.ts index 1ae03de..3179782 100644 --- a/mennekes/translations/c7c3c65c-a0cc-4ab1-90d8-4ad05bfcdc38-en_US.ts +++ b/mennekes/translations/c7c3c65c-a0cc-4ab1-90d8-4ad05bfcdc38-en_US.ts @@ -9,23 +9,28 @@ - - + + The MAC address is not known. Please reconfigure the thing. - - + + The host address is not known yet. Trying later again. - - + + Error communicating with the wallbox. + + + The firmware version of this wallbox is too old. Please upgrade the firmware to at least version 5.22. + + Mennekes