diff --git a/everest/everestclient.cpp b/everest/everestclient.cpp index fb1999aa..83232ac5 100644 --- a/everest/everestclient.cpp +++ b/everest/everestclient.cpp @@ -34,14 +34,13 @@ EverestClient::EverestClient(QObject *parent) : QObject{parent} { - m_client = new MqttClient("nymea-" + QUuid::createUuid().toString().left(8), 300, - QString(), QByteArray(), Mqtt::QoS0, false, this); + m_client = new MqttClient("nymea-" + QUuid::createUuid().toString().left(8), 300, QString(), QByteArray(), Mqtt::QoS0, false, this); connect(m_client, &MqttClient::disconnected, this, [this](){ qCDebug(dcEverest()) << "The MQTT client is now disconnected" << this; - if (!m_address.isNull()) { + if (m_monitor->reachable()) { // Start the reconnect timer - qCDebug(dcEverest()) << "Starting reconnect timer for mqtt connection to" << m_address.toString(); + qCDebug(dcEverest()) << "Starting reconnect timer for mqtt connection to" << m_monitor->networkDeviceInfo().address().toString(); m_reconnectTimer.start(); } }); @@ -68,7 +67,7 @@ EverestClient::EverestClient(QObject *parent) return; } - m_client->connectToHost(m_address.toString(), m_port); + m_client->connectToHost(m_monitor->networkDeviceInfo().address().toString(), m_port); }); } @@ -123,26 +122,6 @@ Everest *EverestClient::getEverest(Thing *thing) const return m_everests.value(thing); } -QHostAddress EverestClient::address() const -{ - return m_address; -} - -void EverestClient::setAddress(const QHostAddress &address) -{ - m_address = address; -} - -MacAddress EverestClient::macAddress() const -{ - return m_macAddress; -} - -void EverestClient::setMacAddress(const MacAddress &macAddress) -{ - m_macAddress = macAddress; -} - NetworkDeviceMonitor *EverestClient::monitor() const { return m_monitor; @@ -168,8 +147,8 @@ void EverestClient::start() m_client->connectToHost(m_monitor->networkDeviceInfo().address().toString(), m_port); } } else { - qCDebug(dcEverest()) << "Connecting MQTT client to" << m_address.toString(); - m_client->connectToHost(m_address.toString(), m_port); + qCDebug(dcEverest()) << "Connecting MQTT client to" << m_monitor->networkDeviceInfo().address().toString(); + m_client->connectToHost(m_monitor->networkDeviceInfo().address().toString(), m_port); // Note: on connected this will be stopped, otherwise we want the timer running m_reconnectTimer.start(); @@ -201,6 +180,8 @@ void EverestClient::onMonitorReachableChanged(bool reachable) m_client->disconnectFromHost(); m_client->connectToHost(m_monitor->networkDeviceInfo().address().toString(), m_port); + } else { + m_reconnectTimer.stop(); } } @@ -208,11 +189,18 @@ QDebug operator<<(QDebug debug, EverestClient *everestClient) { QDebugStateSaver saver(debug); debug.nospace() << "EverestClient("; - if (everestClient->monitor()) { - debug.nospace() << everestClient->monitor()->networkDeviceInfo().macAddress() << ", "; + switch(everestClient->monitor()->monitorMode()) { + case NetworkDeviceInfo::MonitorModeMac: + debug.nospace() << everestClient->monitor()->networkDeviceInfo().macAddressInfos().constFirst() << ", "; debug.nospace() << everestClient->monitor()->networkDeviceInfo().address().toString() << ", "; - } else { - debug.nospace() << everestClient->address().toString() << ", "; + break; + case NetworkDeviceInfo::MonitorModeHostName: + debug.nospace() << everestClient->monitor()->networkDeviceInfo().hostName() << ", "; + debug.nospace() << everestClient->monitor()->networkDeviceInfo().address().toString() << ", "; + break; + case NetworkDeviceInfo::MonitorModeIp: + debug.nospace() << everestClient->monitor()->networkDeviceInfo().address().toString() << ", "; + break; } debug.nospace() << "MQTT connected: " << everestClient->client()->isConnected() << ")"; diff --git a/everest/everestclient.h b/everest/everestclient.h index a74c5266..5fe19881 100644 --- a/everest/everestclient.h +++ b/everest/everestclient.h @@ -59,12 +59,6 @@ public: Everest *getEverest(Thing *thing) const; - QHostAddress address() const; - void setAddress(const QHostAddress &address); - - MacAddress macAddress() const; - void setMacAddress(const MacAddress &macAddress); - NetworkDeviceMonitor *monitor() const; void setMonitor(NetworkDeviceMonitor *monitor); @@ -83,12 +77,6 @@ private: bool m_running = false; QHash m_everests; - - // One of both must be defined, never both - QHostAddress m_address; - MacAddress m_macAddress; - - // Available for mac based connections NetworkDeviceMonitor *m_monitor = nullptr; }; diff --git a/everest/everestdiscovery.cpp b/everest/everestdiscovery.cpp index fadc3534..bfe8005c 100644 --- a/everest/everestdiscovery.cpp +++ b/everest/everestdiscovery.cpp @@ -50,11 +50,11 @@ void EverestDiscovery::start() NetworkDeviceDiscoveryReply *discoveryReply = m_networkDeviceDiscovery->discover(); - connect(discoveryReply, &NetworkDeviceDiscoveryReply::networkDeviceInfoAdded, this, &EverestDiscovery::checkNetworkDevice); + connect(discoveryReply, &NetworkDeviceDiscoveryReply::hostAddressDiscovered, this, &EverestDiscovery::checkHostAddress); connect(discoveryReply, &NetworkDeviceDiscoveryReply::finished, discoveryReply, &NetworkDeviceDiscoveryReply::deleteLater); - connect(discoveryReply, &NetworkDeviceDiscoveryReply::finished, this, [=](){ - qCDebug(dcEverest()) << "Discovery: Network discovery finished. Found" - << discoveryReply->networkDeviceInfos().count() << "network devices"; + connect(discoveryReply, &NetworkDeviceDiscoveryReply::finished, this, [discoveryReply, this](){ + qCDebug(dcEverest()) << "Discovery: Network device discovery finished. Found" << discoveryReply->networkDeviceInfos().count() << "network devices"; + m_networkDeviceInfos = discoveryReply->networkDeviceInfos(); // Give the last connections added right before the network discovery finished a chance to check the device... QTimer::singleShot(3000, this, [this](){ @@ -65,8 +65,7 @@ void EverestDiscovery::start() // For development, check local host NetworkDeviceInfo localHostInfo; - localHostInfo.setAddress(QHostAddress::LocalHost); - checkNetworkDevice(localHostInfo); + checkHostAddress(QHostAddress::LocalHost); } void EverestDiscovery::startLocalhost() @@ -77,8 +76,7 @@ void EverestDiscovery::startLocalhost() // For development, check local host NetworkDeviceInfo localHostInfo; - localHostInfo.setAddress(QHostAddress::LocalHost); - checkNetworkDevice(localHostInfo); + checkHostAddress(QHostAddress::LocalHost); } QList EverestDiscovery::results() const @@ -86,7 +84,7 @@ QList EverestDiscovery::results() const return m_results; } -void EverestDiscovery::checkNetworkDevice(const NetworkDeviceInfo &networkDeviceInfo) +void EverestDiscovery::checkHostAddress(const QHostAddress &address) { MqttClient *client = new MqttClient("nymea-" + QUuid::createUuid().toString().left(8), 300, QString(), QByteArray(), Mqtt::QoS0, false, this); @@ -94,9 +92,9 @@ void EverestDiscovery::checkNetworkDevice(const NetworkDeviceInfo &networkDevice m_clients.append(client); - connect(client, &MqttClient::error, this, [this, client, networkDeviceInfo](QAbstractSocket::SocketError socketError){ + connect(client, &MqttClient::error, this, [this, client, address](QAbstractSocket::SocketError socketError){ qCDebug(dcEverest()) << "Discovery: MQTT client error occurred on" - << networkDeviceInfo.address().toString() << socketError + << address.toString() << socketError << "...skip connection"; // We give up on the first error here cleanupClient(client); @@ -110,11 +108,11 @@ void EverestDiscovery::checkNetworkDevice(const NetworkDeviceInfo &networkDevice cleanupClient(client); }); - connect(client, &MqttClient::connected, this, [this, client, networkDeviceInfo](){ + connect(client, &MqttClient::connected, this, [this, client, address](){ // We found a mqtt server, let's check if we find everest_api module on it... - qCDebug(dcEverest()) << "Discovery: Successfully connected to host" << networkDeviceInfo; + qCDebug(dcEverest()) << "Discovery: Successfully connected to host" << address.toString(); - connect(client, &MqttClient::publishReceived, client, [this, client, networkDeviceInfo] + connect(client, &MqttClient::publishReceived, client, [this, client, address] (const QString &topic, const QByteArray &payload, bool retained) { qCDebug(dcEverest()) << "Discovery: Received publish on" << topic @@ -131,9 +129,9 @@ void EverestDiscovery::checkNetworkDevice(const NetworkDeviceInfo &networkDevice } QStringList connectors = jsonDoc.toVariant().toStringList(); - qCInfo(dcEverest()) << "Discovery: Found Everest on" << networkDeviceInfo << connectors; + qCInfo(dcEverest()) << "Discovery: Found Everest on" << address.toString() << connectors; Result result; - result.networkDeviceInfo = networkDeviceInfo; + result.address = address; result.connectors = connectors; m_results.append(result); @@ -159,10 +157,11 @@ void EverestDiscovery::checkNetworkDevice(const NetworkDeviceInfo &networkDevice // }); }); - qCDebug(dcEverest()) << "Discovery: Verifying host" << networkDeviceInfo; - client->connectToHost(networkDeviceInfo.address().toString(), 1883); + qCDebug(dcEverest()) << "Discovery: Verifying host" << address.toString(); + client->connectToHost(address.toString(), 1883); } + void EverestDiscovery::cleanupClient(MqttClient *client) { if (!m_clients.contains(client)) @@ -186,6 +185,10 @@ void EverestDiscovery::finishDiscovery() foreach (MqttClient *client, m_clients) cleanupClient(client); + // Update results with final network device infos + for (int i = 0; i < m_results.count(); i++) + m_results[i].networkDeviceInfo = m_networkDeviceInfos.get(m_results.at(i).address); + qCInfo(dcEverest()) << "Discovery: Finished the discovery process. Found" << m_results.count() << "Everest instances in" << QTime::fromMSecsSinceStartOfDay(durationMilliSeconds).toString("mm:ss.zzz"); diff --git a/everest/everestdiscovery.h b/everest/everestdiscovery.h index 7a64d552..ccfdd363 100644 --- a/everest/everestdiscovery.h +++ b/everest/everestdiscovery.h @@ -42,6 +42,7 @@ class EverestDiscovery : public QObject Q_OBJECT public: typedef struct Result { + QHostAddress address; QStringList connectors; NetworkDeviceInfo networkDeviceInfo; } Result; @@ -49,7 +50,6 @@ public: explicit EverestDiscovery(NetworkDeviceDiscovery *networkDeviceDiscovery, QObject *parent = nullptr); void start(); - void startLocalhost(); QList results() const; @@ -62,12 +62,13 @@ private: QDateTime m_startDateTime; QList m_results; QList m_clients; + NetworkDeviceInfos m_networkDeviceInfos; bool m_localhostDiscovery = false; QString m_everestApiModuleTopicConnectors = "everest_api/connectors"; - void checkNetworkDevice(const NetworkDeviceInfo &networkDeviceInfo); + void checkHostAddress(const QHostAddress &address); void cleanupClient(MqttClient *client); void finishDiscovery(); }; diff --git a/everest/integrationplugineverest.cpp b/everest/integrationplugineverest.cpp index a4f7e394..03e8895f 100644 --- a/everest/integrationplugineverest.cpp +++ b/everest/integrationplugineverest.cpp @@ -34,17 +34,17 @@ #include -IntegrationPluginTruffle::IntegrationPluginTruffle() +IntegrationPluginEverest::IntegrationPluginEverest() { } -void IntegrationPluginTruffle::init() +void IntegrationPluginEverest::init() { } -void IntegrationPluginTruffle::startMonitoringAutoThings() +void IntegrationPluginEverest::startMonitoringAutoThings() { // Check on localhost if there is any EVerest instance running and if we have to set up a thing for this EV charger // Since this integration plugin is most luikly running on an EV charger running EVerest, the local instance should @@ -108,7 +108,7 @@ void IntegrationPluginTruffle::startMonitoringAutoThings() discovery->startLocalhost(); } -void IntegrationPluginTruffle::discoverThings(ThingDiscoveryInfo *info) +void IntegrationPluginEverest::discoverThings(ThingDiscoveryInfo *info) { qCDebug(dcEverest()) << "Start discovering Everest systems in the local network"; if (!hardwareManager()->networkDeviceDiscovery()->available()) { @@ -127,22 +127,36 @@ void IntegrationPluginTruffle::discoverThings(ThingDiscoveryInfo *info) foreach(const QString &connectorName, result.connectors) { QString title = QString("Everest (%1)").arg(connectorName); - QString description = result.networkDeviceInfo.address().toString() + - " " + result.networkDeviceInfo.macAddress(); - ThingDescriptor descriptor(everestThingClassId, title, description); + QString description; + MacAddressInfo macInfo; + switch (result.networkDeviceInfo.monitorMode()) { + case NetworkDeviceInfo::MonitorModeMac: + macInfo = result.networkDeviceInfo.macAddressInfos().constFirst(); + description = result.networkDeviceInfo.address().toString(); + if (!macInfo.vendorName().isEmpty()) + description += " - " + result.networkDeviceInfo.macAddressInfos().constFirst().vendorName(); + + break; + case NetworkDeviceInfo::MonitorModeHostName: + description = result.networkDeviceInfo.address().toString(); + break; + case NetworkDeviceInfo::MonitorModeIp: + description = "Interface: " + result.networkDeviceInfo.networkInterface().name(); + break; + } + + ThingDescriptor descriptor(everestThingClassId, title, description); qCInfo(dcEverest()) << "Discovered -->" << title << description; + // Note: the network device info already provides the correct set of parameters in order to be used by the monitor + // depending on the possibilities within this network. It is not recommended to fill in all information available. + // Only the information available depending on the monitor mode are relevant for the monitor. ParamList params; params.append(Param(everestThingConnectorParamTypeId, connectorName)); - - if (!MacAddress(result.networkDeviceInfo.macAddress()).isNull()) - params.append(Param(everestThingMacParamTypeId, result.networkDeviceInfo.macAddress())); - - if (!result.networkDeviceInfo.address().isNull()) - params.append(Param(everestThingAddressParamTypeId, - result.networkDeviceInfo.address().toString())); - + params.append(Param(everestThingMacAddressParamTypeId, result.networkDeviceInfo.thingParamValueMacAddress())); + params.append(Param(everestThingHostNameParamTypeId, result.networkDeviceInfo.thingParamValueHostName())); + params.append(Param(everestThingAddressParamTypeId, result.networkDeviceInfo.thingParamValueAddress())); descriptor.setParams(params); // Let's check if we aleardy have a thing with those params @@ -179,77 +193,42 @@ void IntegrationPluginTruffle::discoverThings(ThingDiscoveryInfo *info) discovery->start(); } -void IntegrationPluginTruffle::setupThing(ThingSetupInfo *info) +void IntegrationPluginEverest::setupThing(ThingSetupInfo *info) { Thing *thing = info->thing(); QHostAddress address(thing->paramValue(everestThingAddressParamTypeId).toString()); - MacAddress macAddress(thing->paramValue(everestThingMacParamTypeId).toString()); + MacAddress macAddress(thing->paramValue(everestThingMacAddressParamTypeId).toString()); + QString hostName(thing->paramValue(everestThingHostNameParamTypeId).toString()); QString connector(thing->paramValue(everestThingConnectorParamTypeId).toString()); - if (!macAddress.isNull()) { + EverestClient *everstClient = nullptr; - qCInfo(dcEverest()) << "Setting up everest for" << macAddress.toString() << connector; - - EverestClient *everstClient = nullptr; - - foreach (EverestClient *ec, m_everstClients) { - if (ec->macAddress() == macAddress) { - // We have already a client for this host - qCDebug(dcEverest()) << "Using existing" << ec; - everstClient = ec; - } + foreach (EverestClient *ec, m_everstClients) { + if (ec->monitor()->macAddress() == macAddress && + ec->monitor()->hostName() == hostName && + ec->monitor()->address() == address) { + // We have already a client for this host + qCDebug(dcEverest()) << "Using existing" << ec; + everstClient = ec; } - - if (!everstClient) { - qCDebug(dcEverest()) << "Creating new mac address based everst client"; - everstClient = new EverestClient(this); - everstClient->setMacAddress(macAddress); - everstClient->setMonitor(hardwareManager()->networkDeviceDiscovery()->registerMonitor(macAddress)); - m_everstClients.append(everstClient); - everstClient->start(); - } - - everstClient->addThing(thing); - m_thingClients.insert(thing, everstClient); - info->finish(Thing::ThingErrorNoError); - return; - - } else { - - qCInfo(dcEverest()) << "Setting up IP based everest for" << address.toString() << connector; - - EverestClient *everstClient = nullptr; - - foreach (EverestClient *ec, m_everstClients) { - - if (ec->address().isNull()) - continue; - - if (ec->address() == address) { - // We have already a client for this host - qCDebug(dcEverest()) << "Using existing" << ec; - everstClient = ec; - break; - } - } - - if (!everstClient) { - qCDebug(dcEverest()) << "Creating new IP based everst client"; - everstClient = new EverestClient(this); - everstClient->setAddress(address); - m_everstClients.append(everstClient); - everstClient->start(); - } - - everstClient->addThing(thing); - m_thingClients.insert(thing, everstClient); - info->finish(Thing::ThingErrorNoError); - return; } + + if (!everstClient) { + everstClient = new EverestClient(this); + everstClient->setMonitor(hardwareManager()->networkDeviceDiscovery()->registerMonitor(thing)); + m_everstClients.append(everstClient); + qCDebug(dcEverest()) << "Created new" << everstClient; + everstClient->start(); + } + + everstClient->addThing(thing); + m_thingClients.insert(thing, everstClient); + info->finish(Thing::ThingErrorNoError); + return; } -void IntegrationPluginTruffle::executeAction(ThingActionInfo *info) +void IntegrationPluginEverest::executeAction(ThingActionInfo *info) { qCDebug(dcEverest()) << "Executing action for thing" << info->thing() << info->action().actionTypeId().toString() << info->action().params(); @@ -298,7 +277,7 @@ void IntegrationPluginTruffle::executeAction(ThingActionInfo *info) info->finish(Thing::ThingErrorNoError); } -void IntegrationPluginTruffle::thingRemoved(Thing *thing) +void IntegrationPluginEverest::thingRemoved(Thing *thing) { qCDebug(dcEverest()) << "Remove thing" << thing; if (thing->thingClassId() == everestThingClassId) { @@ -308,8 +287,16 @@ void IntegrationPluginTruffle::thingRemoved(Thing *thing) qCDebug(dcEverest()) << "Deleting" << everestClient << "since there is no thing left"; // No more things related to this client, we can delete it m_everstClients.removeAll(everestClient); + + // Unregister monitor + if (everestClient->monitor()) + hardwareManager()->networkDeviceDiscovery()->unregisterMonitor(everestClient->monitor()); + + everestClient->deleteLater(); } + + } } diff --git a/everest/integrationplugineverest.h b/everest/integrationplugineverest.h index 6c173ac4..fd8fcb72 100644 --- a/everest/integrationplugineverest.h +++ b/everest/integrationplugineverest.h @@ -38,7 +38,7 @@ #include -class IntegrationPluginTruffle: public IntegrationPlugin +class IntegrationPluginEverest: public IntegrationPlugin { Q_OBJECT @@ -46,7 +46,7 @@ class IntegrationPluginTruffle: public IntegrationPlugin Q_INTERFACES(IntegrationPlugin) public: - explicit IntegrationPluginTruffle(); + explicit IntegrationPluginEverest(); void init() override; void startMonitoringAutoThings() override; diff --git a/everest/integrationplugineverest.json b/everest/integrationplugineverest.json index 60e52878..2640122d 100644 --- a/everest/integrationplugineverest.json +++ b/everest/integrationplugineverest.json @@ -14,23 +14,29 @@ "id": "965cbe0d-088c-42a2-965d-ceafbb8b01e9", "setupMethod": "JustAdd", "createMethods": ["discovery", "user"], - "interfaces": [ "evcharger", "smartmeterconsumer", "connectable" ], + "interfaces": [ "evcharger", "smartmeterconsumer", "networkdevice", "connectable" ], "paramTypes": [ + { + "id": "f1f3e9a7-3a35-4089-8869-b9bfd64659e5", + "name": "hostName", + "displayName": "Host name", + "type": "QString" + }, { "id": "911b6fa3-010c-486e-8251-71a6aa21adb3", "name": "address", - "displayName": "Host address", + "displayName": "IP address", "type": "QString", "inputType": "IPv4Address", "defaultValue": "" }, { "id": "cb9517ef-1ae2-49c9-9036-0c6e15bb3652", - "name": "mac", + "name": "macAddress", "displayName": "MAC address", "type": "QString", - "readOnly": true, - "defaultValue": "00:00:00:00:00:00" + "defaultValue": "00:00:00:00:00:00", + "readOnly": true }, { "id": "73f27e36-6f68-40a9-8805-22e88911736c", diff --git a/everest/translations/27e4b1c4-bc27-4699-84ef-41af1a9e1cea-de.ts b/everest/translations/27e4b1c4-bc27-4699-84ef-41af1a9e1cea-de.ts new file mode 100644 index 00000000..148caa4e --- /dev/null +++ b/everest/translations/27e4b1c4-bc27-4699-84ef-41af1a9e1cea-de.ts @@ -0,0 +1,138 @@ + + + + + IntegrationPluginEverest + + + The network device discovery is not available. + Die Netzwersuche ist auf diesem System nicht verfügbar. + + + + everest + + + Active phases + The name of the StateType ({9597c21f-d8a6-424d-8e35-bdd69dc57d35}) of ThingClass everest + Aktive Phasen + + + + Chargebyte GmbH + The name of the vendor ({07ba8a98-799f-4a6e-a8d9-b45cd38dbcc5}) + Chargebyte GmbH + + + + Charging + The name of the StateType ({79f44541-7967-4394-bb50-8bf69e4115ca}) of ThingClass everest + Lade + + + + + Charging enabled + The name of the ParamType (ThingClass: everest, ActionType: power, ID: {018d1f2f-4ede-4ab0-b76e-369684cd0da5}) +---------- +The name of the StateType ({018d1f2f-4ede-4ab0-b76e-369684cd0da5}) of ThingClass everest + Ladefreigabe + + + + Connected + The name of the StateType ({2104641b-1004-4637-8eca-108f53dcb402}) of ThingClass everest + Verbunden + + + + Connector name + The name of the ParamType (ThingClass: everest, Type: thing, ID: {73f27e36-6f68-40a9-8805-22e88911736c}) + Konnektorname + + + + Current power + The name of the StateType ({120a4028-b01c-4a31-8d9b-bf34f602a095}) of ThingClass everest + Aktuelle Leistung + + + + Enable or disable charging + The name of the ActionType ({018d1f2f-4ede-4ab0-b76e-369684cd0da5}) of ThingClass everest + Laden starten oder stoppen + + + + + Everest + The name of the ThingClass ({965cbe0d-088c-42a2-965d-ceafbb8b01e9}) +---------- +The name of the plugin everest ({27e4b1c4-bc27-4699-84ef-41af1a9e1cea}) + Everest + + + + Fan speed + The name of the StateType ({2ca678ff-6d6f-49cf-b265-545ed15c12b7}) of ThingClass everest + Lüfter Geschwindigkeit + + + + Host address + The name of the ParamType (ThingClass: everest, Type: thing, ID: {911b6fa3-010c-486e-8251-71a6aa21adb3}) + IP Adresse + + + + MAC address + The name of the ParamType (ThingClass: everest, Type: thing, ID: {cb9517ef-1ae2-49c9-9036-0c6e15bb3652}) + MAC-Adresse + + + + + Maximum charging current + The name of the ParamType (ThingClass: everest, ActionType: maxChargingCurrent, ID: {d5d71037-a2b1-4abe-be75-883e6fef75c6}) +---------- +The name of the StateType ({d5d71037-a2b1-4abe-be75-883e6fef75c6}) of ThingClass everest + Maxmialer Ladestrom + + + + Plugged in + The name of the StateType ({5b963e54-15f0-459f-8754-d172f2febee2}) of ThingClass everest + Fahrzeug angesteckt + + + + Session energy + The name of the StateType ({b7455160-98e4-47ad-a1db-f3fbda009aa2}) of ThingClass everest + Sitzungsenergie + + + + Set maximum charging current + The name of the ActionType ({d5d71037-a2b1-4abe-be75-883e6fef75c6}) of ThingClass everest + Setze maximalen Ladestrom + + + + State + The name of the StateType ({75a52f23-7d65-4b33-9262-99085beb7ee2}) of ThingClass everest + Zustand + + + + Temperature + The name of the StateType ({b7c76f2d-520a-4bb1-9bd3-d6ffcbef73b6}) of ThingClass everest + Temperatur + + + + Total energy + The name of the StateType ({8946aee7-caa1-47cc-bef9-37ca4c8b5e49}) of ThingClass everest + Gesamtenergie + + + diff --git a/everest/translations/27e4b1c4-bc27-4699-84ef-41af1a9e1cea-en_US.ts b/everest/translations/27e4b1c4-bc27-4699-84ef-41af1a9e1cea-en_US.ts index 13673e82..252351e2 100644 --- a/everest/translations/27e4b1c4-bc27-4699-84ef-41af1a9e1cea-en_US.ts +++ b/everest/translations/27e4b1c4-bc27-4699-84ef-41af1a9e1cea-en_US.ts @@ -2,9 +2,9 @@ - IntegrationPluginTruffle + IntegrationPluginEverest - + The network device discovery is not available. @@ -12,38 +12,26 @@ everest - - 1 - The name of a possible value of StateType {19abdab4-5607-4f6f-9f73-1c42ffe8939f} of ThingClass everest - - - - - 3 - The name of a possible value of StateType {19abdab4-5607-4f6f-9f73-1c42ffe8939f} of ThingClass everest - - - - + Active phases The name of the StateType ({9597c21f-d8a6-424d-8e35-bdd69dc57d35}) of ThingClass everest - + Chargebyte GmbH The name of the vendor ({07ba8a98-799f-4a6e-a8d9-b45cd38dbcc5}) - + Charging The name of the StateType ({79f44541-7967-4394-bb50-8bf69e4115ca}) of ThingClass everest - - + + Charging enabled The name of the ParamType (ThingClass: everest, ActionType: power, ID: {018d1f2f-4ede-4ab0-b76e-369684cd0da5}) ---------- @@ -51,41 +39,32 @@ The name of the StateType ({018d1f2f-4ede-4ab0-b76e-369684cd0da5}) of ThingClass - + Connected The name of the StateType ({2104641b-1004-4637-8eca-108f53dcb402}) of ThingClass everest - + Connector name The name of the ParamType (ThingClass: everest, Type: thing, ID: {73f27e36-6f68-40a9-8805-22e88911736c}) - + Current power The name of the StateType ({120a4028-b01c-4a31-8d9b-bf34f602a095}) of ThingClass everest - - - Desired phase count - The name of the ParamType (ThingClass: everest, ActionType: desiredPhaseCount, ID: {19abdab4-5607-4f6f-9f73-1c42ffe8939f}) ----------- -The name of the StateType ({19abdab4-5607-4f6f-9f73-1c42ffe8939f}) of ThingClass everest - - - - + Enable or disable charging The name of the ActionType ({018d1f2f-4ede-4ab0-b76e-369684cd0da5}) of ThingClass everest - - + + Everest The name of the ThingClass ({965cbe0d-088c-42a2-965d-ceafbb8b01e9}) ---------- @@ -93,26 +72,26 @@ The name of the plugin everest ({27e4b1c4-bc27-4699-84ef-41af1a9e1cea}) - + Fan speed The name of the StateType ({2ca678ff-6d6f-49cf-b265-545ed15c12b7}) of ThingClass everest - + Host address The name of the ParamType (ThingClass: everest, Type: thing, ID: {911b6fa3-010c-486e-8251-71a6aa21adb3}) - + MAC address The name of the ParamType (ThingClass: everest, Type: thing, ID: {cb9517ef-1ae2-49c9-9036-0c6e15bb3652}) - - + + Maximum charging current The name of the ParamType (ThingClass: everest, ActionType: maxChargingCurrent, ID: {d5d71037-a2b1-4abe-be75-883e6fef75c6}) ---------- @@ -120,43 +99,37 @@ The name of the StateType ({d5d71037-a2b1-4abe-be75-883e6fef75c6}) of ThingClass - + Plugged in The name of the StateType ({5b963e54-15f0-459f-8754-d172f2febee2}) of ThingClass everest - + Session energy The name of the StateType ({b7455160-98e4-47ad-a1db-f3fbda009aa2}) of ThingClass everest - - Set desired phase count - The name of the ActionType ({19abdab4-5607-4f6f-9f73-1c42ffe8939f}) of ThingClass everest - - - - + Set maximum charging current The name of the ActionType ({d5d71037-a2b1-4abe-be75-883e6fef75c6}) of ThingClass everest - + State The name of the StateType ({75a52f23-7d65-4b33-9262-99085beb7ee2}) of ThingClass everest - + Temperature The name of the StateType ({b7c76f2d-520a-4bb1-9bd3-d6ffcbef73b6}) of ThingClass everest - + Total energy The name of the StateType ({8946aee7-caa1-47cc-bef9-37ca4c8b5e49}) of ThingClass everest