reserve85 / HoymilesZeroExport

Zero Export Script for Hoymiles Inverters using AhoyDTU / OpenDTU and Tasmota Smart Meter inferface / Shelly 3EM / SHRDZM / Emlog / ioBroker
GNU General Public License v3.0
135 stars 31 forks source link

Power Peak detection für Kühlschränke und Kurzzeitschwankungen #225

Open BlackcatSandy opened 3 weeks ago

BlackcatSandy commented 3 weeks ago

Lieber Tobias, vielen Dank für deine tolle Arbeit, ich bin aktuell intensiv am testen und habe 3 Probleme festgestellt, hier eins davon das ich schon gefixt habe.

Ich habe hier eine Code Änderung zur detection von Kühlschrank peaks siehe unten: IMG_1488 Zu Kühlschrank wird ignoriert IMG_1498 Hier sieht man aber auch deutlich das zweite Problem. Ist der Wechselrichter aus und startet wieder setzt er sich auf den eingestellten Set wert bei mir 135w und das Skript springt erst wieder aktiv ein wenn ich selber kurz einen Wert im ahoy setze… somit lief heute morgen wieder nicht. Das dritte Problem ist ganz selten, es ist wenn der Wechselrichter den Befehl nicht angenommen hatte und dann verhaspelt es sich. Hier habe ich mal beim ahoy Team angefragt ob man den bestätigungswert nicht auch per MQTT bereitstellen könnte. Also dann easy fix.

Hierfür habe ich folgenden Parameter eingeführt: IMG_1495

# power peak detection in W (for example fridge) to delay one interval cycle before setting new limits (0 = disabled)
POWER_PEAK_WATTS = 250

und folgenden Code ergänzt, der ein Intervall Skipped (also bei 3 Sekunden schaltet er dann erst wenn der Verbrauch noch da ist bei 6). IMG_1496


    prevLimitSetpointPeakTrigger = 0;

und

IMG_1497 IMG_1500


 # producing too little power: increase limit
            elif powermeterWatts > (powermeter_target_point + powermeter_tolerance):
                if PreviousLimitSetpoint < GetMaxWattFromAllInverters():
                    # check if peak detection is on: 
                    if (POWER_PEAK_WATTS > 0) and (powermeterWatts - powermeter_target_point > POWER_PEAK_WATTS) and (prevLimitSetpointPeakTrigger == 0):
                        prevLimitSetpointPeakTrigger = 1
                        newLimitSetpoint = PreviousLimitSetpoint
                        logger.info("Not enough energy producing: Peak detected, waiting for next interval cycle")
                    else:
prevLimitSetpointPeakTrigger = 0

Nicht wundern habe kein git auf dem Server und arbeite von meinem iPad 😅 Viele Grüße Sandra

BlackcatSandy commented 3 weeks ago

IMG_1507

das ist das Ergebnis von heute Nacht, ein Großteil der Peaks wurde ignoriert, bis leider der Wechselrichter zum runterschalten nach einem längeren Peak einen Befehl nicht angenommen hatte 😢 und schwupp war der Akku leer

ich muss deinen neuen Patch mal einarbeiten, den habe ich noch nicht ausprobiert, damit wäre es wahrscheinlich nicht mehr passiert

reserve85 commented 3 weeks ago

Sorry, ich hatte echt noch keine Zeit gehabt bisher...

zu 1.: das bedeutet, du filterst einen Peak raus, und regelst dann den Hoymiles nicht hoch? zu 2.: kannst du die Log-Dateien vom Script mal anhängen? vor allem so ab 3 Uhr heute wäre interessant. Die config wenn möglich auch. Logs kannst du mit sudo journalctl -u HoymilesZeroExport.service -n 20000 -e > log.log exportieren (musst die 20000 zeilen evtl anpassen) kannst du hier als zip anhängen oder via email an mich

BlackcatSandy commented 3 weeks ago
  1. genau eigentlich ganz einfach, ist die Differenz vom neuen Verbrauch größer als die Summe deines zielwertes plus die eingestellte Reaktionshöhe, überspringt er eine Hochregellung, in dem ich keinen neuen Limit Wert setze. Im log sieht man es ganz gut, nur scheinbar ist noch ein Bug dass an ich irgendwo anders noch den Wert wieder zurücksetzen muss (im Log nach Peak suchen)
  2. klar habe ich dir angehängt. Merge aber gerade deine aktuelle Version, denn ich denke das ist ein fehlendes Acc des Hoymiles und somit hat der dann wieder nicht mehr geregelt. Das heißt ich muss jetzt auch erstmal wieder selbst im Ahoy Schalten um ihn wieder auf track zu bringen. Dafür brauche ich aber mehr Sonne XD (hier findest du die Stelle einfach wenn du nach 600W suchst) log.log
BlackcatSandy commented 3 weeks ago

Merge ist durch, wie gesagt irgendwo muss ich wahrscheinlich bei den Sondernlocken noch prevLimitSetpointPeakTrigger = 0; einbauen um den Peak zurück zusetzen. HoymilesZeroExport.zip Wichtig aber noch den Config Wert in der ini ;)

PS: nach dem Merge hat sich das ganze ohne dass ich bei DTU schalten musste wieder aktiviert (Stand ja noch auf 600W), denke wie gesagt dadurch sollte der Hängenbleiben bug durch nicht akzeptierte Werte schon raus sein. Also Problem 3.... ggf. wird aber das aufweckproblem (2) damit auch gelöst. Ich teste weiter

reserve85 commented 3 weeks ago

hier siehst du es, dass AHOY wohl das problem hat:

Aug 20 03:42:48 nano python3[3555478]: 2024-08-20 03:42:48 INFO     powermeter Shelly3EMPro: 32 Watt
Aug 20 03:42:51 nano python3[3555478]: 2024-08-20 03:42:51 INFO     Inverterlimit was already accepted at 185 Watt
Aug 20 03:42:51 nano python3[3555478]: 2024-08-20 03:42:51 INFO     Ahoy: Inverter "Balkonkraftwerk" Available: True
Aug 20 03:42:51 nano python3[3555478]: 2024-08-20 03:42:51 INFO     powermeter Shelly3EMPro: 37 Watt
Aug 20 03:42:54 nano python3[3555478]: 2024-08-20 03:42:54 INFO     Inverterlimit was already accepted at 185 Watt
Aug 20 03:42:54 nano python3[3555478]: 2024-08-20 03:42:54 INFO     Ahoy: Inverter "Balkonkraftwerk" Available: True
Aug 20 03:42:54 nano python3[3555478]: 2024-08-20 03:42:54 INFO     powermeter Shelly3EMPro: 601 Watt
Aug 20 03:42:54 nano python3[3555478]: 2024-08-20 03:42:54 INFO     setting new limit to 600 Watt
Aug 20 03:42:54 nano python3[3555478]: 2024-08-20 03:42:54 INFO     Ahoy: Inverter "Balkonkraftwerk": setting new limit from 185 Watt to 600 Watt
Aug 20 03:42:54 nano python3[3555478]: 2024-08-20 03:42:54 INFO     Ahoy: Inverter "Balkonkraftwerk": Limit acknowledged
Aug 20 03:42:58 nano python3[3555478]: 2024-08-20 03:42:58 INFO     Ahoy: Inverter "Balkonkraftwerk" Available: True
Aug 20 03:42:58 nano python3[3555478]: 2024-08-20 03:42:58 INFO     powermeter Shelly3EMPro: -291 Watt
Aug 20 03:43:01 nano python3[3555478]: 2024-08-20 03:43:01 INFO     intermediate meter AhoyDTU: 157 Watt
Aug 20 03:43:01 nano python3[3555478]: 2024-08-20 03:43:01 INFO     overproducing: reduce limit based on actual power
Aug 20 03:43:01 nano python3[3555478]: 2024-08-20 03:43:01 INFO     setting new limit to 30 Watt
Aug 20 03:43:01 nano python3[3555478]: 2024-08-20 03:43:01 INFO     Ahoy: Inverter "Balkonkraftwerk": setting new limit from 600 Watt to 30 Watt
Aug 20 03:43:01 nano python3[3555478]: 2024-08-20 03:43:01 INFO     Ahoy: Inverter "Balkonkraftwerk": Limit acknowledged
Aug 20 03:43:01 nano python3[3555478]: 2024-08-20 03:43:01 INFO     Ahoy: Inverter "Balkonkraftwerk" Available: True
Aug 20 03:43:01 nano python3[3555478]: 2024-08-20 03:43:01 INFO     powermeter Shelly3EMPro: -291 Watt
Aug 20 03:43:04 nano python3[3555478]: 2024-08-20 03:43:04 INFO     overproducing: reduce limit based on previous limit setpoint by approximation
Aug 20 03:43:04 nano python3[3555478]: 2024-08-20 03:43:04 INFO     Inverterlimit was already accepted at 30 Watt
Aug 20 03:43:04 nano python3[3555478]: 2024-08-20 03:43:04 INFO     Ahoy: Inverter "Balkonkraftwerk" Available: True
Aug 20 03:43:04 nano python3[3555478]: 2024-08-20 03:43:04 INFO     powermeter Shelly3EMPro: -287 Watt
Aug 20 03:43:07 nano python3[3555478]: 2024-08-20 03:43:07 INFO     overproducing: reduce limit based on previous limit setpoint by approximation
Aug 20 03:43:07 nano python3[3555478]: 2024-08-20 03:43:07 INFO     Inverterlimit was already accepted at 30 Watt
Aug 20 03:43:08 nano python3[3555478]: 2024-08-20 03:43:08 INFO     Ahoy: Inverter "Balkonkraftwerk" Available: True
Aug 20 03:43:08 nano python3[3555478]: 2024-08-20 03:43:08 INFO     powermeter Shelly3EMPro: -291 Watt

meldet "Limit acknowledged" und stellt nicht um...

kannst du in den Logs nach dem "aufweckproblem" schauen? Evtl lässt sich da was ableiten...

BlackcatSandy commented 3 weeks ago

Genau, das ist das Problem das ich seit Anfang regelmäßig beobachten kann. Gefixt wäre es halt richtig einfach wenn man von ahoy direkt die Bestätigung bekäme und kein timeout (aktuell bei mir 3s). Aber mit deiner echten wert überprüfen aus dem letzten Update sollte das ja dann auch egal sein wenn er sich mal ein paar Sekunden verschluckt. (hoffe ich zumindest) denke aber wie gesagt es ist nicht Ahoy sondern direkt der Wechselrichter der nicht hinterher kam

reserve85 commented 3 weeks ago

Mit AHOY <= 0.8.129 gab es so ein Verhalten definitiv nicht. Ich habe den Fix erst eingebaut weil ich es ein mal bei mir auch beobachten konnte nach dem Update auf 0.8.140... siehe auch https://github.com/lumapu/ahoy/issues/1726

edit: deine config würde ich gerne noch anschauen ob da alles passt

BlackcatSandy commented 3 weeks ago

Gut möglich, hatte schon bevor ich dein Script gefunden habe 1.3 im Einsatz gehabt. Bin sogar deshalb extra von meinem esp8266 auf einen esp32s3 umgezogen und habe jetzt die 1.41 seit Samstag am laufen. Wie du siehst mit dem komischen Verhalten. mein Verdacht, die alten ahoy hatten nur 30 sek poll und jetzt sind es 6 Sekunden und das überfrachtet den HM

BlackcatSandy commented 3 weeks ago

# HoymilesZeroExport - https://github.com/reserve85/HoymilesZeroExport
# Copyright (C) 2023, Tobias Kraft

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# ---------------------------------------------------------------------
# --- DO NOT DELETE ANY ENTRIES HERE - else your script won't start ---
# ---------------------------------------------------------------------

[VERSION]
VERSION = 1.98
[SELECT_DTU]
# --- define your DTU (only one) ---
USE_AHOY = true
USE_OPENDTU = false

[SELECT_POWERMETER]
# --- define your Powermeter (only one) ---
USE_TASMOTA = false
USE_SHELLY_EM = false
USE_SHELLY_3EM = false
USE_SHELLY_3EM_PRO = true
USE_SHRDZM = false
USE_EMLOG = false
USE_IOBROKER = false
USE_HOMEASSISTANT = false
USE_VZLOGGER = false
USE_SCRIPT = false
USE_AMIS_READER = false
USE_MQTT = false

[AHOY_DTU]
# --- defines for AHOY-DTU ---
# in settings/inverter set interval to 6 seconds!
AHOY_IP = 192.168.x.x
AHOY_PASS =

[OPEN_DTU]
# --- defines for OPEN-DTU ---
OPENDTU_IP = xxx.xxx.xxx.xxx
OPENDTU_USER = 
OPENDTU_PASS = 

[TASMOTA]
# --- defines for Tasmota Smartmeter Modul---
TASMOTA_IP = xxx.xxx.xxx.xxx
# if you restricted the web login enter your username and password
TASMOTA_USER = 
TASMOTA_PASS = 
# the following three constants describes how to navigate through the Tasmota-JSON. 
# if you do not know the format of your Tasmota reader, open a browser and put in the following string replacing xxx with the IP address of your Tasmota device: http://xxx.xxx.xxx.xxx/cm?cmnd=status%2010
# e.g. JSON_Result = {"StatusSNS":{"Time":"2023-02-28T12:49:49","SML":{"total_kwh":15011.575,"curr_w":-71}}}
TASMOTA_JSON_STATUS = StatusSNS
# Prefix for Web UI and MQTT JSON payload
TASMOTA_JSON_PAYLOAD_MQTT_PREFIX = SML
# Power-MQTT label (the current power in Watt, positive (import more energy than export) or negative (export more energy than import)).
TASMOTA_JSON_POWER_MQTT_LABEL = curr_w
# if your powermeter does NOT output the current power: you need to calculate it -> Power(W) = OBIS(1.7.0) - OBIS(2.7.0)
TASMOTA_JSON_POWER_CALCULATE = FALSE
# Power-MQTT Input label (positive active instantaneous power, e.g. OBIS Code 1.7.0)
TASMOTA_JSON_POWER_INPUT_MQTT_LABEL =
# Power-MQTT output label (negative active instantaneous power, e.g. OBIS Code 2.7.0)
TASMOTA_JSON_POWER_OUTPUT_MQTT_LABEL =

[SHELLY]
# --- defines for Shelly ---
SHELLY_IP = 192.168.x.x
# if you restricted the web login enter your username and password, for Shelly "Generation 2" devices the username is always "admin" (e.g. Shelly pro 3EM)
SHELLY_USER =
SHELLY_PASS =
# you can specify a specific emeter-index [possible values: 0...1] (if you have a Shelly-EM). If not defined, totalpower is calculated over all inputs.
EMETER_INDEX =

[SHRDZM]
# --- defines for SHRDZM Smartmeter Modul ---
SHRDZM_IP = xxx.xxx.xxx.xxx
SHRDZM_USER =
SHRDZM_PASS =

[EMLOG]
# --- defines for EMLOG (electronic meter log) System ---
EMLOG_IP = xxx.xxx.xxx.xxx
EMLOG_METERINDEX = 
# if your powermeter does NOT output the current power: you need to calculate it -> Power(W) = OBIS(1.7.0) - OBIS(2.7.0)
EMLOG_JSON_POWER_CALCULATE = TRUE

[IOBROKER]
# --- defines for IOBROKER (make sure you installed https://github.com/ioBroker/ioBroker.simple-api) ---
IOBROKER_IP = xxx.xxx.xxx.xxx
IOBROKER_PORT = 8087
IOBROKER_CURRENT_POWER_ALIAS = alias.0.Zaehler.Zaehler_CurrentWatt
# if your powermeter does NOT output the current power: you need to calculate it -> Power(W) = OBIS(1.7.0) - OBIS(2.7.0)
IOBROKER_POWER_CALCULATE = FALSE
# Power-MQTT Input label (positive active instantaneous power, e.g. OBIS Code 1.7.0)
IOBROKER_POWER_INPUT_ALIAS = alias.0.Zaehler.Zaehler_CurrentInputWatt
# Power-MQTT output label (negative active instantaneous power, e.g. OBIS Code 2.7.0)
IOBROKER_POWER_OUTPUT_ALIAS = alias.0.Zaehler.Zaehler_CurrentOutputWatt

[HOMEASSISTANT]
# --- defines for HOME ASSISTANT ---
HA_IP = xxx.xxx.xxx.xxx
HA_PORT = 8123
# if you run your HomeAssistant with "https" then define it here
HA_HTTPS = false
# you need to create a Long-Lived Access Token in your Home Assistant: click on your profile, then scroll down to the bottom
HA_ACCESSTOKEN = xxx
HA_CURRENT_POWER_ENTITY = sensor.dtz541_sml_curr_w
# if your powermeter does NOT output the current power: you need to calculate it -> Power(W) = OBIS(1.7.0) - OBIS(2.7.0)
HA_POWER_CALCULATE = FALSE
# Power-MQTT Input label (positive active instantaneous power, e.g. OBIS Code 1.7.0)
HA_POWER_INPUT_ALIAS = sensor.dtz541_sml_170
# Power-MQTT output label (negative active instantaneous power, e.g. OBIS Code 2.7.0)
HA_POWER_OUTPUT_ALIAS = sensor.dtz541_sml_270

[VZLOGGER]
# --- defines for VZLOGGER (local http API https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#local) ---
VZL_IP = 127.0.0.1
VZL_PORT = 2081
# you need to specify the uuid of the vzlogger channel for the reading OBIS(16.7.0) (aktuelle Gesamtwirkleistung)
VZL_UUID = 30c6c501-9a3c-4b0f-bda5-1d1769904463

[SCRIPT]
# --- defines for Shell Script Smartmeter Modul ---
SCRIPT_IP = xxx.xxx.xxx.xx
SCRIPT_FILE = GetPowerFromVictronMultiplus.sh
SCRIPT_USER =
SCRIPT_PASS =

# --- defines for Mitterbaur AMIS Reader ---
[AMIS_READER]
AMIS_READER_IP = xxx.xxx.xxx.xxx

[MQTT_POWERMETER]
# --- defines for MQTT ---
# If not specified, uses the broker from the [MQTT_CONFIG] section
# MQTT_BROKER = localhost
# MQTT_USERNAME = user
# MQTT_PASSWORD = password
# MQTT_PORT = 1883
MQTT_TOPIC_INCOMING = powermeter/in/power
# Optional: If the data published to the incoming topic is in JSON format, you can specify the JSONPath to the value here
# MQTT_JSON_PATH_INCOMING = $.power.in
# MQTT_TOPIC_OUTGOING = powermeter/out/power
# Optional: If the data published to the outgoing topic is in JSON format, you can specify the JSONPath to the value here
# MQTT_JSON_PATH_OUTGOING = $.power.out

[SELECT_INTERMEDIATE_METER]
# if you have an intermediate meter ("Zwischenzähler") to measure the outputpower of your inverter you can set it here. It is faster than the DTU current_power value
# --- define your intermediate meter - if you don´t have one set the following defines to false to use the value from your DTU---
USE_TASMOTA_INTERMEDIATE = false
USE_SHELLY_EM_INTERMEDIATE = false
USE_SHELLY_3EM_INTERMEDIATE = false
USE_SHELLY_3EM_PRO_INTERMEDIATE = false
USE_SHELLY_1PM_INTERMEDIATE = false
USE_SHELLY_PLUS_1PM_INTERMEDIATE = false
USE_ESPHOME_INTERMEDIATE = false
USE_SHRDZM_INTERMEDIATE = false
USE_EMLOG_INTERMEDIATE = false
USE_IOBROKER_INTERMEDIATE = false
USE_HOMEASSISTANT_INTERMEDIATE = false
USE_VZLOGGER_INTERMEDIATE = false
USE_SCRIPT_INTERMEDIATE = false
USE_AMIS_READER_INTERMEDIATE = false
USE_MQTT_INTERMEDIATE = false

[INTERMEDIATE_TASMOTA]
# --- defines for Tasmota Smartmeter Modul---
TASMOTA_IP_INTERMEDIATE = xxx.xxx.xxx.xxx 
# if you restricted the web login enter your username and password
TASMOTA_USER_INTERMEDIATE = 
TASMOTA_PASS_INTERMEDIATE = 
# the following three constants describes how to navigate through the Tasmota-JSON
# e.g. JSON_Result = {"StatusSNS":{"Time":"2023-02-28T12:49:49","SML":{"curr_w":500}}}
TASMOTA_JSON_STATUS_INTERMEDIATE = StatusSNS
# Prefix for Web UI and MQTT JSON payload
TASMOTA_JSON_PAYLOAD_MQTT_PREFIX_INTERMEDIATE = SML
# Power-MQTT label (the current solar-power in Watt).
TASMOTA_JSON_POWER_MQTT_LABEL_INTERMEDIATE = curr_w

[INTERMEDIATE_SHELLY]
# --- defines for Shelly ---
SHELLY_IP_INTERMEDIATE = xxx.xxx.xxx.xxx
# if you restricted the web login enter your username and password, for Shelly "Generation 2" devices the username is always "admin" (e.g. Shelly pro 3EM)
SHELLY_USER_INTERMEDIATE =
SHELLY_PASS_INTERMEDIATE =
# you can specify a specific emeter-index [possible values: 0...1] (if you have a Shelly-EM). If not defined, totalpower is calculated over all inputs.
EMETER_INDEX =

[INTERMEDIATE_ESPHOME]
ESPHOME_IP_INTERMEDIATE = xxx.xxx.xxx.xxx
ESPHOME_PORT_INTERMEDIATE = 80
ESPHOME_DOMAIN_INTERMEDIATE =
ESPHOME_ID_INTERMEDIATE =

[INTERMEDIATE_SHRDZM]
# --- defines for SHRDZM Smartmeter Modul ---
SHRDZM_IP_INTERMEDIATE = xxx.xxx.xxx.xxx
SHRDZM_USER_INTERMEDIATE =
SHRDZM_PASS_INTERMEDIATE =

[INTERMEDIATE_EMLOG]
# --- defines for EMLOG (electronic meter log) System ---
EMLOG_IP_INTERMEDIATE = xxx.xxx.xxx.xxx
EMLOG_METERINDEX_INTERMEDIATE = 

[INTERMEDIATE_IOBROKER]
# --- defines for IOBROKER (needs installed https://github.com/ioBroker/ioBroker.simple-api) ---
IOBROKER_IP_INTERMEDIATE = xxx.xxx.xxx.xxx
IOBROKER_PORT_INTERMEDIATE = 8087
IOBROKER_CURRENT_POWER_ALIAS_INTERMEDIATE = alias.0.Zaehler.Zaehler_SolarCurrentWatt

[INTERMEDIATE_HOMEASSISTANT]
# --- defines for HOME ASSISTANT (you need to create a Long-Lived Access Token in your profile) ---
HA_IP_INTERMEDIATE = xxx.xxx.xxx.xxx
HA_PORT_INTERMEDIATE = 8123
# if you run your HomeAssistant with "https" then define it here
HA_HTTPS_INTERMEDIATE = false
HA_ACCESSTOKEN_INTERMEDIATE = xxx
HA_CURRENT_POWER_ENTITY_INTERMEDIATE = sensor.dtz541_sml_curr_w

[INTERMEDIATE_VZLOGGER]
# --- defines for VZLOGGER (local http API https://wiki.volkszaehler.org/software/controller/vzlogger/vzlogger_conf_parameter#local) ---
VZL_IP_INTERMEDIATE = 127.0.0.1
VZL_PORT_INTERMEDIATE = 2081
# you need to specify the uuid of the vzlogger channel for the reading OBIS(16.7.0) (aktuelle Gesamtwirkleistung)
VZL_UUID_INTERMEDIATE = 06ec9562-a490-49fe-92ea-ffe0758d181c

[INTERMEDIATE_SCRIPT]
# --- defines for Shell Script Smartmeter Modul ---
SCRIPT_IP_INTERMEDIATE = xxx.xxx.xxx.xx
SCRIPT_FILE_INTERMEDIATE = GetPowerFromVictronMultiplus.sh
SCRIPT_USER_INTERMEDIATE =
SCRIPT_PASS_INTERMEDIATE =

# --- defines for Mitterbaur AMIS Reader ---
[INTERMEDIATE_AMIS_READER]
AMIS_READER_IP_INTERMEDIATE = xxx.xxx.xxx.xxx

[INTERMEDIATE_MQTT]
# --- defines for MQTT ---
# If not specified, uses the broker from the [MQTT_CONFIG] section
# MQTT_BROKER = localhost
# MQTT_USERNAME = user
# MQTT_PASSWORD = password
# MQTT_PORT = 1883
MQTT_TOPIC_INCOMING = powermeter/in/power
# Optional: If the data published to the incoming topic is in JSON format, you can specify the JSONPath to the value here
# MQTT_JSON_PATH_INCOMING = $.power.in
# MQTT_TOPIC_OUTGOING = powermeter/out/power
# Optional: If the data published to the outgoing topic is in JSON format, you can specify the JSONPath to the value here
# MQTT_JSON_PATH_OUTGOING = $.power.out

# Uncomment the following section if you want to use MQTT to dynamically reconfigure some settings while the script is running
[MQTT_CONFIG]
MQTT_BROKER = localhost
MQTT_PORT = 1883
MQTT_CLIENT_ID = HoymilesZeroExport
# MQTT_USERNAME = <optional username>
# MQTT_PASSWORD = <optional password>
MQTT_TOPIC_PREFIX = zeropower
# Set the log level to publish logs to MQTT. Possible values are DEBUG, INFO, WARNING, ERROR, CRITICAL.
MQTT_LOG_LEVEL = INFO

[COMMON]
# Number of Inverters
INVERTER_COUNT = 1
# max difference in percent between SetpointLimit change to approximate the power to new setpoint
SLOW_APPROX_LIMIT_IN_PERCENT = 50
# if slow approximation: additional limit based on the limit-difference to "smoot the curve": newLimitSetpoint = newLimitSetpoint + (LimitDifference * SLOW_APPROX_FACTOR_IN_PERCENT / 100)
SLOW_APPROX_FACTOR_IN_PERCENT = 25
# interval time for setting limit to Hoymiles
LOOP_INTERVAL_IN_SECONDS = 3
# Timeout time to wait for Acknowledge after sending limit to Hoymiles Inverter
SET_LIMIT_TIMEOUT_SECONDS = 3
# polling interval for powermeter (must be <= LOOP_INTERVAL_IN_SECONDS)
POLL_INTERVAL_IN_SECONDS = 3
# if your powermeter exceeds POWERMETER_MAX_POINT: immediatelly set the limit to predefined percent of HOY_MAX_WATT (if you have more than one inverter it´s the sum of all HOY_MAX_WATT)
# value = 0 disables the feature. Values are possible from [0 to 100]
ON_GRID_USAGE_JUMP_TO_LIMIT_PERCENT = 0
# if your powermeter falls below POWERMETER_MIN_POINT: immediatelly decrease the limit
ON_GRID_FEED_FAST_LIMIT_DECREASE = false
# max difference between Limit and real output power in % of HOY_MAX_WATT (100 = disabled)
MAX_DIFFERENCE_BETWEEN_LIMIT_AND_OUTPUTPOWER = 100
# power peak detection in W (for example fridge) to delay one interval cycle before setting new limits (0 = disabled)
POWER_PEAK_WATTS = 150
# enable logging to file
ENABLE_LOG_TO_FILE = false
# how many logfiles you wish to keep
LOG_BACKUP_COUNT = 30
# defines how often the Inverter Power Status will be set, set it to "-1" for disabled (infinite repeat)
SET_POWERSTATUS_CNT = 10
# log the inverter temperature
LOG_TEMPERATURE = false
# delay time after turning the inverter off or on
SET_POWER_STATUS_DELAY_IN_SECONDS = 10
# define if you want to set your inverter to min-limit when your powermeter can't be read out
SET_INVERTER_TO_MIN_ON_POWERMETER_ERROR = false
# Total number of retries to allow.
MAX_RETRIES = 3
# A set of integer HTTP status codes that we should force a retry on. Don´t change unless you know what you are doing
RETRY_STATUS_CODES = 500,502,503,504
# It allows you to change how long the process will sleep between failed requests. The algorithm is as follows: {backoff factor} * (2 ** ({number of total retries} - 1))
RETRY_BACKOFF_FACTOR = 0.5

[CONTROL]
# --- global defines for control behaviour ---
# POWERMETER_TARGET_POINT is the target power for powermeter in watts
POWERMETER_TARGET_POINT = 50
# POWERMETER_TOLERANCE is the tolerance (pos and neg) around the target point. in this range no adjustment will be set
POWERMETER_TOLERANCE = 35
# POWERMETER_MAX_POINT is the maximum power of your powermeter for the normal "regulation loop".
# if your powermeter jumps over this point, the limit will be increased instantly. it is like a "super high priority limit change".
# if you defined ON_GRID_USAGE_JUMP_TO_LIMIT_PERCENT > 0, then the limit will jump to the defined percent when reaching this point.
POWERMETER_MAX_POINT = 600
# POWERMETER_MIN_POINT is the minimum power of your powermeter for the normal "regulation loop".
# if your powermeter jumps under this point, the limit will be reduced instantly. it is like a "super high priority limit change".
POWERMETER_MIN_POINT = -600

# List of INVERTERS, based on COMMON/COUNT
[INVERTER_1]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 600
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 600
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_2]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_3]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_4]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_5]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_6]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_7]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_8]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_9]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_10]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_11]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_12]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_13]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_14]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_15]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

[INVERTER_16]
# serial number of your inverter, if empty it is automatically read out of the API. If you have more than one inverter you should define the serial number here (prevents mix-up).
SERIAL_NUMBER = 
# enable (true) / disable (false) this inverter
ENABLED = true
# manufacturer power rating of your inverter.
HOY_INVERTER_WATT = 
# max. power output of your inverter (e.g. if you have a 1500W Inverter and you only want to output max. 1000W)
HOY_MAX_WATT = 1500
# minimum limit in percent, e.g. 5% of your inverter power rating
HOY_MIN_WATT_IN_PERCENT = 5
# factor to multiply before set Limit. Some Inverters have some offsets, with that factor you can compensate it. Default = 1
HOY_COMPENSATE_WATT_FACTOR = 1
# battery powered?
HOY_BATTERY_MODE = false
# voltage to turn off the inverter
HOY_BATTERY_THRESHOLD_OFF_LIMIT_IN_V = 47
# voltage to limit the inverter to a maximum of HOY_BATTERY_REDUCE_WATT
HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V = 48
# voltage to limit the inverter to a maximum of HOY_BATTERY_NORMAL_WATT
HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V = 48.5
# maximum limit in watts when battery is high (above HOY_BATTERY_THRESHOLD_NORMAL_LIMIT_IN_V)
HOY_BATTERY_NORMAL_WATT = 1500
# maximum limit in watts when battery is low (below HOY_BATTERY_THRESHOLD_REDUCE_LIMIT_IN_V)
HOY_BATTERY_REDUCE_WATT = 300
# reenable inverter at this voltage
HOY_BATTERY_THRESHOLD_ON_LIMIT_IN_V = 51
# define which panels you want to ignore for the panel voltage. E.g. if you have input 1 + 2 battery powered and input 3 + 4 for solar panels you can disable panel 3 and 4.
# if you want to ignore Panel 3 and Panel 4 type: "HOY_BATTERY_IGNORE_PANELS = 3,4". leave it empty for no ignore.
HOY_BATTERY_IGNORE_PANELS = 
# define prioriry of the inverters (possible values: 1 (high) ... 5 (low); default = 1). same priorities are also possible. Not supported in mixed modes (a mix of solar and battery powered inverters)
# example 1 (default):
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 1: 
# set limit of 1100W -> inverter 1 is set to 733W and inverter 2 is set to 367W
# set limit of 300W -> inverter 1 is set to 200W and inverter 2 is set to 100W
# example 2:
# inverter 1 = 1000W, priority = 1 // inverter 2 = 500W, priority = 2: 
# set limit of 1100W -> inverter 1 is set to 1000W and inverter 2 is set to 100W
# set limit of 300W -> inverter 1 is set to 300W and inverter 2 is powered off
HOY_BATTERY_PRIORITY = 1
# Number of measured values for the moving average of the min panel voltage
HOY_BATTERY_AVERAGE_CNT = 1

# grid power
#    ...
#     |
#     | -------> if you defined ON_GRID_USAGE_JUMP_TO_LIMIT_PERCENT > 0, then the limit will jump to the defined percent of HOY_MAX_WATT when reaching this point. else: increasing limit <-------
#     |
#   [0W]      [POWERMETER_MAX_POINT]
#     |
#     | -------> increasing limit <-------
#     |
#  [-50W]     [POWERMETER_TARGET_POINT + POWERMETER_TOLERANCE]
#     |
#     | -------> no limit change between -100W ... -50W <-------
#     |
#  [-75W]     [POWERMETER_TARGET_POINT]
#     |
#     | -------> no limit change between -100W ... -50W <-------
#     |
#  [-100W]    [POWERMETER_TARGET_POINT - POWERMETER_TOLERANCE]
#     |
#     | -------> decreasing limit <-------
#     |
#    ...
BlackcatSandy commented 3 weeks ago

Merge ist durch, wie gesagt irgendwo muss ich wahrscheinlich bei den Sondernlocken noch prevLimitSetpointPeakTrigger = 0; einbauen um den Peak zurück zusetzen. HoymilesZeroExport.zip Wichtig aber noch den Config Wert in der ini ;)

Vor not enough Energy producing: limit already at maximum hat z.B. ein Trigger=0 noch gefehlt. Version kommt nach etwas Test ggf. morgen notfalls die Zeile selbst einfügen

BlackcatSandy commented 3 weeks ago

HoymilesZeroExport.zip anbei die Aktuelle Version mit debugging log des Trigger Wertes.

Freue mich über testfeedback ob es für euch auch sinnvoll ist und funktioniert

RealNBB commented 3 weeks ago

Hi,

hab deine Version nun mal drauf gemacht und bin gespannt, wie sich das nun v.a. beim kochen verhält. Da springt mein WR gerne wild umher. Werde berichten.

BlackcatSandy commented 3 weeks ago

HoymilesZeroExport.zip @RealNBB hier ist noch mal eine neue Version die ich refactored habe.

Beim Kochen wirst du leider nicht viel merken, das es immer nur ein Interval skippt (also den Anlaufstrom des Kühlschrankes etc), mein Interval ist 3 Sekunden und somit hat mein Waffeleisen heute Mittag genauso doof geschwankt wie immer. Für solche Fälle und Schläudergänge kommt man um eine Patternrecognition nicht mehr rum.. Also AI -> Kanonen auf Spatzen aber yeah!? IMG_1516

Wäre cool wenn du bei beiden auch checken kannst (vor allem bei der neuen die ist jetzt frisch von 12 Uhr) ob der Kühlschrank verschwindet

reserve85 commented 3 weeks ago

Also ich weiß auch nicht so recht ob das viel bringt, im Endeffekt ist es ja nur ein Filter der eine gewisse Spannungsspitze um ein Intervall nach hinten schiebt. Macht das bei Akkus so viel aus?

BlackcatSandy commented 3 weeks ago

Bei längeren Verbrauchern ja. Die Spitze startet dann erst im nächsten. Bei einem Fön der mind 3 Minuten läuft merkt man die 3 Sekunden nicht wirklich. Der Kühlschrank wiederum ist ja da schon wieder nach 3Sekunden durch und das führt kontinuierlich immer wieder zum hochschalten mit anschließender Netzeinspeisung und das fühlt sich sehr unnütz an, da man diese Spitze nie schnell genug geregelt bekommt, dann lieber ignorieren. Noch schlimmer ist es bei 10 und mehr Sekunden Intervall, wenn das in den Kühlschrankpeak kommt verliert man dann entsprechend noch länger unnötig ins Netz

hier mal zwei Bilder eines von vorher und es danach , hoffe da sieht man es besser was ich meine. Durch die Glättung auf 20 ist es relativ flach aber so fahre ich jetzt 50 freue mich über die snappyness 😂 IMG_1517 IMG_1518

BlackcatSandy commented 3 weeks ago

Gestern lief es nun komplett durch und heute Nacht ebenso, rausgezoomed sieht man deutlich dass die maximal aufdrehungen durch den Kühlschrank bei Begrenzung deutlich reduziert wurden und somit auch die netzeinspeisehäufigkeit ♥️

IMG_1527

BlackcatSandy commented 2 weeks ago

Also die Mechanik funktioniert auch im Dauerbetrieb sehr gut. Kann also gerne in den Trunk übernommen werden :) Vorher: IMG_1529 Nachher: IMG_1528

IMG_1531

reserve85 commented 2 weeks ago

@BlackcatSandy danke für dein Input, sobald ich Zeit finde nehm ich das mit rein (in den nächsten Tagen). ist hier die letzte Version: https://github.com/reserve85/HoymilesZeroExport/issues/225#issuecomment-2301816680 ??

BlackcatSandy commented 2 weeks ago

@reserve85 ja das ist die letzte schon mit deiner 1.98 gemergten Version. Nur der letzte Issue fix ist noch nicht drin