HAOS Add-on: s6-overlay Fix
- init: false in config.yaml → s6-overlay deaktiviert, CMD läuft als PID 1 - CMD: python3 /app/main.py direkt (kein run.sh + bashio mehr nötig) - main.py: liest /data/options.json (HA Add-on Options) statt Env-Vars via bashio Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,4 @@ RUN pip3 install --no-cache-dir \
|
||||
paho-mqtt==1.6.1 \
|
||||
flask==3.0.3
|
||||
|
||||
COPY run.sh /run.sh
|
||||
RUN chmod a+x /run.sh
|
||||
|
||||
CMD ["/run.sh"]
|
||||
CMD ["python3", "/app/main.py"]
|
||||
|
||||
@@ -8,6 +8,7 @@ arch:
|
||||
- amd64
|
||||
startup: application
|
||||
boot: auto
|
||||
init: false
|
||||
ingress: true
|
||||
ingress_port: 8099
|
||||
panel_icon: mdi:solar-power
|
||||
|
||||
+21
-12
@@ -18,6 +18,7 @@ logging.basicConfig(
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
CONFIG_PATH = "/data/config.json"
|
||||
HA_OPTIONS_PATH = "/data/options.json"
|
||||
WEB_DIR = os.path.join(os.path.dirname(__file__), "web")
|
||||
|
||||
app = Flask(__name__, static_folder=WEB_DIR)
|
||||
@@ -35,23 +36,31 @@ class State:
|
||||
|
||||
|
||||
def load_config() -> Dict[str, Any]:
|
||||
# Defaults
|
||||
cfg: Dict[str, Any] = {
|
||||
"modbus_ip": os.environ.get("MODBUS_IP", "10.10.20.190"),
|
||||
"modbus_port": int(os.environ.get("MODBUS_PORT", "502")),
|
||||
"modbus_address": int(os.environ.get("MODBUS_ADDRESS", "1")),
|
||||
"inverter_model": os.environ.get("INVERTER_MODEL", "MIC_1500_TL_X"),
|
||||
"mqtt_broker": os.environ.get("MQTT_BROKER", "core-mosquitto"),
|
||||
"mqtt_port": int(os.environ.get("MQTT_PORT", "1883")),
|
||||
"mqtt_user": os.environ.get("MQTT_USER", ""),
|
||||
"mqtt_pass": os.environ.get("MQTT_PASS", ""),
|
||||
"mqtt_topic_prefix": os.environ.get("MQTT_TOPIC_PREFIX", "growatt/shinelanx"),
|
||||
"update_interval": int(os.environ.get("UPDATE_INTERVAL", "30")),
|
||||
"modbus_ip": "10.10.20.190",
|
||||
"modbus_port": 502,
|
||||
"modbus_address": 1,
|
||||
"inverter_model": "MIC_1500_TL_X",
|
||||
"mqtt_broker": "core-mosquitto",
|
||||
"mqtt_port": 1883,
|
||||
"mqtt_user": "",
|
||||
"mqtt_pass": "",
|
||||
"mqtt_topic_prefix": "growatt/shinelanx",
|
||||
"update_interval": 30,
|
||||
}
|
||||
# HA add-on options (set via UI/config.yaml options)
|
||||
if os.path.exists(HA_OPTIONS_PATH):
|
||||
try:
|
||||
with open(HA_OPTIONS_PATH) as f:
|
||||
cfg.update(json.load(f))
|
||||
except Exception as e:
|
||||
log.warning("HA options konnten nicht gelesen werden: %s", e)
|
||||
# Web UI overrides (gespeichert via /api/config POST)
|
||||
if os.path.exists(CONFIG_PATH):
|
||||
try:
|
||||
with open(CONFIG_PATH) as f:
|
||||
saved = json.load(f)
|
||||
cfg.update(saved)
|
||||
cfg.update(json.load(f))
|
||||
except Exception as e:
|
||||
log.warning("Config-Datei konnte nicht gelesen werden: %s", e)
|
||||
return cfg
|
||||
|
||||
Reference in New Issue
Block a user