From 0e2b7767c766e832c5a7b2ca187ed813edd3a5ac Mon Sep 17 00:00:00 2001 From: MalteSchm Date: Sun, 26 Mar 2023 11:06:51 +0200 Subject: [PATCH] Webapp changes to display Huawei PSU values and to enable/disable the unit --- webapp/src/components/HuaweiView.vue | 358 ++++++++++++++++++++++++ webapp/src/components/NavBar.vue | 3 + webapp/src/locales/de.json | 40 ++- webapp/src/locales/en.json | 38 ++- webapp/src/locales/fr.json | 39 ++- webapp/src/router/index.ts | 6 + webapp/src/types/AcChargerConfig.ts | 3 + webapp/src/types/HuaweiDataStatus.ts | 18 ++ webapp/src/types/HuaweiLimitConfig.ts | 7 + webapp/src/types/LiveDataStatus.ts | 5 + webapp/src/views/AcChargerAdminView.vue | 79 ++++++ webapp/src/views/HomeView.vue | 7 +- 12 files changed, 598 insertions(+), 5 deletions(-) create mode 100644 webapp/src/components/HuaweiView.vue create mode 100644 webapp/src/types/AcChargerConfig.ts create mode 100644 webapp/src/types/HuaweiDataStatus.ts create mode 100644 webapp/src/types/HuaweiLimitConfig.ts create mode 100644 webapp/src/views/AcChargerAdminView.vue diff --git a/webapp/src/components/HuaweiView.vue b/webapp/src/components/HuaweiView.vue new file mode 100644 index 000000000..2785a27e4 --- /dev/null +++ b/webapp/src/components/HuaweiView.vue @@ -0,0 +1,358 @@ + + + \ No newline at end of file diff --git a/webapp/src/components/NavBar.vue b/webapp/src/components/NavBar.vue index 033e213b8..ca1debd5f 100644 --- a/webapp/src/components/NavBar.vue +++ b/webapp/src/components/NavBar.vue @@ -57,6 +57,9 @@
  • {{ $t('menu.BatterySettings') }}
  • +
  • + {{ $t('menu.AcChargerSettings') }} +
  • {{ $t('menu.DeviceManager') }}
  • diff --git a/webapp/src/locales/de.json b/webapp/src/locales/de.json index f2e31bbcb..931f46c32 100644 --- a/webapp/src/locales/de.json +++ b/webapp/src/locales/de.json @@ -10,7 +10,8 @@ "DTUSettings": "DTU", "DeviceManager": "Hardware", "VedirectSettings": "Ve.direct", - "BatterySettings": "Battery", + "BatterySettings": "Batterie", + "AcChargerSettings": "AC Ladegerät", "ConfigManagement": "Konfigurationsverwaltung", "FirmwareUpgrade": "Firmware-Aktualisierung", "DeviceReboot": "Neustart", @@ -608,5 +609,40 @@ "Name": "Name", "ValueSelected": "Ausgewählt", "ValueActive": "Aktiv" - } + }, + "huawei": { + "DataAge": "letzte Aktualisierung: ", + "Seconds": "vor {val} Sekunden", + "Input": "Eingang", + "Output": "Ausgang", + "Property": "Eigenschaft", + "Value": "Wert", + "Unit": "Einheit", + "input_voltage": "Eingangsspannung", + "input_current": "Eingangsstrom", + "input_power": "Eingangsleistung", + "input_temp": "Eingangstemperatur", + "efficiency": "Wirkungsgrad", + "output_voltage": "Ausgangsspannung", + "output_current": "Ausgangsstrom", + "max_output_current": "Maximaler Ausgangsstrom", + "output_power": "Ausgangsleistung", + "output_temp": "Ausgangstemperatur", + "ShowSetLimit": "Zeige / Setze Limit", + "LimitSettings": "Limit-Einstellungen", + "SetOffline": "Limit setzen, CAN Bus nicht verbunden", + "SetOnline": "Limit setzen, CAN Bus verbunden", + "LimitHint": "Hinweis: Spannungsbereich wenn CAN Bus nicht verbunden ist 48V-58.5V ", + "Close": "Schließen", + "SetVoltageLimit": "Spannungslimit:", + "SetCurrentLimit": "Stromlimit:", + "CurrentLimit": "Aktuelles Limit: " + }, + "acchargeradmin": { + "ChargerSettings": "AC Ladegerät Einstellungen", + "Configuration": "AC Ladegerät Konfiguration", + "EnableHuawei": "Huawei R4850G2 an CAN Bus Interface aktiv", + "Seconds": "@:dtuadmin.Seconds", + "Save": "@:dtuadmin.Save" + } } diff --git a/webapp/src/locales/en.json b/webapp/src/locales/en.json index be095abe2..bfb49013c 100644 --- a/webapp/src/locales/en.json +++ b/webapp/src/locales/en.json @@ -11,6 +11,7 @@ "DeviceManager": "Device-Manager", "VedirectSettings": "Ve.direct Settings", "BatterySettings": "@:batteryadmin.BatterySettings", + "AcChargerSettings": "AC Charger", "ConfigManagement": "Config Management", "FirmwareUpgrade": "Firmware Upgrade", "DeviceReboot": "Device Reboot", @@ -609,5 +610,40 @@ "Number": "Number", "ValueSelected": "Selected", "ValueActive": "Active" - } + }, + "huawei": { + "DataAge": "Data Age: ", + "Seconds": " {val} seconds", + "Input": "Input", + "Output": "Output", + "Property": "Property", + "Value": "Value", + "Unit": "Unit", + "input_voltage": "Input voltage", + "input_current": "Input current", + "input_power": "Input power", + "input_temp": "Input temperature", + "efficiency": "Efficiency", + "output_voltage": "Output voltage", + "output_current": "Output current", + "max_output_current": "Maximum output current", + "output_power": "Output power", + "output_temp": "Output temperature", + "ShowSetLimit": "Show / Set Huawei Limit", + "LimitSettings": "Limit Settings", + "SetOffline": "Set limit, CAN bus not connected", + "SetOnline": "Set limit, CAN bus connected", + "LimitHint": "Hint: CAN bus not connected voltage limit is 48V-58.5V.", + "Close": "close", + "SetVoltageLimit": "Voltage limit:", + "SetCurrentLimit": "Current limit:", + "CurrentLimit": "Current limit:" + }, + "acchargeradmin": { + "ChargerSettings": "AC Charger Settings", + "Configuration": "AC Charger Configuration", + "EnableHuawei": "Enable Huawei R4850G2 on CAN Bus Interface", + "Seconds": "@:dtuadmin.Seconds", + "Save": "@:dtuadmin.Save" + } } \ No newline at end of file diff --git a/webapp/src/locales/fr.json b/webapp/src/locales/fr.json index 415d74a7c..c90613d0c 100644 --- a/webapp/src/locales/fr.json +++ b/webapp/src/locales/fr.json @@ -10,6 +10,8 @@ "DTUSettings": "DTU", "DeviceManager": "Périphériques", "VedirectSettings": "Ve.direct", + "BatterySettings": "Battery", + "AcChargerSettings": "AC Charger", "ConfigManagement": "Gestion de la configuration", "FirmwareUpgrade": "Mise à jour du firmware", "DeviceReboot": "Redémarrage de l'appareil", @@ -567,5 +569,40 @@ "Name": "Nom", "ValueSelected": "Sélectionné", "ValueActive": "Activé" - } + }, + "huawei": { + "DataAge": "Data Age: ", + "Seconds": " {val} seconds", + "Input": "Input", + "Output": "Output", + "Property": "Property", + "Value": "Value", + "Unit": "Unit", + "input_voltage": "Input voltage", + "input_current": "Input current", + "input_power": "Input power", + "input_temp": "Input temperature", + "efficiency": "Efficiency", + "output_voltage": "Output voltage", + "output_current": "Output current", + "max_output_current": "Maximum output current", + "output_power": "Output power", + "output_temp": "Output temperature", + "ShowSetLimit": "Show / Set Huawei Limit", + "LimitSettings": "Limit Settings", + "SetOffline": "Set limit, CAN bus not connected", + "SetOnline": "Set limit, CAN bus connected", + "LimitHint": "Hint: CAN bus not connected voltage limit is 48V-58.5V.", + "Close": "close", + "SetVoltageLimit": "Voltage limit:", + "SetCurrentLimit": "Current limit:", + "CurrentLimit": "Current limit:" + }, + "acchargeradmin": { + "ChargerSettings": "AC Charger Settings", + "Configuration": "AC Charger Configuration", + "EnableHuawei": "Enable Huawei R4850G2 on CAN Bus Interface", + "Seconds": "@:dtuadmin.Seconds", + "Save": "@:dtuadmin.Save" + } } \ No newline at end of file diff --git a/webapp/src/router/index.ts b/webapp/src/router/index.ts index a6b3ee60c..e7d6ec6f5 100644 --- a/webapp/src/router/index.ts +++ b/webapp/src/router/index.ts @@ -1,5 +1,6 @@ import AboutView from '@/views/AboutView.vue'; import BatteryAdminView from '@/views/BatteryAdminView.vue'; +import AcChargerAdminView from '@/views/AcChargerAdminView.vue'; import ConfigAdminView from '@/views/ConfigAdminView.vue'; import ConsoleInfoView from '@/views/ConsoleInfoView.vue'; import DeviceAdminView from '@/views/DeviceAdminView.vue' @@ -96,6 +97,11 @@ const router = createRouter({ name: 'Battery Settings', component: BatteryAdminView }, + { + path: '/settings/chargerac', + name: 'Charger Settings', + component: AcChargerAdminView + }, { path: '/settings/mqtt', name: 'MqTT Settings', diff --git a/webapp/src/types/AcChargerConfig.ts b/webapp/src/types/AcChargerConfig.ts new file mode 100644 index 000000000..1c265e13f --- /dev/null +++ b/webapp/src/types/AcChargerConfig.ts @@ -0,0 +1,3 @@ +export interface AcChargerConfig { + enabled: boolean; +} diff --git a/webapp/src/types/HuaweiDataStatus.ts b/webapp/src/types/HuaweiDataStatus.ts new file mode 100644 index 000000000..ce7b8aabd --- /dev/null +++ b/webapp/src/types/HuaweiDataStatus.ts @@ -0,0 +1,18 @@ +import type { ValueObject } from '@/types/LiveDataStatus'; + +// Huawei +export interface Huawei { + data_age: 0; + input_voltage: ValueObject; + input_frequency: ValueObject; + input_current: ValueObject; + input_power: ValueObject; + input_temp: ValueObject; + efficiency: ValueObject; + output_voltage: ValueObject; + output_current: ValueObject; + max_output_current: ValueObject; + output_power: ValueObject; + output_temp: ValueObject; + amp_hour: ValueObject; +} \ No newline at end of file diff --git a/webapp/src/types/HuaweiLimitConfig.ts b/webapp/src/types/HuaweiLimitConfig.ts new file mode 100644 index 000000000..f839d83c3 --- /dev/null +++ b/webapp/src/types/HuaweiLimitConfig.ts @@ -0,0 +1,7 @@ +export interface HuaweiLimitConfig { + voltage: number; + voltage_valid: boolean; + current: number; + current_valid: boolean; + online: boolean; +} \ No newline at end of file diff --git a/webapp/src/types/LiveDataStatus.ts b/webapp/src/types/LiveDataStatus.ts index 477cde195..e7ab5b7e1 100644 --- a/webapp/src/types/LiveDataStatus.ts +++ b/webapp/src/types/LiveDataStatus.ts @@ -50,9 +50,14 @@ export interface Vedirect { enabled: boolean; } +export interface Huawei { + enabled: boolean; +} + export interface LiveData { inverters: Inverter[]; total: Total; hints: Hints; vedirect: Vedirect; + huawei: Huawei; } diff --git a/webapp/src/views/AcChargerAdminView.vue b/webapp/src/views/AcChargerAdminView.vue new file mode 100644 index 000000000..e4a6c9f06 --- /dev/null +++ b/webapp/src/views/AcChargerAdminView.vue @@ -0,0 +1,79 @@ + + + diff --git a/webapp/src/views/HomeView.vue b/webapp/src/views/HomeView.vue index d158af95b..52118ef70 100644 --- a/webapp/src/views/HomeView.vue +++ b/webapp/src/views/HomeView.vue @@ -114,6 +114,9 @@ +
    + +