NEWS
[Neuer Adapter] Senec Home Adapter
-
@dime evtl. weiss ich woran es liegen könnte.
Wie lange hast du denn die Anlage schon? Länger als seit 1 Jahr oder erst dieses Jahr bekommen?Denn wenn ich mir den Log so anschaue sehe ich folgendes:
2023-09-18 07:25:36.839 Start des API abrufes
2023-09-18 07:25:36.454 holt die "aktuell" Werte
danach die "heute" Werte
dann kommen die "Statistik" Werte und hier vermute ich beim letzten Eintrag wo "null" kommt, das dies der abruf für "Last Year" ist. Wenn dem so ist und deine Anlage noch nicht so alt ist, kommen logischerweise von der API auch "null" Werte zurück, denn dann gibt es da ja noch nichts zum abrufen.Da müsste @nobl dann nach seinem Urlaub nochmal ran, was er bestimmt auch auch tun wird, wie ich ihn kenne
Alle Eventualitäten abzudecken bei der Programmierung ist schwierig, denn manches fällt dann eben erst wie in deinem Fall später im Feldtest auf.Ich weiss nicht wie fit du mit Code umschreiben bist aber falls du es dir zutraust wäre ein erster Workaround, bis @nobl wieder da ist, folgender:
Unter folgendem Pfad solltest du eine "main.js" finden:
/opt/iobroker/node_modules/iobroker.senec/
(mache dir am besten ein Backup, bevor du Änderungen daran vornimmst. Im Notfall, Adapter stoppen, Backup wieder rein kopieren und dann Adapter wieder starten.)
Öffne "main.js" in einem Editor (notepad bzw. Editor unter windows oder wenn du es komfortabel haben möchtest, dann lade dir kostenfrei notepad++ im netz herunter. Da hast du dann auch gleich Zeilenummern neben dem Code stehen)
Zeile 399 - 406 findest du folgendes:
const dates = new Map([ ["THIS_DAY", new Date().toISOString().split('T')[0]], ["LAST_DAY", new Date(new Date().setDate(new Date().getDate()-1)).toISOString().split('T')[0]], ["THIS_MONTH", new Date().toISOString().split('T')[0]], ["LAST_MONTH", new Date(new Date().setDate(0)).toISOString().split('T')[0]], ["THIS_YEAR", new Date().toISOString().split('T')[0]], ["LAST_YEAR", new Date(new Date().getFullYear() - 1, 1, 1).toISOString().split('T')[0]] ]);
Stelle hier // bei Zeile 405 voran um die Zeile auszukommentieren (diese Zeile wird dann vom Script nicht mehr berücksichtigt und somit lässt er das abholen der Werte für "LastYear" aus):
const dates = new Map([ ["THIS_DAY", new Date().toISOString().split('T')[0]], ["LAST_DAY", new Date(new Date().setDate(new Date().getDate()-1)).toISOString().split('T')[0]], ["THIS_MONTH", new Date().toISOString().split('T')[0]], ["LAST_MONTH", new Date(new Date().setDate(0)).toISOString().split('T')[0]], ["THIS_YEAR", new Date().toISOString().split('T')[0]], //["LAST_YEAR", new Date(new Date().getFullYear() - 1, 1, 1).toISOString().split('T')[0]] ]);
Das könnte in deinem Fall, bis @nobl wieder da ist, erstmal abhilfe schaffen. Zumindest sollten dann keine Fehler mehr im Log auftauchen und die anderen Werte normal geholt werden. "Debug" kannst du dann auch wieder "Info" umstellen wenn es soweit läuft.
-
@root666
Hi vielen Dank für deine Antwort und Lösungsvorschlag.
Ja du liegst richtig, meine Anlage ist von diesem Jahr, d.h. "last year" Werte habe ich noch nicht.
Ich trau mir die Änderung zu, und werde sie morgen mal probieren umzusetzen. Werde hier dann wieder posten.
Wie komme ich am geschicktesten auf die Ordnerstruktur ohne mich mit Powershell mit dem Rasp direkt zu verbinden? -
@dime unter Windows kann ich dafür WinSCP empfehlen. In Verbindung mit Putty hast du da eine Komplettlösung.
Falls du mit ssh auf den Raspberry kommst, dann kannst du auch einfach:nano /opt/iobroker/node_modules/iobroker.senec/main.js
eingeben. Damit öfnet sich die main.js ebenfalls auf der Konsole im Editor.
Dort zu Zeile 399 mit den Pfeiltasten, dann // einfügen und mit "strg + x" kannst du speichern. Nachdem du "J" gewählt hast, sollte die Datei gespeichert sein. Je nachdem mit welchem Nutzer du angemeldet bist, kann es auch sein das du "sudo" zum editieren verwendet musst. Also:sudo nano /opt/iobroker/node_modules/iobroker.senec/main.js
Ich hab mir aber auch eben schnell die Arbeit gemacht und dir das ganze unter GitHub eingestellt. So kannst du einfach den Adapter damit updaten und auch damit (im Fall der Fälle) auch wieder zurück zur offiziellen v1.6.5 von @nobl wechseln.
Ich hab die Version für mich 1.6.5.1 genannt. Nicht wundern, im ioBroker wird trotzdem nur 1.6.5 angezeigt nach dem update. Du siehst es ja aber wenn die Fehler in den Logs verschwunden sind oder wenn du in main.js rein schaust.https://github.com/git-ZeR0/ioBroker.senec/tree/Hot-Fix_LastYear
Im Fall der Fälle zurück zur offiziellen Version 1.6.5 von @nobl dann hiermit:
-
@root666
Du Granate! habe denvon dir auf Github vorbereiteten Adapter benutzt.
Es funktioniert , alle 5 min bekomme ich jetzt die Werte und habe keine Warnmeldung mehr.
Vielen Dank euch beiden für den tollen Support!! Danke das du dir auch die Mühe gemacht hast mir alles genau zu erklären!!! -
@dime gerne doch und freut mich wenn es jetzt funktioniert.
Wie gesagt ist das aber nicht die eigentliche Lösung des Problems, sondern lediglich ein Fix für den Fehler bei dir, bzw. bei Anlagen wo es noch kein Vorjahr gibt.
Kann sein das es die Gesamtsummen dadurch nicht berechnet. Hab mir jetzt nicht näher angeschaut wie @nobl das umgesetzt hatte. Sollte aber bis zum Jahreswechsel hoffentlich kein Problem sein und bis dahin hat @nobl sicherlich eine elegante Lösung eingebaut, die dann die NULL-Werte erkennt und damit umgehen kann. Da pfusche ich jetzt auch nichts auf die schnelle zusammen. Das soll sich @nobl dann nach seinem Urlaub mal ansehen. Solange es so läuft, lass es fürs erste so laufen -
Hallo kann es sein? Das die Werte unter senec.0._api.Anlagen.86808.Statistik.AllTime nur die Werte von 2023 erfasst sind. Hier sollten doch die Werte seit Inbetriebnahme drin stehen? oder verstehe ich hier was falsch?
-
@snigga hast du auch hier:
den Haken gesetzt?Ist mir nämlich auch passiert und hab mich auch erst gewundert, obwohl ich die Funktion kannte. Hab es eben vergessen zu aktivieren und so kommen dann auch nur die Werte von 2023 unter AllTime.
-
@root666 Danke dir. Ja den Hacken habe ich vergessen zu setzen. Jetzt passen die Werte wieder
-
Hallo ich habe mal eine Frage. Kämpfe mich gerade mit der Senec APP Api rum. Gibt es hier zum Beispiel auch eine Möglichkeit die Daten für einen bestimmten Zeitraum abzufragen zum Beispiel 3.10.2022 bis 31.12.2022.
Hintergrund ist der. Ich möchte gerne das aktuelle Jahr mit dem letzten Jahr vergleichen, ob der Strombedarf gesunken oder gestiegen ist. Da ich mich aber unter dem Jahr befinde kann ich die Werte nicht vergleichen, da ja die Daten vom heute bis Jahresende ja fehlen. Für den Vergleich würde ich gerne die Werte vom letzten Jahr hernehmen.
Also eine Art Prognose erstellen.
Gibt es hier einen Vorschlag wie man das umsetzen kann.
Danke.
-
@root666 sagte in [Neuer Adapter] Senec Home Adapter:
@dime gerne doch und freut mich wenn es jetzt funktioniert.
Wie gesagt ist das aber nicht die eigentliche Lösung des Problems, sondern lediglich ein Fix für den Fehler bei dir, bzw. bei Anlagen wo es noch kein Vorjahr gibt.
Kann sein das es die Gesamtsummen dadurch nicht berechnet. Hab mir jetzt nicht näher angeschaut wie @nobl das umgesetzt hatte. Sollte aber bis zum Jahreswechsel hoffentlich kein Problem sein und bis dahin hat @nobl sicherlich eine elegante Lösung eingebaut, die dann die NULL-Werte erkennt und damit umgehen kann. Da pfusche ich jetzt auch nichts auf die schnelle zusammen. Das soll sich @nobl dann nach seinem Urlaub mal ansehen. Solange es so läuft, lass es fürs erste so laufenNaja - ob das jetzt elegant ist, weiß ich nicht
Immerhin sollte es mit v1.6.6 dann behoben sein (nebenbei konnte das auch passieren, wenn der Adapter gleich am 1. Tag installiert wurde und er versucht hätte, die Informationen des Vortages abzurufen oder auch des Vormonats, etc.).Version sollte "bald" als Update auftauchen (hoffentlich klappt das auch, wenn das letzte Update über Github forciert wurde aus einem anderen Repo).
@DiMe -
@nobl Danke, dass Du Dich entschieden hast, die manuelle Ladung zu ermöglichen.
Das gibt dem Speicher zumindest noch einen gewissen "Restwert"
Cool wäre natürlich, wenn man auch einfach nur die Entladung blockieren könnte. Aber das gibt die lala wohl nicht her.
-
@oxident sagte in [Neuer Adapter] Senec Home Adapter:
@nobl Danke, dass Du Dich entschieden hast, die manuelle Ladung zu ermöglichen.
Das gibt dem Speicher zumindest noch einen gewissen "Restwert"
Cool wäre natürlich, wenn man auch einfach nur die Entladung blockieren könnte. Aber das gibt die lala wohl nicht her.
Es gab früher mal noch 2 weitere Optionen in diesem Menü, die genau das ermöglicht hätten. Leider weiß ich nicht mehr, wie genau die angesteuert wurden. (Oder wie die Menüpunkte genau benannt waren ...)
Genauso wie man das Peakshaving lokal sehr elegant steuern konnte, gab es das auch. Also muss das eigentl. gehen. (in der Source hab ich vor längerer Zeit mal noch die Fragmente des Peakshaving Menüs gefunden - vielleicht mag sich mal jemand auf die Suche machen, ob es das auch fürs Entladen noch gibt.)
-
@nobl Ahh, Du meinst Testladung und -entladung im Installateurmodus? Funktioniert hat die bei mir noch nie
-
Hat jemand hier zufällig die Senec Wallbox und könnte mir die Commands (post/get) für die einzelnen Optionen zur Verfügung stellen (die muss man halt aus der Netzwerkanalyse im Browser ziehen oder ähnliches)?
Bzw. ähnliche Frage: Falls jemand die Wallbox besitzt - wäre betreffende Person bereit, eine Version des Adapters zu testen, die versucht, die Wallbox-Daten via App API abzufragen? (kann ich ohne WB scheinbar nicht testen, da das sofort zu fiesen Fehlern führt in der Schnittstelle)
-
@nobl : Ich habe eine Senec-Wallbox und unterstütze dich gerne. Was genau brauchst du?
-
@erstam sagte in [Neuer Adapter] Senec Home Adapter:
@nobl : Ich habe eine Senec-Wallbox und unterstütze dich gerne. Was genau brauchst du?
Ist die WB überhaupt noch über das lokale Interface steuerbar? (Aktuell scheint das eher ein "Nein" zu sein?)
Ich würde dir gelegentl. mal eine Version zur Verfügung stellen, die versucht, über die API Informationen abzuholen. Theoretisch sollte es diese Möglichkeit geben - fliegt mir aber sofort um die Ohren (was hoffentlich daran liegt, dass ich keine Senec WB habe ). -
@nobl: Wenn du mit "über das lokale Interfsce steuerbar" die Webseite des Speichers meinst, dann nein, darüber lässt sie sich nicht steuern. Mir wäre aber auch nicht bewusst, das sie sich jemals darüber steuern ließ.
Die Wallbox lässt dich über die App steuern bzw. von Solargeführt auf volle Leisting umschalten. Mehr kann ich da nicht steuern.
Viele Grüße!
-
Hallo zusammen,
ich habe mich nun auch mal im Forum registriert, da ich nicht weiterkomme.
Seit letzter Woche läuft hier ein (gut gebraucht) erworbener SENEC.home 4 hybrid. Den Adapter konnte ich mit aktueller Version (1.6.10) in ioBroker ans laufen bekommen (alle 3 Haken grün).
Allerdings wurden keine Objekte angelegt, müssen diese Manuell angelegt werden ?
Genaugenommen wurden "nur" die 3 Objekte für Anlagen-ID, ForceLoadBattery, Connection angelegt.Gibt es bei diesem Senec überhaupt noch einen Zugriff über Webseite ?
-
@knx-bodensee Ich fürchte, beim v4 gibt es nur noch die Cloud und keine lokalen Anzeigen mehr. Du müsstest also mit dem leben, was Dir alle 15min unter dem DP _api angezeigt wird.
Hoffe, das wurde schon implementiert...
-
@oxident sagte in [Neuer Adapter] Senec Home Adapter:
@knx-bodensee Ich fürchte, beim v4 gibt es nur noch die Cloud und keine lokalen Anzeigen mehr. Du müsstest also mit dem leben, was Dir alle 15min unter dem DP _api angezeigt wird.
Hoffe, das wurde schon implementiert...
Feedback wäre in der Tat toll, falls das mit V4 klappt.
Die API aktualisiert aber wohl alle 5 Minuten (öfters abfragen ist daher eigentl. unnötig, wenngleich der Adapter 3 min als Minimum zulässt).