76_SMAInverter.pm - Abfrage von SMA Wechselrichter

Begonnen von sct14675, 28 Juli 2016, 11:01:16

Vorheriges Thema - Nächstes Thema

DS_Starter

Hallo Marcel,

Freut mich das alles soweit klappt.  :)
Benutzt du auch wie ich die eingebaute Sleepsteuerung über Sunrise ? Läuft bei genial gut.

Den WR-Typ setze ich nur über eine Tabelle aufgrund des gemeldeten Codes um. Bekommst du heraus welchen Code dein STP10000 sendet ? Vielleicht mit verbose 5.

Den Gerätetyp 9278 nehme ich mit auf.  Hatte ohnehin heute Abend vor am Modul weiterzuarbeiten.

Grüsse
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Xguide

#46
Hallo Heiko,

gesagt und getan.
Verbose 5 schmeißt folgenden Eintrag raus:

2016.11.21 12:13:30 5: SMA_TriPower10: Found Data CLASS=8001 and TYPE=9098

Demnach muss der Eintrag 9098 wie folgt geändert werden:

9098 => "STP 10000TL-20",

Was ich bei mir jetzt erst einmal gemacht habe.

Die Sleepsteuerung habe ich aktiviert und der Blick ins log zeigt mir das es sehr gut funktioniert.

2016-11-20_17:12:18 SMA_SunnyIsland ChargeStatus: 9
2016-11-20_17:12:18 SMA_SunnyIsland POWER_OUT: 0
2016-11-20_17:12:18 SMA_SunnyIsland POWER_IN: 0
2016-11-21_07:23:05 SMA_SunnyIsland ChargeStatus: 5
2016-11-21_07:23:05 SMA_SunnyIsland POWER_OUT: 0
2016-11-21_07:23:05 SMA_SunnyIsland POWER_IN: 0
2016-11-21_07:23:05 SMA_SunnyIsland BAT_TEMP: 21.1


Die beiden Wechselrichter (Batterie und PV) betreibe ich nun natürlich im neuen Mode "manual" und hole mir daten getriggert von einem event des EnergyMeter.

Hintergrund: Synchrone Daten für EnergyMeter, PV-WR und Batterie-WR erzeugen, um beispielsweise den direkt genutzten Solarstrom zu berechnen.
Randnotizen: Die Readings Bezug_Wirkleistung & Einspeisung_Wirkleistung des Energymeter sind bei mir event-on-update.
Codebeispiel notify:

define Notify_SMA_EnergyMeter notify SMA_EnergyMeter:Einspeisung_Wirkleistung:.* { 
  Log 3, "Notify_SMA_EnergyMeter: Notify triggert with event: ".$EVENT;
  fhem "get SMA_TriPower10 data"; 
  fhem "get SMA_SunnyIsland data";
}

FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

Xguide

#47
Hallo Heiko,

jetzt macht mich allerdings etwas stutzig. Ich habe noch mal im SunnyPortal meine Gerätekonfig geprüft,
dabei fällt mir auf, dass der PV-WR folgende Parameter ausspuckt: Gerätetyp = 9281, also wie bei Dir in der Liste!?
Wieso kommt der denn dann falsch, also als 9098, in fhem an. Den Eintrag 9098 habe ich im Modul entsprechend geändert und er wird nun korrekt angezeigt. Wird die Typennummer falsch in $inv_TYPE geschrieben?
...wie gesagt, alles nur Kosmetik :-)
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

DS_Starter

Hallo Marcel, hallo Thomas,

die angehängte Version 1.7 enthält den Gerätetyp "9278 => "Sunny Island 3.0M". Außerdem habe ich die EN/DE-Doku auf den aktuellen Entwicklungsstand ergänzt.

@Thomas, wenn du magst übernimm die Version bitte wieder in dein GIT. 

Dein STP 10000 betreffend sthe ich allerdings vor einem Rätsel. Ich kann mir nicht vorstellen dass der WR eine falsche Typennummer an FHEM liefert und an das SMA-Portal die richtige überträgt. Und doch sieht es so aus, da der Logeintrag:

2016.11.21 12:13:30 5: SMA_TriPower10: Found Data CLASS=8001 and TYPE=9098

direkt nach dem Einlesen der Command-Antwort $inv_CLASS gefüllt und ausgegeben wird.
Vielleicht kann Thomas noch etwas dazu beitragen. Er hat eher intime Kenntnis von der Befehlsstruktur der SMA WR die er verwendet und auswertet. Damit habe ich mich bisher noch nicht so intensiv auseinandergesetzt.

Bei mir wird die richtige $inv_CLASS geliefert, allerdings habe ich zufällig auch einen STP 5000TL-20.
Probiere doch mal ob dein Sunny Island nun richtig aufgelöst wird.

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Xguide

Hallo Heiko,

Danke für die Implementierung. Werde ich morgen mal testen. Ich hatte das heute bereits bei mir abgeändert. Ich werde mir auch morgen noch mal den Teil mit der inv_Class ansehen. Vielleicht wird der hash irgendwie falsch geparst, was ich mir aber eigentlich nicht vorstellen kann.
Wenn natürlich Thomas noch was intimes ausplaudert, dann bin ich ganz Ohr :)

Danke und einen schönen Abend,

Marcel
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

Xguide

Hallo Heiko, hallo Thomas,

habe die 1.7 implementiert, wirklich testen kann ich erst wenn was vom Dach kommt. Der Batterie-WR wird nun richtig erkannt. Danke!!!
Leider bin ich ein DAU was die Modulerstellung angeht und ich verrenne mich gerade im Code. Was mich aber spontan mal interessieren würde, bekommt jemand von euch eine andere Typennummer als die 9098 und hat als Solar-Wechselrichter (Class_ID = 8001) keinen STP 5000TL-20?

Danke für eure Infos,

Marcel
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

DS_Starter

Hallo zusammen,

ich habe weitergearbeitet und das Modul nun in der Version 2.0 komplett auf Non-blocking umgestellt !
Dadurch hat sich die Beeinflussung von FHEM bei mir von ca. 1200 ms auf ca. 140 ms (apptime) mit detail-level=2 deutlich reduziert.

In dem Zusammenhang habe ich auch die Struktur des Moduls stark umgebaut um es für die Technologie fit zu machen. Weiterhin gibt es nun auch die Readings "opertime_start" und "opertime_stop". Diese Readings zeigen die Start- und Endezeit der Wechselrichtertätigkeit des aktuellen Tages in Abhängigkeit des Sonnenauf- bzw. Untergangs unter Berücksichtigung eines eventuell gesetzten offsets an. Dadurch sieht man von wann bis wann der WR arbeiten wird (wenn suppressSleep nicht gesetzt ist).

Die Commandref ist angepasst. Diesmal ist auch die Kurzbeschreibung mit angelegt damit das Modul für den Check-In vorbereitet ist. Meiner Meinung nach ist das Modul eigentlich reif dafür wenn die Tests bei anderen Usern ebenfalls so erfogreich verlaufen wie bei mir.
Für mich hat es jedenfalls einen Stand erreicht der gleichwertig mit SMAUtils und SBFSpot anzusehen ist. Mit dem Funktionsumfang und dem Zeitverhalten bin ich persönlich nun recht zufrieden.

Ich will mir auf jeden Fall auch noch die fehlende Funktion anschauen die Waldmensch im SMAInverter vermisst und versuchen sie in die neue non-blocking Struktur einzubauen.

Wenn ihr das Modul einsetzen wollt müsst ihr auf jeden Fall FHEM RESTARTEN, ein einfaches Reload reicht NICHT !
Feedback ist gerne willkommen. In dieser Version ist wirklich viel am internen Modulablauf geändert, die Befehlsstruktur ist aber unangetastet und funktoniert so wie bisher (sollte jedenfalls).

viel Spaß damit

Gruß
Heiko

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Xguide

Hallo Heiko,

ich habe gerade deine geänderte Version 2.0 eingebunden.
Auf den ersten Bick sieht alles gut aus und die neuen Readings opertime_start/stop sind da.
Ich beobachte nun....
Danke für die viele Arbeit und die Verbesserungen!

@All,
hatte zufällig jemand mal Zeit seine SMAInverter Instanz vom PV-WR auf verbose 5 zu setzen um nach der TYPE ID zu gucken?

2016.11.24 08:32:39 5: SMA_TriPower10: Found Data CLASS=8001 and TYPE=9098

Bei mir erscheint die 9098 und sollte eigentlich 9281 sein.

Grüße Marcel
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

Xguide

Hallo Heiko,

mir fällt gerade auf das mein SunnyIsland mir seinen Ladezustand nicht mehr mitteilen möchte!
ChargeStatus hat die letzte Änderung von "2016-11-24 08:29:59" und ich habe Deine 2.0er Version "2016.11.24 08:30:24 0: Server shutdown" installiert.
Hast Du eine Ahnung was das sein kann.
Anbei das Verbose 5 log.

Grüße Marcel

2016.11.25 17:17:32 4: SMAInverter SMA_SunnyIsland -> Start BlockingCall getstatus_ParseDone
2016.11.25 17:17:32 5: SMA_SunnyIsland -> row_array after decoding:
2016.11.25 17:17:32 5: SMA_SunnyIsland -> modulstate normal
2016.11.25 17:17:32 5: SMA_SunnyIsland -> opertime_start 25.11.2016 07:28:21
2016.11.25 17:17:32 5: SMA_SunnyIsland -> opertime_stop 25.11.2016 17:08:21
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SPOT_PAC1 300
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SPOT_PAC2 0
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SPOT_PAC3 0
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SPOT_PACTOT 390
2016.11.25 17:17:32 5: SMA_SunnyIsland -> state 390
2016.11.25 17:17:32 5: SMA_SunnyIsland -> POWER_OUT 390
2016.11.25 17:17:32 5: SMA_SunnyIsland -> POWER_IN 0
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SPOT_UAC1 234.6
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SPOT_UAC2 0
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SPOT_UAC3 0
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SPOT_IAC1 1.7
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SPOT_IAC2 0
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SPOT_IAC3 0
2016.11.25 17:17:32 5: SMA_SunnyIsland -> BAT_UDC 56.5
2016.11.25 17:17:32 5: SMA_SunnyIsland -> BAT_IDC 7.6
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SUSyID xxxx
2016.11.25 17:17:32 5: SMA_SunnyIsland -> Serialnumber xxxxxx
2016.11.25 17:17:32 5: SMA_SunnyIsland -> BAT_CYCLES 308
2016.11.25 17:17:32 5: SMA_SunnyIsland -> BAT_TEMP 24.1
2016.11.25 17:17:32 5: SMA_SunnyIsland -> SPOT_FREQ 50
2016.11.25 17:17:32 5: SMA_SunnyIsland -> INV_TYPE Sunny Island 3.0M
2016.11.25 17:17:32 5: SMA_SunnyIsland -> INV_CLASS Batterie Inverters
2016.11.25 17:17:32 5: SMA_SunnyIsland -> INV_STATUS Ok
2016.11.25 17:17:32 4: SMAInverter SMA_SunnyIsland -> BlockingCall getstatus_ParseDone finished
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

DS_Starter

Habe ich vielleicht bei der ganzen Umarbeiten übersehen oder nicht richtig gemacht. Ich schau mal ..... dauert aber etwas. Wahrscheinlich erst am Montag.

VG
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Xguide

#55
Hallo Heiko,

habe den Fehler gefunden!
In Zeile 536 hat sich ein Kopierteufel eingeschlichen....

Original:

elsif ($i eq "sup_SpotACTotalPower") {
     ($sup_ChargeStatus,$inv_ChargeStatus,$inv_susyid,$inv_serial) = SMA_command($hash, $hash->{Host}, 0x51000200, 0x00295A00, 0x00295AFF);
}


Bugfix:

elsif ($i eq "sup_ChargeStatus") {
     ($sup_ChargeStatus,$inv_ChargeStatus,$inv_susyid,$inv_serial) = SMA_command($hash, $hash->{Host}, 0x51000200, 0x00295A00, 0x00295AFF);
}


@All, Zeile entsprechend abändern, speichern und ein reload von 76_SMAInverter.pm machen.


ChargeStatus 80 2016-11-25 18:34:31


Schönes Wochenende und ein bisschen mehr Sonne bitte,

Marcel
FHEM 5.9 - Intel NUC i3 mit Proxmox im Stretch Container
HomeMatic - VCCU mit 2 x HM-LAN-CFG
Module: SMA Peripheries - Sonos - IPCam(s) - Philips Hue - Sprinkler - TabletUI - DBlog -

DS_Starter

Super ... Thx  :)

Ich ändere es im Modul.

Grüße
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Hallo zusammen,

anbei die Version 2.4. Bin doch dazu gekommen etwas weiter zu machen.
Das ist neu bzw. verbessert:

* Bug gefunden von XGuide gefixt

* Non-blocking optimiert -> SMAInverter hat bei mir nur noch 7 ms Verzögerung und taucht meistens im apptime nicht mehr auf  :)

* habe die Averageberechnung über einen Ringbuffer eingebaut. Es werden die Readings "avg_energy_lastcycles_05", "avg_energy_lastcycles_10", "avg_energy_lastcycles_15" erzeugt.

Im Gegensatz zum Ansatz im SMASTP stellen sie die durchschnittliche erzeugte Leistung der letzten 5,10,15 ABFRAGEZYKLEN dar, also nicht Zeitintervalle ! Da das Modul nun auch manuell bzw. über Notify mit dem SMAEM abgefragt werden kann, ist mir nichts praktikableres eingefallen. Es sollte aber auch so seinen Zweck erfüllen.

Schaut mal bitte ob es bei euch auch funktioniert und ob es so wie ich es designed habe zweckdienlich ist. Momentan kommt nicht viel vom Dach. Deswegen habe ich auch noch kein richtiges Gefühl dafür. Grundsätzlich funktioniert der Ringbuffer.

@Waldmensch, ich habe den Buffer übrigens als Array ausgeführt ...klappt.

Ansonsten möchte ich mich an der Stelle auch mal bei den ganzen Interessierten bedanken ohne die es dieses Modul so nicht geben würde. Es fallen mir da Waldmensch, Volker (Kettenbach) und natürlich Thomas ein. Es gibt da sicherlich noch ein paar mehr !
SMAInverter ist ein echtes Community-Projekt.

Danke an euch !
Das Modul sollte m.M. nach nun wirklich bald den Weg ins FHEM-Repo finden.  ;)

Bitte FHEM wieder restarten wenn ihr diese Version einsetzt.

Schönes WE,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Waldmensch

#58
Nachdem die averages drin sind und das nonblocking, habe ich mich hinreißen lassen, das modul mal parallel zu meinem Uralten einzubinden. Laufen tut es unauffällig. Kann keine Unregelmäßigkeiten feststellen. Allerdings sieht es so aus, als ob bei den averages ein bug ist. nach ca 10 Minuten Laufzeit, sollte sich zumindest der 5 Minuten wert irgendwo beim total ansiedeln (ist ja durchgehend trübe suppe mit konstant niedrigem total)

das alte Modul zeigt folgende werte
Alarm1

-1

2016-11-26 14:22:00
Alarm2

-1

2016-11-26 14:22:00
Alarm3

-1

2016-11-26 14:22:00
AlltimeTotalP

25060954

2016-11-26 14:22:00
AvP01

540

2016-11-26 14:22:00
AvP05

504

2016-11-26 14:22:00
AvP15

504

2016-11-26 14:22:00
EV

875

2016-11-26 14:22:00
FeedIN

0

2016-11-26 14:22:00
SpotP

506

2016-11-26 14:22:00
SpotPDC1

403

2016-11-26 14:22:00
SpotPDC2

131

2016-11-26 14:22:00
TodayTotalP

3385

2016-11-26 14:22:00
modulstate

normal

2016-11-26 14:22:00
state

SP:506 W AvP1:540 W TTP:3385 Wh ATP:25060954 Wh

2016-11-26 14:22:00


Anbei screenshot (EV und FeedIn sind Userreadings). Falls du weitere Infos brauchst, sag Bescheid

DS_Starter

Danke für die Info. ich schaue nochmal in den Code.
Wenn du magst, Stelle verbose 5 ein. Ich gebe im Log das Array aus. Dann kannst du das manuell nachvollziehen und nachrechnen ob ich irgendwo Mist gemacht habe. Ist im Klartext gut lesbar. Bei ist trübe und keine Energie vom Dach.
Bisschen blöde grad.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter