Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Neuer Adapter: SMA Wechselrichter mit sbfspot

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Neuer Adapter: SMA Wechselrichter mit sbfspot

    This topic has been deleted. Only users with topic management privileges can see it.
    • Bastelritius
      Bastelritius last edited by

      @wendy2702 said in Neuer Adapter: SMA Wechselrichter mit sbfspot:

      @bastelritius Bezüglich dem SQLite steht das hier eine Seite vorher:

      Im Verzeichnis /opt/iobroker/node_modules/iobroker.sbfspot musst du npm install aufrufen, um alle Abhängigkeiten zu installieren.
      

      Ok, jetzt scheint sich was zu tun. Brauchte allerdings zwei Anläufe da ich das npm install auf dem slave ausführen musste und nicht auf dem Master. 🙂

      wendy2702 1 Reply Last reply Reply Quote 0
      • wendy2702
        wendy2702 @Bastelritius last edited by

        @bastelritius Ja, das muss auf dem System ausgeführt werden auf dem die Instanz läuft.

        Sorry, für mich logisch deshalb nicht extra erwähnt.

        Bastelritius 1 Reply Last reply Reply Quote 0
        • Bastelritius
          Bastelritius @wendy2702 last edited by

          Ja, ist ja auch logisch. Ich war einfach zu schnell dabei 🙂

          Jetzt hab ich mich aber irgendwie zu früh gefreut. Irgendwie wurden nur ein paar Daten aus der Datenbank übernommen. Nun kommt folgende Meldung:

          sbfspot.0	2021-03-11 13:50:06.618	info	(11380) Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason
          sbfspot.0	2021-03-11 13:50:06.617	debug	(11380) Plugin sentry destroyed
          sbfspot.0	2021-03-11 13:50:06.615	debug	(11380) timer killed
          sbfspot.0	2021-03-11 13:50:06.614	info	(11380) all done ...
          sbfspot.0	2021-03-11 13:50:06.613	debug	(11380) disconnect database
          sbfspot.0	2021-03-11 13:50:06.612	error	(11380) exception in DB_AddDummyData [SqliteError: attempt to write a readonly database]
          sbfspot.0	2021-03-11 13:50:06.611	debug	(11380) INSERT INTO`Inverters`(`Serial`, `Name`, `Type`, `SW_Version`, `TimeStamp`, `TotalPac`, `EToday`, `ETotal`, `OperatingTime`, `FeedInTime`, `Status`, `GridRelay`, `Temperature`) VALUES( 1234567
          sbfspot.0	2021-03-11 13:50:06.610	debug	(11380) add dummy data
          sbfspot.0	2021-03-11 13:50:06.609	error	(11380) no inverter data found, adding dummy data...
          sbfspot.0	2021-03-11 13:50:06.608	debug	(11380) rows undefined
          sbfspot.0	2021-03-11 13:50:06.607	error	(11380) exception in DB_GetInverters [SqliteError: attempt to write a readonly database]
          sbfspot.0	2021-03-11 13:50:06.604	debug	(11380) SELECT * from Inverters
          sbfspot.0	2021-03-11 13:50:06.603	debug	(11380) sqlite Database is connected ...
          sbfspot.0	2021-03-11 13:50:06.571	debug	(11380) --- connecting to /home/pi/smadata/SBFspot.db
          sbfspot.0	2021-03-11 13:50:06.570	info	(11380) start with sqlite
          sbfspot.0	2021-03-11 13:50:06.568	debug	(11380) sunrise 06:34 sunset 18:11 true
          sbfspot.0	2021-03-11 13:50:06.565	debug	(11380) system longitude 12.044093013028032 latitude 48.815940688183474
          sbfspot.0	2021-03-11 13:50:06.504	debug	(11380) start
          sbfspot.0	2021-03-11 13:50:06.396	info	(11380) starting. Version 4.0.4 in /opt/iobroker/node_modules/iobroker.sbfspot, node: v12.21.0, js-controller: 3.2.16
          sbfspot.0	2021-03-11 13:50:06.309	info	(11380) Plugin sentry Sentry Plugin disabled for this process because sending of statistic data is disabled for the system
          sbfspot.0	2021-03-11 13:50:06.275	debug	(11380) Plugin sentry Initialize Plugin (enabled=true)
          

          Anscheinend hat er nun Zugriffsprobleme. Ich verstehe es aber nicht ganz. Der Adapter ruft doch die Daten nur ab. Wieso gibt es dann den Fehler

          SqliteError: attempt to write a readonly database
          

          Er will doch nur lesen, oder will der Adapter auch etwas schreiben?
          Die Berechtigungen der SBFspot.db habe ich auf iobroker und dialout geändert. Berechtigung sollte somit da sein, oder?

          Thomas Braun 1 Reply Last reply Reply Quote 0
          • Thomas Braun
            Thomas Braun Most Active @Bastelritius last edited by

            @bastelritius Der user iobroker darf erstmal nix im home-Verzeichnis des users pi.
            Ich hätte die db in ~ von iobroker installiert oder dem iobroker (über eine gemeinsame Gruppe vielleicht) Rechte in einem Extra-Verzeichnis in /home/pi eingeräumt.

            Bastelritius 1 Reply Last reply Reply Quote 0
            • Bastelritius
              Bastelritius @Thomas Braun last edited by

              @thomas-braun said in Neuer Adapter: SMA Wechselrichter mit sbfspot:

              @bastelritius Der user iobroker darf erstmal nix im home-Verzeichnis des users pi.
              Ich hätte die db in ~ von iobroker installiert oder dem iobroker (über eine gemeinsame Gruppe vielleicht) Rechte in einem Extra-Verzeichnis in /home/pi eingeräumt.

              OK, wieder was gelernt. Der Datebankdatei hatte ich schon die Gruppe Dialout gegeben. Dem Verzeichnis smadata aber nicht. Anscheinend war dass das Problem. Jetzt funktioniert es.

              Vermutlich würde die DB Datei aber im iobroker Ordner mehr Sinn machen. Aber das kann ich mir ja noch überlegen. Momentan bin ich erst mal im Testbetrieb. Mal sehen was jetzt so für Daten auflaufen und wie man diese dann auch sinnvoll auswerten/ anzeigen kann.

              Danke

              1 Reply Last reply Reply Quote 0
              • Bastelritius
                Bastelritius last edited by

                So, Daten werden gesammelt 👏
                Jetzt habe ich allerdings eine Frage zu den Historie Daten und dem Widget.

                1. Kann man im Widget mehrere WR anzeigen lassen. Meine Anlage besteht nämlich aus 3 Stück, oder muss ich dann 3 Widgets benutzen?
                2. 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.
                [{"time":"06:03","value":36},{"time":"07:03","value":1085},{"time":"08:03","value":3091},{"time":"09:03","value":4666},{"time":"10:03","value":5873},{"time":"11:03","value":7241},{"time":"12:03","value":9372},{"time":"13:03","value":11600},{"time":"14:03","value":12966},{"time":"15:03","value":13746},{"time":"16:03","value":14259}]
                

                Danke

                Rene_HM 1 Reply Last reply Reply Quote 0
                • Rene_HM
                  Rene_HM Developer @Bastelritius last edited by

                  @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...

                  Bastelritius 1 Reply Last reply Reply Quote 0
                  • Bastelritius
                    Bastelritius @Rene_HM last edited by Bastelritius

                    @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.

                    Rene_HM 1 Reply Last reply Reply Quote 0
                    • Rene_HM
                      Rene_HM Developer @Bastelritius last edited by

                      @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}, ... ]
                      
                      1 Reply Last reply Reply Quote 0
                      • Bastelritius
                        Bastelritius @wendy2702 last edited by Bastelritius

                        @wendy2702 said in Neuer Adapter: SMA Wechselrichter mit sbfspot:

                        @bastelritius sagte in Neuer Adapter: SMA Wechselrichter mit sbfspot:

                        1. 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

                        1 Reply Last reply Reply Quote 0
                        • Bastelritius
                          Bastelritius last edited by

                          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?

                          Rene_HM 1 Reply Last reply Reply Quote 0
                          • Rene_HM
                            Rene_HM Developer @Bastelritius last edited by

                            @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

                            Bastelritius 1 Reply Last reply Reply Quote 0
                            • Bastelritius
                              Bastelritius @Rene_HM last edited by

                              @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#️-automation

                              Danke. 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

                              Rene_HM 1 Reply Last reply Reply Quote 0
                              • Rene_HM
                                Rene_HM Developer @Bastelritius last edited by

                                @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 nicht

                                select * 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'));
                                
                                Bastelritius 1 Reply Last reply Reply Quote 0
                                • Bastelritius
                                  Bastelritius @Rene_HM last edited by

                                  @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 nicht

                                  select * 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:06

                                  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'));
                                  

                                  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

                                  W 1 Reply Last reply Reply Quote 0
                                  • W
                                    Wene001 @Bastelritius last edited by

                                    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
                                    heute.JPG

                                    Rene_HM 1 Reply Last reply Reply Quote 0
                                    • Rene_HM
                                      Rene_HM Developer @Wene001 last edited by

                                      @wene001 was verwendest du denn als "Datumsformat" in den Einstellungen?

                                      1 Reply Last reply Reply Quote 0
                                      • W
                                        Wene001 last edited by Wene001

                                        %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

                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          Tottbeck last edited by Tottbeck

                                          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.

                                          Rene_HM 1 Reply Last reply Reply Quote 0
                                          • Rene_HM
                                            Rene_HM Developer @Tottbeck last edited by

                                            @tottbeck das ist meist das Recht auf den Ordner und nicht die Datenbank-Datei selbst...

                                            T 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            492
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            26
                                            248
                                            38049
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo