SUPER - habe kürzlich meine PV-Anlage bekommen und total happy diese Anleitung gefunden zu haben.
Habe eine Ergänzung und eine Frage - die Frage zuerst:
Ich lasse das Script bei mir alle 5 Sekunden laufen, um zu Testzwecken zu schauen, ob es auch funktioniert, sprich die Änderungen anzeigt. Allerdings zeigt mein Zeitstempel immer nur dieselbe Uhrzeit und dies seit fast 40 Minuten, mit den Werten zu diesem Zeitpunkt. Es erfolgt scheinbar keine Aktualisierung. Woran kann es liegen?
Hier ist mein Script - mit der oben erwähnten Ergänzung: Ich habe auch eine Batterie und frage daher die Register vom Sunny Boy Storage 5.0 ab. Hier gibt es auch die Register für den Batterieladezustand (in%), sowie Batterielade- und entladeleistung.
! HomeMatic-Script
! SMA Modbus Register Abfragen
!
viewtopic.php?f=31&t=47813
! Zielsystem: Sunny Boy Storage SBS 5.0
! IP Adresse: 192.168.178.100
! Register
! SMA AC Leistung 30775 2
! SMA DC Leistung String 1 30773 2
! SMA DC Leistung String 2 30961 2 (nicht getestet)
! SMA DC Leistung Gesamt 30983 2 (nicht getestet)
! SMA Netzbezug 30865 2
! SMA Netzeinspeisung 30867 2
! SMA Batterieladezustand 30845 2
! SMA Batterieladung 31393 2
! SMA Batterieentladung 31395 2
! SCRIPT
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.100 30865 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA Netzbezug");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.100 30867 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA Netzeinspeisung");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.100 30773 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA DC Leistung String 1");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.100 30961 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA DC Leistung String 2");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.100 30983 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA DC Leistung Gesamt");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.100 30775 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA AC Leistung");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.100 30845 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA Batterieladezustand");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.100 31393 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA Batterieladung");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.100 31395 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA Batterieentladung");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
! SMA Systemzeitstempel
var t = system.Date("%H:%M:%S");
dom.GetObject("SMA Zeitstempel").State(t);
#WriteLine(lGetErr.StrValueByIndex(" ", 1));
! Ende des Scripts