Energie Manager: Fehler nach Update auf Version 2.0

Ich habe heute den Energie Manager auf Version 2.0 geupdatet.
Nachdem Update konnte ich die Instanz ganz normal Öffnen und bearbeiten, nachdem Speichern erhalte ich jetzt folgende Meldung beim Öffnen des Energie Manages und es ist nicht mehr möglich ihn zu nutzen.

Wenn ich eine neue Instanz anlege, dann läst diese sich problemlos öffnen.

Kann ich diese Instanz noch irgendwie retten?

Konnte Konfigurationsform nicht laden

Warning: Objekt #1 existiert nicht in /mnt/data/symcon/modules/.store/de.symcon.energyoptimizer/EnergyManager/module.php on line 3094

Fatal error: Uncaught TypeError: EnergyManager::getName(): Return value must be of type string, false returned in /mnt/data/symcon/modules/.store/de.symcon.energyoptimizer/EnergyManager/module.php:3094
Stack trace:
#0 /mnt/data/symcon/modules/.store/de.symcon.energyoptimizer/EnergyManager/module.php(686): EnergyManager->getName(Array)
#1 /-(3): EnergyManager->GetConfigurationForm()
#2 {main}
  thrown in /mnt/data/symcon/modules/.store/de.symcon.energyoptimizer/EnergyManager/module.php on line 3094 (Code: -32603)

Das können wir retten. Das Problem hier ist ein Eintrag bei dem die Variable nicht (mehr) existiert. Das Modul möchte einen Namen anzeigen, aber da die Variable ja nicht existiert, knallt es. Der Fehler kann umgangen werden, indem einfach ein Name gesetzt wird und das kannst du mit diesem Skript machen:

<?php

$energyManagerID = 16275;

foreach (['EVs', 'Batteries'] as $propertyName) {
    $list = json_decode(IPS_GetProperty($energyManagerID, $propertyName), true);
    foreach ($list as &$line) {
        if (!($line['Name'] ?? '') && !IPS_InstanceExists($line['InstanceID'] ?? 1) && !IPS_VariableExists($line['VariableID'] ?? 1)) {
            $line['Name'] = 'Variable fehlt, bitte löschen oder korrigieren';
        }
    }
    IPS_SetProperty($energyManagerID, $propertyName, json_encode($list));
}
IPS_ApplyChanges($energyManagerID);

Einfach nur oben deine ID vom Energie Manager eintragen. Danach kannst du den Energie Manager öffnen und die kaputten Zeilen beheben oder löschen.

Ein Fix im Energie Manager selbst folgt auch noch, aber das als schnelle Lösung.

Vielen Dank für die flotte Hilfe, das hat funktioniert, ich kann die Instanz wieder öffnen. :slight_smile:
Das komische ist das die Variable aber noch existiert, diese wurde nicht gelöscht.

Habe anschließend gleich nochmal die Batterie konfgiuriert und konnte jetzt nachvollziehen warum der Fehler auftaucht bzw. was der Grund ist:

Sobald ich die Variable für den SOC-Wert hinterlegt habe, habe ich gespeichert:
**Objekt #1 existiert nicht in /mnt/data/symcon/modules/.store/de.symcon.energyoptimizer/EnergyManager/module.php on line 3094

Fatal error: Uncaught TypeError: EnergyManager::getName(): Return value must be of type string, false returned in /mnt/data/symcon/modules/.store/de.symcon.energyoptimizer/EnergyManager/module.php:3094
Stack trace:
#0 /mnt/data/symcon/modules/.store/de.symcon.energyoptimizer/EnergyManager/module.php(925): EnergyManager->getName(Array)
#1 /mnt/data/symcon/scripts/__generated.inc.php(415): EnergyManager->UIUpdateNameAndStatus(Object(IPSList), 'Batteries')
#2 /-(93): EO_UIUpdateNameAndStatus(14973, Object(IPSList), 'Batteries')
#3 {main}
thrown in /mnt/data/symcon/modules/.store/de.symcon.energyoptimizer/EnergyManager/module.php on line 3094**

Sobald die Instanz dann wieder geöffnet wird, erscheint der Fehler aus dem ersten Post wieder.

Workaround:
Nachdem der Wert für “Aktuelle Einspeisung/Ladung” auch gesetzt wurde, tritt der Fehler nicht mehr auf.

Ja, das passt zu meinem beobachteten Verhalten :slight_smile: Der Fix auf Modulseite ist übrigens auch schon online auf dem Beta-Kanal.

1 „Gefällt mir“