Infos

http://www.fhemwiki.de/wiki/SMAWechselrichter

https://sbfspot.codeplex.com/discussions/560704

SBFSpot ist eine Software, welche Werte von SMA-Wechselrichtern abholen kann. Es wird compiliert und kann dann als Linux-Kommando aufgerufen werden. Die Ergebnisse der Datenabfrage werden auf der Konsole ausgegeben. Damit kann man SBFSpot innerhalb eines PHP-Scripts aufrufen, welches die Ergebnisse dann aufbereitet an OpenHAB weitergibt.

Download

Download  SBFspot_SRC_303_Linux_Win32.tar.gz  from https://sbfspot.codeplex.com/releases/view/190090 auf den PC. Mit 7Zip wird das Paket in ein leeres Verzeichnis auf dem PC entpackt. Insgesamt sind dann vier Verzeichnisse zu sehen. Davon wird lediglich SBFspot benötigt.

Installation

Bluetooth und sqlite3 werden immer benötigt, selbst wenn man die Werte über Speedwire (Ethernet/LAN) abfragt. Am Raspberry per SSH als Benutzer "pi" anmelden und dann folgende Befehle eingeben:

sudo apt-get install libboost-all-dev libbluetooth-dev libsqlite3-dev
sudo apt-get install sqlite3 sudo apt-get --no-install-recommends install bluetooth cd /usr/share
sudo mkdir solar sudo mkdir solar/sbfspot.3 sudo chown pi:pi solar/sbfspot.3/ sudo mkdir solar/sbfspot.3/smadata sudo mkdir solar/sbfspot.3/smadata/logs sudo chown -R pi:pi solar/sbfspot.3/smadata/ sudo chmod -R 777 solar/sbfspot.3/smadata

Per FTP wird das komplette Verzeichnis SBFspot  des entpackten ZIP-Archivs nach /usr/share/solar/sbfspot.3 kopiert. Dann in der Konsole diese Befehle eingeben

cd /usr/share/solar/sbfspot.3/
sudo make install_sqlite

Dadurch wird das Programm SBFSpot inkl. der Verwendung von sqlite3 kompiliert. Anschließend wird die Datenbank erstellt:

cd /usr/share/solar/sbfspot.3/
sqlite3 SBFspot.db < CreateSQLiteDB.sql

Antwort des Befehls: wal

Jetzt wird getestet, ob die neu angelegte Datenbank in Ordnung ist:

sqlite3 SBFspot.db
  SQLite version 3.7.13 2012-06-11 02:05:22
  Enter ".help" for instructions
  Enter SQL statements terminated with a ";"
sqlite>select * from config;
  SchemaVersion|1
sqlite> .quit

Wenn diese Antworten erscheinen, funktioniert die Datenbank.

 

Konfiguration

Für die Konfiguration werden noch Latitude und Longitude Eures Wohnorts benötigt. Diese Werte kann man hier abfragen:

http://zip-code.en.mapawi.com

Jetzt wird mit dem Editor die Konfigurationsdatei aufgerufen:

sudo nano /usr/local/bin/sbfspot.3/SBFspot.cfg

Paßt die fett markierten Stellen an Eure Konfiguration an:

################################################################################
#                     ____  ____  _____                _   
#                    / ___|| __ )|  ___|__ _ __   ___ | |_ 
#                    \___ \|  _ \| |_ / __| '_ \ / _ \| __|
#                     ___) | |_) |  _|\__ \ |_) | (_) | |_ 
#                    |____/|____/|_|  |___/ .__/ \___/ \__|
#                                         |_|              
#
#  SBFspot.cfg - Configuration file for SBFspot.exe
#  SBFspot - Yet another tool to read power production of SMA® solar inverters
#  (c)2012-2014, SBF
#
#  DISCLAIMER:
#  A user of SBFspot software acknowledges that he or she is receiving this
#  software on an "as is" basis and the user is not relying on the accuracy 
#  or functionality of the software for any purpose. The user further
#  acknowledges that any use of this software will be at his own risk 
#  and the copyright owner accepts no responsibility whatsoever arising from
#  the use or application of the software. 
#
#  	SMA and Speedwire are registered trademarks of SMA Solar Technology AG
################################################################################

# SMA Inverter's Bluetooth address
# Windows: smaspot -scan
# Linux  : hcitool scan
# IMPORTANT FOR SPEEDWIRE USERS: COMMENT OUT BTADDRESS (PUT # IN FRONT)
#BTAddress=00:00:00:00:00:00

# SMA Inverter's Speedwire IP address
# If IP_Address is not set or is 0.0.0.0 SBFspot will try to detect the speedwire inverter by broadcast
# If IP_Address is set to a valid IP, SBFspot will try to connect directly to that IP without broadcast detection
#IP_Address=0.0.0.0

# User password (default 0000)
Password=1234

# MIS_Enabled (Multi Inverter Support: Default=0 Disabled)
# +------------+-------+-------------+
# | #Inverters | NetID | MIS_Enabled |
# +------------+-------+-------------+
# |      1          |   1      | Don't Care   |
# +------------+-------+-------------+
# |      1          |   >1    |      0           |
# +------------+-------+-------------+
# |      >1        |   >1    |      1           |
# +------------+-------+-------------+
MIS_Enabled=0

# Plantname
Plantname=AKR Bad Aibling

# OutputPath (Place to store CSV files)
# 
# Windows: C:\Users\Public\SMAdata\%Y
# Linux  : /home/pi/smadata/%Y
# %Y %m and %d will be expanded to Year Month and Day
OutputPath=/usr/share/solar/sbfspot.3/smadata/%Y

# OutputPathEvents (Place to store CSV files for events)
# If omitted, OutputPath is used
OutputPathEvents=/usr/share/solar/sbfspot.3/smadata/%Y/Events

# Position of pv-plant http://itouchmap.com/latlong.html
# Example for Ukkel, Belgium
Latitude=50.80
Longitude=4.33

# Calculate Missing SpotValues
# If set to 1, values not provided by inverter will be calculated
# eg: Pdc1 = Idc1 * Udc1
CalculateMissingSpotValues=1

# DateTimeFormat (default %d/%m/%Y %H:%M:%S)
# For details see strftime() function
# http://www.cplusplus.com/reference/clibrary/ctime/strftime/
DateTimeFormat=%d/%m/%Y %H:%M:%S

# DateFormat (default %d/%m/%Y)
DateFormat=%d/%m/%Y

# DecimalPoint (comma/point default comma)
DecimalPoint=point

# TimeFormat (default %H:%M:%S)
TimeFormat=%H:%M:%S

# SynchTime (default 1 = On)
# If set to 1 the Inverter time is synchronised with pc time
# Some inverters don't have a real-time clock
SynchTime=1

# SunRSOffset
# Offset to start before sunrise and end after sunset (0-3600 - default 900 seconds)
SunRSOffset=900

# Locale
# Translate Entries in CSV files
# Supported locales: de-DE;en-US;fr-FR;nl-NL;es-ES;it-IT
# Default en-US
Locale=de-DE

# Timezone
# Select the right timezone in date_time_zonespec.csv
# e.g. Timezone=Europe/Brussels
Timezone=Europe/Berlin

# BTConnectRetries
# Number of Bluetooth Connection attempts (1-15; Default=10) 
BTConnectRetries=10

###########################
### CSV Export Settings ###
###########################
# With CSV_* settings you can define the CSV file format

# CSV_Export (default 1 = Enabled)
# Enables or disables the CSV Export functionality
CSV_Export=0

# CSV_ExtendedHeader (default 1 = On)
# Enables or disables the SMA extended header info (8 lines)
# isep=;
# Version CSV1|Tool SBFspot|Linebreaks CR/LF|Delimiter semicolon|Decimalpoint comma|Precision 3
# etc...
# This is usefull for manual data upload to pvoutput.org
CSV_ExtendedHeader=1

# CSV_Header (default 1 = On)
# Enables or disables the CSV data header info (1 line)
# dd/MM/yyyy HH:mm:ss;kWh;kW
# This is usefull for manual data upload to pvoutput.org
# If CSV_ExtendedHeader is enabled, CSV_Header is also enabled
CSV_Header=1

# CSV_SaveZeroPower (default 1 = On)
# When enabled, daily csv files contain all data from 00:00 to 23:55
# This is usefull for manual data upload to pvoutput.org
CSV_SaveZeroPower=1

# CSV_Delimiter (comma/semicolon default semicolon)
CSV_Delimiter=semicolon

# CSV_Spot_TimeSource (Inverter|Computer default Inverter)
CSV_Spot_TimeSource=Inverter

# CSV_Spot_WebboxHeader (Default 0 = Off)
# When enabled, use Webbox style header (DcMs.Watt[A];DcMs.Watt[B]...)
CSV_Spot_WebboxHeader=0

###########################
###   SQL DB Settings   ###
###########################

# SQLite
# SQL_Database (Fullpath to SQLite DB)
# Windows: C:\Users\Public\SMAdata\SBFspot.db
# Linux  : /home/pi/smadata/SBFspot.db
SQL_Database=/usr/share/solar/sbfspot.3/smadata/SBFspot.db

# MySQL
#SQL_Database=SBFspot
#SQL_Hostname= or 
#SQL_Username=SBFspotUser
#SQL_Password=SBFspotPassword

 

Test der Installation

SBFSpot wird auf der Kommandozeile wie ein Linux-Kommando aufgerufen:

/usr/local/bin/sbfspot.3/SBFspot -v -finq -nocsv -nosql

Dies ergibt bei meiner SMA-Anlage folgende Ausgabe:

SBFspot V3.0.3
Yet another tool to read power production of SMA solar inverters
(c) 2012-2014, SBF (https://sbfspot.codeplex.com)
Compiled for Linux (LE) 32 bit

Commandline Args: -v -finq -nocsv -nosql
Reading config '/usr/local/bin/sbfspot.3/SBFspot.cfg'
Sat Jan 31 17:15:19 2015: INFO: Starting...
sunrise: 07:42
sunset : 17:08
Connecting to Local Network...
Initializing...
SUSyID: 125 - SN: 981564082 (0x3A817AB2)
Inverter IP address: 10.0.1.25 from SBFspot.cfg
Logon OK
SetInverterTime() not executed! We're still testing...
SUSyID: 175 - SN: 1915011190
Device Name: Sunny Multigate 190
Device Class: Kommunikationsprodukte
Device Type: Multigate-10
Software Version: 01.03.11.R
Serial number: 1915011190
SUSyID: 175 - SN: 1915011190
Device Status: Ok
SUSyID: 175 - SN: 1915011190
Device Temperature: 0.0°C
SUSyID: 175 - SN: 1915011190
Pac max phase 1: 0W
Pac max phase 2: 0W
Pac max phase 3: 0W
SUSyID: 175 - SN: 1915011190
Energy Production:
 EToday: 5.249kWh
 ETotal: 566.739kWh
 Operation Time: 3848.03h
 Feed-In Time : 18284.24h
SUSyID: 175 - SN: 1915011190
DC Spot Data:
 String 1 Pdc: 0.000kW - Udc: 17.07V - Idc: 0.000A
 String 2 Pdc: 0.000kW - Udc: 0.00V - Idc: 0.000A
SUSyID: 175 - SN: 1915011190
AC Spot Data:
 Phase 1 Pac : 0.000kW - Uac: 0.00V - Iac: 0.000A
 Phase 2 Pac : 0.000kW - Uac: 221.86V - Iac: 0.000A
 Phase 3 Pac : 0.000kW - Uac: 0.00V - Iac: 0.000A
 Total Pac : 0.000kW
SUSyID: 175 - SN: 1915011190
Grid Freq. : 49.99Hz
********************
* ArchiveDayData() *
********************
startTime = 54CC0CF0 -> 31/01/2015 00:00:00
**********************
* ArchiveMonthData() *
**********************
startTime = 54A528B0 -> 01/01/2015 12:00:00
Reading events: 2015-Jan-01
Sat Jan 31 17:15:20 2015: INFO: Done.

Die für meine Anlage wichtigen Werte sind

Energy Production:
        EToday: 0.154kWh
        ETotal: 553.228kWh
        Operation Time: 3702.80h
        Feed-In Time  : 17688.19h

Diese Werte kann man innerhalb des PHP-Scripts extrahieren und dann an OpenHAB übergeben:

  • Zeitstempel der SMA-Daten
  • EToday: Heute erzeugte KWh
  • ETotal: insgesamt erzeugte kWh seit Inbetriebnahme
  • Operation Time: Betriebsstunden seit erster Inbetriebnahme
0
0
0
s2smodern