NEWS
Neuer Adapter: SMA Wechselrichter mit sbfspot
-
Hallo zusammen,
ich habe sbfspot auf meinem Raspberry Pi 3B installiert und es werden auch Daten empfangen. Alleridings bekomme ich die Daten nicht in den ioBroker. Das System lief bereits ca. 1 Jahr bei mir bis der Pi abgeschmirt ist. Hat da jemand eine Idee?
Der Befehl
/usr/local/bin/sbfspot.3/SBFspot -v -finq -nocsv
liefert Daten aber ich bekomme sie nicht in den ioBroker. -
@alex9926 Bitte beachte, dass sbsfspot die Daten in eine Datenbank schreibt. Der Adapter holt sich die Daten aus der Datenbank!
Hast du geprüft, ob die Daten in der Datenbank ankommen? Hast du Zugriff? Welche Datenbank nutzt du (mariaDB oder sqlite)? -
Hallo, ich nutze sqlite. Wie überprüfe ich den Zugriff auf die Datenbank?
-
@alex9926 In dem Fall musst du nur das log anschauen... Ich befürchte, du bekommst eine exception, weil sqlite nicht installiert ist.
Wenn dem so ist, siehe hier:https://github.com/rg-engineering/ioBroker.sbfspot#known-issues
-
Ja da hast du Recht. Gibt es für dieses Problem bereits eine Lösung? Ich habe mich 1 zu 1 an die Anleitung gehalten.
-
Nur mal so: Bevor ihr SBFSpot benutzt (habe ich auch lange gemacht) prüft doch mal ob eurer SMA WR Modbus unterstützt.
Meiner konnte das auch nach einem SW Upgrade und dann kann man die Daten in Echtzeit auslesen.
-
Hi,
ab einer Version höher .49 oder 54 geht modbus wohl. Leider funktioniert bei mir das automatische Updaten nicht.
Ich nehme jetzt den sma-speedwire Adapter, der geht übers lokale Netz (TCP/IP) und loggt sich mit Benutzername und Passwort in den WR ein und holt die Daten. Spart mir SBFspot und das Auslesen aus einer dritten Datenbank.
-
Vielen Dank für die Tipps aber mir reicht das Auslesen mittels sbfspot. @Rene_HM Hast du einen Lösungsansatz parat? Ich habe auf der Seite leider nichts passendes gefunden.
-
@martinschm sagte in Neuer Adapter: SMA Wechselrichter mit sbfspot:
Hi,
ab einer Version höher .49 oder 54 geht modbus wohl. Leider funktioniert bei mir das automatische Updaten nicht.
Ich nehme jetzt den sma-speedwire Adapter, der geht übers lokale Netz (TCP/IP) und loggt sich mit Benutzername und Passwort in den WR ein und holt die Daten. Spart mir SBFspot und das Auslesen aus einer dritten Datenbank.
Was für ein Automatisches Updaten funktioniert womit nicht?
-
@alex9926 Eine echte Lösung habe ich nicht. Das Problem ist, dass sich das sqlite3 -package oft nicht einfach installieren lässt Ich habe beim Autor schon ein Ticket geöffnet, bisher aber ohne Reaktion...
Ich installiere meist manuell, dann brauchts aber oft viele Anläufe, bis sich das package installieren lässt:auf einem Linux-System wäre das:
cd /opt/iobroker/node_modules/iobroker.sbfspot sudo npm install
-
Klappt leider nicht. Die Installation schlägt immer noch fehl. Hat da jmd. eine Idee?
-
Hallo in die Runde,
ich bin neu in diesem Forum und auch sonst Foren-unerfahren. Ich hoffe dennoch, ich "bekomme das hin" (;-).Zuerst einmal ein Dank an Rene_HM, für die Arbeit, die er in die Entwicklung des Adapters gesteckt hat!!!
Ich habe in den letzten Wochen einen Raspi3B+ via noobs eingerichtet und darauf ioBroker installiert, weil ich
meinen SMA Wechselrichter Sunny TriPower 10.0 damit visualisieren möchte. Es hat so lange gedauert, weil ich mir
alles erst anlesen mußte. Grundsätzlich scheint nun alles zu funktionieren: Raspian, ioBroker, sqlite, sbfspot und
selbst der SBFspot-Adapter zeigt mir im ioBroker unter den Objekten realistische Werte z. B. für ETotal oder
Frequency. Im Log gibt es keine Fehlermeldungen und ich sehe regelmäßig, wenn der cronjob triggert, die erfolgreiche
Verbindungsaufnahme mit SBFspot.db, die abgesetzten Select-Statements, die Antworten darauf, sowie das abschließende "all done" und die Trennung von der DB. Alles ohne Fehler!Ich kann im Vis jeden einzelnen Wert des Adapters z. B. mit Number- oder String-Widgets einblenden. Sie werden
korrekt angezeigt und aktualisiert.Nur das sbfspot-Widget bleibt unsichtbar und zeigt als einzigen Hinweis, daß es in der View überhaupt existiert: "no
data available yet for sbfspot". Aber das kann ja wohl nicht stimmen, denn gemäß Log (siehe unten) sind doch offensichtlich Daten in der DB.Ich arbeite mit FireFox64Bit auf einem Win7-Rechner (ja ich weiß, wird nicht mehr mit Sicherheitsupdates versorgt,
aber daran wird´s ja wohl nicht liegen (;-)). Mit anderen Browsern bleibt das Widget auch unsichtbar. Ich habe jetzt
tagelang systematisch alle (für mich) denkbaren Parametrierungen des Widgets durchprobiert. Vergebens.Kann es sein, daß das Widget ein Problem mit dem Typ meines WR hat?
Auszug aus dem Log (Serial# von mir nur hier durch xyz ersetzt):
instance system.adapter.sbfspot.0 started with pid 4309
(4309) starting. Version 2.4.0 in /opt/iobroker/node_modules/iobroker.sbfspot, node: v10.19.0
(4309) start with sqlite
(4309) --- connecting to /mnt/usb/smadata/SBFspot.db
(4309) sqlite Database is connected ...
(4309) SELECT * from Inverters
(4309) rows [{"Serial":"xyz","Name":"SN: xyz","Type":"UNKNOWN TYPE","SW_Version":"01.01.18.R","TimeStamp":1584286802,"TotalPac":607,"EToday":0,"ETotal":774465,...
(4309) got data from UNKNOWN TYPE with ID xyz
(4309) SELECT * from SpotData where Serial =xyz ORDER BY TimeStamp DESC LIMIT 1
(4309) rows [{"TimeStamp":1584286802,"Serial":xyz,"Pdc1":192,"Pdc2":423,"Idc1":0.374,...Oder habt Ihr noch andere Ideen?
Vielen Dank vorab für Eure Hilfe! -
@Andersmacher Wenn die Daten im ioBroker sind, bekommen wir die auch in's widget
Kannst du mal zeigen, wie du das widget konfiguriert hast? Und dann wäre das Browser log hiflreich (unter firefox: web entwickler -> web console) -
@Rene_HM Danke für die flotte Reaktion.
Was mir nach meinen ganzen Tests am erfolgversprechendsten schien:
Ich habe das Widget so genommen, wie es angeboten wird und nur drei Einstellungen vorgenommen.
sbfspot-Instanz: sbfspot.0
Seriennummer des Wechselrichters: meine wirkliche Wechselrichterseriennummer (im Screenshot 4711 genannt)
wählen: 30 Tage
Aber auch mit unglaublich vielen anderen von mir ausprobierten Einstellungskombinationen war das Widget nie zu sehen.
Das mit dem Browser-Log ist für mich Neuland. Ich hoffe der nachfolgende Screenshot ist das, was Du meinst:
Unter dem Link "Weitere Information" steht:
-
@Andersmacher Die Einstellungen sind okay, das log prinzipiell auch. Nur würde ich deutlich mehr Aktivitäten im log erwarten, deshalb bitte das log öffnen und dann einfach mal den Namen der Instanz in den Einstellungen ändern, aber zum Schluß wieder richtig einstellen.
Im ioBroker Objekt-Browser könntest du auch mal schauen, ob im Datenpunkt sbfspot.0.4711.history.last30Days vernünftige Daten stehen. -
"Den Namen der Instanz ändern" ==> Falls Du nicht den Namen des Widgets (redet man hier von einer Widget-Instanz) meinst, gehts bei mir schon an die Grenzen. Den Namen von "sbfspot.0" kann ich doch nicht ändern - oder?
Inzwischen habe ich einen neuen Eintrag im Web-Log. Ich habe allerdings zwischenzeitlich auch etwas mit dem Browser "gearbeitet".
Im Datenpunkt sbfspot.0.4711.history.last30Days stehen keine Daten, sondern eine Formel:
[{"date":"2020-03-15","value":0}]
Wobei in einem MouseOver-Popup aber steht Bestätig: true, Zeitstempel..., Benutzer...
Davon hab ich auf die Schnelle keinen Screenshot hinbekommen.
Das neue Browser-Log:
Entschuldige bitte die Zeit, die meine Antworten brauchen. Die Handhabung ist für mich noch ungewohnt. -
@Andersmacher sagte in Neuer Adapter: SMA Wechselrichter mit sbfspot:
Den Namen von "sbfspot.0" kann ich doch nicht ändern - oder?
doch, genau das wollte ich. Ich brauche einen Trigger, der das Zeichnen des widgets anstösst. Das passiert immer bei Änderungen in den Einstellungen. Dann sollte im log stehen, warum nicht gezeichnet werden kann. (und das sind in der Regel viel mehr Zeilen)
[{"date":"2020-03-15","value":0}]
Das sind Daten, aber nur ein Wert (Datum und Ertragswert). Hier würde ich aber 30 erwarten (wegen "letzte 30 Tage"). Kann es sein, dass du nur Daten von heute in der Datenbank hast? Warum dann aber Ertrag = 0? Bei mir war heute eigentlich guter Ertrag... Was sagt der Datenpunkt "sbfspot.0.xyz.history.today". Hat der mehr Werte?
-
@Rene_HM OK, jetzt hab ich hoffentlich verstanden, was Du meintest. Habe im Vis aus
sbfspot-Instanz: sbfspot.0
sbfspot-Instanz: Test.0
gemacht und wieder zurück geändert. Dabei gab´s dann jede Menge Einträge ins Browser-Log. Die habe ich per Screen-Shot nicht erwischt, weil die ja "durchrattern" und das Logfenster dabei scrollt. Daher hier der hoffentlich relevante Auszug:22:12:47.731 bind sbfspot.0.4711.history.today edit.html:6743:29 22:12:47.732 ShowChart sbfspot (w00003) edit.html:6383:29 22:12:47.734 Error: can't render tplSbfspotShowInstance w00003 on "PV-Anlage": conn.js:1142:17 22:12:47.735 Error: 0 - TypeError: $.plot is undefinedinit@http://192.168.x.y:8082/vis/edit.html?PV-Anlage#PV-Anlage:6763:21 conn.js:1142:17 22:12:47.738 Error: 1 - this.fn/<@tplSbfspotShowInstance.js:30:47 conn.js:1142:17 22:12:47.740 Error: 2 - txt@http://192.168.x.y:8082/vis/lib/js/can.custom.min.js:74:907 conn.js:1142:17 22:12:47.741 Error: 3 - this.fn@tplSbfspotShowInstance.js:25:10 conn.js:1142:17 22:12:47.742 Error: 4 - n.prototype.render@http://192.168.x.y:8082/vis/lib/js/can.custom.min.js:76:475 conn.js:1142:17 22:12:47.743 Error: 5 - n/<@http://192.168.x.y:8082/vis/lib/js/can.custom.min.js:76:256 conn.js:1142:17 22:12:47.743 Error: 6 - r@http://192.168.x.y:8082/vis/lib/js/can.custom.min.js:58:138 conn.js:1142:17 22:12:47.744 Error: 7 - renderTo@http://192.168.x.y:8082/vis/lib/js/can.custom.min.js:58:2982 conn.js:1142:17 22:12:47.745 Error: 8 - renderAs@http://192.168.x.y:8082/vis/lib/js/can.custom.min.js:58:3631 conn.js:1142:17 22:12:47.746 Error: 9 - e.template@http://192.168.x.y:8082/vis/lib/js/can.custom.min.js:58:1267 conn.js:1142:17 22:12:47.747 Error: 10 - renderWidget@http://192.168.x.y:8082/vis/js/vis.js:1610:33 conn.js:1142:17 22:12:47.748 Error: 11 - reRenderWidget@http://192.168.x.y:8082/vis/js/vis.js:1043:14 conn.js:1142:17 22:12:47.749 Error: 12 - reRenderWidgetEdit@http://192.168.x.y:8082/vis/js/visEdit.js:4231:14 conn.js:1142:17 22:12:47.749 Error: 13 - showInspect/<@http://192.168.x.y:8082/vis/js/visEditInspect.js:1711:38 conn.js:1142:17 22:12:47.750 Error: 14 - dispatch@http://192.168.x.y:8082/lib/js/jquery-1.11.2.min.js:3:8549 conn.js:1142:17 22:12:47.750 Error: 15 - add/r.handle@http://192.168.x.y:8082/lib/js/jquery-1.11.2.min.js:3:5252 conn.js:1142:17 22:12:47.750 Error: 16 - conn.js:1142:17 22:12:47.761 need to wait... (w00003) edit.html:6389:37 22:12:47.761 ShowChart sbfspot (w00003) edit.html:6383:29
Die letzten zwei Zeilen wiederholen sich dann immer.
Zu
[{"date":"2020-03-15","value":0}]Auch bei den Today-Werten gibt es nur einen. Daß der letzte/aktuelle Todaywert Null ist, scheint bei meinem WR so zu sein. Auch wenn ich da via Browser drauf gehe und exportiere, ist der Wert erst nach Mitternacht verfügbar.
Aber auf Grund Deines Hinweises (die "Formel" an der Stelle muß mehr als einen Wert ergeben) muß ich mir wohl doch noch ´mal genauer anschauen, was in der DB wirklich steht. Dazu muß ich mich ersteinmal noch etwas mit der Abfragesprache beschäftigen. Dazu brauche ich einige Zeit, denn morgen geht die Woche ja wieder los.Würde denn Dein Widget bei nur einem verfügbaren Wert sich gar nicht anzeigen/nicht gerendert werden können?
Vielen Dank erst´mal für die Hilfe bis hier und den Hinweis auf das lehrreiche Browser-Log!
-
@Andersmacher bzgl. sbfspot bist du komplett der Anleitung unter https://github.com/SBFspot/SBFspot/wiki/Installation-Linux-SQLite inkl. https://github.com/SBFspot/SBFspot/wiki/Installation-Linux-SQLite#️-automation gefolgt?
Wo loggst du dich ein, um zu prüfen, ob die Daten da sind (in den WR oder die Datenbank?) -
@Rene_HM In den WR einloggen bringt aus meiner Sicht keine Erkenntis über das Vorhandensein von Daten in der DB. Daher hatte ich die "DB-Testing"-Befehle aus der Installanleitung benutzt und auch immer die erwarteten Antworten erhalten.
Den Weg über die von Dir genannten Anleitungen bin ich auch gegangen, aber zuerst hatte ich die englische "SBFspot V3 install on Raspberry Pi EN 1.0.pdf" benutzt, die noch auf codeplex.com verweist, weil ich die neueren Anleitungen zunächst nicht kannte. Bei der englischen muß man zwar selber auf Idee kommen, vor dem Installieren erst zu kompilieren, um Erfolg zu haben aber aus meiner Sicht ist sie gleichwertig mit der von Dir benannten. Bei beiden muß man (ich) die SBFspot.cfg nachträglich noch manuell editieren, da das (halb)automatische Konfigurationsprogramm keine Eingabe eines Paßwortes für den Wechselrichter bietet.
Letztlich hielt ich für wichtig, daß sqlite und SBFspot läuft und durch die regelmäßigen Cronjobs (Mit "Crontab -e" sehe ich bei mir z. B. über Putty im Editor folgende Einträge:
*/5 6-22 * * * /usr/local/bin/sbfspot.3/daydata
55 05 * * * /usr/local/bin/sbfspot.3/monthdata) getriggert wird. Das hatte ich (bevor ich mich überhaupt um den Adapter gekümmert habe) getestet, indem ich die CSV-Export-Dateien (sind bei mir im sbfspot.cfg aktiviert) angesehen habe und dort regelmäßige Einträge/Aktualisierungen vorgefunden habe.
Jetzt, wo ich darüber schreibe, wurde mir klar, daß das kein Beweis für Datenbankeinträge war, denn die CSVs werden von sbfspot vermutlich nicht aus der Datenbank erzeugt, sondern beim Auslesen des WR.Daher habe ich heute den Raspi neu gestartet und wollte manuell die DB auslesen. Zunächst habe ich dabei jedoch bemerkt, daß ich heute plötzlich regelmäßig nach Cronjob-Trigger Fehlermeldungen im ioBroker-Log hatte:
sbfspot.0 2020-03-16 20:15:02.253 error (1726) Error while performing Query in GetInverter. Error: SQLITE_READONLY: attempt to write a readonly database
sbfspot.0 2020-03-16 20:15:02.220 debug (1726) SELECT * from Inverters
sbfspot.0 2020-03-16 20:15:02.219 debug (1726) sqlite Database is connected ...
sbfspot.0 2020-03-16 20:15:02.202 debug (1726) --- connecting to /mnt/usb/smadata/SBFspot.db
sbfspot.0 2020-03-16 20:15:02.201 info (1726) start with sqlite
sbfspot.0 2020-03-16 20:15:01.950 info (1726) starting. Version 2.4.0 in /opt/iobroker/node_modules/iobroker.sbfspot, node: v10.19.0Nachdem ich mich einmal manuell mit der db verbunden hatte und auch wunderbar manuell via "sqlite> select * from vwspotdata;" die Werte aus der db bekommen habe (Ich habe das als User pi probiert.), sind die Fehlermeldungen im ioBroker-Log weg und das Log zeigt den Verbindungs-/Abfrage-Ablauf, den ich gestern bereits gepostet hatte.
Du hattest in einem früheren Post ´mal geschrieben, daß Du nur Get-Statements benutzt und therotisch kein Write-Zugriff auf die DB erforderlich ist. Aus der Fehlermeldung
"Error while performing Query in GetInverter. Error: SQLITE_READONLY: attempt to write a readonly database"
habe ich jedoch geschlossen, daß da vielleicht doch Rechte-Probleme existieren, die durch einmalige manuelle Verbindung gelöst werden. Ja, eigentlich kann ich das nicht glauben/erklären, aber um auf Nummer sicher zugehen, habe ich via "chmod a+w SBFspot.db" jedem Schreibrechte auf die DB gegeben. Hat aber zunächst nichts gebracht. Im ioBroker-Log standen weiterhin bei jedem Cronjob-Trigger
"Error while performing Query in GetInverter. Error: SQLITE_READONLY: attempt to write a readonly database"
und zwar solange, bis ich mich wieder einmalig manuell mit der DB verbinde. Nur um ganz sicher zu gehen, daß ich nichts mißinterpretiere, hier die Ausgabe der DB nach den entsprechenden Select-Befehlen:pi@raspberrypi:/mnt/usb/smadata $ sqlite3 SBFspot.db
SQLite version 3.16.2 2017-01-06 16:32:41
Enter ".help" for usage hints.
sqlite> select * from inverters;
4711|SN: 4711|UNKNOWN TYPE|01.01.18.R|1584386195|0|0|819929|576.145|549.187|OK|N/A|0.0
sqlite> select * from vwspotdata;
2020-03-16 20:16:35|2020-03-16 20:15:00|SN: 4711|UNKNOWN TYPE|4711|0|0|0.0|0.0|0.0|0.0|0|0|0|0.0|0.0|0.0|0.0|0.0|0.0|0|0|0|0|819929|0.0|576.145|549.187|0.0|OK|N/A|0.0
2020-03-15 17:20:02|2020-03-15 17:20:00|SN: 4711|UNKNOWN TYPE|4711|96|214|0.203|0.393|473.58|546.13|92|101|102|0.529|0.559|0.612|219.27|224.35|223.21|310|295|95.2|0|774769|50.02|563.272|536.683|0.0|OK|Closed|0.0
2020-03-15 17:15:02|2020-03-15 17:15:00|SN: 4711|UNKNOWN TYPE|4711|107|239|0.226|0.436|476.06|549.78|105|114|115|0.575|0.617|0.661|221.52|222.96|223.01|346|334|96.5|0|774743|50.01|563.188|536.599|0.0|OK|Closed|0.0
2020-03-15 17:10:02|2020-03-15 17:10:00|SN: 4711|UNKNOWN TYPE|4711|119|270|0.238|0.498|505.91|543.78|119|130|129|0.623|0.674|0.71|221.12|223.6|223.86|389|378|97.2|0|774714|50.02|563.105|536.516|0.0|OK|Closed|0.0
2020-03-15 17:05:02|2020-03-15 17:05:00|SN: 4711|UNKNOWN TYPE|4711|139|305|0.277|0.55|502.94|554.51|137|148|146|0.694|0.751|0.784|222.64|225.14|222.94|444|431|97.1|0|774680|50.04|563.022|536.433|0.0|OK|Closed|0.0
2020-03-15 17:00:01|2020-03-15 17:00:00|SN: 4711|UNKNOWN TYPE|4711|151|331|0.299|0.595|506.63|558.23|148|162|161|0.741|0.808|0.837|221.62|225.05|224.79|482|471|97.7|0|774642|50.02|562.938|536.349|0.0|OK|Closed|0.0
usw.Das bedeutet doch wohl, daß in der DB Daten sind - oder?
Das obige chmod hat aber wohl bewirkt, daß nun nach einem Reboot des Raspi kein einmaliges manuelles Einloggen in die DB mehr erforderlich ist. Das ioBroker-Log bleibt auch so sofort fehlerfrei.
Nur damit ich auch selber besser testen/versuchen kann und das besser verstehe und hier nicht anderen/Dir soviel Arbeit mache noch einmal meine von gestern:
Würde Dein Widget sich nicht anzeigen / nicht zu sehen sein, wenn es keine Werte (oder eben nur einen Wert) aus der DB erhält?Die Fehlermeldung des Browsers von gestern ist auch heute unverändert vorhanden:
21:59:38.129 sbfspot history (w00003) edit.html:6158:25
21:59:38.130 bind sbfspot.0.4711.history.today edit.html:6743:29
21:59:38.130 ShowChart sbfspot (w00003) edit.html:6383:29
21:59:38.130 Error: can't render tplSbfspotShowInstance w00003 on "PV-Anlage": conn.js:1142:17
21:59:38.131 Error: 0 - TypeError: $.plot is undefinedinit@http://192.168.x.y:8082/vis/edit.html?PV_Anlage#PV-Anlage:6763:21 conn.js:1142:17
21:59:38.131 Error: 1 - this.fn/<@tplSbfspotShowInstance.js:30:47 conn.js:1142:17
21:59:38.131 Error: 2 - txt@http://192.168.x.y:8082/vis/lib/js/can.custom.min.js:74:907 conn.js:1142:17Welchen Grund könnte es denn aus Deiner Sicht geben, daß das Widget nicht gerendert werden kann? Auch ohne Daten müßte man doch zumindest Achsen oder sonst etwas sehen können - oder?