diff --git a/webapp/src/components/InverterTotalInfo.vue b/webapp/src/components/InverterTotalInfo.vue index 1832cb50d..5347e0303 100644 --- a/webapp/src/components/InverterTotalInfo.vue +++ b/webapp/src/components/InverterTotalInfo.vue @@ -42,11 +42,7 @@
- +

{{ $n(solarChargerData.power.v, 'decimal', { diff --git a/webapp/src/locales/de.json b/webapp/src/locales/de.json index 804c1bd42..46891b690 100644 --- a/webapp/src/locales/de.json +++ b/webapp/src/locales/de.json @@ -38,7 +38,10 @@ "Release": "Loslassen zum Aktualisieren", "Close": "Schließen", "Yes": "Ja", - "No": "Nein" + "No": "Nein", + "Unit": "Einheit", + "MqttJsonPath": "Optional: JSON-Pfad", + "MqttJsonPathDescription": "Anwendungsspezifischer JSON-Pfad um den Wert in den JSON Nutzdatzen zu finden, z.B. 'electricLevel'. Leer lassen, falls die Nutzdaten des Topics einen numerischen Wert enthält." }, "wait": { "NotReady": "OpenDTU-OnBattery ist noch nicht bereit", @@ -175,7 +178,7 @@ "Seconds": "vor {val} Sekunden", "Property": "Eigenschaft", "Value": "Wert", - "Unit": "Einheit", + "Unit": "@:base.Unit", "section_device": "Geräteinformation", "device": { "LOAD": "Status Lastausgang", @@ -595,8 +598,25 @@ "EnableSolarCharger": "Aktiviere Schnittstelle", "Provider": "Datenanbieter", "ProviderVeDirect": "Victron MPPT(s) per VE.Direct Schnittstelle", + "ProviderMqtt": "Solarladereglerwerte aus MQTT Broker", "VerboseLogging": "@:base.VerboseLogging", - "MqttPublishUpdatesOnly": "Werte nur bei Änderung an MQTT broker senden" + "MqttPublishUpdatesOnly": "Werte nur bei Änderung an MQTT broker senden", + "CalculateOutputPower": "MPPT-Ausgangsleistung berechnen", + "CalculateOutputPowerDescription": "Wenn aktiviert, wird die Ausgangsleistung des MPPT basierend auf den Strom- und Spannungswerten berechnet. Wenn deaktiviert, wird die Ausgangsleistung direkt vom MPPT übernommen.", + "OutputPowerUsageHint": "Hinweis: Die Ausgangsleistung wird von der DPL-Solar-Passthrough-Funktion verwendet. Weitere Details findest du hier.", + "MqttJsonPath": "@:base.MqttJsonPath", + "MqttJsonPathDescription": "@:base.MqttJsonPathDescription", + "MqttOutputPowerConfiguration": "Einstellungen Ausgangsleistung", + "MqttOutputPowerTopic": "Ausgangsleistung Topic", + "MqttOutputPowerUnit": "@:base.Unit", + "MqttOutputCurrentConfiguration": "Einstellungen Ausgangsstrom", + "MqttOutputCurrentUsageHint": "Hinweis: Der Ausgangsstrom wird verwendet, um die Ausgangsleistung basierend auf den Strom- und Spannungswerten zu berechnen, wenn 'MPPT-Ausgangsleistung berechnen' aktiviert ist.", + "MqttOutputCurrentTopic": "Ausgangsstrom Topic", + "MqttOutputCurrentUnit": "@:base.Unit", + "MqttOutputVoltageConfiguration": "Einstellungen Ausgangsspannung", + "MqttOutputVoltagetUsageHint": "Hinweis: Die Ausgangsspannung wird als Ersatzspannung für die DPL verwendet, wenn die Batteriespannung nicht bekannt ist, und ist erforderlich, wenn 'MPPT-Ausgangsleistung berechnen' aktiviert ist. Weitere Details findest du hier.", + "MqttOutputVoltageTopic": "Ausgangsspannung Topic", + "MqttOutputVoltageUnit": "@:base.Unit" }, "powermeteradmin": { "PowerMeterSettings": "Stromzähler Einstellungen", @@ -627,7 +647,7 @@ "httpEnabled": "Wert aktiviert", "valueJsonPath": "JSON-Pfad", "valueJsonPathDescription": "Anwendungsspezifischer JSON-Pfad um den Leistungswert in den JSON Nutzdatzen zu finden, z.B. 'power/total/watts' oder nur 'total'.", - "valueUnit": "Einheit", + "valueUnit": "@:base.Unit", "valueSignInverted": "Vorzeichen umkehren", "valueSignInvertedHint": "Positive Werte werden als Leistungsabnahme aus dem Netz interpretiert. Diese Option muss aktiviert werden, wenn das Vorzeichen des Wertes die gegenteilige Bedeutung hat.", "testHttpJsonHeader": "Konfiguration testen", @@ -727,9 +747,9 @@ "ProviderPytesCan": "Pytes per CAN-Bus", "MqttSocConfiguration": "Einstellungen SoC", "MqttVoltageConfiguration": "Einstellungen Spannung", - "MqttJsonPath": "Optional: JSON-Pfad", - "MqttJsonPathDescription": "Anwendungsspezifischer JSON-Pfad um den Wert in den JSON Nutzdatzen zu finden, z.B. 'electricLevel'. Leer lassen, falls die Nutzdaten des Topics einen numerischen Wert enthält.", - "MqttVoltageUnit": "Einheit", + "MqttJsonPath": "@:base.MqttJsonPath", + "MqttJsonPathDescription": "@:base.MqttJsonPathDescription", + "MqttVoltageUnit": "@:base.Unit", "MqttSocTopic": "Topic für SoC", "MqttVoltageTopic": "Topic für Spannung", "SerialSettings": "Einstellungen Serielle Schnittstelle", @@ -749,7 +769,7 @@ "UseBatteryReportedDischargeCurrentLimit": "Von der Batterie übermitteltes Limit verwenden", "BatteryReportedDischargeCurrentLimitInfo": "Hinweis: Das niedrigste Limit wird angewendet, wobei das von der Batterie übermittelte Entladestromlimit nur verwendet wird, wenn in der letzten Minute ein Update eingegangen ist; andernfalls dient das zuvor festgelegte Limit als Fallback.", "MqttDischargeCurrentTopic": "Topic für Entladestromlimit", - "MqttAmperageUnit": "Einheit" + "MqttAmperageUnit": "@:base.Unit" }, "inverteradmin": { "InverterSettings": "Wechselrichter Einstellungen", @@ -924,7 +944,7 @@ "Output": "Ausgang", "Property": "Eigenschaft", "Value": "Wert", - "Unit": "Einheit", + "Unit": "@:base.Unit", "input_voltage": "Eingangsspannung", "input_current": "Eingangsstrom", "input_power": "Eingangsleistung", @@ -984,7 +1004,7 @@ "yes": "@:base.Yes", "no": "@:base.No", "Value": "Wert", - "Unit": "Einheit", + "Unit": "@:base.Unit", "SoC": "Ladezustand (SoC)", "stateOfHealth": "Batteriezustand (SoH)", "voltage": "Spannung", diff --git a/webapp/src/locales/en.json b/webapp/src/locales/en.json index ba0459992..948cf9029 100644 --- a/webapp/src/locales/en.json +++ b/webapp/src/locales/en.json @@ -38,7 +38,10 @@ "Release": "Release to refresh", "Close": "Close", "Yes": "Yes", - "No": "No" + "No": "No", + "Unit": "Unit", + "MqttJsonPath": "Optional: JSON Path", + "MqttJsonPathDescription": "Application specific JSON path to find the value in the JSON payload, e.g., 'electricLevel'. Leave empty if the topic's payload contains a plain numeric value." }, "wait": { "NotReady": "OpenDTU-OnBattery is not yet ready", @@ -175,7 +178,7 @@ "Seconds": "{val} seconds", "Property": "Property", "Value": "Value", - "Unit": "Unit", + "Unit": "@:base.Unit", "section_device": "Device Info", "device": { "LOAD": "Load output state", @@ -597,8 +600,25 @@ "EnableSolarCharger": "Enable Interface", "Provider": "Data Provider", "ProviderVeDirect": "Victron MPPT(s) using VE.Direct interface", + "ProviderMqtt": "Solar Charger data from MQTT broker", "VerboseLogging": "@:base.VerboseLogging", - "MqttPublishUpdatesOnly": "Publish values to MQTT only when they change" + "MqttPublishUpdatesOnly": "Publish values to MQTT only when they change", + "CalculateOutputPower": "Calculate MPPT output power", + "CalculateOutputPowerDescription": "If enabled, the output power of the MPPT will be calculated based on the current and voltage values. If disabled, the output power will be taken from the MPPT directly.", + "OutputPowerUsageHint": "Hint: The output power is used by the DPL solar-passthrough feature. Details can be found here.", + "MqttJsonPath": "@:base.MqttJsonPath", + "MqttJsonPathDescription": "@:base.MqttJsonPathDescription", + "MqttOutputPowerConfiguration": "Output Power Settings", + "MqttOutputPowerTopic": "Output Power Topic", + "MqttOutputPowerUnit": "@:base.Unit", + "MqttOutputCurrentConfiguration": "Output Current Settings", + "MqttOutputCurrentUsageHint": "Hint: The output current is used to calculate the output power based on the current and voltage values when 'Calculate MPPT output power' is enabled.", + "MqttOutputCurrentTopic": "Output Current Topic", + "MqttOutputCurrentUnit": "@:base.Unit", + "MqttOutputVoltageConfiguration": "Output Voltage Settings", + "MqttOutputVoltagetUsageHint": "Hint: The output voltage is used as a fallback voltage for the DPL when the battery voltage is not known, and is needed when 'Calculate MPPT output power' is enabled. Details can be found here.", + "MqttOutputVoltageTopic": "Output Voltage Topic", + "MqttOutputVoltageUnit": "@:base.Unit" }, "powermeteradmin": { "PowerMeterSettings": "Power Meter Settings", @@ -629,7 +649,7 @@ "httpEnabled": "Value Enabled", "valueJsonPath": "JSON Path", "valueJsonPathDescription": "Application specific JSON path to find the power value in the JSON payload, e.g., 'power/total/watts' or simply 'total'.", - "valueUnit": "Unit", + "valueUnit": "@:base.Unit", "valueSignInverted": "Change Sign", "valueSignInvertedHint": "Is is expected that positive values denote power usage from the grid. Check this option if the sign of this value has the opposite meaning.", "testHttpJsonHeader": "Test Configuration", @@ -730,9 +750,9 @@ "MqttConfiguration": "MQTT Settings", "MqttSocConfiguration": "SoC Settings", "MqttVoltageConfiguration": "Voltage Settings", - "MqttJsonPath": "Optional: JSON Path", - "MqttJsonPathDescription": "Application specific JSON path to find the value in the JSON payload, e.g., 'electricLevel'. Leave empty if the topic's payload contains a plain numeric value.", - "MqttVoltageUnit": "Unit", + "MqttJsonPath": "@:base.MqttJsonPath", + "MqttJsonPathDescription": "@:base.MqttJsonPathDescription", + "MqttVoltageUnit": "@:base.Unit", "MqttSocTopic": "SoC Value Topic", "MqttVoltageTopic": "Voltage Value Topic", "SerialSettings": "Serial Settings", @@ -752,7 +772,7 @@ "UseBatteryReportedDischargeCurrentLimit": "Use Battery-Reported limit", "BatteryReportedDischargeCurrentLimitInfo": "Hint: The lowest limit will be applied, with the battery-reported discharge current limit used only if an update was received in the last minute; otherwise, the previously specified limit will act as a fallback.", "MqttDischargeCurrentTopic": "Discharge Current Limit Value Topic", - "MqttAmperageUnit": "Unit" + "MqttAmperageUnit": "@:base.Unit" }, "inverteradmin": { "InverterSettings": "Inverter Settings", @@ -928,7 +948,7 @@ "Output": "Output", "Property": "Property", "Value": "Value", - "Unit": "Unit", + "Unit": "@:base.Unit", "input_voltage": "Input voltage", "input_current": "Input current", "input_power": "Input power", @@ -988,7 +1008,7 @@ "yes": "@:base.Yes", "no": "@:base.No", "Value": "Value", - "Unit": "Unit", + "Unit": "@:base.Unit", "SoC": "State of Charge", "stateOfHealth": "State of Health", "voltage": "Voltage", diff --git a/webapp/src/views/SolarChargerAdminView.vue b/webapp/src/views/SolarChargerAdminView.vue index b4b901ced..4a2c80ec3 100644 --- a/webapp/src/views/SolarChargerAdminView.vue +++ b/webapp/src/views/SolarChargerAdminView.vue @@ -41,9 +41,166 @@ type="checkbox" wide /> + + + + @@ -74,7 +231,25 @@ export default defineComponent({ alertMessage: '', alertType: 'info', showAlert: false, - providerTypeList: [{ key: 0, value: 'VeDirect' }], + providerTypeList: [ + { key: 0, value: 'VeDirect' }, + { key: 1, value: 'Mqtt' }, + ], + wattageUnitTypeList: [ + { key: 0, value: 'W' }, + { key: 1, value: 'mW' }, + { key: 2, value: 'kW' }, + ], + voltageUnitTypeList: [ + { key: 0, value: 'V' }, + { key: 1, value: 'dV' }, + { key: 2, value: 'cV' }, + { key: 3, value: 'mV' }, + ], + amperageUnitTypeList: [ + { key: 0, value: 'A' }, + { key: 1, value: 'mA' }, + ], }; }, created() {