diff --git a/evcharger-app/homeassistantclient.cpp b/evcharger-app/homeassistantclient.cpp index 7cb78f7..b57c64d 100644 --- a/evcharger-app/homeassistantclient.cpp +++ b/evcharger-app/homeassistantclient.cpp @@ -185,6 +185,24 @@ void HomeAssistantClient::setEntitySearch(const QString &search) emit entitySearchChanged(); } +QVariantMap HomeAssistantClient::entityDetails(const QString &entityId) const +{ + const auto *entity = m_entities.entity(entityId); + if (!entity) + return {{QStringLiteral("entityId"), entityId}, + {QStringLiteral("name"), entityId}}; + return {{QStringLiteral("entityId"), entity->entityId}, + {QStringLiteral("name"), entity->name}, + {QStringLiteral("unit"), entity->unit}, + {QStringLiteral("deviceClass"), entity->deviceClass}, + {QStringLiteral("currentValue"), entity->state}}; +} + +QString HomeAssistantClient::defaultSeriesColor(int index) const +{ + return defaultColor(index); +} + void HomeAssistantClient::testAndSaveConnection(const QString &baseUrl, const QString &accessToken) { diff --git a/evcharger-app/homeassistantclient.h b/evcharger-app/homeassistantclient.h index 9ec8036..b41aefb 100644 --- a/evcharger-app/homeassistantclient.h +++ b/evcharger-app/homeassistantclient.h @@ -96,6 +96,8 @@ public: Q_INVOKABLE void clearConfiguration(); Q_INVOKABLE void requestHistory(const QString &range, int offset); Q_INVOKABLE QString accessTokenForEditing() const { return m_accessToken; } + Q_INVOKABLE QVariantMap entityDetails(const QString &entityId) const; + Q_INVOKABLE QString defaultSeriesColor(int index) const; signals: void settingsChanged(); diff --git a/evcharger-app/i18n/qml_da.ts b/evcharger-app/i18n/qml_da.ts index 2bbcdda..a204f06 100644 --- a/evcharger-app/i18n/qml_da.ts +++ b/evcharger-app/i18n/qml_da.ts @@ -2913,68 +2913,68 @@ HomeAssistantClient - + Enter a valid HTTP or HTTPS Home Assistant address. Indtast en gyldig HTTP- eller HTTPS-adresse til Home Assistant. - + Enter a Home Assistant access token. Indtast et adgangstoken til Home Assistant. - + Connecting to Home Assistant… Opretter forbindelse til Home Assistant… - + Connected to Home Assistant. Forbundet med Home Assistant. - + Home Assistant rejected the access token. Home Assistant afviste adgangstokenet. - + Could not connect to Home Assistant: %1 Kunne ikke oprette forbindelse til Home Assistant: %1 - + Loading Home Assistant entities… Indlæser Home Assistant-entiteter… - - + + The Home Assistant credential is no longer valid. Loginoplysningerne til Home Assistant er ikke længere gyldige. - + Could not load Home Assistant entities: %1 Kunne ikke indlæse Home Assistant-entiteter: %1 - + Loaded %1 Home Assistant entities. Indlæste %1 Home Assistant-entiteter. - + Loading Home Assistant history… Indlæser Home Assistant-historik… - + Could not load Home Assistant history: %1 Kunne ikke indlæse Home Assistant-historik: %1 - + Home Assistant history is up to date. Home Assistant-historikken er opdateret. @@ -2982,37 +2982,42 @@ HomeAssistantSetupDialog - + Edit chart Rediger diagram - + + Edit chart series + Rediger diagramserie + + + Connect Home Assistant Forbind Home Assistant - + Server Server - + Login Login - + Charts Diagrammer - + %1. %2 %1. %2 - + Before you begin Før du begynder @@ -3035,7 +3040,7 @@ Før diagrammer kan modtage data: • Kontrollér, at laderens entiteter er synlige i Home Assistant. - + Home Assistant must already be installed and running. A Raspberry Pi with Home Assistant on an SD card is one option; other supported Home Assistant installations work as well. Before charts can receive data: @@ -3054,83 +3059,84 @@ Før diagrammer kan modtage data: • Kontrollér, at enhedens entiteter er synlige i Home Assistant. - + Installation guide Installationsvejledning - + MQTT guide MQTT-vejledning - + Enter the address you normally use to open Home Assistant. The app will contact this server directly. Indtast den adresse, du normalt bruger til at åbne Home Assistant. Appen kontakter denne server direkte. - - + + Cancel Annuller - + Next Næste - + Create a long-lived access token in your Home Assistant profile and paste it below. Your Home Assistant password is never entered into this app. Opret et langtidsholdbart adgangstoken i din Home Assistant-profil, og indsæt det nedenfor. Din Home Assistant-adgangskode indtastes aldrig i denne app. - + Open Home Assistant profile Åbn Home Assistant-profil - + Long-lived access token Langtidsholdbart adgangstoken - + Hide Skjul - + Show Vis - + + Back Tilbage - + Connect Opret forbindelse - + Create charts and choose exactly which Home Assistant entities each chart should display. Opret diagrammer, og vælg præcist, hvilke Home Assistant-entiteter hvert diagram skal vise. - + Change server or access token Skift server eller adgangstoken - + Forget Home Assistant configuration Glem Home Assistant-konfigurationen - + %n entity(s) %n entitet @@ -3138,60 +3144,139 @@ Før diagrammer kan modtage data: - + Edit Rediger - + Delete Slet - + No charts configured yet. Der er endnu ikke konfigureret nogen diagrammer. - + Add chart Tilføj diagram - + Done Færdig - + Chart title Diagramtitel - + + Chart series + Diagramserier + + + + Add series + Tilføj serie + + + + Remove series + Fjern serie + + + + No series configured yet. + Der er endnu ikke konfigureret nogen serier. + + + + Choose the Home Assistant entity for this line. Its name and color can be changed only for this chart. + Vælg Home Assistant-entiteten for denne linje. Dens navn og farve kan kun ændres for dette diagram. + + + + Chart appearance + Diagramudseende + + + + Optional name override + Valgfrit visningsnavn + + + + Leave empty to use the name from Home Assistant. + Lad feltet være tomt for at bruge navnet fra Home Assistant. + + + + Automatic color + Automatisk farve + + + + Choose… + Vælg… + + + + Use automatic color + Brug automatisk farve + + + Search by name, entity ID, unit or device class… Søg efter navn, entitets-id, enhed eller enhedsklasse… + + + Selected: %1 + Valgt: %1 + + + + Select an entity + Vælg en entitet + + + + Save series + Gem serie + + + + Choose chart color + Vælg diagramfarve + - %n entity(s) selected - + %n entitet valgt %n entiteter valgt - + Reload Indlæs igen - + + This entity is already used in the chart. + Denne entitet bruges allerede i diagrammet. + + + No matching entities found. Ingen matchende entiteter fundet. - + Save chart Gem diagram @@ -3351,7 +3436,7 @@ Før diagrammer kan modtage data: Information - + Idle Inaktiv @@ -3364,123 +3449,123 @@ Før diagrammer kan modtage data: INDLÆSER - + %1 – %2 %1 – %2 - + Receiving manufacturer data… Modtager producentdata… - + Loading manufacturer charts… Indlæser producentdiagrammer… - + %1 images %1 billeder - + %1 charts %1 diagrammer - + Loaded %1 %1 indlæst - + No information data received Ingen informationsdata modtaget - + The manufacturer cloud returned invalid data. Producentens cloud returnerede ugyldige data. - + Requesting manufacturer data… Anmoder om producentdata… - + Information Information - + Manufacturer cloud Producentens cloud - + The manufacturer does not even think you are worth the raw data that you could inspect and zoom. Instead, it sends these ugly low-resolution pictures that you cannot meaningfully interact with—let alone control the displayed time range. Producenten mener ikke engang, at du er værdig til rådataene, som du kunne undersøge og zoome ind i. I stedet sender den disse grimme billeder i lav opløsning, som du ikke kan interagere meningsfuldt med – endsige styre det viste tidsinterval. - + Own your consumption history Bevar ejerskabet over din forbrugshistorik - + Connect the device to your own Home Assistant installation for fast, dependable history that remains under your control. You decide how long data is retained and which measurements are recorded. Forbind enheden med din egen Home Assistant-installation for at få hurtig og pålidelig historik, der forbliver under din kontrol. Du bestemmer, hvor længe data gemmes, og hvilke målinger der registreres. - + Connected to Home Assistant Forbundet med Home Assistant - + Home Assistant is not configured Home Assistant er ikke konfigureret - + Configure Konfigurer - - + + Set up Konfigurer - + Refresh Opdater - + Connect Home Assistant to display history Forbind Home Assistant for at vise historik - + Create your first history chart Opret dit første historikdiagram - + The setup wizard connects to your server and lets you select the entities to display. Opsætningsguiden opretter forbindelse til din server og lader dig vælge de entiteter, der skal vises. - + Open the configuration and add a chart with one or more Home Assistant entities. Åbn konfigurationen, og tilføj et diagram med en eller flere Home Assistant-entiteter. - + Add chart Tilføj diagram @@ -3489,12 +3574,12 @@ Før diagrammer kan modtage data: Glem Home Assistant-konfigurationen - + Forget Home Assistant? Glem Home Assistant? - + This removes the server address, access token and all chart definitions stored in this app. Dette fjerner serveradressen, adgangstokenet og alle diagramdefinitioner, der er gemt i appen. @@ -3503,7 +3588,7 @@ Før diagrammer kan modtage data: Begrænset · upålidelig · langsom - + Your own cloud Din egen cloud @@ -3512,22 +3597,22 @@ Før diagrammer kan modtage data: Historik · vedligeholdt · hurtig - + Lacks features · unreliable · slow Mangler funktioner · upålidelig · langsom - + Historical data · properly maintained · fast Historiske data · godt vedligeholdt · hurtig - + The manufacturer cloud provides basic charts, but can be slow, unavailable or limited to the data selected by the manufacturer. Producentens cloud leverer grundlæggende diagrammer, men kan være langsom, utilgængelig eller begrænset til de data, som producenten har valgt. - + Download information Download information @@ -3548,37 +3633,37 @@ Før diagrammer kan modtage data: Opsæt forbindelse til Home Assistant - + Historical data Historiske data - + Day Dag - + Week Uge - + Month Måned - + Year År - + Previous Forrige - + Next Næste diff --git a/evcharger-app/i18n/qml_de.ts b/evcharger-app/i18n/qml_de.ts index 4c05225..2f66742 100644 --- a/evcharger-app/i18n/qml_de.ts +++ b/evcharger-app/i18n/qml_de.ts @@ -3080,68 +3080,68 @@ HomeAssistantClient - + Enter a valid HTTP or HTTPS Home Assistant address. Gib eine gültige HTTP- oder HTTPS-Adresse für Home Assistant ein. - + Enter a Home Assistant access token. Gib ein Home-Assistant-Zugriffstoken ein. - + Connecting to Home Assistant… Verbindung zu Home Assistant wird hergestellt… - + Connected to Home Assistant. Mit Home Assistant verbunden. - + Home Assistant rejected the access token. Home Assistant hat das Zugriffstoken abgelehnt. - + Could not connect to Home Assistant: %1 Verbindung zu Home Assistant fehlgeschlagen: %1 - + Loading Home Assistant entities… Home-Assistant-Entitäten werden geladen… - - + + The Home Assistant credential is no longer valid. Die Home-Assistant-Anmeldedaten sind nicht mehr gültig. - + Could not load Home Assistant entities: %1 Home-Assistant-Entitäten konnten nicht geladen werden: %1 - + Loaded %1 Home Assistant entities. %1 Home-Assistant-Entitäten geladen. - + Loading Home Assistant history… Home-Assistant-Verlauf wird geladen… - + Could not load Home Assistant history: %1 Home-Assistant-Verlauf konnte nicht geladen werden: %1 - + Home Assistant history is up to date. Der Home-Assistant-Verlauf ist aktuell. @@ -3149,37 +3149,42 @@ HomeAssistantSetupDialog - + Edit chart Diagramm bearbeiten - + + Edit chart series + Diagrammdatenreihe bearbeiten + + + Connect Home Assistant Home Assistant verbinden - + Server Server - + Login Anmeldung - + Charts Diagramme - + %1. %2 %1. %2 - + Before you begin Bevor du beginnst @@ -3202,7 +3207,7 @@ Bevor Diagramme Daten empfangen können: • Prüfe, ob die Entitäten des Chargers in Home Assistant sichtbar sind. - + Home Assistant must already be installed and running. A Raspberry Pi with Home Assistant on an SD card is one option; other supported Home Assistant installations work as well. Before charts can receive data: @@ -3221,83 +3226,84 @@ Bevor Diagramme Daten empfangen können: • Prüfe, ob die Entitäten des Geräts in Home Assistant sichtbar sind. - + Installation guide Installationsanleitung - + MQTT guide MQTT-Anleitung - + Enter the address you normally use to open Home Assistant. The app will contact this server directly. Gib die Adresse ein, über die du Home Assistant normalerweise öffnest. Die App verbindet sich direkt mit diesem Server. - - + + Cancel Abbrechen - + Next Weiter - + Create a long-lived access token in your Home Assistant profile and paste it below. Your Home Assistant password is never entered into this app. Erstelle in deinem Home-Assistant-Profil ein langlebiges Zugriffstoken und füge es unten ein. Dein Home-Assistant-Passwort wird niemals in diese App eingegeben. - + Open Home Assistant profile Home-Assistant-Profil öffnen - + Long-lived access token Langlebiges Zugriffstoken - + Hide Ausblenden - + Show Anzeigen - + + Back Zurück - + Connect Verbinden - + Create charts and choose exactly which Home Assistant entities each chart should display. Erstelle Diagramme und wähle genau aus, welche Home-Assistant-Entitäten jedes Diagramm anzeigen soll. - + Change server or access token Server oder Zugriffstoken ändern - + Forget Home Assistant configuration Home-Assistant-Konfiguration vergessen - + %n entity(s) %n Entität @@ -3305,60 +3311,139 @@ Bevor Diagramme Daten empfangen können: - + Edit Bearbeiten - + Delete Löschen - + No charts configured yet. Noch keine Diagramme eingerichtet. - + Add chart Diagramm hinzufügen - + Done Fertig - + Chart title Diagrammtitel - + + Chart series + Diagrammdatenreihen + + + + Add series + Datenreihe hinzufügen + + + + Remove series + Datenreihe entfernen + + + + No series configured yet. + Noch keine Datenreihen konfiguriert. + + + + Choose the Home Assistant entity for this line. Its name and color can be changed only for this chart. + Wähle die Home-Assistant-Entität für diese Linie aus. Ihr Name und ihre Farbe können nur für dieses Diagramm geändert werden. + + + + Chart appearance + Diagrammdarstellung + + + + Optional name override + Optionaler Anzeigename + + + + Leave empty to use the name from Home Assistant. + Leer lassen, um den Namen aus Home Assistant zu verwenden. + + + + Automatic color + Automatische Farbe + + + + Choose… + Auswählen… + + + + Use automatic color + Automatische Farbe verwenden + + + Search by name, entity ID, unit or device class… Nach Name, Entitäts-ID, Einheit oder Geräteklasse suchen… + + + Selected: %1 + Ausgewählt: %1 + + + + Select an entity + Entität auswählen + + + + Save series + Datenreihe speichern + + + + Choose chart color + Diagrammfarbe auswählen + - %n entity(s) selected - + %n Entität ausgewählt %n Entitäten ausgewählt - + Reload Neu laden - + + This entity is already used in the chart. + Diese Entität wird bereits im Diagramm verwendet. + + + No matching entities found. Keine passenden Entitäten gefunden. - + Save chart Diagramm speichern @@ -3518,128 +3603,128 @@ Bevor Diagramme Daten empfangen können: Informationen - + Idle Inaktiv - + %1 – %2 %1 – %2 - + Receiving manufacturer data… Herstellerdaten werden empfangen… - + Loading manufacturer charts… Herstellerdiagramme werden geladen… - + %1 images %1 Bilder - + %1 charts %1 Diagramme - + Loaded %1 %1 geladen - + No information data received Keine Informationsdaten empfangen - + The manufacturer cloud returned invalid data. Die Hersteller-Cloud hat ungültige Daten zurückgegeben. - + Requesting manufacturer data… Herstellerdaten werden angefordert… - + Information Informationen - + Manufacturer cloud Hersteller-Cloud - + The manufacturer does not even think you are worth the raw data that you could inspect and zoom. Instead, it sends these ugly low-resolution pictures that you cannot meaningfully interact with—let alone control the displayed time range. Der Hersteller hält dich nicht einmal für würdig, die Rohdaten zu erhalten, die du untersuchen und vergrößern könntest. Stattdessen schickt er diese hässlichen Bilder in niedriger Auflösung, mit denen du nicht sinnvoll interagieren kannst – geschweige denn den angezeigten Zeitraum steuern. - + Own your consumption history Dein Verbrauchsverlauf gehört dir - + Connect the device to your own Home Assistant installation for fast, dependable history that remains under your control. You decide how long data is retained and which measurements are recorded. Verbinde das Gerät mit deiner eigenen Home-Assistant-Installation, um einen schnellen, zuverlässigen Verlauf unter deiner Kontrolle zu erhalten. Du bestimmst, wie lange Daten aufbewahrt und welche Messwerte aufgezeichnet werden. - + Connected to Home Assistant Mit Home Assistant verbunden - + Home Assistant is not configured Home Assistant ist nicht eingerichtet - + Configure Konfigurieren - - + + Set up Einrichten - + Refresh Aktualisieren - + Connect Home Assistant to display history Verbinde Home Assistant, um den Verlauf anzuzeigen - + Create your first history chart Erstelle dein erstes Verlaufsdiagramm - + The setup wizard connects to your server and lets you select the entities to display. Der Einrichtungsassistent verbindet sich mit deinem Server und lässt dich die anzuzeigenden Entitäten auswählen. - + Open the configuration and add a chart with one or more Home Assistant entities. Öffne die Konfiguration und füge ein Diagramm mit einer oder mehreren Home-Assistant-Entitäten hinzu. - + Add chart Diagramm hinzufügen @@ -3648,12 +3733,12 @@ Bevor Diagramme Daten empfangen können: Home-Assistant-Konfiguration vergessen - + Forget Home Assistant? Home Assistant vergessen? - + This removes the server address, access token and all chart definitions stored in this app. Dadurch werden die Serveradresse, das Zugriffstoken und alle in dieser App gespeicherten Diagrammdefinitionen entfernt. @@ -3662,7 +3747,7 @@ Bevor Diagramme Daten empfangen können: Eingeschränkt · unzuverlässig · langsam - + Your own cloud Eigene Cloud @@ -3671,22 +3756,22 @@ Bevor Diagramme Daten empfangen können: Verlauf · gepflegt · schnell - + Lacks features · unreliable · slow Fehlende Funktionen · unzuverlässig · langsam - + Historical data · properly maintained · fast Historische Daten · gut gepflegt · schnell - + The manufacturer cloud provides basic charts, but can be slow, unavailable or limited to the data selected by the manufacturer. Die Hersteller-Cloud stellt grundlegende Diagramme bereit, kann jedoch langsam, nicht erreichbar oder auf vom Hersteller ausgewählte Daten beschränkt sein. - + Download information Informationen herunterladen @@ -3707,37 +3792,37 @@ Bevor Diagramme Daten empfangen können: Verbindung zu Home Assistant einrichten - + Historical data Historische Daten - + Day Tag - + Week Woche - + Month Monat - + Year Jahr - + Previous Zurück - + Next Weiter diff --git a/evcharger-app/i18n/qml_en.ts b/evcharger-app/i18n/qml_en.ts index 97fbde7..b7d26b4 100644 --- a/evcharger-app/i18n/qml_en.ts +++ b/evcharger-app/i18n/qml_en.ts @@ -4,18 +4,11 @@ HomeAssistantSetupDialog - + %n entity(s) - - - %n entity(s) selected - - - - diff --git a/evcharger-app/i18n/qml_fi.ts b/evcharger-app/i18n/qml_fi.ts index 231a7f6..ba6b839 100644 --- a/evcharger-app/i18n/qml_fi.ts +++ b/evcharger-app/i18n/qml_fi.ts @@ -2913,68 +2913,68 @@ HomeAssistantClient - + Enter a valid HTTP or HTTPS Home Assistant address. Anna kelvollinen Home Assistantin HTTP- tai HTTPS-osoite. - + Enter a Home Assistant access token. Anna Home Assistantin käyttöoikeustunnus. - + Connecting to Home Assistant… Yhdistetään Home Assistantiin… - + Connected to Home Assistant. Yhdistetty Home Assistantiin. - + Home Assistant rejected the access token. Home Assistant hylkäsi käyttöoikeustunnuksen. - + Could not connect to Home Assistant: %1 Home Assistantiin ei voitu yhdistää: %1 - + Loading Home Assistant entities… Ladataan Home Assistant -entiteettejä… - - + + The Home Assistant credential is no longer valid. Home Assistantin tunnistetieto ei ole enää voimassa. - + Could not load Home Assistant entities: %1 Home Assistant -entiteettejä ei voitu ladata: %1 - + Loaded %1 Home Assistant entities. Ladattiin %1 Home Assistant -entiteettiä. - + Loading Home Assistant history… Ladataan Home Assistant -historiaa… - + Could not load Home Assistant history: %1 Home Assistant -historiaa ei voitu ladata: %1 - + Home Assistant history is up to date. Home Assistant -historia on ajan tasalla. @@ -2982,37 +2982,42 @@ HomeAssistantSetupDialog - + Edit chart Muokkaa kaaviota - + + Edit chart series + Muokkaa kaavion sarjaa + + + Connect Home Assistant Yhdistä Home Assistantiin - + Server Palvelin - + Login Kirjautuminen - + Charts Kaaviot - + %1. %2 %1. %2 - + Before you begin Ennen aloittamista @@ -3035,7 +3040,7 @@ Ennen kuin kaaviot voivat vastaanottaa tietoja: • Varmista, että laturin entiteetit näkyvät Home Assistantissa. - + Home Assistant must already be installed and running. A Raspberry Pi with Home Assistant on an SD card is one option; other supported Home Assistant installations work as well. Before charts can receive data: @@ -3054,83 +3059,84 @@ Ennen kuin kaaviot voivat vastaanottaa tietoja: • Varmista, että laitteen entiteetit näkyvät Home Assistantissa. - + Installation guide Asennusohje - + MQTT guide MQTT-ohje - + Enter the address you normally use to open Home Assistant. The app will contact this server directly. Anna osoite, jolla yleensä avaat Home Assistantin. Sovellus ottaa suoraan yhteyden tähän palvelimeen. - - + + Cancel Peruuta - + Next Seuraava - + Create a long-lived access token in your Home Assistant profile and paste it below. Your Home Assistant password is never entered into this app. Luo pitkäikäinen käyttöoikeustunnus Home Assistant -profiilissasi ja liitä se alle. Home Assistant -salasanaasi ei koskaan syötetä tähän sovellukseen. - + Open Home Assistant profile Avaa Home Assistant -profiili - + Long-lived access token Pitkäikäinen käyttöoikeustunnus - + Hide Piilota - + Show Näytä - + + Back Takaisin - + Connect Yhdistä - + Create charts and choose exactly which Home Assistant entities each chart should display. Luo kaavioita ja valitse tarkasti, mitkä Home Assistant -entiteetit kussakin kaaviossa näytetään. - + Change server or access token Vaihda palvelinta tai käyttöoikeustunnusta - + Forget Home Assistant configuration Unohda Home Assistant -määritys - + %n entity(s) %n entiteetti @@ -3138,60 +3144,139 @@ Ennen kuin kaaviot voivat vastaanottaa tietoja: - + Edit Muokkaa - + Delete Poista - + No charts configured yet. Kaavioita ei ole vielä määritetty. - + Add chart Lisää kaavio - + Done Valmis - + Chart title Kaavion otsikko - + + Chart series + Kaavion sarjat + + + + Add series + Lisää sarja + + + + Remove series + Poista sarja + + + + No series configured yet. + Sarjoja ei ole vielä määritetty. + + + + Choose the Home Assistant entity for this line. Its name and color can be changed only for this chart. + Valitse tämän viivan Home Assistant -entiteetti. Sen nimeä ja väriä voi muuttaa vain tässä kaaviossa. + + + + Chart appearance + Kaavion ulkoasu + + + + Optional name override + Valinnainen näyttönimi + + + + Leave empty to use the name from Home Assistant. + Jätä tyhjäksi, jos haluat käyttää Home Assistantin nimeä. + + + + Automatic color + Automaattinen väri + + + + Choose… + Valitse… + + + + Use automatic color + Käytä automaattista väriä + + + Search by name, entity ID, unit or device class… Hae nimellä, entiteettitunnuksella, yksiköllä tai laiteluokalla… + + + Selected: %1 + Valittu: %1 + + + + Select an entity + Valitse entiteetti + + + + Save series + Tallenna sarja + + + + Choose chart color + Valitse kaavion väri + - %n entity(s) selected - + %n entiteetti valittu %n entiteettiä valittu - + Reload Lataa uudelleen - + + This entity is already used in the chart. + Tätä entiteettiä käytetään jo kaaviossa. + + + No matching entities found. Vastaavia entiteettejä ei löytynyt. - + Save chart Tallenna kaavio @@ -3351,7 +3436,7 @@ Ennen kuin kaaviot voivat vastaanottaa tietoja: Tiedot - + Idle Valmiustila @@ -3364,123 +3449,123 @@ Ennen kuin kaaviot voivat vastaanottaa tietoja: LADATAAN - + %1 – %2 %1 – %2 - + Receiving manufacturer data… Vastaanotetaan valmistajan tietoja… - + Loading manufacturer charts… Ladataan valmistajan kaavioita… - + %1 images %1 kuvaa - + %1 charts %1 kaaviota - + Loaded %1 Ladattu: %1 - + No information data received Tietoja ei vastaanotettu - + The manufacturer cloud returned invalid data. Valmistajan pilvipalvelu palautti virheellisiä tietoja. - + Requesting manufacturer data… Pyydetään valmistajan tietoja… - + Information Tiedot - + Manufacturer cloud Valmistajan pilvipalvelu - + The manufacturer does not even think you are worth the raw data that you could inspect and zoom. Instead, it sends these ugly low-resolution pictures that you cannot meaningfully interact with—let alone control the displayed time range. Valmistaja ei edes pidä sinua raakadatan arvoisena, vaikka voisit tarkastella ja zoomata sitä. Sen sijaan se lähettää nämä rumat matalan resoluution kuvat, joita et voi käsitellä mielekkäästi – saati hallita näytettävää aikaväliä. - + Own your consumption history Pidä kulutushistoriasi omassa hallinnassasi - + Connect the device to your own Home Assistant installation for fast, dependable history that remains under your control. You decide how long data is retained and which measurements are recorded. Yhdistä laite omaan Home Assistant -asennukseesi saadaksesi nopean ja luotettavan historian, joka pysyy hallinnassasi. Päätät, kuinka kauan tietoja säilytetään ja mitkä mittaukset tallennetaan. - + Connected to Home Assistant Yhdistetty Home Assistantiin - + Home Assistant is not configured Home Assistantia ei ole määritetty - + Configure Määritä - - + + Set up Määritä - + Refresh Päivitä - + Connect Home Assistant to display history Yhdistä Home Assistant historian näyttämiseksi - + Create your first history chart Luo ensimmäinen historiakaaviosi - + The setup wizard connects to your server and lets you select the entities to display. Ohjattu määritys yhdistää palvelimeesi ja antaa valita näytettävät entiteetit. - + Open the configuration and add a chart with one or more Home Assistant entities. Avaa määritys ja lisää kaavio, jossa on yksi tai useampi Home Assistant -entiteetti. - + Add chart Lisää kaavio @@ -3489,12 +3574,12 @@ Ennen kuin kaaviot voivat vastaanottaa tietoja: Unohda Home Assistant -määritys - + Forget Home Assistant? Unohdetaanko Home Assistant? - + This removes the server address, access token and all chart definitions stored in this app. Tämä poistaa palvelimen osoitteen, käyttöoikeustunnuksen ja kaikki tähän sovellukseen tallennetut kaaviomääritykset. @@ -3503,7 +3588,7 @@ Ennen kuin kaaviot voivat vastaanottaa tietoja: Rajallinen · epäluotettava · hidas - + Your own cloud Oma pilvipalvelusi @@ -3512,22 +3597,22 @@ Ennen kuin kaaviot voivat vastaanottaa tietoja: Historia · ylläpidetty · nopea - + Lacks features · unreliable · slow Puutteelliset ominaisuudet · epäluotettava · hidas - + Historical data · properly maintained · fast Historiatiedot · hyvin ylläpidetty · nopea - + The manufacturer cloud provides basic charts, but can be slow, unavailable or limited to the data selected by the manufacturer. Valmistajan pilvipalvelu tarjoaa peruskaavioita, mutta se voi olla hidas, poissa käytöstä tai rajoittunut valmistajan valitsemiin tietoihin. - + Download information Lataa tiedot @@ -3548,37 +3633,37 @@ Ennen kuin kaaviot voivat vastaanottaa tietoja: Määritä yhteys Home Assistantiin - + Historical data Historiatiedot - + Day Päivä - + Week Viikko - + Month Kuukausi - + Year Vuosi - + Previous Edellinen - + Next Seuraava diff --git a/evcharger-app/i18n/qml_nb.ts b/evcharger-app/i18n/qml_nb.ts index 637b9cf..1b7ebc3 100644 --- a/evcharger-app/i18n/qml_nb.ts +++ b/evcharger-app/i18n/qml_nb.ts @@ -2913,68 +2913,68 @@ HomeAssistantClient - + Enter a valid HTTP or HTTPS Home Assistant address. Skriv inn en gyldig HTTP- eller HTTPS-adresse til Home Assistant. - + Enter a Home Assistant access token. Skriv inn et tilgangstoken for Home Assistant. - + Connecting to Home Assistant… Kobler til Home Assistant… - + Connected to Home Assistant. Koblet til Home Assistant. - + Home Assistant rejected the access token. Home Assistant avviste tilgangstokenet. - + Could not connect to Home Assistant: %1 Kunne ikke koble til Home Assistant: %1 - + Loading Home Assistant entities… Laster inn Home Assistant-entiteter… - - + + The Home Assistant credential is no longer valid. Påloggingsinformasjonen for Home Assistant er ikke lenger gyldig. - + Could not load Home Assistant entities: %1 Kunne ikke laste inn Home Assistant-entiteter: %1 - + Loaded %1 Home Assistant entities. Lastet inn %1 Home Assistant-entiteter. - + Loading Home Assistant history… Laster inn Home Assistant-historikk… - + Could not load Home Assistant history: %1 Kunne ikke laste inn Home Assistant-historikk: %1 - + Home Assistant history is up to date. Home Assistant-historikken er oppdatert. @@ -2982,37 +2982,42 @@ HomeAssistantSetupDialog - + Edit chart Rediger diagram - + + Edit chart series + Rediger diagramserie + + + Connect Home Assistant Koble til Home Assistant - + Server Server - + Login Pålogging - + Charts Diagrammer - + %1. %2 %1. %2 - + Before you begin Før du begynner @@ -3035,7 +3040,7 @@ Før diagrammer kan motta data: • Kontroller at laderens entiteter er synlige i Home Assistant. - + Home Assistant must already be installed and running. A Raspberry Pi with Home Assistant on an SD card is one option; other supported Home Assistant installations work as well. Before charts can receive data: @@ -3054,83 +3059,84 @@ Før diagrammer kan motta data: • Kontroller at enhetens entiteter er synlige i Home Assistant. - + Installation guide Installasjonsveiledning - + MQTT guide MQTT-veiledning - + Enter the address you normally use to open Home Assistant. The app will contact this server directly. Skriv inn adressen du vanligvis bruker for å åpne Home Assistant. Appen kontakter denne serveren direkte. - - + + Cancel Avbryt - + Next Neste - + Create a long-lived access token in your Home Assistant profile and paste it below. Your Home Assistant password is never entered into this app. Opprett et langlivet tilgangstoken i Home Assistant-profilen din, og lim det inn nedenfor. Home Assistant-passordet ditt skrives aldri inn i denne appen. - + Open Home Assistant profile Åpne Home Assistant-profil - + Long-lived access token Langlivet tilgangstoken - + Hide Skjul - + Show Vis - + + Back Tilbake - + Connect Koble til - + Create charts and choose exactly which Home Assistant entities each chart should display. Opprett diagrammer og velg nøyaktig hvilke Home Assistant-entiteter hvert diagram skal vise. - + Change server or access token Bytt server eller tilgangstoken - + Forget Home Assistant configuration Glem Home Assistant-konfigurasjonen - + %n entity(s) %n entitet @@ -3138,60 +3144,139 @@ Før diagrammer kan motta data: - + Edit Rediger - + Delete Slett - + No charts configured yet. Ingen diagrammer er konfigurert ennå. - + Add chart Legg til diagram - + Done Ferdig - + Chart title Diagramtittel - + + Chart series + Diagramserier + + + + Add series + Legg til serie + + + + Remove series + Fjern serie + + + + No series configured yet. + Ingen serier er konfigurert ennå. + + + + Choose the Home Assistant entity for this line. Its name and color can be changed only for this chart. + Velg Home Assistant-entiteten for denne linjen. Navnet og fargen kan bare endres for dette diagrammet. + + + + Chart appearance + Diagramutseende + + + + Optional name override + Valgfritt visningsnavn + + + + Leave empty to use the name from Home Assistant. + La stå tomt for å bruke navnet fra Home Assistant. + + + + Automatic color + Automatisk farge + + + + Choose… + Velg… + + + + Use automatic color + Bruk automatisk farge + + + Search by name, entity ID, unit or device class… Søk etter navn, entitets-ID, enhet eller enhetsklasse… + + + Selected: %1 + Valgt: %1 + + + + Select an entity + Velg en entitet + + + + Save series + Lagre serie + + + + Choose chart color + Velg diagramfarge + - %n entity(s) selected - + %n entitet valgt %n entiteter valgt - + Reload Last inn på nytt - + + This entity is already used in the chart. + Denne entiteten brukes allerede i diagrammet. + + + No matching entities found. Fant ingen samsvarende entiteter. - + Save chart Lagre diagram @@ -3351,7 +3436,7 @@ Før diagrammer kan motta data: Informasjon - + Idle Inaktiv @@ -3364,123 +3449,123 @@ Før diagrammer kan motta data: LASTER INN - + %1 – %2 %1 – %2 - + Receiving manufacturer data… Mottar produsentdata… - + Loading manufacturer charts… Laster produsentdiagrammer… - + %1 images %1 bilder - + %1 charts %1 diagrammer - + Loaded %1 Lastet inn %1 - + No information data received Ingen informasjonsdata mottatt - + The manufacturer cloud returned invalid data. Produsentskyen returnerte ugyldige data. - + Requesting manufacturer data… Ber om produsentdata… - + Information Informasjon - + Manufacturer cloud Produsentsky - + The manufacturer does not even think you are worth the raw data that you could inspect and zoom. Instead, it sends these ugly low-resolution pictures that you cannot meaningfully interact with—let alone control the displayed time range. Produsenten synes ikke engang du er verdt rådataene som du kunne ha undersøkt og zoomet inn i. I stedet sender den disse stygge lavoppløselige bildene som du ikke kan samhandle meningsfullt med – langt mindre styre det viste tidsintervallet. - + Own your consumption history Behold eierskapet til forbrukshistorikken din - + Connect the device to your own Home Assistant installation for fast, dependable history that remains under your control. You decide how long data is retained and which measurements are recorded. Koble enheten til din egen Home Assistant-installasjon for rask og pålitelig historikk som forblir under din kontroll. Du bestemmer hvor lenge data lagres og hvilke målinger som registreres. - + Connected to Home Assistant Koblet til Home Assistant - + Home Assistant is not configured Home Assistant er ikke konfigurert - + Configure Konfigurer - - + + Set up Konfigurer - + Refresh Oppdater - + Connect Home Assistant to display history Koble til Home Assistant for å vise historikk - + Create your first history chart Opprett ditt første historikkdiagram - + The setup wizard connects to your server and lets you select the entities to display. Oppsettsveiviseren kobler til serveren og lar deg velge entitetene som skal vises. - + Open the configuration and add a chart with one or more Home Assistant entities. Åpne konfigurasjonen og legg til et diagram med én eller flere Home Assistant-entiteter. - + Add chart Legg til diagram @@ -3489,12 +3574,12 @@ Før diagrammer kan motta data: Glem Home Assistant-konfigurasjonen - + Forget Home Assistant? Glemme Home Assistant? - + This removes the server address, access token and all chart definitions stored in this app. Dette fjerner serveradressen, tilgangstokenet og alle diagramdefinisjoner som er lagret i appen. @@ -3503,7 +3588,7 @@ Før diagrammer kan motta data: Begrenset · upålitelig · treg - + Your own cloud Din egen sky @@ -3512,22 +3597,22 @@ Før diagrammer kan motta data: Historikk · vedlikeholdt · rask - + Lacks features · unreliable · slow Mangler funksjoner · upålitelig · treg - + Historical data · properly maintained · fast Historiske data · godt vedlikeholdt · rask - + The manufacturer cloud provides basic charts, but can be slow, unavailable or limited to the data selected by the manufacturer. Produsentskyen tilbyr grunnleggende diagrammer, men kan være treg, utilgjengelig eller begrenset til data som produsenten har valgt. - + Download information Last ned informasjon @@ -3548,37 +3633,37 @@ Før diagrammer kan motta data: Konfigurer tilkobling til Home Assistant - + Historical data Historiske data - + Day Dag - + Week Uke - + Month Måned - + Year År - + Previous Forrige - + Next Neste diff --git a/evcharger-app/i18n/qml_sv.ts b/evcharger-app/i18n/qml_sv.ts index 9cedc9c..adcf690 100644 --- a/evcharger-app/i18n/qml_sv.ts +++ b/evcharger-app/i18n/qml_sv.ts @@ -2913,68 +2913,68 @@ HomeAssistantClient - + Enter a valid HTTP or HTTPS Home Assistant address. Ange en giltig HTTP- eller HTTPS-adress till Home Assistant. - + Enter a Home Assistant access token. Ange en åtkomsttoken för Home Assistant. - + Connecting to Home Assistant… Ansluter till Home Assistant… - + Connected to Home Assistant. Ansluten till Home Assistant. - + Home Assistant rejected the access token. Home Assistant avvisade åtkomsttoken. - + Could not connect to Home Assistant: %1 Det gick inte att ansluta till Home Assistant: %1 - + Loading Home Assistant entities… Läser in Home Assistant-entiteter… - - + + The Home Assistant credential is no longer valid. Autentiseringsuppgiften för Home Assistant är inte längre giltig. - + Could not load Home Assistant entities: %1 Det gick inte att läsa in Home Assistant-entiteter: %1 - + Loaded %1 Home Assistant entities. %1 Home Assistant-entiteter har lästs in. - + Loading Home Assistant history… Läser in Home Assistant-historik… - + Could not load Home Assistant history: %1 Det gick inte att läsa in Home Assistant-historik: %1 - + Home Assistant history is up to date. Home Assistant-historiken är aktuell. @@ -2982,37 +2982,42 @@ HomeAssistantSetupDialog - + Edit chart Redigera diagram - + + Edit chart series + Redigera diagramserie + + + Connect Home Assistant Anslut Home Assistant - + Server Server - + Login Inloggning - + Charts Diagram - + %1. %2 %1. %2 - + Before you begin Innan du börjar @@ -3035,7 +3040,7 @@ Innan diagram kan ta emot data: • Kontrollera att laddarens entiteter är synliga i Home Assistant. - + Home Assistant must already be installed and running. A Raspberry Pi with Home Assistant on an SD card is one option; other supported Home Assistant installations work as well. Before charts can receive data: @@ -3054,83 +3059,84 @@ Innan diagram kan ta emot data: • Kontrollera att enhetens entiteter är synliga i Home Assistant. - + Installation guide Installationsguide - + MQTT guide MQTT-guide - + Enter the address you normally use to open Home Assistant. The app will contact this server directly. Ange adressen som du normalt använder för att öppna Home Assistant. Appen kontaktar servern direkt. - - + + Cancel Avbryt - + Next Nästa - + Create a long-lived access token in your Home Assistant profile and paste it below. Your Home Assistant password is never entered into this app. Skapa en långlivad åtkomsttoken i din Home Assistant-profil och klistra in den nedan. Ditt Home Assistant-lösenord anges aldrig i appen. - + Open Home Assistant profile Öppna Home Assistant-profil - + Long-lived access token Långlivad åtkomsttoken - + Hide Dölj - + Show Visa - + + Back Tillbaka - + Connect Anslut - + Create charts and choose exactly which Home Assistant entities each chart should display. Skapa diagram och välj exakt vilka Home Assistant-entiteter varje diagram ska visa. - + Change server or access token Byt server eller åtkomsttoken - + Forget Home Assistant configuration Glöm Home Assistant-konfiguration - + %n entity(s) %n entitet @@ -3138,60 +3144,139 @@ Innan diagram kan ta emot data: - + Edit Redigera - + Delete Ta bort - + No charts configured yet. Inga diagram har konfigurerats ännu. - + Add chart Lägg till diagram - + Done Klar - + Chart title Diagramrubrik - + + Chart series + Diagramserier + + + + Add series + Lägg till serie + + + + Remove series + Ta bort serie + + + + No series configured yet. + Inga serier har konfigurerats ännu. + + + + Choose the Home Assistant entity for this line. Its name and color can be changed only for this chart. + Välj Home Assistant-entiteten för den här linjen. Dess namn och färg kan ändras enbart för det här diagrammet. + + + + Chart appearance + Diagramutseende + + + + Optional name override + Valfritt visningsnamn + + + + Leave empty to use the name from Home Assistant. + Lämna tomt för att använda namnet från Home Assistant. + + + + Automatic color + Automatisk färg + + + + Choose… + Välj… + + + + Use automatic color + Använd automatisk färg + + + Search by name, entity ID, unit or device class… Sök efter namn, entitets-ID, enhet eller enhetsklass… + + + Selected: %1 + Vald: %1 + + + + Select an entity + Välj en entitet + + + + Save series + Spara serie + + + + Choose chart color + Välj diagramfärg + - %n entity(s) selected - + %n entitet vald %n entiteter valda - + Reload Läs in igen - + + This entity is already used in the chart. + Den här entiteten används redan i diagrammet. + + + No matching entities found. Inga matchande entiteter hittades. - + Save chart Spara diagram @@ -3351,7 +3436,7 @@ Innan diagram kan ta emot data: Information - + Idle Viloläge @@ -3364,123 +3449,123 @@ Innan diagram kan ta emot data: LÄSER IN - + %1 – %2 %1 – %2 - + Receiving manufacturer data… Tar emot tillverkardata… - + Loading manufacturer charts… Läser in tillverkarens diagram… - + %1 images %1 bilder - + %1 charts %1 diagram - + Loaded %1 %1 inläst - + No information data received Ingen informationsdata mottogs - + The manufacturer cloud returned invalid data. Tillverkarens molntjänst returnerade ogiltiga data. - + Requesting manufacturer data… Begär tillverkardata… - + Information Information - + Manufacturer cloud Tillverkarens moln - + The manufacturer does not even think you are worth the raw data that you could inspect and zoom. Instead, it sends these ugly low-resolution pictures that you cannot meaningfully interact with—let alone control the displayed time range. Tillverkaren tycker inte ens att du är värd rådata som du skulle kunna granska och zooma in. I stället skickar den dessa fula lågupplösta bilder som du inte kan interagera med på ett meningsfullt sätt – än mindre styra det visade tidsintervallet. - + Own your consumption history Äg din förbrukningshistorik - + Connect the device to your own Home Assistant installation for fast, dependable history that remains under your control. You decide how long data is retained and which measurements are recorded. Anslut enheten till din egen Home Assistant-installation för snabb och tillförlitlig historik som förblir under din kontroll. Du bestämmer hur länge data sparas och vilka mätvärden som registreras. - + Connected to Home Assistant Ansluten till Home Assistant - + Home Assistant is not configured Home Assistant är inte konfigurerat - + Configure Konfigurera - - + + Set up Konfigurera - + Refresh Uppdatera - + Connect Home Assistant to display history Anslut Home Assistant för att visa historik - + Create your first history chart Skapa ditt första historikdiagram - + The setup wizard connects to your server and lets you select the entities to display. Installationsguiden ansluter till servern och låter dig välja vilka entiteter som ska visas. - + Open the configuration and add a chart with one or more Home Assistant entities. Öppna konfigurationen och lägg till ett diagram med en eller flera Home Assistant-entiteter. - + Add chart Lägg till diagram @@ -3489,12 +3574,12 @@ Innan diagram kan ta emot data: Glöm Home Assistant-konfiguration - + Forget Home Assistant? Glöm Home Assistant? - + This removes the server address, access token and all chart definitions stored in this app. Detta tar bort serveradressen, åtkomsttoken och alla diagramdefinitioner som lagras i appen. @@ -3503,7 +3588,7 @@ Innan diagram kan ta emot data: Begränsat · opålitligt · långsamt - + Your own cloud Ditt eget moln @@ -3512,22 +3597,22 @@ Innan diagram kan ta emot data: Historik · underhållet · snabbt - + Lacks features · unreliable · slow Saknar funktioner · opålitligt · långsamt - + Historical data · properly maintained · fast Historiska data · väl underhållet · snabbt - + The manufacturer cloud provides basic charts, but can be slow, unavailable or limited to the data selected by the manufacturer. Tillverkarens molntjänst erbjuder grundläggande diagram, men kan vara långsam, otillgänglig eller begränsad till data som tillverkaren har valt. - + Download information Hämta information @@ -3548,37 +3633,37 @@ Innan diagram kan ta emot data: Konfigurera anslutning till Home Assistant - + Historical data Historiska data - + Day Dag - + Week Vecka - + Month Månad - + Year År - + Previous Föregående - + Next Nästa diff --git a/evcharger-app/i18n/qml_tr.ts b/evcharger-app/i18n/qml_tr.ts index b3ea54c..9c674a2 100644 --- a/evcharger-app/i18n/qml_tr.ts +++ b/evcharger-app/i18n/qml_tr.ts @@ -233,12 +233,12 @@ Set up Solalaweb - Solalaweb'i ayarla + Solalaweb'i ayarla Show Solalaweb - Solalaweb'i göster + Solalaweb'i göster solalaweb key: @@ -2913,68 +2913,68 @@ HomeAssistantClient - + Enter a valid HTTP or HTTPS Home Assistant address. Geçerli bir HTTP veya HTTPS Home Assistant adresi girin. - + Enter a Home Assistant access token. Bir Home Assistant erişim belirteci girin. - + Connecting to Home Assistant… Home Assistant'a bağlanılıyor… - + Connected to Home Assistant. Home Assistant'a bağlandı. - + Home Assistant rejected the access token. Home Assistant erişim belirtecini reddetti. - + Could not connect to Home Assistant: %1 Home Assistant'a bağlanılamadı: %1 - + Loading Home Assistant entities… Home Assistant varlıkları yükleniyor… - - + + The Home Assistant credential is no longer valid. Home Assistant kimlik bilgisi artık geçerli değil. - + Could not load Home Assistant entities: %1 Home Assistant varlıkları yüklenemedi: %1 - + Loaded %1 Home Assistant entities. %1 Home Assistant varlığı yüklendi. - + Loading Home Assistant history… Home Assistant geçmişi yükleniyor… - + Could not load Home Assistant history: %1 Home Assistant geçmişi yüklenemedi: %1 - + Home Assistant history is up to date. Home Assistant geçmişi güncel. @@ -2982,37 +2982,42 @@ HomeAssistantSetupDialog - + Edit chart Grafiği düzenle - + + Edit chart series + Grafik serisini düzenle + + + Connect Home Assistant Home Assistant'ı bağla - + Server Sunucu - + Login Oturum açma - + Charts Grafikler - + %1. %2 %1. %2 - + Before you begin Başlamadan önce @@ -3035,7 +3040,7 @@ Grafiklerin veri alabilmesi için: • Şarj cihazının varlıklarının Home Assistant'ta göründüğünü doğrulayın. - + Home Assistant must already be installed and running. A Raspberry Pi with Home Assistant on an SD card is one option; other supported Home Assistant installations work as well. Before charts can receive data: @@ -3054,142 +3059,222 @@ Grafiklerin veri alabilmesi için: • Cihazın varlıklarının Home Assistant'ta göründüğünü doğrulayın. - + Installation guide Kurulum kılavuzu - + MQTT guide MQTT kılavuzu - + Enter the address you normally use to open Home Assistant. The app will contact this server directly. Home Assistant'ı açmak için normalde kullandığınız adresi girin. Uygulama bu sunucuyla doğrudan iletişim kuracaktır. - - + + Cancel İptal - + Next Sonraki - + Create a long-lived access token in your Home Assistant profile and paste it below. Your Home Assistant password is never entered into this app. Home Assistant profilinizde uzun ömürlü bir erişim belirteci oluşturup aşağıya yapıştırın. Home Assistant parolanız bu uygulamaya hiçbir zaman girilmez. - + Open Home Assistant profile Home Assistant profilini aç - + Long-lived access token Uzun ömürlü erişim belirteci - + Hide Gizle - + Show Göster - + + Back Geri - + Connect Bağlan - + Create charts and choose exactly which Home Assistant entities each chart should display. Grafikler oluşturun ve her grafiğin hangi Home Assistant varlıklarını göstereceğini tam olarak seçin. - + Change server or access token Sunucuyu veya erişim belirtecini değiştir - + Forget Home Assistant configuration Home Assistant yapılandırmasını unut - + %n entity(s) %n varlık - + Edit Düzenle - + Delete Sil - + No charts configured yet. Henüz yapılandırılmış grafik yok. - + Add chart Grafik ekle - + Done Bitti - + Chart title Grafik başlığı - + + Chart series + Grafik serileri + + + + Add series + Seri ekle + + + + Remove series + Seriyi kaldır + + + + No series configured yet. + Henüz yapılandırılmış seri yok. + + + + Choose the Home Assistant entity for this line. Its name and color can be changed only for this chart. + Bu çizgi için Home Assistant varlığını seçin. Adı ve rengi yalnızca bu grafik için değiştirilebilir. + + + + Chart appearance + Grafik görünümü + + + + Optional name override + İsteğe bağlı görünen ad + + + + Leave empty to use the name from Home Assistant. + Home Assistant'taki adı kullanmak için boş bırakın. + + + + Automatic color + Otomatik renk + + + + Choose… + Seç… + + + + Use automatic color + Otomatik rengi kullan + + + Search by name, entity ID, unit or device class… Ada, varlık kimliğine, birime veya cihaz sınıfına göre ara… + + + Selected: %1 + Seçilen: %1 + + + + Select an entity + Bir varlık seçin + + + + Save series + Seriyi kaydet + + + + Choose chart color + Grafik rengini seç + - %n entity(s) selected - + %n varlık seçildi - + Reload Yeniden yükle - + + This entity is already used in the chart. + Bu varlık grafikte zaten kullanılıyor. + + + No matching entities found. Eşleşen varlık bulunamadı. - + Save chart Grafiği kaydet @@ -3349,7 +3434,7 @@ Grafiklerin veri alabilmesi için: Bilgiler - + Idle Boşta @@ -3362,123 +3447,123 @@ Grafiklerin veri alabilmesi için: YÜKLENİYOR - + %1 – %2 %1 – %2 - + Receiving manufacturer data… Üretici verileri alınıyor… - + Loading manufacturer charts… Üretici grafikleri yükleniyor… - + %1 images %1 resim - + %1 charts %1 grafik - + Loaded %1 %1 yüklendi - + No information data received Bilgi verisi alınmadı - + The manufacturer cloud returned invalid data. Üretici bulutu geçersiz veri döndürdü. - + Requesting manufacturer data… Üretici verileri isteniyor… - + Information Bilgi - + Manufacturer cloud Üretici bulutu - + The manufacturer does not even think you are worth the raw data that you could inspect and zoom. Instead, it sends these ugly low-resolution pictures that you cannot meaningfully interact with—let alone control the displayed time range. Üretici, inceleyip yakınlaştırabileceğiniz ham verileri size vermeye değer bile görmüyor. Bunun yerine, anlamlı biçimde etkileşim kuramadığınız bu çirkin, düşük çözünürlüklü görüntüleri gönderiyor; gösterilen zaman aralığını kontrol etmek ise zaten mümkün değil. - + Own your consumption history Tüketim geçmişiniz size ait olsun - + Connect the device to your own Home Assistant installation for fast, dependable history that remains under your control. You decide how long data is retained and which measurements are recorded. Hızlı, güvenilir ve kontrolünüz altında kalan bir geçmiş için cihazı kendi Home Assistant kurulumunuza bağlayın. Verilerin ne kadar süre saklanacağına ve hangi ölçümlerin kaydedileceğine siz karar verirsiniz. - + Connected to Home Assistant Home Assistant'a bağlı - + Home Assistant is not configured Home Assistant yapılandırılmadı - + Configure Yapılandır - - + + Set up Kur - + Refresh Yenile - + Connect Home Assistant to display history Geçmişi görüntülemek için Home Assistant'ı bağlayın - + Create your first history chart İlk geçmiş grafiğinizi oluşturun - + The setup wizard connects to your server and lets you select the entities to display. Kurulum sihirbazı sunucunuza bağlanır ve görüntülenecek varlıkları seçmenizi sağlar. - + Open the configuration and add a chart with one or more Home Assistant entities. Yapılandırmayı açın ve bir veya daha fazla Home Assistant varlığı içeren bir grafik ekleyin. - + Add chart Grafik ekle @@ -3487,12 +3572,12 @@ Grafiklerin veri alabilmesi için: Home Assistant yapılandırmasını unut - + Forget Home Assistant? Home Assistant unutulsun mu? - + This removes the server address, access token and all chart definitions stored in this app. Bu işlem sunucu adresini, erişim belirtecini ve bu uygulamada saklanan tüm grafik tanımlarını kaldırır. @@ -3501,7 +3586,7 @@ Grafiklerin veri alabilmesi için: Kısıtlı · güvenilmez · yavaş - + Your own cloud Kendi bulutunuz @@ -3510,22 +3595,22 @@ Grafiklerin veri alabilmesi için: Geçmiş · bakımlı · hızlı - + Lacks features · unreliable · slow Eksik özellikler · güvenilmez · yavaş - + Historical data · properly maintained · fast Geçmiş veriler · iyi bakımlı · hızlı - + The manufacturer cloud provides basic charts, but can be slow, unavailable or limited to the data selected by the manufacturer. Üretici bulutu temel grafikler sağlar, ancak yavaş veya erişilemez olabilir ya da üreticinin seçtiği verilerle sınırlı kalabilir. - + Download information Bilgileri indir @@ -3546,37 +3631,37 @@ Grafiklerin veri alabilmesi için: Home Assistant bağlantısını kur - + Historical data Geçmiş veriler - + Day Gün - + Week Hafta - + Month Ay - + Year Yıl - + Previous Önceki - + Next Sonraki @@ -5165,7 +5250,7 @@ Grafiklerin veri alabilmesi için: Set up Solalaweb - Solalaweb'i ayarla + Solalaweb'i ayarla @@ -5180,7 +5265,7 @@ Grafiklerin veri alabilmesi için: Your username is usually your email address. The user-details page shows the exact username expected by Authentik. - Kullanıcı adınız genellikle e-posta adresinizdir. Kullanıcı ayrıntıları sayfası, Authentik'in beklediği tam kullanıcı adını gösterir. + Kullanıcı adınız genellikle e-posta adresinizdir. Kullanıcı ayrıntıları sayfası, Authentik'in beklediği tam kullanıcı adını gösterir. diff --git a/evcharger-app/qml/HomeAssistantSetupDialog.qml b/evcharger-app/qml/HomeAssistantSetupDialog.qml index 2dc1e48..3054cc4 100644 --- a/evcharger-app/qml/HomeAssistantSetupDialog.qml +++ b/evcharger-app/qml/HomeAssistantSetupDialog.qml @@ -1,5 +1,8 @@ +pragma ComponentBehavior: Bound + import QtQuick import QtQuick.Controls +import QtQuick.Dialogs import QtQuick.Layouts import EVChargerApp @@ -9,48 +12,132 @@ CenteredDialog { property int wizardStep: 0 required property HomeAssistantClient client property int editingChartIndex: -1 - property var selectedEntityIds: [] - property var originalEntityConfigurations: [] - property int selectionRevision: 0 + property var editedEntityConfigurations: [] + property int entityConfigurationRevision: 0 + property int editingSeriesIndex: -1 + property string selectedSeriesEntityId: "" + property string selectedSeriesEntityName: "" property bool tokenVisible: false signal forgetRequested() - title: wizardStep === 3 ? qsTr("Edit chart") : qsTr("Connect Home Assistant") + title: wizardStep === 3 ? qsTr("Edit chart") + : wizardStep === 4 ? qsTr("Edit chart series") + : qsTr("Connect Home Assistant") modal: true focus: true width: Math.min(620, Overlay.overlay.width - 20) height: Math.min(760, Overlay.overlay.height - 20) closePolicy: Popup.CloseOnEscape - function selected(entityId) { - const unusedRevision = selectionRevision - return selectedEntityIds.indexOf(entityId) >= 0 + function copyConfiguration(configuration) { + return { + entityId: configuration && configuration.entityId + ? configuration.entityId : "", + label: configuration && configuration.label + ? configuration.label : "", + color: configuration && configuration.color + ? configuration.color : "" + } } - function setSelected(entityId, enabled) { - const values = selectedEntityIds.slice() - const index = values.indexOf(entityId) - if (enabled && index < 0) - values.push(entityId) - else if (!enabled && index >= 0) - values.splice(index, 1) - selectedEntityIds = values - ++selectionRevision + function seriesDisplayName(configuration) { + const unusedRevision = entityConfigurationRevision + if (configuration.label && configuration.label.length > 0) + return configuration.label + const details = dialog.client.entityDetails(configuration.entityId) + return details.name || configuration.entityId + } + + function seriesColor(configuration, index) { + const unusedRevision = entityConfigurationRevision + return configuration.color && configuration.color.length > 0 + ? configuration.color : dialog.client.defaultSeriesColor(index) + } + + function entityAlreadyUsed(entityId) { + for (let i = 0; i < editedEntityConfigurations.length; ++i) { + if (i !== editingSeriesIndex + && editedEntityConfigurations[i].entityId === entityId) + return true + } + return false + } + + function editSeries(index) { + editingSeriesIndex = index + const configuration = editedEntityConfigurations[index] + selectedSeriesEntityId = configuration.entityId + const details = dialog.client.entityDetails(configuration.entityId) + selectedSeriesEntityName = details.name || configuration.entityId + seriesLabelInput.text = configuration.label || "" + seriesColorInput.text = configuration.color || "" + seriesEntitySearchInput.text = "" + dialog.client.entitySearch = "" + wizardStep = 4 + } + + function newSeries() { + editingSeriesIndex = -1 + selectedSeriesEntityId = "" + selectedSeriesEntityName = "" + seriesLabelInput.text = "" + seriesColorInput.text = "" + seriesEntitySearchInput.text = "" + dialog.client.entitySearch = "" + wizardStep = 4 + } + + function selectSeriesEntity(entityId, name) { + selectedSeriesEntityId = entityId + selectedSeriesEntityName = name + } + + function saveSeries() { + const values = editedEntityConfigurations.slice() + const configuration = { + entityId: selectedSeriesEntityId, + label: seriesLabelInput.text.trim(), + color: seriesColorInput.text.trim() + } + if (editingSeriesIndex >= 0) + values[editingSeriesIndex] = configuration + else + values.push(configuration) + editedEntityConfigurations = values + ++entityConfigurationRevision + dialog.client.entitySearch = "" + wizardStep = 3 + } + + function removeSeries(index) { + const values = editedEntityConfigurations.slice() + values.splice(index, 1) + editedEntityConfigurations = values + ++entityConfigurationRevision + } + + function backPressed() { + if (wizardStep === 4) { + dialog.client.entitySearch = "" + wizardStep = 3 + return true + } + close() + return true } function editChart(index) { editingChartIndex = index const chart = dialog.client.charts[index] chartTitleInput.text = chart && chart.title ? chart.title : "" - originalEntityConfigurations = chart && chart.entities - ? chart.entities.slice() : [] - const ids = [] - for (let i = 0; i < originalEntityConfigurations.length; ++i) - ids.push(originalEntityConfigurations[i].entityId) - selectedEntityIds = ids - ++selectionRevision - entitySearchInput.text = "" + const configurations = [] + if (chart && chart.entities) { + for (let i = 0; i < chart.entities.length; ++i) + configurations.push(copyConfiguration(chart.entities[i])) + } + editedEntityConfigurations = configurations + ++entityConfigurationRevision dialog.client.entitySearch = "" wizardStep = 3 if (!dialog.client.entitiesLoading) @@ -60,10 +147,8 @@ CenteredDialog { function newChart() { editingChartIndex = -1 chartTitleInput.text = "" - originalEntityConfigurations = [] - selectedEntityIds = [] - ++selectionRevision - entitySearchInput.text = "" + editedEntityConfigurations = [] + ++entityConfigurationRevision dialog.client.entitySearch = "" wizardStep = 3 if (!dialog.client.entitiesLoading) @@ -71,26 +156,13 @@ CenteredDialog { } function saveChart() { - const entities = [] - for (let i = 0; i < selectedEntityIds.length; ++i) { - const entityId = selectedEntityIds[i] - let saved = undefined - for (let j = 0; j < originalEntityConfigurations.length; ++j) { - if (originalEntityConfigurations[j].entityId === entityId) { - saved = originalEntityConfigurations[j] - break - } - } - entities.push(saved || { entityId: entityId }) - } - const charts = dialog.client.charts.slice() const chart = { id: editingChartIndex >= 0 && charts[editingChartIndex].id ? charts[editingChartIndex].id : Date.now().toString(36), title: chartTitleInput.text.trim(), - entities: entities + entities: editedEntityConfigurations } if (editingChartIndex >= 0) charts[editingChartIndex] = chart @@ -116,7 +188,7 @@ CenteredDialog { onClosed: { dialog.client.entitySearch = "" - entitySearchInput.text = "" + seriesEntitySearchInput.text = "" } Connections { @@ -125,6 +197,10 @@ CenteredDialog { if (success) dialog.wizardStep = 2 } + function onEntitiesLoadingChanged() { + if (!dialog.client.entitiesLoading) + ++dialog.entityConfigurationRevision + } } contentItem: ColumnLayout { @@ -419,8 +495,200 @@ CenteredDialog { selectByMouse: true } + RowLayout { + Layout.fillWidth: true + Label { + Layout.fillWidth: true + text: qsTr("Chart series") + font.bold: true + } + Button { + text: qsTr("Add series") + onClicked: dialog.newSeries() + } + } + + ListView { + Layout.fillWidth: true + Layout.fillHeight: true + clip: true + spacing: 6 + model: dialog.editedEntityConfigurations + + delegate: WhiteItemDelegate { + id: seriesDelegate + required property int index + required property var modelData + width: ListView.view.width + height: Math.max(58, contentItem.implicitHeight + 12) + onClicked: dialog.editSeries(index) + + contentItem: RowLayout { + spacing: 8 + + Rectangle { + Layout.preferredWidth: 16 + Layout.preferredHeight: 16 + Layout.alignment: Qt.AlignVCenter + radius: 8 + color: dialog.seriesColor(seriesDelegate.modelData, + seriesDelegate.index) + border.width: 1 + border.color: Qt.darker(color, 1.3) + } + + ColumnLayout { + Layout.fillWidth: true + Layout.minimumWidth: 0 + spacing: 1 + + Label { + Layout.fillWidth: true + Layout.minimumWidth: 0 + text: dialog.seriesDisplayName(seriesDelegate.modelData) + font.bold: true + elide: Text.ElideRight + } + Label { + Layout.fillWidth: true + Layout.minimumWidth: 0 + text: seriesDelegate.modelData.entityId + color: palette.placeholderText + font.pixelSize: 11 + elide: Text.ElideMiddle + } + } + + ToolButton { + Accessible.name: qsTr("Remove series") + onClicked: dialog.removeSeries(seriesDelegate.index) + contentItem: MaterialIcon { + iconName: "delete" + font.pixelSize: 22 + } + } + } + } + + Label { + anchors.centerIn: parent + visible: parent.count === 0 + width: parent.width - 20 + text: qsTr("No series configured yet.") + horizontalAlignment: Text.AlignHCenter + wrapMode: Text.Wrap + color: palette.placeholderText + } + } + + RowLayout { + Layout.fillWidth: true + Button { text: qsTr("Cancel"); onClicked: dialog.wizardStep = 2 } + Item { Layout.fillWidth: true } + Button { + text: qsTr("Save chart") + enabled: chartTitleInput.text.trim().length > 0 + && dialog.editedEntityConfigurations.length > 0 + onClicked: dialog.saveChart() + } + } + } + + ColumnLayout { + Layout.fillWidth: true + Layout.minimumWidth: 0 + spacing: 7 + + Text { + Layout.fillWidth: true + Layout.minimumWidth: 0 + text: qsTr("Choose the Home Assistant entity for this line. Its name and color can be changed only for this chart.") + wrapMode: Text.Wrap + } + + SettingsCard { + Layout.fillWidth: true + Layout.minimumWidth: 0 + + SettingsSectionLabel { + text: qsTr("Chart appearance") + } + + TextField { + id: seriesLabelInput + Layout.fillWidth: true + Layout.minimumWidth: 0 + placeholderText: qsTr("Optional name override") + selectByMouse: true + } + + Label { + Layout.fillWidth: true + Layout.minimumWidth: 0 + text: qsTr("Leave empty to use the name from Home Assistant.") + color: palette.placeholderText + wrapMode: Text.Wrap + } + + RowLayout { + Layout.fillWidth: true + Layout.minimumWidth: 0 + + Rectangle { + Layout.preferredWidth: 20 + Layout.preferredHeight: 20 + radius: 10 + color: seriesColorInput.text.length > 0 + ? seriesColorInput.text + : dialog.client.defaultSeriesColor( + dialog.editingSeriesIndex >= 0 + ? dialog.editingSeriesIndex + : dialog.editedEntityConfigurations.length) + border.width: 1 + border.color: Qt.darker(color, 1.3) + } + + Label { + Layout.fillWidth: true + Layout.minimumWidth: 0 + text: seriesColorInput.text.length > 0 + ? seriesColorInput.text + : qsTr("Automatic color") + elide: Text.ElideRight + } + + Button { + text: qsTr("Choose…") + onClicked: { + seriesColorDialog.selectedColor = seriesColorInput.text.length > 0 + ? seriesColorInput.text + : dialog.client.defaultSeriesColor( + dialog.editingSeriesIndex >= 0 + ? dialog.editingSeriesIndex + : dialog.editedEntityConfigurations.length) + seriesColorDialog.open() + } + } + + ToolButton { + visible: seriesColorInput.text.length > 0 + Accessible.name: qsTr("Use automatic color") + onClicked: seriesColorInput.text = "" + contentItem: MaterialIcon { + iconName: "restart_alt" + font.pixelSize: 22 + } + } + } + + TextField { + id: seriesColorInput + visible: false + } + } + TextField { - id: entitySearchInput + id: seriesEntitySearchInput Layout.fillWidth: true Layout.minimumWidth: 0 placeholderText: qsTr("Search by name, entity ID, unit or device class…") @@ -430,10 +698,16 @@ CenteredDialog { RowLayout { Layout.fillWidth: true + Layout.minimumWidth: 0 + Label { Layout.fillWidth: true - text: qsTr("%n entity(s) selected", "", dialog.selectedEntityIds.length) + Layout.minimumWidth: 0 + text: dialog.selectedSeriesEntityId.length > 0 + ? qsTr("Selected: %1").arg(dialog.selectedSeriesEntityName) + : qsTr("Select an entity") font.bold: true + elide: Text.ElideRight } BusyIndicator { implicitWidth: 28 @@ -448,6 +722,16 @@ CenteredDialog { } } + Label { + Layout.fillWidth: true + Layout.minimumWidth: 0 + visible: dialog.selectedSeriesEntityId.length > 0 + && dialog.entityAlreadyUsed(dialog.selectedSeriesEntityId) + text: qsTr("This entity is already used in the chart.") + color: palette.brightText + wrapMode: Text.Wrap + } + ListView { Layout.fillWidth: true Layout.fillHeight: true @@ -463,18 +747,19 @@ CenteredDialog { required property string deviceClass required property string currentValue width: ListView.view.width - onClicked: dialog.setSelected(entityId, - !dialog.selected(entityId)) + onClicked: dialog.selectSeriesEntity(entityId, name) contentItem: RowLayout { spacing: 8 - CheckBox { + RadioButton { Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter - checked: dialog.selected(entityDelegate.entityId) + checked: dialog.selectedSeriesEntityId + === entityDelegate.entityId Accessible.name: entityDelegate.name - onClicked: dialog.setSelected(entityDelegate.entityId, - checked) + onClicked: dialog.selectSeriesEntity( + entityDelegate.entityId, + entityDelegate.name) } ColumnLayout { @@ -522,16 +807,29 @@ CenteredDialog { RowLayout { Layout.fillWidth: true - Button { text: qsTr("Cancel"); onClicked: dialog.wizardStep = 2 } + Button { + text: qsTr("Back") + onClicked: { + dialog.client.entitySearch = "" + dialog.wizardStep = 3 + } + } Item { Layout.fillWidth: true } Button { - text: qsTr("Save chart") - enabled: chartTitleInput.text.trim().length > 0 - && dialog.selectedEntityIds.length > 0 - onClicked: dialog.saveChart() + text: qsTr("Save series") + enabled: dialog.selectedSeriesEntityId.length > 0 + && !dialog.entityAlreadyUsed( + dialog.selectedSeriesEntityId) + onClicked: dialog.saveSeries() } } } } } + + ColorDialog { + id: seriesColorDialog + title: qsTr("Choose chart color") + onAccepted: seriesColorInput.text = selectedColor.toString().toUpperCase() + } } diff --git a/evcharger-app/qml/InformationsTabPage.qml b/evcharger-app/qml/InformationsTabPage.qml index ccc60cf..b26921a 100644 --- a/evcharger-app/qml/InformationsTabPage.qml +++ b/evcharger-app/qml/InformationsTabPage.qml @@ -22,8 +22,7 @@ ScrollableTabPage { function backPressed() { if (homeAssistantDialog.opened) { - homeAssistantDialog.close() - return true + return homeAssistantDialog.backPressed() } if (forgetHomeAssistantDialog.opened) { forgetHomeAssistantDialog.close() @@ -105,7 +104,8 @@ ScrollableTabPage { } function refreshHomeAssistantHistory() { - if (cloudTabs.currentIndex === 1 && homeAssistant.configured) + if (mqttAvailability.exists && cloudTabs.currentIndex === 1 + && homeAssistant.configured) homeAssistant.requestHistory(historyRange, historyOffset) } @@ -135,7 +135,8 @@ ScrollableTabPage { Timer { interval: 60000 repeat: true - running: cloudTabs.currentIndex === 1 && homeAssistant.configured + running: mqttAvailability.exists && cloudTabs.currentIndex === 1 + && homeAssistant.configured && page.historyOffset === 0 onTriggered: page.refreshHomeAssistantHistory() } @@ -152,6 +153,16 @@ ScrollableTabPage { apiKey: "dll" } + ApiKeyValueHelper { + id: mqttAvailability + deviceConnection: theDeviceConnection + apiKey: "mce" + onExistsChanged: { + if (!exists) + cloudTabs.currentIndex = 0 + } + } + QtObject { id: dataRequest @@ -223,6 +234,7 @@ ScrollableTabPage { Layout.fillWidth: true contentHeight: 72 + visible: mqttAvailability.exists TabButton { width: cloudTabs.width / 2 @@ -279,7 +291,7 @@ ScrollableTabPage { Layout.preferredHeight: currentIndex === 0 ? manufacturerContent.implicitHeight : ownCloudContent.implicitHeight - currentIndex: cloudTabs.currentIndex + currentIndex: mqttAvailability.exists ? cloudTabs.currentIndex : 0 ColumnLayout { id: manufacturerContent