var ConfigData = { statesPrefix: '0_userdata.0.ecoflow', RegulationState: "Regulate", PriceLevelID: "tibberlink.0.Homes.dfefdc35-4e8e-43a8-800f-64e5fe315d10.CurrentPrice.level" // Placeholder for the actual ID for price level }; // Check for solar power and price level, and control the regulation state function controlRegulationBasedOnSolarPowerAndPrice() { let solarPowerState = getState(ConfigData.statesPrefix + ".totalPV").val; let priceLevel = getState(ConfigData.PriceLevelID).val; // Get current price level let regulate = getState(ConfigData.statesPrefix + "." + ConfigData.RegulationState).val; // Convert to boolean as getState().val might return string regulate = (regulate === 'true' || regulate === true); // Check for solar power presence and price level if (solarPowerState > 0 && (priceLevel === "CHEAP" || priceLevel === "VERY_CHEAP")) { // Conditions met: solar power present and price is cheap or very cheap if (regulate) { setState(ConfigData.statesPrefix + "." + ConfigData.RegulationState, false); // Disable regulation log("Regulation disabled due to solar power and favorable price level."); } } else { // If conditions are not met and regulation is currently disabled, enable it if (!regulate) { setState(ConfigData.statesPrefix + "." + ConfigData.RegulationState, true); // Enable regulation log("Regulation enabled as conditions are not met."); } } } // Setup event listeners for changes in solar power state and price level on({id: ConfigData.statesPrefix + ".totalPV", change: "ne"}, function () { controlRegulationBasedOnSolarPowerAndPrice(); }); on({id: ConfigData.PriceLevelID, change: "ne"}, function () { controlRegulationBasedOnSolarPowerAndPrice(); }); // Call the function initially to set up the correct state controlRegulationBasedOnSolarPowerAndPrice();