From d90edc7aaed695dd90dbbda2ea7798a042aa0aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Mon, 5 May 2025 13:17:31 +0200 Subject: [PATCH] PCE: Add new settings and adopt to firmware 0.22 --- pcelectric/EV11.3-registers.json | 61 +++++ pcelectric/integrationpluginpcelectric.cpp | 70 +++++- pcelectric/integrationpluginpcelectric.json | 46 +++- pcelectric/pcelectricdiscovery.cpp | 2 +- pcelectric/pcewallbox.cpp | 212 +++++++++++++++++- pcelectric/pcewallbox.h | 9 +- ...ff833-a8e0-45cc-a1ef-65f05871f272-de_DE.ts | 103 ++++++--- ...ff833-a8e0-45cc-a1ef-65f05871f272-en_US.ts | 103 ++++++--- 8 files changed, 529 insertions(+), 77 deletions(-) diff --git a/pcelectric/EV11.3-registers.json b/pcelectric/EV11.3-registers.json index c6f44b1..0e771ea 100644 --- a/pcelectric/EV11.3-registers.json +++ b/pcelectric/EV11.3-registers.json @@ -118,6 +118,10 @@ { "key": "PwmS0Enabled", "value": 2 + }, + { + "key": "LimitS0Enabled", + "value": 3 } ] } @@ -295,6 +299,31 @@ "access": "R" } ] + }, + { + "id": "update2", + "readSchedule": "update", + "registers": [ + { + "id": "currentPower", + "address": 144, + "size": 1, + "type": "uint16", + "registerType": "holdingRegister", + "description": "Actual charging power (Since firmware version: 0.22)", + "unit": "W", + "access": "RO" + }, + { + "id": "digitalInputFlag", + "address": 145, + "size": 1, + "type": "uint16", + "registerType": "holdingRegister", + "description": "Actual digital input (Since firmware version: 0.22)", + "access": "RO" + } + ] } ], "registers": [ @@ -356,6 +385,38 @@ "description": "Digital input mode", "enum": "DigitalInputMode", "access": "RW" + }, + { + "id": "phaseAutoSwitchPause", + "address": 206, + "size": 1, + "type": "uint16", + "registerType": "holdingRegister", + "description": "Phase auto switch pause (Since firmware version: 0.22)", + "unit": "s", + "defaultValue": "6", + "access": "RW" + }, + { + "id": "phaseAutoSwitchMinChargingTime", + "address": 207, + "size": 1, + "type": "uint16", + "registerType": "holdingRegister", + "description": "Phase auto switch min charging time (Since firmware version: 0.22)", + "unit": "s", + "defaultValue": "120", + "access": "RW" + }, + { + "id": "forceChargingResume", + "address": 208, + "size": 1, + "type": "uint16", + "registerType": "holdingRegister", + "description": "Force charging resume (Since firmware version: 0.22)", + "defaultValue": "0", + "access": "RW" } ] } diff --git a/pcelectric/integrationpluginpcelectric.cpp b/pcelectric/integrationpluginpcelectric.cpp index 8008dfa..4a6777d 100644 --- a/pcelectric/integrationpluginpcelectric.cpp +++ b/pcelectric/integrationpluginpcelectric.cpp @@ -42,7 +42,7 @@ IntegrationPluginPcElectric::IntegrationPluginPcElectric() void IntegrationPluginPcElectric::init() { - + //qCCritical(dcPcElectric()) << QString("%1").arg(QString::number(49155, 2)); } void IntegrationPluginPcElectric::discoverThings(ThingDiscoveryInfo *info) @@ -212,7 +212,7 @@ void IntegrationPluginPcElectric::executeAction(ThingActionInfo *info) quint16 registerValue = PceWallbox::deriveRegisterFromStates(m_chargingCurrentStateBuffer.value(thing)); qCDebug(dcPcElectric()) << "Writing charging current register" << registerValue; - QueuedModbusReply *reply = connection->setChargingCurrent(registerValue); + QueuedModbusReply *reply = connection->setChargingCurrentAsync(registerValue); connect(reply, &QueuedModbusReply::finished, info, [reply, info, thing, power, registerValue](){ if (reply->error() != QModbusDevice::NoError) { qCWarning(dcPcElectric()) << "Could not set power state to" << power << "(" << registerValue << ")" << reply->errorString(); @@ -237,7 +237,7 @@ void IntegrationPluginPcElectric::executeAction(ThingActionInfo *info) quint16 registerValue = PceWallbox::deriveRegisterFromStates(m_chargingCurrentStateBuffer.value(thing)); qCDebug(dcPcElectric()) << "Writing charging current register" << registerValue; - QueuedModbusReply *reply = connection->setChargingCurrent(registerValue); + QueuedModbusReply *reply = connection->setChargingCurrentAsync(registerValue); connect(reply, &QueuedModbusReply::finished, info, [reply, info, thing, desiredChargingCurrent](){ if (reply->error() != QModbusDevice::NoError) { qCWarning(dcPcElectric()) << "Could not set charging current to" << desiredChargingCurrent << reply->errorString(); @@ -262,7 +262,7 @@ void IntegrationPluginPcElectric::executeAction(ThingActionInfo *info) quint16 registerValue = PceWallbox::deriveRegisterFromStates(m_chargingCurrentStateBuffer.value(thing)); qCDebug(dcPcElectric()) << "Writing charging current register" << registerValue; - QueuedModbusReply *reply = connection->setChargingCurrent(registerValue); + QueuedModbusReply *reply = connection->setChargingCurrentAsync(registerValue); connect(reply, &QueuedModbusReply::finished, info, [reply, info, thing, desiredPhaseCount](){ if (reply->error() != QModbusDevice::NoError) { qCWarning(dcPcElectric()) << "Could not set desired phase count to" << desiredPhaseCount << reply->errorString(); @@ -413,8 +413,23 @@ void IntegrationPluginPcElectric::setupConnection(ThingSetupInfo *info) case EV11ModbusTcpConnection::DigitalInputModePwmS0Enabled: thing->setSettingValue(ev11SettingsDigitalInputModeParamTypeId, "2 | PWM and S0 signaling"); break; + case EV11ModbusTcpConnection::DigitalInputModeLimitS0Enabled: + thing->setSettingValue(ev11SettingsDigitalInputModeParamTypeId, "3 | Limit and S0 signaling"); + break; + } + + if (connection->firmwareRevision() >= "0022") { + thing->setSettingValue(ev11SettingsPhaseAutoSwitchPauseParamTypeId, connection->phaseAutoSwitchPause()); + thing->setStateValue(ev11SettingsPhaseAutoSwitchMinChargingTimeParamTypeId, connection->phaseAutoSwitchMinChargingTime()); + thing->setStateValue(ev11SettingsForceChargingResumeParamTypeId, connection->forceChargingResume() == 1 ? true : false); } } + + if (connection->firmwareRevision() >= "0022") { + thing->setStateValue(ev11CurrentPowerStateTypeId, connection->currentPower()); + thing->setStateValue(ev11DigitalInputFlagStateTypeId, QString("0b%1").arg(connection->digitalInputFlag(), 16, 2, QLatin1Char('0'))); + } + }); connect(thing, &Thing::settingChanged, connection, [thing, connection](const ParamTypeId ¶mTypeId, const QVariant &value){ @@ -423,7 +438,7 @@ void IntegrationPluginPcElectric::setupConnection(ThingSetupInfo *info) quint16 percentage = value.toUInt(); qCDebug(dcPcElectric()) << "Setting LED brightness to" << percentage << "%"; - QueuedModbusReply *reply = connection->setLedBrightness(percentage); + QueuedModbusReply *reply = connection->setLedBrightnessAsync(percentage); connect(reply, &QueuedModbusReply::finished, thing, [reply, percentage](){ if (reply->error() != QModbusDevice::NoError) { qCWarning(dcPcElectric()) << "Could not set led brightness to" << percentage << "%" << reply->errorString(); @@ -443,12 +458,14 @@ void IntegrationPluginPcElectric::setupConnection(ThingSetupInfo *info) modeValue = EV11ModbusTcpConnection::DigitalInputModeEnableChargingInverted; } else if (mode == "2 | PWM and S0 signaling") { modeValue = EV11ModbusTcpConnection::DigitalInputModePwmS0Enabled; + } else if (mode == "3 | Limit and S0 signaling") { + modeValue = EV11ModbusTcpConnection::DigitalInputModeLimitS0Enabled; } else { - qCWarning(dcPcElectric()) << "Unknown mode value" << mode; + qCWarning(dcPcElectric()) << "Unknown digital input mode value" << mode; return; } - QueuedModbusReply *reply = connection->setDigitalInputMode(modeValue); + QueuedModbusReply *reply = connection->setDigitalInputModeAsync(modeValue); connect(reply, &QueuedModbusReply::finished, thing, [reply, modeValue](){ if (reply->error() != QModbusDevice::NoError) { qCWarning(dcPcElectric()) << "Could not set digital input mode to" << modeValue << reply->errorString(); @@ -457,6 +474,45 @@ void IntegrationPluginPcElectric::setupConnection(ThingSetupInfo *info) qCDebug(dcPcElectric()) << "Successfully set digital input mode to" << modeValue; }); + } else if (paramTypeId == ev11SettingsPhaseAutoSwitchPauseParamTypeId) { + quint16 registerValue = value.toUInt(); + + qCDebug(dcPcElectric()) << "Setting phase auto switch pause to" << registerValue << "s"; + QueuedModbusReply *reply = connection->setPhaseAutoSwitchPauseAsync(registerValue); + connect(reply, &QueuedModbusReply::finished, thing, [reply, registerValue](){ + if (reply->error() != QModbusDevice::NoError) { + qCWarning(dcPcElectric()) << "Could not set phase auto switch pause to" << registerValue << "s" << reply->errorString(); + return; + } + + qCDebug(dcPcElectric()) << "Successfully set phase auto switch pause to" << registerValue << "s"; + }); + } else if (paramTypeId == ev11SettingsPhaseAutoSwitchMinChargingTimeParamTypeId) { + quint16 registerValue = value.toUInt(); + + qCDebug(dcPcElectric()) << "Setting phase auto switch min charging current" << registerValue << "s"; + QueuedModbusReply *reply = connection->setPhaseAutoSwitchMinChargingTimeAsync(registerValue); + connect(reply, &QueuedModbusReply::finished, thing, [reply, registerValue](){ + if (reply->error() != QModbusDevice::NoError) { + qCWarning(dcPcElectric()) << "Could not set phase auto switch min charging current to" << registerValue << "s" << reply->errorString(); + return; + } + + qCDebug(dcPcElectric()) << "Successfully set phase auto switch min charging current to" << registerValue << "s"; + }); + } else if (paramTypeId == ev11SettingsForceChargingResumeParamTypeId) { + quint16 registerValue = value.toBool() ? 1 : 0; + + qCDebug(dcPcElectric()) << "Setting force charging resume to" << registerValue; + QueuedModbusReply *reply = connection->setForceChargingResumeAsync(registerValue); + connect(reply, &QueuedModbusReply::finished, thing, [reply, registerValue](){ + if (reply->error() != QModbusDevice::NoError) { + qCWarning(dcPcElectric()) << "Could not set force charging resume to" << registerValue << reply->errorString(); + return; + } + + qCDebug(dcPcElectric()) << "Successfully set force charging resume to" << registerValue; + }); } }); diff --git a/pcelectric/integrationpluginpcelectric.json b/pcelectric/integrationpluginpcelectric.json index 15ce948..1003faf 100644 --- a/pcelectric/integrationpluginpcelectric.json +++ b/pcelectric/integrationpluginpcelectric.json @@ -68,8 +68,36 @@ "allowedValues": [ "0 | Charging allowed", "1 | Charging allowed inverted", - "2 | PWM and S0 signaling" + "2 | PWM and S0 signaling", + "3 | Limit and S0 signaling" ] + }, + { + "id": "a5354c66-0a7a-44a8-bea0-0305b91b63cf", + "name": "phaseAutoSwitchPause", + "displayName": "Phase autoswitch pause", + "type": "int", + "unit": "Seconds", + "minValue": 5, + "maxValue": 600, + "defaultValue": 6 + }, + { + "id": "7b0b5375-7980-4f99-9542-1dcb0390fb22", + "name": "phaseAutoSwitchMinChargingTime", + "displayName": "Phase autoswitch minimal charging time", + "type": "int", + "unit": "Seconds", + "minValue": 5, + "maxValue": 600, + "defaultValue": 120 + }, + { + "id": "5cece964-fe64-4e26-86ee-ba8fbbedd523", + "name": "forceChargingResume", + "displayName": "Force charging resume", + "type": "bool", + "defaultValue": false } ], "stateTypes": [ @@ -142,6 +170,15 @@ "defaultValue": 3, "writable": true }, + { + "id": "bbe97e15-8fa7-42e0-9023-1d41425ccbee", + "name": "currentPower", + "displayName": "Active power", + "type": "double", + "unit": "Watt", + "defaultValue": 0, + "cached": false + }, { "id": "3da3ee80-e9e7-4237-85a6-b4adcb2f483b", "name": "sessionEnergy", @@ -174,6 +211,13 @@ "displayName": "Firmware version", "type": "QString", "defaultValue": "" + }, + { + "id": "c606c59b-6b3e-4de8-aaf8-aea4742200d9", + "name": "digitalInputFlag", + "displayName": "Digital input flag", + "type": "QString", + "defaultValue": "" } ] } diff --git a/pcelectric/pcelectricdiscovery.cpp b/pcelectric/pcelectricdiscovery.cpp index 990a98f..38bc20e 100644 --- a/pcelectric/pcelectricdiscovery.cpp +++ b/pcelectric/pcelectricdiscovery.cpp @@ -1,6 +1,6 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* Copyright 2013 - 2024, nymea GmbH +* Copyright 2013 - 2025, nymea GmbH * Contact: contact@nymea.io * * This file is part of nymea. diff --git a/pcelectric/pcewallbox.cpp b/pcelectric/pcewallbox.cpp index 7936654..971ab8b 100644 --- a/pcelectric/pcewallbox.cpp +++ b/pcelectric/pcewallbox.cpp @@ -106,6 +106,7 @@ bool PceWallbox::update() enqueueRequest(reply); + // charging current register. Contains // - power state // - chargingcurrent (if power is true) @@ -200,16 +201,158 @@ bool PceWallbox::update() const QVector values = unit.values(); processLedBrightnessRegisterValues(values); - emit updateFinished(); + if (firmwareRevision() < "0022") + emit updateFinished(); + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); }); enqueueRequest(reply); } + + + if (firmwareRevision() < "0022") + return true; + + + // --------------------------------------------------------------------------------------- + // Registers since 0022 (V 0.22) + + // Make sure we only have one update 2 call in the queue + bool update2Queued = false; + foreach (QueuedModbusReply *r, m_readQueue) { + if (r->dataUnit().startAddress() == readBlockUpdate2DataUnit().startAddress()) { + update2Queued = true; + break; + } + } + + if (!update2Queued) { + reply = new QueuedModbusReply(QueuedModbusReply::RequestTypeRead, readBlockUpdate2DataUnit(), this); + connect(reply, &QueuedModbusReply::finished, reply, &QueuedModbusReply::deleteLater); + connect(reply, &QueuedModbusReply::finished, this, [this, reply](){ + + if (m_currentReply == reply) + m_currentReply = nullptr; + + if (reply->error() != QModbusDevice::NoError) { + qCWarning(dcPcElectric()) << "Failed to fetch update 2 block" << reply->error() << reply->errorString(); + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); + return; + } + + const QModbusDataUnit unit = reply->reply()->result(); + const QVector blockValues = unit.values(); + processBlockUpdate2RegisterValues(blockValues); + + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); + }); + + enqueueRequest(reply); + } + + + bool phaseAutoSwitchPauseQueued = false; + foreach (QueuedModbusReply *r, m_readQueue) { + if (r->dataUnit().startAddress() == phaseAutoSwitchPauseDataUnit().startAddress()) { + phaseAutoSwitchPauseQueued = true; + break; + } + } + + if (!phaseAutoSwitchPauseQueued) { + reply = new QueuedModbusReply(QueuedModbusReply::RequestTypeRead, phaseAutoSwitchPauseDataUnit(), this); + connect(reply, &QueuedModbusReply::finished, reply, &QueuedModbusReply::deleteLater); + connect(reply, &QueuedModbusReply::finished, this, [this, reply](){ + + if (m_currentReply == reply) + m_currentReply = nullptr; + + if (reply->error() != QModbusDevice::NoError) { + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); + return; + } + + const QModbusDataUnit unit = reply->reply()->result(); + const QVector values = unit.values(); + processPhaseAutoSwitchPauseRegisterValues(values); + + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); + }); + + enqueueRequest(reply); + } + + // Phase auto switch pause (since firmware version 0.22 ...) + bool phaseAutoSwitchMinChargingTimeQueued = false; + foreach (QueuedModbusReply *r, m_readQueue) { + if (r->dataUnit().startAddress() == phaseAutoSwitchMinChargingTimeDataUnit().startAddress()) { + phaseAutoSwitchMinChargingTimeQueued = true; + break; + } + } + + if (!phaseAutoSwitchMinChargingTimeQueued) { + reply = new QueuedModbusReply(QueuedModbusReply::RequestTypeRead, phaseAutoSwitchMinChargingTimeDataUnit(), this); + connect(reply, &QueuedModbusReply::finished, reply, &QueuedModbusReply::deleteLater); + connect(reply, &QueuedModbusReply::finished, this, [this, reply](){ + + if (m_currentReply == reply) + m_currentReply = nullptr; + + if (reply->error() != QModbusDevice::NoError) { + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); + return; + } + + const QModbusDataUnit unit = reply->reply()->result(); + const QVector values = unit.values(); + processPhaseAutoSwitchMinChargingTimeRegisterValues(values); + + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); + }); + + enqueueRequest(reply); + } + + // Phase auto switch pause (since firmware version 0.22 ...) + bool forceChargingResumeQueued = false; + foreach (QueuedModbusReply *r, m_readQueue) { + if (r->dataUnit().startAddress() == forceChargingResumeDataUnit().startAddress()) { + forceChargingResumeQueued = true; + break; + } + } + + if (!forceChargingResumeQueued) { + reply = new QueuedModbusReply(QueuedModbusReply::RequestTypeRead, forceChargingResumeDataUnit(), this); + connect(reply, &QueuedModbusReply::finished, reply, &QueuedModbusReply::deleteLater); + connect(reply, &QueuedModbusReply::finished, this, [this, reply](){ + + if (m_currentReply == reply) + m_currentReply = nullptr; + + if (reply->error() != QModbusDevice::NoError) { + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); + return; + } + + const QModbusDataUnit unit = reply->reply()->result(); + const QVector values = unit.values(); + processForceChargingResumeRegisterValues(values); + + emit updateFinished(); + + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); + }); + + enqueueRequest(reply); + } + return true; } -QueuedModbusReply *PceWallbox::setChargingCurrent(quint16 chargingCurrent) +QueuedModbusReply *PceWallbox::setChargingCurrentAsync(quint16 chargingCurrent) { if (m_aboutToDelete) return nullptr; @@ -229,7 +372,7 @@ QueuedModbusReply *PceWallbox::setChargingCurrent(quint16 chargingCurrent) return reply; } -QueuedModbusReply *PceWallbox::setLedBrightness(quint16 percentage) +QueuedModbusReply *PceWallbox::setLedBrightnessAsync(quint16 percentage) { if (m_aboutToDelete) return nullptr; @@ -249,7 +392,67 @@ QueuedModbusReply *PceWallbox::setLedBrightness(quint16 percentage) return reply; } -QueuedModbusReply *PceWallbox::setDigitalInputMode(DigitalInputMode digitalInputMode) +QueuedModbusReply *PceWallbox::setPhaseAutoSwitchPauseAsync(quint16 seconds) +{ + if (m_aboutToDelete) + return nullptr; + + QueuedModbusReply *reply = new QueuedModbusReply(QueuedModbusReply::RequestTypeWrite, setPhaseAutoSwitchPauseDataUnit(seconds), this); + + connect(reply, &QueuedModbusReply::finished, reply, &QueuedModbusReply::deleteLater); + connect(reply, &QueuedModbusReply::finished, this, [this, reply](){ + if (m_currentReply == reply) + m_currentReply = nullptr; + + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); + return; + }); + + enqueueRequest(reply); + return reply; +} + +QueuedModbusReply *PceWallbox::setPhaseAutoSwitchMinChargingTimeAsync(quint16 seconds) +{ + if (m_aboutToDelete) + return nullptr; + + QueuedModbusReply *reply = new QueuedModbusReply(QueuedModbusReply::RequestTypeWrite, setPhaseAutoSwitchMinChargingTimeDataUnit(seconds), this); + + connect(reply, &QueuedModbusReply::finished, reply, &QueuedModbusReply::deleteLater); + connect(reply, &QueuedModbusReply::finished, this, [this, reply](){ + if (m_currentReply == reply) + m_currentReply = nullptr; + + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); + return; + }); + + enqueueRequest(reply); + return reply; +} + +QueuedModbusReply *PceWallbox::setForceChargingResumeAsync(quint16 value) +{ + if (m_aboutToDelete) + return nullptr; + + QueuedModbusReply *reply = new QueuedModbusReply(QueuedModbusReply::RequestTypeWrite, setForceChargingResumeDataUnit(value), this); + + connect(reply, &QueuedModbusReply::finished, reply, &QueuedModbusReply::deleteLater); + connect(reply, &QueuedModbusReply::finished, this, [this, reply](){ + if (m_currentReply == reply) + m_currentReply = nullptr; + + QTimer::singleShot(0, this, &PceWallbox::sendNextRequest); + return; + }); + + enqueueRequest(reply); + return reply; +} + +QueuedModbusReply *PceWallbox::setDigitalInputModeAsync(DigitalInputMode digitalInputMode) { if (m_aboutToDelete) return nullptr; @@ -267,7 +470,6 @@ QueuedModbusReply *PceWallbox::setDigitalInputMode(DigitalInputMode digitalInput enqueueRequest(reply); return reply; - } void PceWallbox::gracefullDeleteLater() diff --git a/pcelectric/pcewallbox.h b/pcelectric/pcewallbox.h index dd55670..198aad7 100644 --- a/pcelectric/pcewallbox.h +++ b/pcelectric/pcewallbox.h @@ -54,11 +54,14 @@ public: bool update() override; - QueuedModbusReply *setChargingCurrent(quint16 chargingCurrent); // mA + QueuedModbusReply *setChargingCurrentAsync(quint16 chargingCurrent); // mA - QueuedModbusReply *setLedBrightness(quint16 percentage); + QueuedModbusReply *setLedBrightnessAsync(quint16 percentage); + QueuedModbusReply *setPhaseAutoSwitchPauseAsync(quint16 seconds); + QueuedModbusReply *setPhaseAutoSwitchMinChargingTimeAsync(quint16 seconds); + QueuedModbusReply *setForceChargingResumeAsync(quint16 value); - QueuedModbusReply *setDigitalInputMode(DigitalInputMode digitalInputMode); + QueuedModbusReply *setDigitalInputModeAsync(DigitalInputMode digitalInputMode); // Note: the modbus implementation of the wallbox gets stuck if a Modbus request has been sent diff --git a/pcelectric/translations/aa7ff833-a8e0-45cc-a1ef-65f05871f272-de_DE.ts b/pcelectric/translations/aa7ff833-a8e0-45cc-a1ef-65f05871f272-de_DE.ts index d764620..a2bb537 100644 --- a/pcelectric/translations/aa7ff833-a8e0-45cc-a1ef-65f05871f272-de_DE.ts +++ b/pcelectric/translations/aa7ff833-a8e0-45cc-a1ef-65f05871f272-de_DE.ts @@ -8,41 +8,42 @@ The network device discovery is not available. Die Netzwerk Suche ist nicht verfügbar. - - - The MAC address is not known. Please reconfigure the thing. - Die MAC-Adresse ist nicht bekannt. Bitte richte das Gerät erneut ein. - PcElectric - + 1 The name of a possible value of StateType {d91f7d96-2599-400a-91da-d164477098b7} of ThingClass ev11 1 - + 3 The name of a possible value of StateType {d91f7d96-2599-400a-91da-d164477098b7} of ThingClass ev11 3 - + Active phases The name of the StateType ({bca88c23-e940-40c1-afca-eb511fd17aab}) of ThingClass ev11 Aktive Phasen - + + Active power + The name of the StateType ({bbe97e15-8fa7-42e0-9023-1d41425ccbee}) of ThingClass ev11 + Aktive Leistung + + + Charging The name of the StateType ({b7972cd7-471a-46bd-ab99-f49997f12309}) of ThingClass ev11 Lädt - - + + Charging enabled The name of the ParamType (ThingClass: ev11, ActionType: power, ID: {c12a7a27-fa56-450c-a1ec-717c868554f2}) ---------- @@ -50,14 +51,14 @@ The name of the StateType ({c12a7a27-fa56-450c-a1ec-717c868554f2}) of ThingClass Laden eingeschalten - + Connected The name of the StateType ({ca8d680c-c2f8-456a-a246-9c6cd64e25a7}) of ThingClass ev11 Verbunden - - + + Desired phase count The name of the ParamType (ThingClass: ev11, ActionType: desiredPhaseCount, ID: {d91f7d96-2599-400a-91da-d164477098b7}) ---------- @@ -65,50 +66,80 @@ The name of the StateType ({d91f7d96-2599-400a-91da-d164477098b7}) of ThingClass Gewünschte Phasenanzahl - + + Digital input flag + The name of the StateType ({c606c59b-6b3e-4de8-aaf8-aea4742200d9}) of ThingClass ev11 + Digitale Eingänge Werte + + + + Digital input mode + The name of the ParamType (ThingClass: ev11, Type: settings, ID: {930e0bf9-0038-436d-9eae-5c0f1cb28825}) + Digitale Eingänge Modi + + + Enable or disable charging The name of the ActionType ({c12a7a27-fa56-450c-a1ec-717c868554f2}) of ThingClass ev11 Laden starten/stoppen - + Error The name of the StateType ({2ea1a53f-b2b0-452d-8060-cdb114db05a7}) of ThingClass ev11 Fehler - + Firmware version The name of the StateType ({142b4276-e2e9-4149-adc4-89d9d3e31117}) of ThingClass ev11 Firmware Version - + + Force charging resume + The name of the ParamType (ThingClass: ev11, Type: settings, ID: {5cece964-fe64-4e26-86ee-ba8fbbedd523}) + Erzwinge Ladefortsezung + + + + Host address + The name of the ParamType (ThingClass: ev11, Type: thing, ID: {aa18f1ae-e2d5-4918-9230-ab3f6fb49010}) + IP Adresse + + + + Host name + The name of the ParamType (ThingClass: ev11, Type: thing, ID: {a8b81e4a-f4ec-479b-9cb8-19147759c4cc}) + Hostname + + + Onboard temperature The name of the StateType ({bb092562-377e-458e-bb8a-735af9036652}) of ThingClass ev11 Temperatur - + PCE EV11.3 The name of the ThingClass ({88d96940-a940-4a07-8176-5e6aba7ca832}) PCE EV11.3 - + LED brightness The name of the ParamType (ThingClass: ev11, Type: settings, ID: {3a1329a2-84cc-47b9-a6c2-e96fdfd0c454}) LED Helligkeit - + MAC address The name of the ParamType (ThingClass: ev11, Type: thing, ID: {0a3f8d12-9d33-4ae2-b763-9568f32e8da1}) MAC Adresse - - + + Maximum charging current The name of the ParamType (ThingClass: ev11, ActionType: maxChargingCurrent, ID: {b5bbf23c-06db-463b-bb5c-3aea38e18818}) ---------- @@ -116,43 +147,55 @@ The name of the StateType ({b5bbf23c-06db-463b-bb5c-3aea38e18818}) of ThingClass Maximaler Ladestrom - + PC Electric The name of the plugin PcElectric ({aa7ff833-a8e0-45cc-a1ef-65f05871f272}) PC Electric - + PC Electric GmbH The name of the vendor ({b365937b-f1d6-46bf-9ff1-e787373b8aa6}) PC Electric GmbH - + + Phase autoswitch minimal charging time + The name of the ParamType (ThingClass: ev11, Type: settings, ID: {7b0b5375-7980-4f99-9542-1dcb0390fb22}) + Mindestladezeit nach Phasenumschaltung + + + + Phase autoswitch pause + The name of the ParamType (ThingClass: ev11, Type: settings, ID: {a5354c66-0a7a-44a8-bea0-0305b91b63cf}) + Pause nach Phasenumschaltung + + + Plugged in The name of the StateType ({50164bbd-9802-4cf6-82de-626b74293a1b}) of ThingClass ev11 Angesteckt - + Serial number The name of the ParamType (ThingClass: ev11, Type: thing, ID: {db834ca7-934a-473b-8bd8-c641ff0ea879}) Seriennummer - + Session energy The name of the StateType ({3da3ee80-e9e7-4237-85a6-b4adcb2f483b}) of ThingClass ev11 Geladene Energie - + Set desired phase count The name of the ActionType ({d91f7d96-2599-400a-91da-d164477098b7}) of ThingClass ev11 Setze gewünschte Phasenanzahl - + Set maximum charging current The name of the ActionType ({b5bbf23c-06db-463b-bb5c-3aea38e18818}) of ThingClass ev11 Setze maximalen Ladestrom diff --git a/pcelectric/translations/aa7ff833-a8e0-45cc-a1ef-65f05871f272-en_US.ts b/pcelectric/translations/aa7ff833-a8e0-45cc-a1ef-65f05871f272-en_US.ts index f5e36c2..ec65d4b 100644 --- a/pcelectric/translations/aa7ff833-a8e0-45cc-a1ef-65f05871f272-en_US.ts +++ b/pcelectric/translations/aa7ff833-a8e0-45cc-a1ef-65f05871f272-en_US.ts @@ -8,41 +8,42 @@ The network device discovery is not available. - - - The MAC address is not known. Please reconfigure the thing. - - PcElectric - + 1 The name of a possible value of StateType {d91f7d96-2599-400a-91da-d164477098b7} of ThingClass ev11 - + 3 The name of a possible value of StateType {d91f7d96-2599-400a-91da-d164477098b7} of ThingClass ev11 - + Active phases The name of the StateType ({bca88c23-e940-40c1-afca-eb511fd17aab}) of ThingClass ev11 - + + Active power + The name of the StateType ({bbe97e15-8fa7-42e0-9023-1d41425ccbee}) of ThingClass ev11 + + + + Charging The name of the StateType ({b7972cd7-471a-46bd-ab99-f49997f12309}) of ThingClass ev11 - - + + Charging enabled The name of the ParamType (ThingClass: ev11, ActionType: power, ID: {c12a7a27-fa56-450c-a1ec-717c868554f2}) ---------- @@ -50,14 +51,14 @@ The name of the StateType ({c12a7a27-fa56-450c-a1ec-717c868554f2}) of ThingClass - + Connected The name of the StateType ({ca8d680c-c2f8-456a-a246-9c6cd64e25a7}) of ThingClass ev11 - - + + Desired phase count The name of the ParamType (ThingClass: ev11, ActionType: desiredPhaseCount, ID: {d91f7d96-2599-400a-91da-d164477098b7}) ---------- @@ -65,50 +66,80 @@ The name of the StateType ({d91f7d96-2599-400a-91da-d164477098b7}) of ThingClass - + + Digital input flag + The name of the StateType ({c606c59b-6b3e-4de8-aaf8-aea4742200d9}) of ThingClass ev11 + + + + + Digital input mode + The name of the ParamType (ThingClass: ev11, Type: settings, ID: {930e0bf9-0038-436d-9eae-5c0f1cb28825}) + + + + Enable or disable charging The name of the ActionType ({c12a7a27-fa56-450c-a1ec-717c868554f2}) of ThingClass ev11 - + Error The name of the StateType ({2ea1a53f-b2b0-452d-8060-cdb114db05a7}) of ThingClass ev11 - + Firmware version The name of the StateType ({142b4276-e2e9-4149-adc4-89d9d3e31117}) of ThingClass ev11 - + + Force charging resume + The name of the ParamType (ThingClass: ev11, Type: settings, ID: {5cece964-fe64-4e26-86ee-ba8fbbedd523}) + + + + + Host address + The name of the ParamType (ThingClass: ev11, Type: thing, ID: {aa18f1ae-e2d5-4918-9230-ab3f6fb49010}) + + + + + Host name + The name of the ParamType (ThingClass: ev11, Type: thing, ID: {a8b81e4a-f4ec-479b-9cb8-19147759c4cc}) + + + + Onboard temperature The name of the StateType ({bb092562-377e-458e-bb8a-735af9036652}) of ThingClass ev11 - + PCE EV11.3 The name of the ThingClass ({88d96940-a940-4a07-8176-5e6aba7ca832}) - + LED brightness The name of the ParamType (ThingClass: ev11, Type: settings, ID: {3a1329a2-84cc-47b9-a6c2-e96fdfd0c454}) - + MAC address The name of the ParamType (ThingClass: ev11, Type: thing, ID: {0a3f8d12-9d33-4ae2-b763-9568f32e8da1}) - - + + Maximum charging current The name of the ParamType (ThingClass: ev11, ActionType: maxChargingCurrent, ID: {b5bbf23c-06db-463b-bb5c-3aea38e18818}) ---------- @@ -116,43 +147,55 @@ The name of the StateType ({b5bbf23c-06db-463b-bb5c-3aea38e18818}) of ThingClass - + PC Electric The name of the plugin PcElectric ({aa7ff833-a8e0-45cc-a1ef-65f05871f272}) - + PC Electric GmbH The name of the vendor ({b365937b-f1d6-46bf-9ff1-e787373b8aa6}) - + + Phase autoswitch minimal charging time + The name of the ParamType (ThingClass: ev11, Type: settings, ID: {7b0b5375-7980-4f99-9542-1dcb0390fb22}) + + + + + Phase autoswitch pause + The name of the ParamType (ThingClass: ev11, Type: settings, ID: {a5354c66-0a7a-44a8-bea0-0305b91b63cf}) + + + + Plugged in The name of the StateType ({50164bbd-9802-4cf6-82de-626b74293a1b}) of ThingClass ev11 - + Serial number The name of the ParamType (ThingClass: ev11, Type: thing, ID: {db834ca7-934a-473b-8bd8-c641ff0ea879}) - + Session energy The name of the StateType ({3da3ee80-e9e7-4237-85a6-b4adcb2f483b}) of ThingClass ev11 - + Set desired phase count The name of the ActionType ({d91f7d96-2599-400a-91da-d164477098b7}) of ThingClass ev11 - + Set maximum charging current The name of the ActionType ({b5bbf23c-06db-463b-bb5c-3aea38e18818}) of ThingClass ev11