diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java
index 9ec70f94eb..3b635d65c5 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java
@@ -680,6 +680,7 @@ public class DeviceSettingsPreferenceConst {
public static final String PREF_BATTERY_MAXIMUM_CHARGE = "battery_maximum_charge";
public static final String PREF_BATTERY_ALLOW_PASS_THROUGH = "battery_allow_pass_through";
public static final String PREF_OUTPUT_POWER_GRID = "output_power_grid";
+ public static final String PREF_OFFGRID_MODE = "offgrid_mode";
public static final String PREF_DISPLAY_ENABLED = "display_enabled";
public static final String PREF_DISPLAY_ENABLED_ALL_DAY = "display_all_day";
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java
index 025083d94d..4f8477f576 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java
@@ -1004,6 +1004,7 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i
addPreferenceHandlerFor(PREF_BATTERY_MAXIMUM_CHARGE);
addPreferenceHandlerFor(PREF_BATTERY_ALLOW_PASS_THROUGH);
addPreferenceHandlerFor(PREF_OUTPUT_POWER_GRID);
+ addPreferenceHandlerFor(PREF_OFFGRID_MODE);
addPreferenceHandlerFor(PREF_DISPLAY_ENABLED);
addPreferenceHandlerFor(PREF_DISPLAY_ENABLED_ALL_DAY);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zendure/SolarFlowDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zendure/SolarFlowDeviceCoordinator.java
index a394bfd47a..2824435029 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zendure/SolarFlowDeviceCoordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zendure/SolarFlowDeviceCoordinator.java
@@ -93,6 +93,7 @@ public class SolarFlowDeviceCoordinator extends AbstractBLEDeviceCoordinator {
R.xml.devicesettings_battery_minimum_charge,
R.xml.devicesettings_battery_maximum_charge,
R.xml.devicesettings_output_power_grid,
+ R.xml.devicesettings_offgrid_mode_on_off_eco
};
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zendure/SolarFlowDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zendure/SolarFlowDeviceSupport.java
index 91a20457b3..ff60d211b7 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zendure/SolarFlowDeviceSupport.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zendure/SolarFlowDeviceSupport.java
@@ -18,6 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.zendure;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_BATTERY_MAXIMUM_CHARGE;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_BATTERY_MINIMUM_CHARGE;
+import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_OFFGRID_MODE;
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_OUTPUT_POWER_GRID;
import android.bluetooth.BluetoothGatt;
@@ -58,6 +59,7 @@ public class SolarFlowDeviceSupport extends AbstractBTLESingleDeviceSupport {
private int solarPower3 = -1;
private int solarPower4 = -1;
private int gridOffPower = -1;
+ private int gridOffMode = -1;
private int outputHomePower = -1;
private int minSoc = -1;
private int socSet = -1;
@@ -178,6 +180,15 @@ public class SolarFlowDeviceSupport extends AbstractBTLESingleDeviceSupport {
if (outputLimit > 2400) outputLimit = 2400;
sendWriteProperty("outputLimit", outputLimit);
}
+ case PREF_OFFGRID_MODE -> {
+ String offGridMode = devicePrefs.getString(PREF_OFFGRID_MODE, "off");
+ int gridOffMode = switch (offGridMode) {
+ case "on" -> 0;
+ case "eco" -> 1;
+ default -> 2;
+ };
+ sendWriteProperty("gridOffMode", gridOffMode);
+ }
default -> LOG.warn("Unknown config changed: {}", config);
}
}
@@ -198,7 +209,6 @@ public class SolarFlowDeviceSupport extends AbstractBTLESingleDeviceSupport {
}
-
}
private void sendMessage(JSONObject message) {
@@ -222,6 +232,9 @@ public class SolarFlowDeviceSupport extends AbstractBTLESingleDeviceSupport {
if (properties.has("gridOffPower")) {
gridOffPower = properties.getInt("gridOffPower");
}
+ if (properties.has("gridOffMode")) {
+ gridOffMode = properties.getInt("gridOffMode");
+ }
if (properties.has("outputHomePower")) {
outputHomePower = properties.getInt("outputHomePower");
}
@@ -306,6 +319,12 @@ public class SolarFlowDeviceSupport extends AbstractBTLESingleDeviceSupport {
devicePrefsEdit.putString(PREF_BATTERY_MINIMUM_CHARGE, String.valueOf(minSoc));
devicePrefsEdit.putString(PREF_BATTERY_MAXIMUM_CHARGE, String.valueOf(socSet));
devicePrefsEdit.putString(PREF_OUTPUT_POWER_GRID, String.valueOf(outputLimit));
+ String offGridMode = switch (gridOffMode) {
+ case 0 -> "on";
+ case 1 -> "eco";
+ default -> "off";
+ };
+ devicePrefsEdit.putString(PREF_OFFGRID_MODE, offGridMode);
devicePrefsEdit.apply();
devicePrefsEdit.commit();
}
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 4a484083e1..2294601b6f 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -5316,4 +5316,15 @@
- pound
- stone
+
+
+ - @string/on
+ - @string/off
+ - @string/eco
+
+
+ - on
+ - off
+ - eco
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2a0792a075..b4f2a32711 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4483,4 +4483,6 @@
Permission missing
Access to the Bangle.js app loader is currently not allowed by your settings. Please go to the internet helper settings in the external integrations settings to enable it.
SolarFlow
+ Eco
+ Off-grid mode
diff --git a/app/src/main/res/xml/devicesettings_offgrid_mode_on_off_eco.xml b/app/src/main/res/xml/devicesettings_offgrid_mode_on_off_eco.xml
new file mode 100644
index 0000000000..f34bf56e4d
--- /dev/null
+++ b/app/src/main/res/xml/devicesettings_offgrid_mode_on_off_eco.xml
@@ -0,0 +1,12 @@
+
+
+
+
+