YASDI ist eine Softwarebibliothek zur Kommunikation mit SMA
Photovoltaik-Wechselrichtern. Die Software wird von SMA unter der
Open Source Lizenz LGPL zur freien Verfügung bereitgestellt. Wechselrichter
mit Bluetooth-Schnittstelle (SMAData2+ Protokoll) werden leider nicht unterstützt!
Inhaltsverzeichnis
1 Uebersicht
2 Portierungen
3 Aufbau
4 Sprachanbindungen
5 Lizenz
6 Versionen
7 Download
8 Tutorial
9 Historie
10 FAQ
10.1 Schnittstellen
10.2 Was geht?
10.3 Was ist nicht möglich?
10.4 Kann ich ein SunnyBeam verwenden?
Was ist YASDI?
Der Name YASDI steht fuer Yet another SMA Data Implementation. Der Name beschreibt eine in der Programmiersprache "C" geschriebene Software-Bibliothek (keine fertige Applikation), die das SMAData(1)-Protokoll implementiert. Es genuegen nur wenige zusaetzliche Zeilen, um eine vollstaendige aktive Applikation mit einer Wechselrichterkommunikation mit YASDI zu bauen.YASDI wurde mit einer sehr einfachen Abstraktionsschicht zum darunterliegenden Betriebssystem/Hardware entwickelt, so dass eine einfache Portierung auf andere Betriebssysteme oder Embedded-Baugruppen moeglich ist.
Portierungen
Zur Zeit ist YASDI auf folgende Betriebssysteme portiert worden:-
Linux (little + big endian, 32bit/64bit)
Windows32
Mac OS X (privat)
WindowsCE (nur SMA intern)
RTOS32/RTKERNEL32 (nur SMA intern)
Solaris (nur SMA intern)
AmigaOS (nur privat)
Aufbau
Die zu benutzende Master-API wurde einfach gehalten, um moeglichst viele Sprachen und System unterstuetzen zu koennen. Die API verwendet nur sehr einfache Datentypen... YASDI wurde modular in mehrere Schichten und Module aufgeteilt:
Programmiersprachenanbindungen
YASDI wurde in "C" geschrieben, besitzt aber darueber hinaus bereits einige Anbindungen zu anderen Programmiersprachen/Skriptsprachen, die die "C"-API verwenden. Zur Zeit existieren folgende Sprachanbindungen:- C (100% SMA offiziell)
- Labview (100%, nur SMA intern)
- Java (99%, nur SMA intern)
- C++ (privat)
- Objective-C ( experimentell, privat)
- Python (privat) ( experimentell, privat)
Lizenz
YASDI ist seit Version 1.7 unter der freien Lizenz LGPL verfügbar.
Welche Versionen gibt es derzeit?
- Version 1.3 Erste oeffentliche Version
- Version 1.5 (SMA interne Version, Unterstützung von Big-Endian Prozessoren)
- Version 1.7 Signifikante Geschwindigkeitssteigerungen
- Version 1.8 Parallelisierung von Anfragen, Asynchrones Interface, Bau mit CMAKE
- Version 1.8.1 (Bugfixes, in Arbeit...in 2010)
Download
Yasdi kann vom SMA Webserver frei bezogen werden: YASDI Dowload
Tutorial
Hier liegen ein paar einfache kleine Tutorials, die zeigen, wie einfach und simpel man mit YASDI und wenigen zusaetzlichen Zeilen Code mit SMA-Wechselrichtern kommunizieren kann:- "C"-Tutorial
- YASDI compilieren (im YASDI Source Paket enthalten)
Entstehungsgeschichte
YASDI entstand als SMA-internes Nebenprojekt der "SunnyBoy-Fertigungsendpruefung", jetzt Sunny Boy Produktion/Fertigung. Hier werden die Sunny Boys umfangreichen Funktions- und Dauerlastpruefungen unterzogen. Das gesamte Pruefsystem laeuft komplett unter Linux. Das Pruefsystem nutzt YASDI fuer die Kommunikation mit den Wechselrichtern...FAQ
Welche Schnittstellen kann YASDI derzeit bedienen?
YASDI kann theoretisch mit beliebigen Arten von Bussen umgehen, da die unteren Treiber als Module abstrahiert sind. Zur Zeit existieren folgende Schnittstellenmodule:- Seriell
- RS232: Geräte, die direkt über ein RS232-Kabel angeschlossen werden
- RS485: Geräte ueber RS485/RS232 Umsetzer
- Powerline: Geräte, die über ein SMA-Powerline-Modem (mit RS232-Anschluss) angesteuert werden können
- Ethernet (TCP/IP): Ansteuerung von SunnyBoyControl's mit eingebautem Ethernet-Piggy-Back (erst ab YASDI Version 1.5)
- Bluetooth (nur SMA intern, experimentell)
Was kann denn YASDI alles?
- Unterstützung des Kommunikationsprotoolls SMAData(1)
- SMA-Geräte (Wechselrichter, Datenlogger) suchen/erfassen
- Abfrage und Halten der Kanalliste von Geräten (Kanalbeschreibung)
- Abfrage von Momentanwerten
- Abfrage von Testkanalwerten
- Abfrage von Parameterkanälen
- Setzen von Parameterkanälen
Was kann YASDI NICHT?
- Keine Unterstützung fuer Geraete mit SMAData2 oder SMAData2Plus Protokoll. Das sind alle SunnyBoy Next Generation mit Bluetooth-Schnittstelle !!
- Datenloggeraufzeichnungen (von SBC oder SunnyBeams) auslesen
- mit SunnyBeams ueber USB kommunizieren (geht nur mit kleinem Patch unter Linux)
- Gerätehierarchien (Datenloggermodus: SBC) werden nicht unterstuetzt, der Modus ist nicht eingebaut.
Kann ich ein SunnyBeam verwenden?
Jein, ein SunnyBeam (nicht Bluetooth) wird nicht offiziell unterstuetzt. Mit einem kleinen Patch ist es aber unter Linux moeglich. Dabei ist der Zugriff auf die summierten Werte der Anlage beschraenkt. Die einzelnen Wechselrichter sind leider weiter nicht erreichbar (keine Geraetehierarchien).Unter Linux ist folgendes zu tun:
sudo modprobe ftdi_sio product=0x002d vendor=0x1587In der Sourcedatei code/smadata_layer.c in der Funktion TSMAData_SendRawPacket die Zeilen
/* Stringfilter? (SDC <=> SD Modus) */
if (Flags & TS_STRING_FILTER)
{
ersetzen durch
/* Stringfilter? (SDC <=> SD Modus) */
if (1)
{
Die Schnittstelleneigenschaften in der yasdi.ini auf 9600 Baud sowie den serielen Port auf
/dev/ttyUSB0 stellen:
[COM1] Device=/dev/ttyUSB0 Media=RS232 Baudrate=9600 Protocol=SMANet
Die erfolgreiche Erfassung sieht dann so aus:
************************************************************
YASDI Mini Shell (build for Linux)
(This is an test program using YASDI)
************************************************************
Switching driver 'COM1' on...success
Command ('?' for help): e1
Starting device detection (sync).
How many devices should be searched?
New device found: 'SBeam012 SN:140002520'
-------------------------------------------
Device handle | Device Name
-------------------------------------------
1 | 'SBeam012 SN:140002520'
-------------------------------------------
Command ('?' for help): a1
Device handle: Device 'SBeam012 SN:140002520' has 3 Spot channels:
Reading channel values, please wait...
------------------------------------------------------------
Channel handle | Channel name | Channel value (Unit) |
------------------------------------------------------------
3 | ' Pac' | '0.000' (W)
7 | ' E-heute' | '0.000' (kWh)
8 | ' E-Total' | '0.000' (kWh)
Command ('?' for help):
977