diff --git a/keba/integrationpluginkeba.cpp b/keba/integrationpluginkeba.cpp index a83dbd96..381fccd1 100644 --- a/keba/integrationpluginkeba.cpp +++ b/keba/integrationpluginkeba.cpp @@ -28,7 +28,7 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -#include "devicepluginkeba.h" +#include "integrationpluginkeba.h" #include "plugininfo.h" #include @@ -42,9 +42,9 @@ IntegrationPluginKeba::IntegrationPluginKeba() } -void DevicePluginKeba::discoverDevices(DeviceDiscoveryInfo *info) +void IntegrationPluginKeba::discoverThings(ThingDiscoveryInfo *info) { - if (info->deviceClassId() == wallboxDeviceClassId) { + if (info->thingClassId() == wallboxThingClassId) { Discovery *discovery = new Discovery(info); discovery->discoverHosts(25); @@ -54,25 +54,25 @@ void DevicePluginKeba::discoverDevices(DeviceDiscoveryInfo *info) if (!host.hostName().contains("keba", Qt::CaseSensitivity::CaseInsensitive)) continue; - DeviceDescriptor descriptor(wallboxDeviceClassId, "Wallbox", host.address() + " (" + host.macAddress() + ")"); + ThingDescriptor descriptor(wallboxThingClassId, "Wallbox", host.address() + " (" + host.macAddress() + ")"); - foreach (Device *existingDevice, myDevices()) { - if (existingDevice->paramValue(wallboxDeviceMacAddressParamTypeId).toString() == host.macAddress()) { - descriptor.setDeviceId(existingDevice->id()); + foreach (Thing *existingThing, myThings()) { + if (existingThing->paramValue(wallboxThingMacAddressParamTypeId).toString() == host.macAddress()) { + descriptor.setThingId(existingThing->id()); break; } } ParamList params; - params << Param(wallboxDeviceMacAddressParamTypeId, host.macAddress()); - params << Param(wallboxDeviceIpAddressParamTypeId, host.address()); + params << Param(wallboxThingMacAddressParamTypeId, host.macAddress()); + params << Param(wallboxThingIpAddressParamTypeId, host.address()); descriptor.setParams(params); - info->addDeviceDescriptor(descriptor); + info->addThingDescriptor(descriptor); } - info->finish(Device::DeviceErrorNoError); + info->finish(Thing::ThingErrorNoError); }); } else { - qCWarning(dcKebaKeContact()) << "Discover device, unhandled device class" << info->deviceClassId(); - info->finish(Device::DeviceErrorDeviceClassNotFound); + qCWarning(dcKebaKeContact()) << "Discover device, unhandled device class" << info->thingClassId(); + info->finish(Thing::ThingErrorThingClassNotFound); } } @@ -82,41 +82,41 @@ void IntegrationPluginKeba::setupThing(ThingSetupInfo *info) qCDebug(dcKebaKeContact()) << "Setting up a new thing:" << thing->name() << thing->params(); - if (device->deviceClassId() == wallboxDeviceClassId) { + if (thing->thingClassId() == wallboxThingClassId) { - QHostAddress address = QHostAddress(device->paramValue(wallboxDeviceIpAddressParamTypeId).toString()); + QHostAddress address = QHostAddress(thing->paramValue(wallboxThingIpAddressParamTypeId).toString()); KeContact *keba = new KeContact(address, this); - connect(keba, &KeContact::connectionChanged, this, &DevicePluginKeba::onConnectionChanged); - connect(keba, &KeContact::commandExecuted, this, &DevicePluginKeba::onCommandExecuted); - connect(keba, &KeContact::reportOneReceived, this, &DevicePluginKeba::onReportOneReceived); - connect(keba, &KeContact::reportTwoReceived, this, &DevicePluginKeba::onReportTwoReceived); - connect(keba, &KeContact::reportThreeReceived, this, &DevicePluginKeba::onReportThreeReceived); - connect(keba, &KeContact::broadcastReceived, this, &DevicePluginKeba::onBroadcastReceived); + connect(keba, &KeContact::connectionChanged, this, &IntegrationPluginKeba::onConnectionChanged); + connect(keba, &KeContact::commandExecuted, this, &IntegrationPluginKeba::onCommandExecuted); + connect(keba, &KeContact::reportOneReceived, this, &IntegrationPluginKeba::onReportOneReceived); + connect(keba, &KeContact::reportTwoReceived, this, &IntegrationPluginKeba::onReportTwoReceived); + connect(keba, &KeContact::reportThreeReceived, this, &IntegrationPluginKeba::onReportThreeReceived); + connect(keba, &KeContact::broadcastReceived, this, &IntegrationPluginKeba::onBroadcastReceived); if (!keba->init()){ qCWarning(dcKebaKeContact()) << "Cannot bind to port" << 7090; keba->deleteLater(); - return info->finish(Device::DeviceErrorHardwareNotAvailable, QT_TR_NOOP("Error opening network port.")); + return info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("Error opening network port.")); } - DeviceId id = device->id(); + ThingId id = thing->id(); m_kebaDevices.insert(id, keba); m_asyncSetup.insert(keba, info); keba->getReport1(); - connect(info, &DeviceSetupInfo::aborted, this, [id, keba, this]{ + connect(info, &ThingSetupInfo::aborted, this, [id, keba, this]{ m_asyncSetup.remove(keba); m_kebaDevices.remove(id); keba->deleteLater(); }); } else { - qCWarning(dcKebaKeContact()) << "setupDevice, unhandled device class" << device->deviceClass(); - info->finish(Device::DeviceErrorDeviceClassNotFound); + qCWarning(dcKebaKeContact()) << "setupDevice, unhandled device class" << thing->thingClass(); + info->finish(Thing::ThingErrorThingClassNotFound); } } void IntegrationPluginKeba::postSetupThing(Thing *thing) { - qCDebug(dcKebaKeContact()) << "Post setup" << device->name(); - KeContact *keba = m_kebaDevices.value(device->id()); + qCDebug(dcKebaKeContact()) << "Post setup" << thing->name(); + KeContact *keba = m_kebaDevices.value(thing->id()); if (!keba) { return; } @@ -125,18 +125,18 @@ void IntegrationPluginKeba::postSetupThing(Thing *thing) if (!m_pluginTimer) { m_pluginTimer = hardwareManager()->pluginTimerManager()->registerTimer(60); - connect(m_pluginTimer, &PluginTimer::timeout, this, &DevicePluginKeba::updateData); + connect(m_pluginTimer, &PluginTimer::timeout, this, &IntegrationPluginKeba::updateData); } } -void DevicePluginKeba::deviceRemoved(Device *device) +void IntegrationPluginKeba::thingRemoved(Thing *thing) { - if (device->deviceClassId() == wallboxDeviceClassId) { - KeContact *keba = m_kebaDevices.take(device->id()); + if (thing->thingClassId() == wallboxThingClassId) { + KeContact *keba = m_kebaDevices.take(thing->id()); keba->deleteLater(); } - if (myDevices().empty()) { + if (myThings().empty()) { // last device has been removed the plug in timer can be stopped again hardwareManager()->pluginTimerManager()->unregisterTimer(m_pluginTimer); m_pluginTimer = nullptr; @@ -150,41 +150,41 @@ void IntegrationPluginKeba::updateData() keba->getReport3(); } - foreach (Device *device, myDevices().filterByDeviceClassId(wallboxDeviceClassId)) { - if (m_chargingSessionStartTime.contains(device->id())) { - QDateTime startTime = m_chargingSessionStartTime.value(device->id()); + foreach (Thing *thing, myThings().filterByThingClassId(wallboxThingClassId)) { + if (m_chargingSessionStartTime.contains(thing->id())) { + QDateTime startTime = m_chargingSessionStartTime.value(thing->id()); QTimeZone tz = QTimeZone(QTimeZone::systemTimeZoneId()); QDateTime currentTime = QDateTime::currentDateTime().toTimeZone(tz); - int minutes = (currentTime.toMSecsSinceEpoch()) - startTime.toMSecsSinceEpoch())/60000; - device->setStateValue(wallboxSessionTimeStateTypeId, minutes); + int minutes = (currentTime.toMSecsSinceEpoch() - startTime.toMSecsSinceEpoch())/60000; + thing->setStateValue(wallboxSessionTimeStateTypeId, minutes); } else { - device->setStateValue(wallboxSessionTimeStateTypeId, 0); + thing->setStateValue(wallboxSessionTimeStateTypeId, 0); } } } -void DevicePluginKeba::setDeviceState(Device *device, KeContact::State state) +void IntegrationPluginKeba::setDeviceState(Thing *thing, KeContact::State state) { switch (state) { case KeContact::StateStarting: - device->setStateValue(wallboxActivityStateTypeId, "Starting"); + thing->setStateValue(wallboxActivityStateTypeId, "Starting"); break; case KeContact::StateNotReady: - device->setStateValue(wallboxActivityStateTypeId, "Not ready for charging"); + thing->setStateValue(wallboxActivityStateTypeId, "Not ready for charging"); break; case KeContact::StateReady: - device->setStateValue(wallboxActivityStateTypeId, "Ready for charging"); + thing->setStateValue(wallboxActivityStateTypeId, "Ready for charging"); break; case KeContact::StateCharging: - device->setStateValue(wallboxActivityStateTypeId, "Charging"); + thing->setStateValue(wallboxActivityStateTypeId, "Charging"); break; case KeContact::StateError: - device->setStateValue(wallboxActivityStateTypeId, "Error"); + thing->setStateValue(wallboxActivityStateTypeId, "Error"); break; case KeContact::StateAuthorizationRejected: - device->setStateValue(wallboxActivityStateTypeId, "Authorization rejected"); + thing->setStateValue(wallboxActivityStateTypeId, "Authorization rejected"); break; } @@ -192,172 +192,172 @@ void DevicePluginKeba::setDeviceState(Device *device, KeContact::State state) //Set charging session QTimeZone tz = QTimeZone(QTimeZone::systemTimeZoneId()); QDateTime startedChargingSession = QDateTime::currentDateTime().toTimeZone(tz); - m_chargingSessionStartTime.insert(device->id(), startedChargingSession); + m_chargingSessionStartTime.insert(thing->id(), startedChargingSession); } else { - m_chargingSessionStartTime.remove(device->id()); - device->setStateValue(wallboxSessionTimeStateTypeId, 0); + m_chargingSessionStartTime.remove(thing->id()); + thing->setStateValue(wallboxSessionTimeStateTypeId, 0); } } -void DevicePluginKeba::setDevicePlugState(Device *device, KeContact::PlugState plugState) +void IntegrationPluginKeba::setDevicePlugState(Thing *thing, KeContact::PlugState plugState) { switch (plugState) { case KeContact::PlugStateUnplugged: - device->setStateValue(wallboxPlugStateStateTypeId, "Unplugged"); + thing->setStateValue(wallboxPlugStateStateTypeId, "Unplugged"); break; case KeContact::PlugStatePluggedOnChargingStation: - device->setStateValue(wallboxPlugStateStateTypeId, "Plugged in charging station"); + thing->setStateValue(wallboxPlugStateStateTypeId, "Plugged in charging station"); break; case KeContact::PlugStatePluggedOnChargingStationAndPluggedOnEV: - device->setStateValue(wallboxPlugStateStateTypeId, "Plugged in on EV"); + thing->setStateValue(wallboxPlugStateStateTypeId, "Plugged in on EV"); break; case KeContact::PlugStatePluggedOnChargingStationAndPlugLocked: - device->setStateValue(wallboxPlugStateStateTypeId, "Plugged in and locked"); + thing->setStateValue(wallboxPlugStateStateTypeId, "Plugged in and locked"); break; case KeContact::PlugStatePluggedOnChargingStationAndPlugLockedAndPluggedOnEV: - device->setStateValue(wallboxPlugStateStateTypeId, "Plugged in on EV and locked"); + thing->setStateValue(wallboxPlugStateStateTypeId, "Plugged in on EV and locked"); break; } } -void DevicePluginKeba::onConnectionChanged(bool status) +void IntegrationPluginKeba::onConnectionChanged(bool status) { KeContact *keba = static_cast(sender()); - Device *device = myDevices().findById(m_kebaDevices.key(keba)); - if (!device) { + Thing *thing = myThings().findById(m_kebaDevices.key(keba)); + if (!thing) { qCWarning(dcKebaKeContact()) << "On connection changed: missing device object"; return; } - device->setStateValue(wallboxConnectedStateTypeId, status); + thing->setStateValue(wallboxConnectedStateTypeId, status); if (!status) { //TODO start rediscovery } } -void DevicePluginKeba::onCommandExecuted(QUuid requestId, bool success) +void IntegrationPluginKeba::onCommandExecuted(QUuid requestId, bool success) { updateData(); if (m_asyncActions.contains(requestId)) { KeContact *keba = static_cast(sender()); - Device *device = myDevices().findById(m_kebaDevices.key(keba)); - if (!device) { + Thing *thing = myThings().findById(m_kebaDevices.key(keba)); + if (!thing) { qCWarning(dcKebaKeContact()) << "On command executed: missing device object"; return; } - DeviceActionInfo *info = m_asyncActions.take(requestId); + ThingActionInfo *info = m_asyncActions.take(requestId); if (success) { - info->finish(Device::DeviceErrorNoError); + info->finish(Thing::ThingErrorNoError); } else { - info->finish(Device::DeviceErrorHardwareFailure); + info->finish(Thing::ThingErrorHardwareFailure); } } } -void DevicePluginKeba::onReportOneReceived(const KeContact::ReportOne &reportOne) +void IntegrationPluginKeba::onReportOneReceived(const KeContact::ReportOne &reportOne) { Q_UNUSED(reportOne); KeContact *keba = static_cast(sender()); if (m_asyncSetup.contains(keba)) { - DeviceSetupInfo *info = m_asyncSetup.value(keba); - info->finish(Device::DeviceErrorNoError); + ThingSetupInfo *info = m_asyncSetup.value(keba); + info->finish(Thing::ThingErrorNoError); } else { qCDebug(dcKebaKeContact()) << "Report one received without an associated async setup"; } } -void DevicePluginKeba::onReportTwoReceived(const KeContact::ReportTwo &reportTwo) +void IntegrationPluginKeba::onReportTwoReceived(const KeContact::ReportTwo &reportTwo) { KeContact *keba = static_cast(sender()); - Device *device = myDevices().findById(m_kebaDevices.key(keba)); - if (!device) + Thing *thing = myThings().findById(m_kebaDevices.key(keba)); + if (!thing) return; - device->setStateValue(wallboxPowerStateTypeId, reportTwo.enableUser); - device->setStateValue(wallboxMaxChargingCurrentPercentStateTypeId, reportTwo.MaxCurrentPercentage); + thing->setStateValue(wallboxPowerStateTypeId, reportTwo.enableUser); + thing->setStateValue(wallboxMaxChargingCurrentPercentStateTypeId, reportTwo.MaxCurrentPercentage); - setDeviceState(device, reportTwo.state); - setDevicePlugState(device, reportTwo.plugState); + setDeviceState(thing, reportTwo.state); + setDevicePlugState(thing, reportTwo.plugState); } -void DevicePluginKeba::onReportThreeReceived(const KeContact::ReportThree &reportThree) +void IntegrationPluginKeba::onReportThreeReceived(const KeContact::ReportThree &reportThree) { KeContact *keba = static_cast(sender()); - Device *device = myDevices().findById(m_kebaDevices.key(keba)); - if (!device) + Thing *thing = myThings().findById(m_kebaDevices.key(keba)); + if (!thing) return; - device->setStateValue(wallboxI1EventTypeId, reportThree.CurrentPhase1); - device->setStateValue(wallboxI2EventTypeId, reportThree.CurrentPhase2); - device->setStateValue(wallboxI3EventTypeId, reportThree.CurrentPhase3); - device->setStateValue(wallboxU1EventTypeId, reportThree.VoltagePhase1); - device->setStateValue(wallboxU2EventTypeId, reportThree.VoltagePhase2); - device->setStateValue(wallboxU3EventTypeId, reportThree.VoltagePhase3); - device->setStateValue(wallboxPStateTypeId, reportThree.Power); - device->setStateValue(wallboxEPStateTypeId, reportThree.EnergySession); - device->setStateValue(wallboxTotalEnergyConsumedStateTypeId, reportThree.EnergyTotal); + thing->setStateValue(wallboxI1EventTypeId, reportThree.CurrentPhase1); + thing->setStateValue(wallboxI2EventTypeId, reportThree.CurrentPhase2); + thing->setStateValue(wallboxI3EventTypeId, reportThree.CurrentPhase3); + thing->setStateValue(wallboxU1EventTypeId, reportThree.VoltagePhase1); + thing->setStateValue(wallboxU2EventTypeId, reportThree.VoltagePhase2); + thing->setStateValue(wallboxU3EventTypeId, reportThree.VoltagePhase3); + thing->setStateValue(wallboxPStateTypeId, reportThree.Power); + thing->setStateValue(wallboxEPStateTypeId, reportThree.EnergySession); + thing->setStateValue(wallboxTotalEnergyConsumedStateTypeId, reportThree.EnergyTotal); } -void DevicePluginKeba::onBroadcastReceived(KeContact::BroadcastType type, const QVariant &content) +void IntegrationPluginKeba::onBroadcastReceived(KeContact::BroadcastType type, const QVariant &content) { KeContact *keba = static_cast(sender()); - Device *device = myDevices().findById(m_kebaDevices.key(keba)); - if (!device) + Thing *thing = myThings().findById(m_kebaDevices.key(keba)); + if (!thing) return; switch (type) { case KeContact::BroadcastTypePlug: - setDevicePlugState(device, KeContact::PlugState(content.toInt())); + setDevicePlugState(thing, KeContact::PlugState(content.toInt())); break; case KeContact::BroadcastTypeInput: break; case KeContact::BroadcastTypeEPres: - device->setStateValue(wallboxEPStateTypeId, content.toInt()); + thing->setStateValue(wallboxEPStateTypeId, content.toInt()); break; case KeContact::BroadcastTypeState: - setDeviceState(device, KeContact::State(content.toInt())); + setDeviceState(thing, KeContact::State(content.toInt())); break; case KeContact::BroadcastTypeMaxCurr: - device->setStateValue(wallboxMaxChargingCurrentStateTypeId, content.toInt()); + thing->setStateValue(wallboxMaxChargingCurrentStateTypeId, content.toInt()); break; case KeContact::BroadcastTypeEnableSys: break; } } -void DevicePluginKeba::executeAction(DeviceActionInfo *info) +void IntegrationPluginKeba::executeAction(ThingActionInfo *info) { - Device *device = info->device(); + Thing *thing = info->thing(); Action action = info->action(); - if (device->deviceClassId() == wallboxDeviceClassId) { - KeContact *keba = m_kebaDevices.value(device->id()); + if (thing->thingClassId() == wallboxThingClassId) { + KeContact *keba = m_kebaDevices.value(thing->id()); if (!keba) { qCWarning(dcKebaKeContact()) << "Device not properly initialized, Keba object missing"; - return info->finish(Device::DeviceErrorHardwareNotAvailable); + return info->finish(Thing::ThingErrorHardwareNotAvailable); } if(action.actionTypeId() == wallboxMaxChargingCurrentActionTypeId){ int milliAmpere = action.param(wallboxMaxChargingCurrentActionMaxChargingCurrentParamTypeId).value().toInt(); QUuid requestId = keba->setMaxAmpere(milliAmpere); m_asyncActions.insert(requestId, info); - connect(info, &DeviceActionInfo::aborted, this, [requestId, this]{m_asyncActions.remove(requestId);}); + connect(info, &ThingActionInfo::aborted, this, [requestId, this]{m_asyncActions.remove(requestId);}); } else if(action.actionTypeId() == wallboxPowerActionTypeId){ QUuid requestId = keba->enableOutput(action.param(wallboxPowerActionTypeId).value().toBool()); m_asyncActions.insert(requestId, info); - connect(info, &DeviceActionInfo::aborted, this, [requestId, this]{m_asyncActions.remove(requestId);}); + connect(info, &ThingActionInfo::aborted, this, [requestId, this]{m_asyncActions.remove(requestId);}); } else if(action.actionTypeId() == wallboxDisplayActionTypeId){ QUuid requestId = keba->displayMessage(action.param(wallboxDisplayActionMessageParamTypeId).value().toByteArray()); m_asyncActions.insert(requestId, info); - connect(info, &DeviceActionInfo::aborted, this, [requestId, this]{m_asyncActions.remove(requestId);}); + connect(info, &ThingActionInfo::aborted, this, [requestId, this]{m_asyncActions.remove(requestId);}); } else { qCWarning(dcKebaKeContact()) << "Unhandled ActionTypeId:" << action.actionTypeId(); - info->finish(Device::DeviceErrorActionTypeNotFound); + info->finish(Thing::ThingErrorActionTypeNotFound); } } else { - qCWarning(dcKebaKeContact()) << "Execute action, unhandled device class" << device->deviceClass(); - info->finish(Device::DeviceErrorDeviceClassNotFound); + qCWarning(dcKebaKeContact()) << "Execute action, unhandled device class" << thing->thingClass(); + info->finish(Thing::ThingErrorThingClassNotFound); } } diff --git a/keba/integrationpluginkeba.h b/keba/integrationpluginkeba.h index 44d6b70c..ecbc6ec6 100644 --- a/keba/integrationpluginkeba.h +++ b/keba/integrationpluginkeba.h @@ -50,10 +50,10 @@ class IntegrationPluginKeba : public IntegrationPlugin Q_INTERFACES(IntegrationPlugin) public: - explicit DevicePluginKeba(); + explicit IntegrationPluginKeba(); - void discoverDevices(DeviceDiscoveryInfo *info) override; - void setupDevice(DeviceSetupInfo *info) override; + void discoverThings(ThingDiscoveryInfo *info) override; + void setupThing(ThingSetupInfo *info) override; void postSetupThing(Thing* thing) override; void thingRemoved(Thing* thing) override; @@ -63,13 +63,13 @@ public: private: PluginTimer *m_pluginTimer = nullptr; - QHash m_kebaDevices; - QHash m_asyncSetup; - QHash m_asyncActions; - QHash m_chargingSessionStartTime; + QHash m_kebaDevices; + QHash m_asyncSetup; + QHash m_asyncActions; + QHash m_chargingSessionStartTime; - void setDeviceState(Device *device, KeContact::State state); - void setDevicePlugState(Device *device, KeContact::PlugState plugState); + void setDeviceState(Thing *device, KeContact::State state); + void setDevicePlugState(Thing *device, KeContact::PlugState plugState); private slots: void onConnectionChanged(bool status); diff --git a/keba/keba.pro b/keba/keba.pro index daa5e418..72cd6d1a 100644 --- a/keba/keba.pro +++ b/keba/keba.pro @@ -5,13 +5,13 @@ QT += network TARGET = $$qtLibraryTarget(nymea_integrationpluginkeba) SOURCES += \ - devicepluginkeba.cpp \ + integrationpluginkeba.cpp \ kecontact.cpp \ discovery.cpp \ host.cpp \ HEADERS += \ - devicepluginkeba.h \ + integrationpluginkeba.h \ kecontact.h \ discovery.h \ host.h \ diff --git a/keba/translations/9142b09f-30a9-43d0-9ede-2f8debe075ac-en_US.ts b/keba/translations/9142b09f-30a9-43d0-9ede-2f8debe075ac-en_US.ts index 8f23c4f5..5735065f 100644 --- a/keba/translations/9142b09f-30a9-43d0-9ede-2f8debe075ac-en_US.ts +++ b/keba/translations/9142b09f-30a9-43d0-9ede-2f8debe075ac-en_US.ts @@ -4,7 +4,7 @@ IntegrationPluginKeba - + Error opening network port. @@ -12,300 +12,315 @@ KebaKeContact - + Keba KeContact - The name of the DeviceClass ({900dacec-cae7-4a37-95ba-501846368ea2}) + The name of the ThingClass ({900dacec-cae7-4a37-95ba-501846368ea2}) ---------- The name of the plugin KebaKeContact ({9142b09f-30a9-43d0-9ede-2f8debe075ac}) - + Keba The name of the vendor ({f7cda40b-829a-4675-abaa-485697430f5f}) - - - Activity changed - The name of the EventType ({539e5602-6dd9-465d-9705-3bb59bcf8982}) of DeviceClass wallbox - - - - - - Activity - The name of the ParamType (DeviceClass: wallbox, EventType: activity, ID: {539e5602-6dd9-465d-9705-3bb59bcf8982}) ----------- -The name of the StateType ({539e5602-6dd9-465d-9705-3bb59bcf8982}) of DeviceClass wallbox - - + Activity changed + The name of the EventType ({539e5602-6dd9-465d-9705-3bb59bcf8982}) of ThingClass wallbox + + + + + + Activity + The name of the ParamType (ThingClass: wallbox, EventType: activity, ID: {539e5602-6dd9-465d-9705-3bb59bcf8982}) +---------- +The name of the StateType ({539e5602-6dd9-465d-9705-3bb59bcf8982}) of ThingClass wallbox + + + - Connected - The name of the ParamType (DeviceClass: wallbox, EventType: connected, ID: {ce813458-d7d8-4f40-9648-dba4c41e92f0}) ----------- -The name of the StateType ({ce813458-d7d8-4f40-9648-dba4c41e92f0}) of DeviceClass wallbox - - - + Connected + The name of the ParamType (ThingClass: wallbox, EventType: connected, ID: {ce813458-d7d8-4f40-9648-dba4c41e92f0}) +---------- +The name of the StateType ({ce813458-d7d8-4f40-9648-dba4c41e92f0}) of ThingClass wallbox + + + + Connection changed - The name of the EventType ({ce813458-d7d8-4f40-9648-dba4c41e92f0}) of DeviceClass wallbox + The name of the EventType ({ce813458-d7d8-4f40-9648-dba4c41e92f0}) of ThingClass wallbox - - Current Phase 1 - The name of the ParamType (DeviceClass: wallbox, EventType: I1, ID: {31ec17b0-11e3-4332-92b0-fea821cf024f}) ----------- -The name of the StateType ({31ec17b0-11e3-4332-92b0-fea821cf024f}) of DeviceClass wallbox - - - + Current Phase 1 + The name of the ParamType (ThingClass: wallbox, EventType: I1, ID: {31ec17b0-11e3-4332-92b0-fea821cf024f}) +---------- +The name of the StateType ({31ec17b0-11e3-4332-92b0-fea821cf024f}) of ThingClass wallbox + + + - Current Phase 2 - The name of the ParamType (DeviceClass: wallbox, EventType: I2, ID: {cdc7e10a-0d0a-4e93-ad2c-d34ffca45c97}) ----------- -The name of the StateType ({cdc7e10a-0d0a-4e93-ad2c-d34ffca45c97}) of DeviceClass wallbox - - - - - Current Phase 3 - The name of the ParamType (DeviceClass: wallbox, EventType: I3, ID: {da838dc8-85f0-4e55-b4b5-cb93a43b373d}) + Current Phase 2 + The name of the ParamType (ThingClass: wallbox, EventType: I2, ID: {cdc7e10a-0d0a-4e93-ad2c-d34ffca45c97}) ---------- -The name of the StateType ({da838dc8-85f0-4e55-b4b5-cb93a43b373d}) of DeviceClass wallbox +The name of the StateType ({cdc7e10a-0d0a-4e93-ad2c-d34ffca45c97}) of ThingClass wallbox - - Current phase 1 changed - The name of the EventType ({31ec17b0-11e3-4332-92b0-fea821cf024f}) of DeviceClass wallbox + + + Current Phase 3 + The name of the ParamType (ThingClass: wallbox, EventType: I3, ID: {da838dc8-85f0-4e55-b4b5-cb93a43b373d}) +---------- +The name of the StateType ({da838dc8-85f0-4e55-b4b5-cb93a43b373d}) of ThingClass wallbox - Current phase 2 changed - The name of the EventType ({cdc7e10a-0d0a-4e93-ad2c-d34ffca45c97}) of DeviceClass wallbox + Current phase 1 changed + The name of the EventType ({31ec17b0-11e3-4332-92b0-fea821cf024f}) of ThingClass wallbox - Current phase 3 changed - The name of the EventType ({da838dc8-85f0-4e55-b4b5-cb93a43b373d}) of DeviceClass wallbox + Current phase 2 changed + The name of the EventType ({cdc7e10a-0d0a-4e93-ad2c-d34ffca45c97}) of ThingClass wallbox - Display - The name of the ActionType ({158b1a8f-fde9-4191-bf42-4ece5fe582e6}) of DeviceClass wallbox + Current phase 3 changed + The name of the EventType ({da838dc8-85f0-4e55-b4b5-cb93a43b373d}) of ThingClass wallbox - Display message - The name of the ParamType (DeviceClass: wallbox, ActionType: display, ID: {4e69a761-f4f1-42d0-83db-380894a86ebc}) + Display + The name of the ActionType ({158b1a8f-fde9-4191-bf42-4ece5fe582e6}) of ThingClass wallbox - IPv4 Address - The name of the ParamType (DeviceClass: wallbox, Type: device, ID: {730cd3d3-5f0e-4028-a8c2-ced7574f13f3}) + Display message + The name of the ParamType (ThingClass: wallbox, ActionType: display, ID: {4e69a761-f4f1-42d0-83db-380894a86ebc}) - - MAC Address - The name of the ParamType (DeviceClass: wallbox, Type: device, ID: {c2df921d-ff8b-411c-9b1d-04a437d7dfa6}) + + IPv4 Address + The name of the ParamType (ThingClass: wallbox, Type: thing, ID: {730cd3d3-5f0e-4028-a8c2-ced7574f13f3}) + MAC Address + The name of the ParamType (ThingClass: wallbox, Type: thing, ID: {c2df921d-ff8b-411c-9b1d-04a437d7dfa6}) + + + + Maximal charging current - The name of the ParamType (DeviceClass: wallbox, ActionType: maxChargingCurrent, ID: {593656f0-babf-4308-8767-68f34e10fb15}) + The name of the ParamType (ThingClass: wallbox, ActionType: maxChargingCurrent, ID: {593656f0-babf-4308-8767-68f34e10fb15}) ---------- -The name of the ParamType (DeviceClass: wallbox, EventType: maxChargingCurrent, ID: {593656f0-babf-4308-8767-68f34e10fb15}) +The name of the ParamType (ThingClass: wallbox, EventType: maxChargingCurrent, ID: {593656f0-babf-4308-8767-68f34e10fb15}) ---------- The name of the StateType ({593656f0-babf-4308-8767-68f34e10fb15}) of ThingClass wallbox - - - Maximal charging current changed - The name of the EventType ({593656f0-babf-4308-8767-68f34e10fb15}) of DeviceClass wallbox - - - - Maximal charging current in Percent - The name of the ParamType (DeviceClass: wallbox, EventType: maxChargingCurrentPercent, ID: {3c7b83a0-0e42-47bf-9788-dde6aab5ceea}) ----------- -The name of the StateType ({3c7b83a0-0e42-47bf-9788-dde6aab5ceea}) of DeviceClass wallbox + Maximal charging current changed + The name of the EventType ({593656f0-babf-4308-8767-68f34e10fb15}) of ThingClass wallbox + - Maximal charging current percentage changed - The name of the EventType ({3c7b83a0-0e42-47bf-9788-dde6aab5ceea}) of DeviceClass wallbox + Maximal charging current in Percent + The name of the ParamType (ThingClass: wallbox, EventType: maxChargingCurrentPercent, ID: {3c7b83a0-0e42-47bf-9788-dde6aab5ceea}) +---------- +The name of the StateType ({3c7b83a0-0e42-47bf-9788-dde6aab5ceea}) of ThingClass wallbox + Maximal charging current percentage changed + The name of the EventType ({3c7b83a0-0e42-47bf-9788-dde6aab5ceea}) of ThingClass wallbox + + + + Plug State - The name of the ParamType (DeviceClass: wallbox, EventType: plugState, ID: {3b4d29f3-3101-47ad-90fd-269b6348783b}) + The name of the ParamType (ThingClass: wallbox, EventType: plugState, ID: {3b4d29f3-3101-47ad-90fd-269b6348783b}) ---------- -The name of the StateType ({3b4d29f3-3101-47ad-90fd-269b6348783b}) of DeviceClass wallbox +The name of the StateType ({3b4d29f3-3101-47ad-90fd-269b6348783b}) of ThingClass wallbox - - Power consumption - The name of the ParamType (DeviceClass: wallbox, EventType: P, ID: {7af9e93b-099d-4d9d-a480-9c0f66aecd8b}) ----------- -The name of the StateType ({7af9e93b-099d-4d9d-a480-9c0f66aecd8b}) of DeviceClass wallbox - - - - Power consumtion changed - The name of the EventType ({7af9e93b-099d-4d9d-a480-9c0f66aecd8b}) of DeviceClass wallbox + Power consumption + The name of the ParamType (ThingClass: wallbox, EventType: P, ID: {7af9e93b-099d-4d9d-a480-9c0f66aecd8b}) +---------- +The name of the StateType ({7af9e93b-099d-4d9d-a480-9c0f66aecd8b}) of ThingClass wallbox - - Present energy - The name of the ParamType (DeviceClass: wallbox, EventType: EP, ID: {8e277efe-21ef-4536-bfc0-901b32d44d7c}) ----------- -The name of the StateType ({8e277efe-21ef-4536-bfc0-901b32d44d7c}) of DeviceClass wallbox + Power consumtion changed + The name of the EventType ({7af9e93b-099d-4d9d-a480-9c0f66aecd8b}) of ThingClass wallbox + - Present energy changed - The name of the EventType ({8e277efe-21ef-4536-bfc0-901b32d44d7c}) of DeviceClass wallbox + Present energy + The name of the ParamType (ThingClass: wallbox, EventType: EP, ID: {8e277efe-21ef-4536-bfc0-901b32d44d7c}) +---------- +The name of the StateType ({8e277efe-21ef-4536-bfc0-901b32d44d7c}) of ThingClass wallbox - Set Power - The name of the ActionType ({83ed0774-2a91-434d-b03c-d920d02f2981}) of DeviceClass wallbox + Present energy changed + The name of the EventType ({8e277efe-21ef-4536-bfc0-901b32d44d7c}) of ThingClass wallbox - Set maximal charging current - The name of the ActionType ({593656f0-babf-4308-8767-68f34e10fb15}) of DeviceClass wallbox + + Session time + The name of the ParamType (ThingClass: wallbox, EventType: sessionTime, ID: {a6f35ea0-aaea-438b-b818-6d161762611e}) +---------- +The name of the StateType ({a6f35ea0-aaea-438b-b818-6d161762611e}) of ThingClass wallbox - - Total energy consumed - The name of the ParamType (DeviceClass: wallbox, EventType: totalEnergyConsumed, ID: {41e179b3-29a2-43ec-b537-023a527081e8}) ----------- -The name of the StateType ({41e179b3-29a2-43ec-b537-023a527081e8}) of DeviceClass wallbox + Session time changed + The name of the EventType ({a6f35ea0-aaea-438b-b818-6d161762611e}) of ThingClass wallbox - Total energy consumption changed - The name of the EventType ({41e179b3-29a2-43ec-b537-023a527081e8}) of DeviceClass wallbox + Set Power + The name of the ActionType ({83ed0774-2a91-434d-b03c-d920d02f2981}) of ThingClass wallbox - - Voltage Phase 2 - The name of the ParamType (DeviceClass: wallbox, EventType: U2, ID: {c8344ca5-21ac-4cd1-8f4b-e5ed202c5862}) ----------- -The name of the StateType ({c8344ca5-21ac-4cd1-8f4b-e5ed202c5862}) of DeviceClass wallbox + Set maximal charging current + The name of the ActionType ({593656f0-babf-4308-8767-68f34e10fb15}) of ThingClass wallbox + - - Voltage Phase 3 - The name of the ParamType (DeviceClass: wallbox, EventType: U3, ID: {5f01e86c-0943-4849-a01a-db441916ebd5}) + Total energy consumed + The name of the ParamType (ThingClass: wallbox, EventType: totalEnergyConsumed, ID: {41e179b3-29a2-43ec-b537-023a527081e8}) ---------- -The name of the StateType ({5f01e86c-0943-4849-a01a-db441916ebd5}) of DeviceClass wallbox +The name of the StateType ({41e179b3-29a2-43ec-b537-023a527081e8}) of ThingClass wallbox + + + + + Total energy consumption changed + The name of the EventType ({41e179b3-29a2-43ec-b537-023a527081e8}) of ThingClass wallbox - Voltage phase 1 - The name of the ParamType (DeviceClass: wallbox, EventType: U1, ID: {4a2d75d8-a3a0-4b40-9ca7-e8b6f11d0ef9}) + Voltage Phase 2 + The name of the ParamType (ThingClass: wallbox, EventType: U2, ID: {c8344ca5-21ac-4cd1-8f4b-e5ed202c5862}) ---------- -The name of the StateType ({4a2d75d8-a3a0-4b40-9ca7-e8b6f11d0ef9}) of DeviceClass wallbox +The name of the StateType ({c8344ca5-21ac-4cd1-8f4b-e5ed202c5862}) of ThingClass wallbox - Voltage phase 1 changed - The name of the EventType ({4a2d75d8-a3a0-4b40-9ca7-e8b6f11d0ef9}) of DeviceClass wallbox - - - - Voltage phase 2 changed - The name of the EventType ({c8344ca5-21ac-4cd1-8f4b-e5ed202c5862}) of DeviceClass wallbox + Voltage Phase 3 + The name of the ParamType (ThingClass: wallbox, EventType: U3, ID: {5f01e86c-0943-4849-a01a-db441916ebd5}) +---------- +The name of the StateType ({5f01e86c-0943-4849-a01a-db441916ebd5}) of ThingClass wallbox - Voltage phase 3 changed - The name of the EventType ({5f01e86c-0943-4849-a01a-db441916ebd5}) of DeviceClass wallbox + + Voltage phase 1 + The name of the ParamType (ThingClass: wallbox, EventType: U1, ID: {4a2d75d8-a3a0-4b40-9ca7-e8b6f11d0ef9}) +---------- +The name of the StateType ({4a2d75d8-a3a0-4b40-9ca7-e8b6f11d0ef9}) of ThingClass wallbox + + + + + Voltage phase 1 changed + The name of the EventType ({4a2d75d8-a3a0-4b40-9ca7-e8b6f11d0ef9}) of ThingClass wallbox + + + + + Voltage phase 2 changed + The name of the EventType ({c8344ca5-21ac-4cd1-8f4b-e5ed202c5862}) of ThingClass wallbox + + + + + Voltage phase 3 changed + The name of the EventType ({5f01e86c-0943-4849-a01a-db441916ebd5}) of ThingClass wallbox - + Current - The name of the ParamType (DeviceClass: wallbox, EventType: current, ID: {a29c1748-fe97-4830-a56e-e1cc4e618385}) + The name of the ParamType (ThingClass: wallbox, EventType: current, ID: {a29c1748-fe97-4830-a56e-e1cc4e618385}) ---------- -The name of the StateType ({a29c1748-fe97-4830-a56e-e1cc4e618385}) of DeviceClass wallbox +The name of the StateType ({a29c1748-fe97-4830-a56e-e1cc4e618385}) of ThingClass wallbox + + + + + + + Power + The name of the ParamType (ThingClass: wallbox, ActionType: power, ID: {83ed0774-2a91-434d-b03c-d920d02f2981}) +---------- +The name of the ParamType (ThingClass: wallbox, EventType: power, ID: {83ed0774-2a91-434d-b03c-d920d02f2981}) +---------- +The name of the StateType ({83ed0774-2a91-434d-b03c-d920d02f2981}) of ThingClass wallbox - - - Power - The name of the ParamType (DeviceClass: wallbox, ActionType: power, ID: {83ed0774-2a91-434d-b03c-d920d02f2981}) ----------- -The name of the ParamType (DeviceClass: wallbox, EventType: power, ID: {83ed0774-2a91-434d-b03c-d920d02f2981}) ----------- -The name of the StateType ({83ed0774-2a91-434d-b03c-d920d02f2981}) of DeviceClass wallbox - - - - Plug State changed - The name of the EventType ({3b4d29f3-3101-47ad-90fd-269b6348783b}) of DeviceClass wallbox + The name of the EventType ({3b4d29f3-3101-47ad-90fd-269b6348783b}) of ThingClass wallbox - + Current changed - The name of the EventType ({a29c1748-fe97-4830-a56e-e1cc4e618385}) of DeviceClass wallbox + The name of the EventType ({a29c1748-fe97-4830-a56e-e1cc4e618385}) of ThingClass wallbox - + Power changed - The name of the EventType ({83ed0774-2a91-434d-b03c-d920d02f2981}) of DeviceClass wallbox + The name of the EventType ({83ed0774-2a91-434d-b03c-d920d02f2981}) of ThingClass wallbox