From e81a435ed90d4c0db7ec8c2a2afd172f87a93399 Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Mon, 16 Jan 2023 21:25:19 +0100 Subject: [PATCH] webapp: Added device manager interface Allows selecting a device profile which changes the pin assignment --- webapp/src/components/NavBar.vue | 3 + webapp/src/components/PinInfo.vue | 58 ++++++++++++ webapp/src/locales/de.json | 18 +++- webapp/src/locales/en.json | 18 +++- webapp/src/locales/fr.json | 18 +++- webapp/src/router/index.ts | 6 ++ webapp/src/types/DeviceConfig.ts | 3 + webapp/src/types/PinMapping.ts | 15 +++ webapp/src/views/DeviceAdminView.vue | 134 +++++++++++++++++++++++++++ 9 files changed, 270 insertions(+), 3 deletions(-) create mode 100644 webapp/src/components/PinInfo.vue create mode 100644 webapp/src/types/DeviceConfig.ts create mode 100644 webapp/src/types/PinMapping.ts create mode 100644 webapp/src/views/DeviceAdminView.vue diff --git a/webapp/src/components/NavBar.vue b/webapp/src/components/NavBar.vue index e1f28ab..e828530 100644 --- a/webapp/src/components/NavBar.vue +++ b/webapp/src/components/NavBar.vue @@ -48,6 +48,9 @@
  • {{ $t('menu.DTUSettings') }}
  • +
  • + {{ $t('menu.DeviceManager') }} +
  • diff --git a/webapp/src/components/PinInfo.vue b/webapp/src/components/PinInfo.vue new file mode 100644 index 0000000..a9fa9bb --- /dev/null +++ b/webapp/src/components/PinInfo.vue @@ -0,0 +1,58 @@ + + + diff --git a/webapp/src/locales/de.json b/webapp/src/locales/de.json index 9d3e7a9..c84bf39 100644 --- a/webapp/src/locales/de.json +++ b/webapp/src/locales/de.json @@ -8,6 +8,7 @@ "InverterSettings": "Wechselrichter Einstellungen", "SecuritySettings": "Sicherheitseinstellungen", "DTUSettings": "DTU Einstellungen", + "DeviceManager": "Geräte-Manager", "ConfigManagement": "Konfigurationsverwaltung", "FirmwareUpgrade": "Firmware Aktualisierung", "DeviceReboot": "Geräteneustart", @@ -82,7 +83,8 @@ "10001": "Das Passwort muss zwischen 8 und {max} Zeichen lang sein!", "10002": "Authentifizierung erfolgreich!", "11001": "@:apiresponse.2001", - "11002": "@:apiresponse:5004" + "11002": "@:apiresponse:5004", + "12001": "Profil muss zwischen 1 und {max} Zeichen lang sein!" }, "home": { "LiveData": "Live Daten", @@ -466,5 +468,19 @@ "TimeSyncLink": "Bitte überprüfen Sie Ihre Zeiteinstellungen.", "DefaultPassword": "Sie verwenden das Standardpasswort für die Weboberfläche und den Notfall Access Point. Dies ist potenziell unsicher.", "DefaultPasswordLink": "Bitte ändern Sie das Passwort." + }, + "deviceadmin": { + "DeviceManager": "Geräte-Manager", + "PinAssignment": "Anschlusseinstellungen", + "SelectedProfile": "Ausgewähltes Profil:", + "DefaultProfile": "(Standard Einstellungen)", + "ProfileHint": "Ihr Gerät reagiert möglicherweise nicht mehr, wenn Sie ein inkompatibles Profil wählen. In diesem Fall müssen Sie eine Löschung über das serielle Interface durchführen.", + "Save": "@:dtuadmin.Save" + }, + "pininfo": { + "PinOverview": "Anschlussübersicht", + "Category": "Kategorie", + "Name": "Name", + "Number": "Nummer" } } \ No newline at end of file diff --git a/webapp/src/locales/en.json b/webapp/src/locales/en.json index bc32197..4db8002 100644 --- a/webapp/src/locales/en.json +++ b/webapp/src/locales/en.json @@ -8,6 +8,7 @@ "InverterSettings": "Inverter Settings", "SecuritySettings": "Security Settings", "DTUSettings": "DTU Settings", + "DeviceManager": "Device-Manager", "ConfigManagement": "Config Management", "FirmwareUpgrade": "Firmware Upgrade", "DeviceReboot": "Device Reboot", @@ -82,7 +83,8 @@ "10001": "Password must between 8 and {max} characters long!", "10002": "Authentication successfull!", "11001": "@:apiresponse.2001", - "11002": "@:apiresponse:5004" + "11002": "@:apiresponse:5004", + "12001": "Profil must between 1 and {max} characters long!" }, "home": { "LiveData": "Live Data", @@ -466,5 +468,19 @@ "TimeSyncLink": "Please check your time settings.", "DefaultPassword": "You are using the default password for the web interface and the emergency access point. This is potentially insecure.", "DefaultPasswordLink": "Please change the password." + }, + "deviceadmin": { + "DeviceManager": "Device-Manager", + "PinAssignment": "Connection settings", + "SelectedProfile": "Selected profile:", + "DefaultProfile": "(Default settings)", + "ProfileHint": "Your device may stop responding if you select an incompatible profile. In this case, you must perform a deletion via the serial interface.", + "Save": "@:dtuadmin.Save" + }, + "pininfo": { + "PinOverview": "Connection overview", + "Category": "Category", + "Name": "Name", + "Number": "Number" } } \ No newline at end of file diff --git a/webapp/src/locales/fr.json b/webapp/src/locales/fr.json index 6346989..cb9e0af 100644 --- a/webapp/src/locales/fr.json +++ b/webapp/src/locales/fr.json @@ -8,6 +8,7 @@ "InverterSettings": "Paramètres des onduleurs", "SecuritySettings": "Paramètres de sécurité", "DTUSettings": "Paramètres DTU", + "DeviceManager": "Device-Manager", "ConfigManagement": "Gestion de la configuration", "FirmwareUpgrade": "Mise à jour du firmware", "DeviceReboot": "Redémarrage de l'appareil", @@ -82,7 +83,8 @@ "10001": "Le mot de passe doit comporter entre 8 et {max} caractères !", "10002": "Authentification réussie !", "11001": "@:apiresponse.2001", - "11002": "@:apiresponse:5004" + "11002": "@:apiresponse:5004", + "12001": "Profil must between 1 and {max} characters long!" }, "home": { "LiveData": "Données en direct", @@ -466,5 +468,19 @@ "TimeSyncLink": "Veuillez vérifier vos paramètres horaires.", "DefaultPassword": "Vous utilisez le mot de passe par défaut pour l'interface Web et le point d'accès d'urgence. Ceci est potentiellement non sécurisé.", "DefaultPasswordLink": "Merci de changer le mot de passe." + }, + "deviceadmin": { + "DeviceManager": "Device-Manager", + "PinAssignment": "Connection settings", + "SelectedProfile": "Selected profile:", + "DefaultProfile": "(Default settings)", + "ProfileHint": "Your device may stop responding if you select an incompatible profile. In this case, you must perform a deletion via the serial interface.", + "Save": "@:dtuadmin.Save" + }, + "pininfo": { + "PinOverview": "Connection overview", + "Category": "Category", + "Name": "Name", + "Number": "Number" } } \ No newline at end of file diff --git a/webapp/src/router/index.ts b/webapp/src/router/index.ts index 3aa983c..6cfc00e 100644 --- a/webapp/src/router/index.ts +++ b/webapp/src/router/index.ts @@ -1,6 +1,7 @@ import AboutView from '@/views/AboutView.vue'; import ConfigAdminView from '@/views/ConfigAdminView.vue'; import ConsoleInfoView from '@/views/ConsoleInfoView.vue'; +import DeviceAdminView from '@/views/DeviceAdminView.vue' import DtuAdminView from '@/views/DtuAdminView.vue'; import FirmwareUpgradeView from '@/views/FirmwareUpgradeView.vue'; import HomeView from '@/views/HomeView.vue'; @@ -86,6 +87,11 @@ const router = createRouter({ name: 'DTU Settings', component: DtuAdminView }, + { + path: '/settings/device', + name: 'Device Manager', + component: DeviceAdminView + }, { path: '/firmware/upgrade', name: 'Firmware Upgrade', diff --git a/webapp/src/types/DeviceConfig.ts b/webapp/src/types/DeviceConfig.ts new file mode 100644 index 0000000..d75e6e1 --- /dev/null +++ b/webapp/src/types/DeviceConfig.ts @@ -0,0 +1,3 @@ +export interface DeviceConfig { + dev_pinmapping: string; +} \ No newline at end of file diff --git a/webapp/src/types/PinMapping.ts b/webapp/src/types/PinMapping.ts new file mode 100644 index 0000000..686328f --- /dev/null +++ b/webapp/src/types/PinMapping.ts @@ -0,0 +1,15 @@ +export interface Nrf24 { + miso: number; + mosi: number; + clk: number; + irq: number; + en: number; + cs: number; +} + +export interface Device { + name: string; + nrf24: Nrf24; +} + +export interface PinMapping extends Array{} \ No newline at end of file diff --git a/webapp/src/views/DeviceAdminView.vue b/webapp/src/views/DeviceAdminView.vue new file mode 100644 index 0000000..621e17d --- /dev/null +++ b/webapp/src/views/DeviceAdminView.vue @@ -0,0 +1,134 @@ + + + \ No newline at end of file