From 3c20fb294374728d6ade052e753f28e56f29462b Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Wed, 17 Jul 2024 23:38:22 +0200 Subject: [PATCH] Add lots of fields for MQTT, OCPP, WiFi and fix documentation links --- ApiSettingsPage.qml | 4 + CMakeLists.txt | 2 +- CenteredDialog.qml | 3 +- ChargerTabPage.qml | 3 +- CloudPage.qml | 5 +- ...OffSwitch.qml => ConfirmingOnOffSwitch.qml | 30 +- DeviceScreen.qml | 8 +- EditValueItem.qml | 8 + GeneralOnOffSwitch.qml | 2 +- HotspotPage.qml | 30 +- MqttPage.qml | 70 ++ NamePage.qml | 7 - OcppPage.qml | 112 ++ SetPriceLimitPage.qml | 3 +- WiFiPage.qml | 26 +- i18n/qml_de.ts | 1032 ++++++++++++----- qmldir | 2 +- 17 files changed, 989 insertions(+), 358 deletions(-) rename WiFiOnOffSwitch.qml => ConfirmingOnOffSwitch.qml (59%) diff --git a/ApiSettingsPage.qml b/ApiSettingsPage.qml index cbe8c44..610c706 100644 --- a/ApiSettingsPage.qml +++ b/ApiSettingsPage.qml @@ -21,6 +21,7 @@ NavigationPage { Button { text: qsTr("API documentation") + onClicked: Qt.openUrlExternally(qsTr("https://github.com/goecharger/go-eCharger-API-v2/blob/main/http-en.md")) } RowLayout { @@ -116,6 +117,7 @@ NavigationPage { Button { text: qsTr("API documentation") + onClicked: Qt.openUrlExternally(qsTr("https://github.com/goecharger/go-eCharger-API-v2/blob/main/cloudapi-en.md")) } } } @@ -148,6 +150,7 @@ NavigationPage { Button { text: qsTr("API documentation") + onClicked: Qt.openUrlExternally(qsTr("https://github.com/goecharger/go-eCharger-API-v2/blob/main/gridapi-en.md")) } } } @@ -167,6 +170,7 @@ NavigationPage { Button { text: qsTr("API documentation") + onClicked: Qt.openUrlExternally(qsTr("https://github.com/goecharger/go-eCharger-API-v1/blob/master/go-eCharger%20API%20v1%20EN.md")) } } } diff --git a/CMakeLists.txt b/CMakeLists.txt index be93502..3a0eebc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,6 +68,7 @@ qt_add_qml_module(evcharger-app ChargingSpeedPage.qml CloudPage.qml CloudUrlsModel.qml + ConfirmingOnOffSwitch.qml ConnectingScreen.qml ConnectionPage.qml ControllerPage.qml @@ -128,7 +129,6 @@ qt_add_qml_module(evcharger-app WhiteItemDelegate.qml WhiteSwipeDelegate.qml WiFiErrorsPage.qml - WiFiOnOffSwitch.qml WiFiPage.qml WiFiScanPage.qml RESOURCES diff --git a/CenteredDialog.qml b/CenteredDialog.qml index feefa3c..e733660 100644 --- a/CenteredDialog.qml +++ b/CenteredDialog.qml @@ -3,5 +3,6 @@ import QtQuick.Controls import QtQuick.Layouts Dialog { - anchors.centerIn: parent + parent: Overlay.overlay + anchors.centerIn: Overlay.overlay } diff --git a/ChargerTabPage.qml b/ChargerTabPage.qml index 4607b61..1589774 100644 --- a/ChargerTabPage.qml +++ b/ChargerTabPage.qml @@ -1,6 +1,7 @@ import QtQuick import QtQuick.Controls import QtQuick.Layouts +import QtQml import EVChargerApp AnimatedStackView { @@ -177,7 +178,7 @@ AnimatedStackView { visible: logicMode.value == 4 iconSource: "material-icons/grid_guides.svg" title: qsTr("Price limit") - description: qsTr("%0 ct/kWh").arg(priceLimitHelper.value) + description: qsTr("%0 ct/kWh").arg(Qt.locale().toString(priceLimitHelper.value, 'f', 1)) component: "SetPriceLimitPage.qml" } diff --git a/CloudPage.qml b/CloudPage.qml index 85fa8a9..31df596 100644 --- a/CloudPage.qml +++ b/CloudPage.qml @@ -6,10 +6,11 @@ import EVChargerApp NavigationPage { title: qsTr("Cloud") - GeneralOnOffSwitch { - Layout.fillWidth: true + ConfirmingOnOffSwitch { apiKey: "cwe" text: qsTr("Enable cloud connection") + dialogTitle: qsTr("Are you sure?") + dialogText: qsTr("Disabling could connection could make your device unreachable from other places than home!") } Text { diff --git a/WiFiOnOffSwitch.qml b/ConfirmingOnOffSwitch.qml similarity index 59% rename from WiFiOnOffSwitch.qml rename to ConfirmingOnOffSwitch.qml index 3f66dcd..d85bbfa 100644 --- a/WiFiOnOffSwitch.qml +++ b/ConfirmingOnOffSwitch.qml @@ -6,6 +6,10 @@ import EVChargerApp WhiteCheckDelegate { id: checkDelegate + required property string apiKey + required property string dialogTitle + required property string dialogText + Layout.fillWidth: true Component.onCompleted: { @@ -13,23 +17,23 @@ WhiteCheckDelegate { } ApiKeyValueHelper { - id: staEnabled + id: apiKeyValueHelper deviceConnection: theDeviceConnection - apiKey: "wen" + apiKey: checkDelegate.apiKey } SetValueHelper { - id: staEnabledChanger + id: setValueHelper deviceConnection: theDeviceConnection - apiKey: "wen" + apiKey: checkDelegate.apiKey } - checked: staEnabled.value - text: staEnabled.value ? qsTr("On") : qsTr("Off") + checked: apiKeyValueHelper.value + text: apiKeyValueHelper.value === true ? qsTr("On") : apiKeyValueHelper.value === false ? qsTr("Off") : qsTr("Unknown") onClicked: { if (checked) - staEnabledChanger.setValue(checked) + setValueHelper.setValue(checked) else { checked = true disableStaDialog.open() @@ -37,29 +41,29 @@ WhiteCheckDelegate { } BusyIndicator { - visible: staEnabledChanger.pending + visible: setValueHelper.pending } RequestStatusText { - request: staEnabledChanger + request: setValueHelper } CenteredDialog { id: disableStaDialog - title: qsTr("Are you sure?") + title: checkDelegate.dialogTitle standardButtons: Dialog.Ok | Dialog.Cancel focus: true modal: true onAccepted: { checkDelegate.checked = false - staEnabledChanger.setValue(false) + setValueHelper.setValue(false) } - onRejected: checkDelegate.checked = Qt.binding(function() { return staEnabled.value }) + onRejected: checkDelegate.checked = Qt.binding(function() { return apiKeyValueHelper.value }) contentItem: Text { - text: qsTr("Disabling Wi-Fi could make your device unreachable from your local homenetwork or the cloud!"); + text: checkDelegate.dialogText wrapMode: Text.Wrap } } diff --git a/DeviceScreen.qml b/DeviceScreen.qml index 41fb744..ffed4fe 100644 --- a/DeviceScreen.qml +++ b/DeviceScreen.qml @@ -71,7 +71,7 @@ Loader { modal: true onAccepted: theDeviceConnection.sendAuth(passwordInput.text) - onRejected: loader.close() + onRejected: loader.closeRequested() contentItem: GridLayout { property int minimumInputSize: 120 @@ -109,12 +109,12 @@ Loader { id: authImpossibleDialog title: qsTr("Authentication impossible!") - standardButtons: Dialog.Ok | Dialog.Cancel + standardButtons: Dialog.Ok focus: true modal: true - onAccepted: loader.close() - onRejected: loader.close() + onAccepted: loader.closeRequested() + onRejected: loader.closeRequested() contentItem: Text { text: qsTr("To use this password remotely a password has to be setup first. This can be done over the AccessPoint."); diff --git a/EditValueItem.qml b/EditValueItem.qml index 0b938ae..8304a77 100644 --- a/EditValueItem.qml +++ b/EditValueItem.qml @@ -34,6 +34,14 @@ WhiteItemDelegate { text: itemDelegate.text } + BusyIndicator { + visible: setValueHelper.pending + } + + RequestStatusText { + request: setValueHelper + } + Text { text: itemDelegate.valueText } diff --git a/GeneralOnOffSwitch.qml b/GeneralOnOffSwitch.qml index c93bfff..029a82b 100644 --- a/GeneralOnOffSwitch.qml +++ b/GeneralOnOffSwitch.qml @@ -29,7 +29,7 @@ WhiteCheckDelegate { } checked: valueHelper.value - text: valueHelper.value ? qsTr("On") : qsTr("Off") + text: valueHelper.value === true ? qsTr("On") : valueHelper.value === false ? qsTr("Off") : qsTr("Unknown") onClicked: { valueChanger.setValue(checked) diff --git a/HotspotPage.qml b/HotspotPage.qml index 1956827..7385deb 100644 --- a/HotspotPage.qml +++ b/HotspotPage.qml @@ -14,9 +14,33 @@ NavigationPage { text: qsTr("Disable AP when online") } - Text { - text: "TODO" + EditValueItem { + text: qsTr("SSID") + apiKey: "wan" + fullWidth: true + editableItem: TextField { + id: textField0 + property alias value: textField0.text + } + } - Layout.fillHeight: true + EditValueItem { + text: qsTr("Password") + apiKey: "wak" + fullWidth: true + editableItem: TextField { + id: textField1 + property alias value: textField1.text + } + } + + EditValueItem { + text: qsTr("Channel") + valueText: Qt.locale().toString(value) + apiKey: "wapc" + editableItem: SpinBox { + from: 0 + to: 15 + } } } diff --git a/MqttPage.qml b/MqttPage.qml index a69b0bb..173922c 100644 --- a/MqttPage.qml +++ b/MqttPage.qml @@ -10,6 +10,21 @@ NavigationPage { apiKey: "mce" } + EditValueItem { + text: qsTr("Broker url") + apiKey: "mcu" + fullWidth: true + editableItem: TextField { + id: textField0 + property alias value: textField0.text + } + } + + Button { + text: qsTr("API documentation") + onClicked: Qt.openUrlExternally(qsTr("https://github.com/goecharger/go-eCharger-API-v2/blob/main/mqtt-en.md")) + } + WhiteBox { Layout.fillWidth: true @@ -85,4 +100,59 @@ NavigationPage { } } } + + GeneralOnOffSwitch { + apiKey: "mqg" + text: qsTr("Use global CA store") + } + + GeneralOnOffSwitch { + apiKey: "mqcn" + text: qsTr("Skip cert commonName check") + } + + GeneralOnOffSwitch { + apiKey: "mqss" + text: qsTr("Skip server cert verification") + } + + // TODO clientKey + + // TODO clientCert + + // TODO serverCert + + GeneralOnOffSwitch { + apiKey: "mcr" + text: qsTr("MQTT readonly") + } + + EditValueItem { + // TODO allow set to null to reset to default + text: qsTr("Topic prefix") + apiKey: "mtp" + fullWidth: true + editableItem: TextField { + id: textField1 + property alias value: textField1.text + } + } + + GeneralOnOffSwitch { + id: homeassistant + apiKey: "mhe" + text: qsTr("Homeassistant autodiscover") + } + + EditValueItem { + visible: homeassistant.checked + // TODO allow set to null to reset to default + text: qsTr("Homeassistant topic prefix") + apiKey: "mht" + fullWidth: true + editableItem: TextField { + id: textField2 + property alias value: textField2.text + } + } } diff --git a/NamePage.qml b/NamePage.qml index 3e9610f..2b31546 100644 --- a/NamePage.qml +++ b/NamePage.qml @@ -5,14 +5,7 @@ import QtQuick.Layouts NavigationPage { title: qsTr("Name") - NavigationItem { - iconSource: "material-icons/grid_guides.svg" - title: qsTr("Name") - component: "NamePage.qml" - } - EditValueItem { - id: test text: qsTr("Name") apiKey: "fna" fullWidth: true diff --git a/OcppPage.qml b/OcppPage.qml index 94eb0ca..019224b 100644 --- a/OcppPage.qml +++ b/OcppPage.qml @@ -10,6 +10,21 @@ NavigationPage { apiKey: "ocppe" } + EditValueItem { + text: qsTr("Backend url") + apiKey: "ocppu" + fullWidth: true + editableItem: TextField { + id: textField0 + property alias value: textField0.text + } + } + + Button { + text: qsTr("API documentation") + onClicked: Qt.openUrlExternally(qsTr("https://github.com/goecharger/go-eCharger-API-v2/blob/main/ocpp-en.md")) + } + WhiteBox { Layout.fillWidth: true @@ -129,4 +144,101 @@ NavigationPage { } } } + + GeneralOnOffSwitch { + apiKey: "ocppg" + text: qsTr("Use global CA store") + } + + GeneralOnOffSwitch { + apiKey: "ocppcn" + text: qsTr("Skip cert commonName check") + } + + GeneralOnOffSwitch { + apiKey: "ocppss" + text: qsTr("Skip server cert verification") + } + + // TODO clientKey + + // TODO clientCert + + // TODO serverCert + + // TODO fallbackCurrentLimit + + // TODO transactionId + + EditValueItem { + text: qsTr("Heartbeat interval:") + valueText: Qt.locale().toString(value) + apiKey: "ocpph" + editableItem: SpinBox { + from: 0 + to: 3600 + } + } + + EditValueItem { + text: qsTr("MeterValues sample interval:") + valueText: Qt.locale().toString(value) + apiKey: "ocppi" + editableItem: SpinBox { + from: 0 + to: 3600 + } + } + + EditValueItem { + text: qsTr("Clock aligned data interval:") + valueText: Qt.locale().toString(value) + apiKey: "ocppai" + editableItem: SpinBox { + from: 0 + to: 3600 + } + } + + EditValueItem { + text: qsTr("Dummy card id") + apiKey: "ocppd" + fullWidth: true + editableItem: TextField { + id: textField1 + property alias value: textField1.text + } + } + + GeneralOnOffSwitch { + apiKey: "ocppr" + text: qsTr("Rotate phases on charger") + } + + GeneralOnOffSwitch { + apiKey: "ocppao" + text: qsTr("Allow Offline Tx For UnknownId") + } + + GeneralOnOffSwitch { + apiKey: "ocpplo" + text: qsTr("Local Authorize Offline") + } + + GeneralOnOffSwitch { + apiKey: "ocppla" + text: qsTr("Local Auth List Enabled") + } + + // TODO MeterValuesCondition + + GeneralOnOffSwitch { + apiKey: "ocppt" + text: qsTr("Accept time from backend") + } + + GeneralOnOffSwitch { + apiKey: "ocppio" + text: qsTr("Set as inoperable") + } } diff --git a/SetPriceLimitPage.qml b/SetPriceLimitPage.qml index 325d970..562ad8e 100644 --- a/SetPriceLimitPage.qml +++ b/SetPriceLimitPage.qml @@ -12,9 +12,8 @@ NavigationPage { } EditValueItem { - id: test text: qsTr("Price limit") - valueText: qsTr("%0 ct/kWh").arg(test.value) + valueText: qsTr("%0 ct/kWh").arg(Qt.locale().toString(value, 'f', 1)) apiKey: "awp" editableItem: DoubleSpinBox { from: -1000. diff --git a/WiFiPage.qml b/WiFiPage.qml index 60a7a80..513f91a 100644 --- a/WiFiPage.qml +++ b/WiFiPage.qml @@ -6,8 +6,10 @@ import EVChargerApp NavigationPage { title: qsTr("Wi-Fi") - WiFiOnOffSwitch { - + ConfirmingOnOffSwitch { + apiKey: "wen" + dialogTitle: qsTr("Are you sure?") + dialogText: qsTr("Disabling Wi-Fi could make your device unreachable from your local homenetwork or the cloud!") } GridLayout { @@ -84,7 +86,23 @@ NavigationPage { } } - Item { - Layout.fillHeight: true + EditValueItem { + text: qsTr("Min RSSI") + valueText: Qt.locale().toString(value) + apiKey: "wsmr" + editableItem: SpinBox { + from: -100 + to: 0 + } + } + + GeneralOnOffSwitch { + apiKey: "wspc" + text: qsTr("Pmf capable") + } + + GeneralOnOffSwitch { + apiKey: "wspr" + text: qsTr("Pmf required") } } diff --git a/i18n/qml_de.ts b/i18n/qml_de.ts index 2015e0e..39e953e 100644 --- a/i18n/qml_de.ts +++ b/i18n/qml_de.ts @@ -40,40 +40,40 @@ AddDeviceScreen - - + + Setup or add device Gerät hinzufügen oder einrichten - - + + Add via local connection or AP: Über lokale Verbindung oder AP einrichten: - - + + Local url Lokale url - - - - + + + + Connect Verbinden - - + + Add via cloud: Über Cloud einrichten: - - + + Cloud Serial Cloud Seriennr. @@ -106,60 +106,84 @@ - - - + + + - - - + + + API documentation API-Dokumentation - - + + + https://github.com/goecharger/go-eCharger-API-v2/blob/main/http-en.md + https://github.com/goecharger/go-eCharger-API-v2/blob/main/http-de.md + + + + Generate token Token erzeugen - - + + OK! token: %0 OK! token: %0 - - + + Clear API token API-Token entfernen - - + + Enable cloud API Cloud HTTP API aktivieren - - - - + + + + API key: %0 API key: %0 - - + + + https://github.com/goecharger/go-eCharger-API-v2/blob/main/cloudapi-en.md + https://github.com/goecharger/go-eCharger-API-v2/blob/main/cloudapi-de.md + + + + Enable grid API Netzbetreiber-API aktiviert - - + + + https://github.com/goecharger/go-eCharger-API-v2/blob/main/gridapi-en.md + https://github.com/goecharger/go-eCharger-API-v2/blob/main/gridapi-de.md + + + + Allow access to legacy HTTP-Api v1 Zugriff auf lokale HTTP-API v1 zulassen + + + + https://github.com/goecharger/go-eCharger-API-v1/blob/master/go-eCharger%20API%20v1%20EN.md + https://github.com/goecharger/go-eCharger-API-v1/blob/master/go-eCharger%20API%20v1%20DE.md + AppSettingsPage @@ -170,44 +194,44 @@ App Einstellungen - - + + Number of app instances: Anzahl an App Instanzen: - - + + solalaweb key: solalaweb key: - - - - + + + + Select... Auswählen... - - - - + + + + Replace... Ersetzen... - - + + solalaweb cert: solalaweb cert: - - + + Show solalaweb: - + Zeige solalaweb: @@ -240,98 +264,98 @@ ChargerTabPage - - + + Devices Geräte - - + + Internal error Interner Fehler - - + + No car connected Kein Auto angeschlossen - - + + Car is charging Auto wird geladen - - + + Connecting to your car... Verbinde mit Auto... - - + + Charging completed Ladevorgang abgeschlossen - - + + Unknown error %0 Unbekannter Fehler %0 - - + + Plug in the cable to start charging your car Stecke das Kabel ein, um dein Auto aufzuladen - - + + Charger is connecting to your car, it usually takes a few seconds Der Charger stellt die Verbindung zu deinem Auto her, das dauert in der Regel ein paar Sekunden - - + + Let's go-e :) Let's go-e :) - - + + Price limit Preisgrenze - - + + %0 ct/kWh %0 ct/kWh - - + + By %0 with %1 Bis %0 mit %1 - - + + %0 km %0 km - - + + Charging speed Ladegeschwindigkeit - - + + %0 Ampere & %1-phase %0 Ampere & %1-phasic @@ -340,14 +364,14 @@ Stecke das Kabel ein, um dein Auto aufzuladen - - + + Start Start - - + + Daily trip Daily trip @@ -433,44 +457,56 @@ Cloud - - + + Enable cloud connection Cloud Verbindung aktivieren - - + + + Are you sure? + Sind Sie sicher? + + + + + Disabling could connection could make your device unreachable from other places than home! + Wenn die Cloud-Verbindung ausgeschaltet wird, kann Ihr Gerät unerreichbar werden, wenn Sie sich nicht zuhause im Heimnetzwerk befinden! + + + + Features like flexible energy tariffs, time sync and app connection are unavilable when "Enable cloud connection" is disabled Wenn "Cloud Verbindung aktivieren" deaktiviert ist, sind Funktionen wie flexible Energietarife, Zeitsynchronisierung und App-Verbindung über das Internet nicht möglich - - + + Trying to connect: Versuche zu verbinden: - - + + Is connected: Ist verbunden: - - + + Hello received: Hallo empfangen: - - + + Queue size cloud: Cloud Warteschlagengröße: - - + + Last error: Letzer Fehler: @@ -508,17 +544,38 @@ Solalaweb + + ConfirmingOnOffSwitch + + + + On + An + + + + + Off + Aus + + + + + Unknown + Unbekannt + + ConnectingScreen - - + + Trying to reach device... Versuche Gerät zu erreichen... - - + + Cancel Abbrechen @@ -586,14 +643,14 @@ ControllerTabPage - - + + Devices Geräte - - + + Connected Verbunden @@ -628,212 +685,212 @@ DeviceConnection - + Connecting to %0 Verbinde zu %0 - + Received something that is not a json object! - + Received something that does not contain a type! - + Received something with a non-string type! - + Received hello without serial! - + Received hello with a non-string serial! - + Received hello with a non-bool secured! - + Received hello without manufacturer! - + Received hello with a non-string manufacturer! - + Received hello without friendly_name! - + Received hello with a non-string friendly_name! - + Received hello without devicetype! - + Could not parse solalaweb certificate! - + Could not parse solalaweb key! - + Received hello with a non-string devicetype! - + Received authRequired without token1! - + Received authRequired with a non-string token1! - + Received authRequired without token2! - + Received authRequired with a non-string token2! - + Received fullStatus with a non-bool partial! - + Received fullStatus without a status! - + Received fullStatus with a non-object status! - + Received partial fullStatus - + Received last fullStatus - + Received deltaStatus without a status! - + Received deltaStatus with a non-object status! - + Received message type %0 %1 - + Received message with a non-string requestId! - + Sending %0 - + Connected! Verbunden! - + Disconnected! Verbindung verloren! - + Reconnecting to %0 Verbinde wieder zu %0 - + state changed: %0 - + could not parse received json: %0 at offset %1 - + unknown binary message type %0 received - + error occured: %0 - + ssl peer verify error - + ssl errors - + ssl alert sent level=%0 type=%1 description=%2 - + ssl alert received level=%0 type=%1 description=%2 - + ssl handshake interrupted on error - + unknown response type %0 @@ -857,62 +914,62 @@ Cloud Seriennr. - - + + Device list Geräteliste - - + + App Settings App Einstellungen - - + + My devices Meine Geräte - - + + Found devices Im Netzwerk verfügbare Geräte - - + + Delete Löschen - - + + Serial Number %0 Seriennummer %0 - - - 🛜 - + + + Local + Lokal - - - ☁️ - + + + Cloud + Cloud - - + + Solala - + Solala - - + + Add or setup device Gerät hinzufügen oder einrichten @@ -933,14 +990,14 @@ Meine Geräte: - - + + Manufacturer: Hersteller: - - + + Device Type: Gerätetyp: @@ -949,14 +1006,14 @@ Anzeigename: - - + + Host Name: Host Name: - - + + Ip: Ip: @@ -976,32 +1033,32 @@ DeviceScreen - - + + Password required Passwort erforderlich - - + + Password: Passwort: - - + + Password Passwort - - + + Authentication impossible! Authentifizierung unmöglich! - - + + To use this password remotely a password has to be setup first. This can be done over the AccessPoint. Um dieses Gerät aus der Ferne nutzen zu können, müssen Sie erst ein Passwort einrichten. Dies kann über den AccessPoint gemacht werden. @@ -1177,17 +1234,23 @@ GeneralOnOffSwitch - - + + On An - - + + Off Aus + + + + Unknown + Unbekannt + GeneralPage @@ -1305,6 +1368,24 @@ Disable AP when online AP ausschalten wenn online + + + + SSID + SSID + + + + + Password + Passwort + + + + + Channel + Kanal + KwhLimitPage @@ -1345,62 +1426,62 @@ MainScreen - - + + %0 ago vor %0 - - + + in %0 in %0 - - - - + + + + Charger Charger - - - - + + + + Eco Eco - - - - + + + + Controller Controller - - - - - - - - + + + + + + + + Infromations Informationen - - - - - - - - + + + + + + + + Settings Einstellungen @@ -1414,47 +1495,109 @@ MQTT - - + + + Broker url + Broker url + + + + + API documentation + API-Dokumentation + + + + + https://github.com/goecharger/go-eCharger-API-v2/blob/main/mqtt-en.md + https://github.com/goecharger/go-eCharger-API-v2/blob/main/mqtt-de.md + + + + Trying to connect: Versuche zu verbinden: - - + + Is connected: Ist verbunden: - - + + Connected since: Verbunden seit: - - + + Command Counter: Befehlszähler: - - + + Last error: Letzer Fehler: - - + + Last error age: Alter des letzten Fehlers: + + + + Use global CA store + Verwende den global CA Store + + + + + Skip cert commonName check + commonName Überprüfung überspringen + + + + + Skip server cert verification + Server Zertifikat Überprüfung überspringen + + + + + MQTT readonly + MQTT nur-lesend + + + + + Topic prefix + Topic prefix + + + + + Homeassistant autodiscover + Homeassistant autodiscover + + + + + Homeassistant topic prefix + Homeassistant topic prefix + NamePage + + Name Name @@ -1484,107 +1627,203 @@ OCPP - - + + + Backend url + Backend url + + + + + API documentation + API-Dokumentation + + + + + https://github.com/goecharger/go-eCharger-API-v2/blob/main/ocpp-en.md + https://github.com/goecharger/go-eCharger-API-v2/blob/main/ocpp-de.md + + + + Trying to connect: Versuche zu verbinden: - - + + Is connected: Ist verbunden: - - + + Connected since: Verbunden seit: - - + + Is accepted: Ist akzeptiert: - - + + Accepted since: Akzeptiert seit: - - + + Last error: Letzer Fehler: - - + + Last error age: Alter des letzten Fehlers: - - + + Chargepoint status: Chargepoint Status: - - + + Available - - + + Preparing - - + + Charging - - + + SuspendedEVSE - - + + SuspendedEV - - + + Finishing - - + + Reserved - - + + Unavailable - - + + Faulted + + + + Use global CA store + Verwende den global CA Store + + + + + Skip cert commonName check + commonName Überprüfung überspringen + + + + + Skip server cert verification + Server Zertifikat Überprüfung überspringen + + + + + Heartbeat interval: + Heartbeat Intervall: + + + + + MeterValues sample interval: + MeterValues Sample Intervall: + + + + + Clock aligned data interval: + Clock Aligned Data Intervall: + + + + + Dummy card id + Dummy Karten-ID + + + + + Rotate phases on charger + Phasen am Charger rotieren + + + + + Allow Offline Tx For UnknownId + + + + + + Local Authorize Offline + + + + + + Local Auth List Enabled + + + + + + Accept time from backend + + + + + + Set as inoperable + Als Unverfügbar setzen + PasswordPage @@ -1626,13 +1865,13 @@ Scheduler day - + Ladetimer Tag 24 Hour - + 24 Stunden @@ -1683,37 +1922,37 @@ Workdays - + Wochentags Create workdays schedule - + Wochentags-Ladetimer erstellen Saturdays - + Samstags Create saturdays schedule - + Samstags-Ladetimer erstellen Sundays - + Sonntags Create sundays schedule - + Sonntags-Ladetimer erstellen About eco @@ -1778,38 +2017,38 @@ SelectLogicModeItem - - + + Eco Eco - - + + Eco-friendly & cost effective Nachhaltig & Wirtschaftlich - - + + Basic Basic - - + + Basic charging Einfaches Laden - - + + Daily trip Daily trip - - + + Specific energy and time Energie zur bestimmten Zeit @@ -1846,14 +2085,14 @@ Lege eine angemessene Preisgrenze für das Laden fest, sodass das Laden beginnt, wenn der Strompreis unter dieser Grenze liegt. Außerdem siehst du unten ein Diagramm mit der Ladeprognose, die auf dem von dir festgelegten Grenzwert basiert. - - + + Price limit Preisgrenze - - + + %0 ct/kWh %0 ct/kWh @@ -2161,28 +2400,20 @@ WiFiOnOffSwitch - - On - An + An - - Off - Aus + Aus - - Do you really want to disable Wi-Fi? - Möchten Sie wirklich WLAN ausschalten? + Möchten Sie wirklich WLAN ausschalten? - - This action could make your device unreachable from your local homenetwork or the cloud! - Diese Aktion könnte das Gerät im Heimnetzwerk und aus der Cloud unerreichbar machen! + Diese Aktion könnte das Gerät im Heimnetzwerk und aus der Cloud unerreichbar machen! @@ -2194,16 +2425,181 @@ WLAN - - + + + Are you sure? + Sind Sie sicher? + + + + + Disabling Wi-Fi could make your device unreachable from your local homenetwork or the cloud! + Wenn die WLAN-Verbindung ausgeschaltet wird, kann Ihr Gerät im Heimnetzwerk und über die Cloud unerreichbar werden! + + + + Status: Status: - - + + + (%0) Wi-Fi Scan + (%0) Wi-Fi Scan + + + + (%0) Wi-Fi Errors (%0) WLAN Probleme + + + + Min RSSI + Min RSSI + + + + + Pmf capable + Pmf fähig + + + + + Pmf required + Pmf erforderlich + + + + WiFiScanPage + + + + Wi-Fi Scan Result + WLAN Scan Result + + + + + SSID: + SSID: + + + + + Authmode: + Authentifizierungsart: + + + + + OPEN + + + + + + WEP + + + + + + WPA_PSK + + + + + + WPA2_PSK + + + + + + WPA_WPA2_PSK + + + + + + WPA2_ENTERPRISE + + + + + + WPA3_PSK + + + + + + WPA2_WPA3_PSK + + + + + + WAPI_PSK + + + + + + OWE + + + + + + WPA3_ENT_192 + + + + + + WPA3_EXT_PSK + + + + + + WPA3_EXT_PSK_MIXED_MODE + + + + + + Pairwise cipher: + Paarweise Cipher: + + + + + Group cipher: + Gruppen Cipher: + + + + + RSSI: + RSSI: + + + + + Channel: + Kanal: + + + + + BSSID: + BSSID: + diff --git a/qmldir b/qmldir index 62af13c..808fd5a 100644 --- a/qmldir +++ b/qmldir @@ -18,6 +18,7 @@ EVChargerApp 1.0 ChargingConfigurationPage.qml EVChargerApp 1.0 ChargingSpeedPage.qml EVChargerApp 1.0 CloudPage.qml EVChargerApp 1.0 CloudUrlsModel.qml +EVChargerApp 1.0 ConfirmingOnOffSwitch.qml EVChargerApp 1.0 ConnectingScreen.qml EVChargerApp 1.0 ConnectionPage.qml EVChargerApp 1.0 ControllerPage.qml @@ -78,6 +79,5 @@ EVChargerApp 1.0 WhiteCheckDelegate.qml EVChargerApp 1.0 WhiteItemDelegate.qml EVChargerApp 1.0 WhiteSwipeDelegate.qml EVChargerApp 1.0 WiFiErrorsPage.qml -EVChargerApp 1.0 WiFiOnOffSwitch.qml EVChargerApp 1.0 WiFiPage.qml EVChargerApp 1.0 WiFiScanPage.qml