<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Energy System Simulation on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/energy-system-simulation/</link>
        <description>Recent content in Energy System Simulation on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 13 May 2025 15:30:26 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/energy-system-simulation/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>EOS</title>
        <link>https://producthunt.programnotes.cn/en/p/eos/</link>
        <pubDate>Tue, 13 May 2025 15:30:26 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/eos/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1721766828190-b5f6ae10caf0?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDcxMjEzMzF8&amp;ixlib=rb-4.1.0" alt="Featured image of post EOS" /&gt;&lt;h1 id=&#34;akkudoktor-eoseos&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Akkudoktor-EOS/EOS&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Akkudoktor-EOS/EOS&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;energy-system-simulation-and-optimization&#34;&gt;Energy System Simulation and Optimization
&lt;/h1&gt;&lt;p&gt;This project provides a comprehensive solution for simulating and optimizing an energy system based on renewable energy sources. With a focus on photovoltaic (PV) systems, battery storage (batteries), load management (consumer requirements), heat pumps, electric vehicles, and consideration of electricity price data, this system enables forecasting and optimization of energy flow and costs over a specified period.&lt;/p&gt;
&lt;p&gt;Documentation can be found at &lt;a class=&#34;link&#34; href=&#34;https://akkudoktor-eos.readthedocs.io/en/latest/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Akkudoktor-EOS&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;getting-involved&#34;&gt;Getting Involved
&lt;/h2&gt;&lt;p&gt;See &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;system-requirements&#34;&gt;System requirements
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Python &amp;gt;= 3.11, &amp;lt; 3.13&lt;/li&gt;
&lt;li&gt;Architecture: amd64, aarch64 (armv8)&lt;/li&gt;
&lt;li&gt;OS: Linux, Windows, macOS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: For Python 3.13 some dependencies (e.g. &lt;a class=&#34;link&#34; href=&#34;https://github.com/python-pendulum/Pendulum&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pendulum&lt;/a&gt;) are not yet available on &lt;a class=&#34;link&#34; href=&#34;https://pypi.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://pypi.org&lt;/a&gt; and have to be manually compiled (a recent &lt;a class=&#34;link&#34; href=&#34;https://www.rust-lang.org/tools/install&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Rust&lt;/a&gt; installation is required).&lt;/p&gt;
&lt;p&gt;Other architectures (e.g. armv6, armv7) are unsupported for now, because a multitude of dependencies are not available on &lt;a class=&#34;link&#34; href=&#34;https://piwheels.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://piwheels.org&lt;/a&gt; and have to be built manually (a recent Rust installation and &lt;a class=&#34;link&#34; href=&#34;https://gcc.gnu.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GCC&lt;/a&gt; are required, Python 3.11 is recommended).&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;The project requires Python 3.11 or newer. Docker images (amd64/aarch64) can be found at &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/akkudoktor/eos&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;akkudoktor/eos&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Following sections describe how to locally start the EOS server on &lt;code&gt;http://localhost:8503&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;run-from-source&#34;&gt;Run from source
&lt;/h3&gt;&lt;p&gt;Install dependencies in virtual environment:&lt;/p&gt;
&lt;p&gt;Linux:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m venv .venv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.venv/bin/pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.venv/bin/pip install -e .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cmd&#34; data-lang=&#34;cmd&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m venv .venv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.venv\Scripts\Activate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.venv\Scripts\pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.venv\Scripts\pip install -e .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Finally, start the EOS server to access it at &lt;code&gt;http://localhost:8503&lt;/code&gt; (API docs at &lt;code&gt;http://localhost:8503/docs&lt;/code&gt;):&lt;/p&gt;
&lt;p&gt;Linux:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.venv/bin/python src/akkudoktoreos/server/eos.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cmd&#34; data-lang=&#34;cmd&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.venv\Scripts\python src/akkudoktoreos/server/eos.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;docker&#34;&gt;Docker
&lt;/h3&gt;&lt;p&gt;Start EOS with following command to access it at &lt;code&gt;http://localhost:8503&lt;/code&gt; (API docs at &lt;code&gt;http://localhost:8503/docs&lt;/code&gt;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you are running the EOS container on a system hosting multiple services, such as a Synology NAS, and want to allow external network access to EOS, please ensure that the default exported ports (8503, 8504) are available on the host. On Synology systems, these ports might already be in use (refer to &lt;a class=&#34;link&#34; href=&#34;https://kb.synology.com/en-me/DSM/tutorial/What_network_ports_are_used_by_Synology_services&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;this guide&lt;/a&gt;). If the ports are occupied, you will need to reconfigure the exported ports accordingly.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration
&lt;/h2&gt;&lt;p&gt;This project uses the &lt;code&gt;EOS.config.json&lt;/code&gt; file to manage configuration settings.&lt;/p&gt;
&lt;h3 id=&#34;default-configuration&#34;&gt;Default Configuration
&lt;/h3&gt;&lt;p&gt;A default configuration file &lt;code&gt;default.config.json&lt;/code&gt; is provided. This file contains all the necessary configuration keys with their default values.&lt;/p&gt;
&lt;h3 id=&#34;custom-configuration&#34;&gt;Custom Configuration
&lt;/h3&gt;&lt;p&gt;Users can specify a custom configuration directory by setting the environment variable &lt;code&gt;EOS_DIR&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the directory specified by &lt;code&gt;EOS_DIR&lt;/code&gt; contains an existing &lt;code&gt;config.json&lt;/code&gt; file, the application will use this configuration file.&lt;/li&gt;
&lt;li&gt;If the &lt;code&gt;EOS.config.json&lt;/code&gt; file does not exist in the specified directory, the &lt;code&gt;default.config.json&lt;/code&gt; file will be copied to the directory as &lt;code&gt;EOS.config.json&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;configuration-updates&#34;&gt;Configuration Updates
&lt;/h3&gt;&lt;p&gt;If the configuration keys in the &lt;code&gt;EOS.config.json&lt;/code&gt; file are missing or different from those in &lt;code&gt;default.config.json&lt;/code&gt;, they will be automatically updated to match the default settings, ensuring that all required keys are present.&lt;/p&gt;
&lt;h2 id=&#34;classes-and-functionalities&#34;&gt;Classes and Functionalities
&lt;/h2&gt;&lt;p&gt;This project uses various classes to simulate and optimize the components of an energy system. Each class represents a specific aspect of the system, as described below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Battery&lt;/code&gt;: Simulates a battery storage system, including capacity, state of charge, and now charge and discharge losses.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;PVForecast&lt;/code&gt;: Provides forecast data for photovoltaic generation, based on weather data and historical generation data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Load&lt;/code&gt;: Models the load requirements of a household or business, enabling the prediction of future energy demand.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Heatpump&lt;/code&gt;: Simulates a heat pump, including its energy consumption and efficiency under various operating conditions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Strompreis&lt;/code&gt;: Provides information on electricity prices, enabling optimization of energy consumption and generation based on tariff information.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;EMS&lt;/code&gt;: The Energy Management System (EMS) coordinates the interaction between the various components, performs optimization, and simulates the operation of the entire energy system.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These classes work together to enable a detailed simulation and optimization of the energy system. For each class, specific parameters and settings can be adjusted to test different scenarios and strategies.&lt;/p&gt;
&lt;h3 id=&#34;customization-and-extension&#34;&gt;Customization and Extension
&lt;/h3&gt;&lt;p&gt;Each class is designed to be easily customized and extended to integrate additional functions or improvements. For example, new methods can be added for more accurate modeling of PV system or battery behavior. Developers are invited to modify and extend the system according to their needs.&lt;/p&gt;
&lt;h2 id=&#34;server-api&#34;&gt;Server API
&lt;/h2&gt;&lt;p&gt;See the Swagger API documentation for detailed information: &lt;a class=&#34;link&#34; href=&#34;https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EOS OpenAPI Spec&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;further-resources&#34;&gt;Further resources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://meintechblog.de/2024/09/05/andreas-schmitz-joerg-installiert-mein-energieoptimierungssystem/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Installation guide (de)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
