NEWS
Neuer Adapter: SMA Wechselrichter mit sbfspot
-
@bastelritius sagte in Neuer Adapter: SMA Wechselrichter mit sbfspot:
Kann man im Widget mehrere WR anzeigen lassen. Meine Anlage besteht nämlich aus 3 Stück, oder muss ich dann 3 Widgets benutzen?
das widget ist für einen WR gedacht. Man kann nur eine Objekt-ID verwenden...
Die Historie-daten füu "Today" enthalten nur einen Wert im Stundenabstand. Kann man das irgendwie ändern? Nur stündlich einen Wert zu bekommen ist mir irgendwie zu weing. Die Werte in die Datenbank werden alle 5min geschrieben. Die Aktuallisierung für den Adapter habe ich auch auf 5min gestellt
Das hängt davon ab, wie oft du den Adapter laufen lässt. Bei jedem Lauf das Adapters werden die Daten aus der DB geholt und in den history-json-string geschrieben. Das steuerst du über die s.g. Zeitplanung im admin von iobroker für den Adapter. Für einen Lauf alle 15 Minuten müsste dort */15 * * * * stehen...
-
@rene_hm :
Genau so hatte ich mir das gedacht. Daher habe ich den Adapter auf 5min gestellt. Die Daten im Datenpunkt "EToday" werden alle 5min aktualisiert und es kommen auch neue Werte an. Diesen Datenpunkt logge ich zusätzlich in einer InfluxDB seit Gestern als Kontrolle. Im history-json-string stehen aber wie oben schon gepostet nur die Stundenwerte.
-
@bastelritius schalte den Adapter mal auf debug und schaue was dort passiert. Mein Adapter läuft alle 15 Minuten und im history-json sind auch alle 15 Minuten Daten vorhanden. So wäre es auch implementiert. Ausnahme wäre, dass ein DB-Abruf vorher schief geht... das würden wir im log sehen...
was mir im obigen post auffältt ist die Zeit: immer 3 Minuten nach der vollen Stunde. Wenn dein Adapter alle 5 Minuten läuft, sollte immer die volle Stunde als Zeitstempel auftauchen.Bei mir sieht das so aus:
[{"time":"06:45","value":0},{"time":"07:00","value":1},{"time":"07:15","value":13},{"time":"07:30","value":32},{"time":"07:45","value":64},{"time":"08:00","value":102}, ... ]
-
@wendy2702 said in Neuer Adapter: SMA Wechselrichter mit sbfspot:
@bastelritius sagte in Neuer Adapter: SMA Wechselrichter mit sbfspot:
- exception in DB_Connect [Error: /opt/iobroker/node_modules/better-sqlite3/build/Release/better_sqlite3.node: undefined symbol: _ZN7Stateme/tIteratorD1Ev]
Leider ist das Log etwas abgeschnitten so das mannschaftliche sagen kann das es wirklich von dem Adapter erzeugt wird.
@rene_hm said in Neuer Adapter: SMA Wechselrichter mit sbfspot:
@bastelritius schalte den Adapter mal auf debug und schaue was dort passiert. Mein Adapter läuft alle 15 Minuten und im history-json sind auch alle 15 Minuten Daten vorhanden. So wäre es auch implementiert. Ausnahme wäre, dass ein DB-Abruf vorher schief geht... das würden wir im log sehen...
was mir im obigen post auffältt ist die Zeit: immer 3 Minuten nach der vollen Stunde. Wenn dein Adapter alle 5 Minuten läuft, sollte immer die volle Stunde als Zeitstempel auftauchen.Bei mir sieht das so aus:
[{"time":"06:45","value":0},{"time":"07:00","value":1},{"time":"07:15","value":13},{"time":"07:30","value":32},{"time":"07:45","value":64},{"time":"08:00","value":102}, ... ]
Ja, komisch. Ich habe den Adapter mal komplett deinstalliert und neu installiert.
Den Log habe ich als Datei angehangen:iobroker.2021-03-14.log -
Hat noch jemand eine Idee wieso die Werte bei mir immer nur 3min nach jeder vollen Stunde berechnet werden, obwohl ich den Adapter auf 5min Intervall eingestellt habe?
-
@bastelritius laut log ist dein Problem nicht der Adapter sondern sbfspot.
DB_CalcHistory_Today for 2100494098 SELECT strftime('%H:%m', datetime(TimeStamp, 'unixepoch')) as time, Max(`EToday`) as ertrag FROM `SpotData` WHERE `Serial` = '2100494098' AND TimeStamp>= 1615676406.314 AND TimeStamp<= 1615699506.314 Group By strftime('%H-%m', datetime(TimeStamp, 'unixepoch')) rows [{"time":"04:03","ertrag":0},{"time":"05:03","ertrag":0}]
Hier ist die Datenbankabfrage um 6:25Uhr. Da kommen die beiden Werte um 4:03 und 5:03. Ich denke, du hast den cron job auf dem Pi nicht richtig konfiguriert... siehe
https://github.com/SBFspot/SBFspot/wiki/Installation-Linux-SQLite#️-automation -
@rene_hm said in Neuer Adapter: SMA Wechselrichter mit sbfspot:
@bastelritius laut log ist dein Problem nicht der Adapter sondern sbfspot.
DB_CalcHistory_Today for 2100494098 SELECT strftime('%H:%m', datetime(TimeStamp, 'unixepoch')) as time, Max(`EToday`) as ertrag FROM `SpotData` WHERE `Serial` = '2100494098' AND TimeStamp>= 1615676406.314 AND TimeStamp<= 1615699506.314 Group By strftime('%H-%m', datetime(TimeStamp, 'unixepoch')) rows [{"time":"04:03","ertrag":0},{"time":"05:03","ertrag":0}]
Hier ist die Datenbankabfrage um 6:25Uhr. Da kommen die beiden Werte um 4:03 und 5:03. Ich denke, du hast den cron job auf dem Pi nicht richtig konfiguriert... siehe
https://github.com/SBFspot/SBFspot/wiki/Installation-Linux-SQLite#️-automationDanke. Aber ich habe es so konfiguriert wie unter dem Punkt Automation in Deinem Link.
Irgendwie kommen ja auch alle 5min aktualisierte Werte. Zumindest wenn ich die Daten über die Historie auswerte.
Ich habe hier mal die Tabelle SpotData ausgelesen und als txt angehangen.
Kannst Du da mal reingucken ob das so stimmt. Ich denke die Daten sind da? SBFspot_SpotData.txt -
@bastelritius und wenn du manuell o.g. SQL string mal in der Datenbank laufen lässt, was passiert dann? Wie das geht, wird ja unter
https://github.com/SBFspot/SBFspot/wiki/Installation-Linux-SQLite#️-testing
erklärt. nur dass du dort nichtselect * from vwspotdata;
sondern
SELECT strftime('%H:%m', datetime(TimeStamp, 'unixepoch')) as time, Max(`EToday`) as ertrag FROM `SpotData` WHERE `Serial` = '2100494098' AND TimeStamp>= 1615676406.314 AND TimeStamp<= 1615699506.314 Group By strftime('%H-%m', datetime(TimeStamp, 'unixepoch'));
verwendest.
Welche Version von sqlite hast du auf dem PI?
Was mir gerade auffällt:Versuche auch mal
SELECT strftime('%H:%m', datetime(TimeStamp, 'unixepoch')) as time, Max(`EToday`) as ertrag FROM `SpotData` WHERE `Serial` = '2100494098' AND TimeStamp>= 1615676406.314 AND TimeStamp<= 1615699506.314 Group By strftime('%H-%M', datetime(TimeStamp, 'unixepoch'));
-
@rene_hm said in Neuer Adapter: SMA Wechselrichter mit sbfspot:
@bastelritius und wenn du manuell o.g. SQL string mal in der Datenbank laufen lässt, was passiert dann? Wie das geht, wird ja unter
https://github.com/SBFspot/SBFspot/wiki/Installation-Linux-SQLite#️-testing
erklärt. nur dass du dort nichtselect * from vwspotdata;
sondern
SELECT strftime('%H:%m', datetime(TimeStamp, 'unixepoch')) as time, Max(`EToday`) as ertrag FROM `SpotData` WHERE `Serial` = '2100494098' AND TimeStamp>= 1615676406.314 AND TimeStamp<= 1615699506.314 Group By strftime('%H-%m', datetime(TimeStamp, 'unixepoch'));
verwendest.
Hier bringt mir die Datenbank folgendes:
sqlite> SELECT strftime('%H:%m', datetime(TimeStamp, 'unixepoch')) as time, Max(`EToday`) as ertrag FROM `SpotData` WHERE `Serial` = '2100494098' AND TimeStamp>= 1615676406.314 AND TimeStamp<= 1615699506.314 Group By strftime('%H-%m', datetime(TimeStamp, 'unixepoch')); 04:03|0 05:03|0
Welche Version von sqlite hast du auf dem PI?
Ich habe die Version SQLite version 3.27.2 2019-02-25 16:06:06Was mir gerade auffällt:
Versuche auch mal
SELECT strftime('%H:%m', datetime(TimeStamp, 'unixepoch')) as time, Max(`EToday`) as ertrag FROM `SpotData` WHERE `Serial` = '2100494098' AND TimeStamp>= 1615676406.314 AND TimeStamp<= 1615699506.314 Group By strftime('%H-%M', datetime(TimeStamp, 'unixepoch'));
Hier kommt das:
SELECT strftime('%H:%m', datetime(TimeStamp, 'unixepoch')) as time, Max(`EToday`) as ertrag FROM `SpotData` WHERE `Serial` = '2100494098' AND TimeStamp>= 1615676406.314 AND TimeStamp<= 1615699506.314 Group By strftime('%H-%M', datetime(TimeStamp, 'unixepoch')); 04:03|0 05:03|0 05:03|0 05:03|0 sqlite>
Was mir gerade komisch vorkommt ist der String für die Zeit.
Du fragst mit der Abfrage einen String mit 3 Nachkommastellen ab 1615699506.314. In der Datenbank hat der String aber keine Nachkommastellen 1615915807. Kann das ein Grund sein?SBFspot version ist folgende:
SBFspot V3.7.1 Yet another tool to read power production of SMA solar inverters (c) 2012-2020, SBF (https://github.com/SBFspot/SBFspot) Compiled for Linux (LE) 32 bit with SQLite support Commandline Args: -v -ad1 -am0 -ae1 -cfg/usr/local/bin/sbfspot.3/SBFspot.cfg
Ich habe das mit dem Configtool installiert
-
Hi zusammen
Versuch mich grad in die Materie des ioBroker einzuarbeiten. Da ich schon einige Jahre SBFspot nutze hab ich mir den tollen Adapter hier installiert.
Super Sache...
Leider funktioniert die Beschriftung der X-Achse nicht richtig in der heute Ansicht. Bei Jährlich, Monatlich und 30 Tage passts.
Hat jemand Ideen ob ich das lösen kann, bzw ob das ein Bug ist ?LG Werner
-
@wene001 was verwendest du denn als "Datumsformat" in den Einstellungen?
-
%H:%M
Interessanterweise passte die Anzeige am Nachmittag (wenn 12:00 auch angeschrieben steht) Heut Früh ist es wieder abgeschnitten
Bei mir war nur 6:00 und 12:00 auf der Skala angegeben.Leider ist dies auch eine Stunde verschoben. Wie kann ich das auf MEZ+1 umstellen am besten mit automatischer Sommerzeitumschaltung.
Ich hab auch in meinem "today" json File nur Stundenwerte? sollten hier nicht 15min drin stehen...kann man das iwo einstellen?
Der Adapter startet alle 5min im Iobroker und das Json File aktualisiert sich auch alle 5 min und der letzte Stundenwert steigt alle 5 min an.Ideen dazu?
LG Werner
-
Hallo, ich muss hier mal wegen der Benutzerrechten für die Datenbasis fragen.
Ich habe SBFspot neu aufgesetzt, die Daten werden auch alle 5 Minuten eingelesen und in PVoutput.org dargestellt, soweit alles gut.
Die sbfspot.0 Instanz wird alle 15 Minuten aufgerufen. Dabei kommt zu ca. 50% eine Fehlermeldung.sbfspot.0 2023-06-17 12:45:06.147 error exception in DB_GetInverters [SqliteError: attempt to write a readonly database] sbfspot.0 2023-06-17 12:30:07.960 error exception in DB_GetInverters [SqliteError: attempt to write a readonly database] sbfspot.0 2023-06-17 12:15:06.118 error exception in DB_GetInverters [SqliteError: attempt to write a readonly database] sbfspot.0 2023-06-17 11:30:06.708 error exception in DB_GetInverters [SqliteError: attempt to write a readonly database] sbfspot.0 2023-06-17 11:00:06.655 error exception in DB_GetInverters [SqliteError: attempt to write a readonly database] sbfspot.0 2023-06-17 10:15:07.672 error exception in DB_GetInverters [SqliteError: attempt to write a readonly database]
Wenn die Fehlermeldung kommt, werden keine Daten an den iobroker weitergegeben, ansonsten schon.
OK, die sqlite-database liegt in meinem User-homeverzeichnis im Subverzeichnis "smatdata" und nicht unter home/iobroker wie es evtl besser wäre. Die Datei gehört der Gruppe "user" und dem Benutzer "user"
Ich habe die Dateirechte der Datenbasis auf "666" gesetzt, aber das hat nichts geändert.
Warum ist der Fehler sporadisch und wie kann ich das einfach umgehen ohne die DB neu anzulegen ? Die Datei einer Gruppe von iobroker und User zuweisen ?
Nachtrag: Per Gruppe funktioniert es scheinbar jetzt. -
@tottbeck das ist meist das Recht auf den Ordner und nicht die Datenbank-Datei selbst...