[Problem]
Die "featurelist" Variable enthält jedes Feature doppelt. D.h. jedes Feature, das in der "config" Datei unter [SMA-EM] "features=pvdata mqtt ....." eingetragen ist, ist doppelt in der "featurelist" Variable enthalten. Dadurch wird die run() Funktion jedes Features, z.B. /opt/smaemd/features/pvdata.py => run(), zweimal kurz hintereinander ausgeführt.
Siehe /opt/smaemd/sma-daemon.py => run()
...
for featurenr in featurelist:
featurelist[featurenr]['feature'].run(emparts,featurelist[featurenr]['config'])
...
[Ursache]
Das Problem wird verursacht, weil die Funktion MyDaemon => config() doppelt aufgerufen wird.
Erster Aufruf: daemon3x => start() => self.config()
Zweiter Aufruf: MyDaemon => run() => self.config()
Das Problem fällt in der Praxis nicht auf, weil in der Datei "/etc/smaemd/config" der Parameter "min_update" der eintsprechenden Features auf mehrere Sekunden gesetzt sein dürfte. Deshalb wir ein zweiter Aufruf der Feature run() Funktion aufgrund der nicht erreichten Updatezeit abgebrochen.
[Problem] Die "featurelist" Variable enthält jedes Feature doppelt. D.h. jedes Feature, das in der "config" Datei unter [SMA-EM] "features=pvdata mqtt ....." eingetragen ist, ist doppelt in der "featurelist" Variable enthalten. Dadurch wird die run() Funktion jedes Features, z.B. /opt/smaemd/features/pvdata.py => run(), zweimal kurz hintereinander ausgeführt. Siehe /opt/smaemd/sma-daemon.py => run() ... for featurenr in featurelist: featurelist[featurenr]['feature'].run(emparts,featurelist[featurenr]['config']) ...
[Ursache] Das Problem wird verursacht, weil die Funktion MyDaemon => config() doppelt aufgerufen wird. Erster Aufruf: daemon3x => start() => self.config() Zweiter Aufruf: MyDaemon => run() => self.config() Das Problem fällt in der Praxis nicht auf, weil in der Datei "/etc/smaemd/config" der Parameter "min_update" der eintsprechenden Features auf mehrere Sekunden gesetzt sein dürfte. Deshalb wir ein zweiter Aufruf der Feature run() Funktion aufgrund der nicht erreichten Updatezeit abgebrochen.
[Lösung] /opt/smaemd/sma-daemon.py => run() => Zeile "self.config()" löschen