Ich brauche Hilfe, ich habe einen ,,SUNNY TRIPOWER 8.0" / STP8.0-3AV-40 569 im Betrieb.
Ich brauche den Momentanwert des Wchselrichters. Ich habe Modbus aktiviert.
Der Wert ist unter ,, 30775" AC Wirkleistung über alle Phasen (W) [TotInvPwrAt] über den Modbus auszulesen.
Im ,,ioBroker" wird mir der Wert übergeben, aber ich wollte den ohne " ioBroker" in Fhem einlesen um damit eine Steckdose zu steuern.
Leider bekomme ich nur eine Meldung das ,,PWP – openet" aber sonst nichtst.
Ich habe dieses aus den Foren mal in der CFG eingetragen.
define PWP ModbusAttr 3 30 192.168.10.33:502 TCP
attr PWP userattr obj-h30775-reading obj-h30377-unpack obj-h30775-poll
attr PWP obj-h30775-len 2 WRtyp
attr PWP obj-h30775-unpack N
attr PWP obj-h30775-poll 1
attr PWP verbose 5
attr PWP room SMA
Kann mir da jemand ein Beispiel geben das für mich in Frage kommt.
Ich brauche nur den einen Wert über den Modbus.
sieht "fast"gut aus :)
aber wenn du 30775 ausliest muss das Kind auch einen Namen bekommen. Was soll der Zusatz WRtyp bei len ?
define PWP ModbusAttr 3 30 192.168.10.33:502 TCP
attr PWP userattr obj-h30775-reading obj-h30775-unpack obj-h30775-poll obj-h30775-len
attr PWP obj-h30775-len 2
attr PWP obj-h30775-unpack N
attr PWP obj-h30775-poll 1
attr PWP obj-h30775-reading Wirkleistung
Hallo, der Zusatz "WRtyp" bei len, das hatte ich nur so gesehen, konnt ich auch nicht deuten.
Ich werde das gleich mal teste.
attr PWP obj-h30775-reading Wirkleistung
Danke für die schnelle Antwort.
Besten Dank, es funktioniert, die Daten werden angezeigt.
define PWP ModbusAttr 3 30 192.168.10.33:502 TCP
attr PWP userattr obj-h30775-reading obj-h30775-unpack obj-h30775-poll obj-h30775-len
attr PWP obj-h30775-len 2
attr PWP obj-h30775-unpack N
attr PWP obj-h30775-poll 1
attr PWP obj-h30775-reading Wirkleistung
attr PWP room SMA
Das reading fehlte.
Für alle die auch über einen ,,SUNNY TRIPOWER 8.0" mit FHEM Steckdosen schalten möchten
ist hier mal mein Eintrag in der CFG.
Die Daten hole ich über den ModBus, der muss nur aktiviert werden im SMA ist er schon vorhanden.
define PWP ModbusAttr 3 30 IP-vom SMA:502 TCP
Über einen Slider kann der Schwellwert eingestellt werden.
Der SMA hat die Eigenschaft über ,,obj-h30775" bei nicht vorhandener Leistung, also wenn dunkel, einen hohen konstanten Wert auszugeben. Damit auch ,,0" Watt Aktuelle Leistung angezeigt wird ist
folgende Abfrage:
if ( $IstPV > 7000 ) {$IstPV=0};;fhem("setreading PWP leistung $IstPV");;\
Meine PV ist auf 7000 KWh max. Einspeisung begrenzt, hier und auch beim Slider muss der Wert je nach eigener Anwendung angepasst werden. Das icon SMA.png und icon funk_steckdose.png sollte jeder für sich erstellen. Ich möchte kein Problem mit Urheberrechte.
Ansonsten kann das alles ohne Probleme auf andere Verbraucher angewandt werden.
### SUNNY TRIPOWER 8.0 ###
define PWP ModbusAttr 3 30 IP-vom SMA:502 TCP
attr PWP userattr obj-h30775-reading obj-h30775-unpack obj-h30775-poll obj-h30775-len
attr PWP alias SUNNY TRIPOWER 8.0
attr PWP obj-h30775-len 2
attr PWP obj-h30775-unpack N
attr PWP obj-h30775-poll 1
attr PWP obj-h30775-reading Wirkleistung
attr PWP room SMA
attr PWP group SUNNY TRIPOWER
attr PWP icon SMA.png
attr PWP stateFormat leistung: Watt Aktuelle Leistung
setreading PWP leistung 0
### PV_Steckdose
define PV_Steckdose dummy
attr PV_Steckdose alias PV Steckdose
attr PV_Steckdose group Relaxliegen
attr PV_Steckdose icon funk_steckdose.png
attr PV_Steckdose devStateIcon on:power.on off:power.off
attr PV_Steckdose setList off on
attr PV_Steckdose userReadings http {esp_http("192.168.10.156", "12", ReadingsVal("PV_Steckdose","state","") =~/^on/?1:0)};;{esp_http("192.168.10.156", "13", ReadingsVal("PV_Steckdose","state","") =~/^on/?0:1)}
attr PV_Steckdose room SMA
attr PV_Steckdose group SMA
### PV_Steckdose Einschaltwet Vorgabe
define PWP_soll dummy
attr PWP_soll alias Einschaltschwelle bei KWh
attr PWP_soll readingList PWP_sollwert
attr PWP_soll room SMA
attr PWP_soll setList PWP_sollwert:slider,100,50.0,7000
#attr PWP_soll stateFormat slider_sollwert
attr PWP_soll webCmd PWP_sollwert
attr PWP_soll group SMA
define Regelung_PV_Steckdose notify PWP:.* {\
my $IstPV = ReadingsVal("PWP","Wirkleistung","0");;\
my $SollPV = ReadingsVal("PWP_soll","PWP_sollwert","0");;\
if ( $IstPV > 7000 ) {$IstPV=0};;fhem("setreading PWP leistung $IstPV");;\
if (($IstPV > $SollPV) or ($IstPV == $SollPV))\
{fhem ("set PV_Steckdose on")}\
else\
{fhem ("set PV_Steckdose off")}\
}
Zitat von: mediastudio am 02 September 2019, 12:15:21
Der SMA hat die Eigenschaft über ,,obj-h30775" bei nicht vorhandener Leistung, also wenn dunkel, einen hohen konstanten Wert auszugeben.
Das machen andere SMA Modelle auch und ebenso in anderen Registern :)
Meine Lösung
attr <name> dev-h-defExpr $val & 0x1FFFFFFF
Hallo Wzut, ich bin Dir dankbar für Deine Hinweise.
Es funktioniert so einwandfrei, die Werte zeigen nun bei nicht vorhandener Leistung ,,0" .
Hier nun für weitere User meine CFG.
### SUNNY TRIPOWER 8.0 ###
define PWP ModbusAttr 3 30 IP-vom SMA:502 TCP
attr PWP userattr obj-h30775-reading obj-h30775-unpack obj-h30775-poll obj-h30775-len
attr PWP alias SUNNY TRIPOWER 8.0
attr PWP dev-h-defExpr $val & 0x1FFFFFFF
attr PWP obj-h30775-len 2
attr PWP obj-h30775-unpack N
attr PWP obj-h30775-poll 1
attr PWP obj-h30775-reading Wirkleistung
attr PWP room SMA
attr PWP group SUNNY TRIPOWER
attr PWP icon SMA.png
attr PWP stateFormat Wirkleistung: Watt Aktuelle Leistung
### Steckdose Powerline 1 ####
define PV_Steckdose_1 dummy
attr PV_Steckdose_1 alias PV Steckdose 1
attr PV_Steckdose_1 group Relaxliegen
attr PV_Steckdose_1 icon funk_steckdose.png
attr PV_Steckdose_1 devStateIcon on:power.on off:power.off
attr PV_Steckdose_1 setList off on
attr PV_Steckdose_1 userReadings http {esp_http("192.168.10.156", "12", ReadingsVal("PV_Steckdose_1","state","") =~/^on/?1:0)};;{esp_http("192.168.10.156", "13", ReadingsVal("PV_Steckdose_1","state","") =~/^on/?0:1)}
attr PV_Steckdose_1 room SMA
attr PV_Steckdose_1 group Powerline 1
### PV_Steckdose_1 Einschaltwet Vorgabe
define PWP_soll_1 dummy
attr PWP_soll_1 alias Einschaltschwelle
attr PWP_soll_1 readingList PWP_sollwert_1
attr PWP_soll_1 room SMA
attr PWP_soll_1 setList PWP_sollwert_1:slider,100,50.0,7000
attr PWP_soll_1 stateFormat bei Watt
attr PWP_soll_1 webCmd PWP_sollwert_1
attr PWP_soll_1 group Powerline 1
define Regelung_PV_Steckdose_1 notify PWP:.* {\
my $IstPV1 = ReadingsVal("PWP","Wirkleistung","0");;\
my $SollPV1 = ReadingsVal("PWP_soll_1","PWP_sollwert_1","0");;\
if (($IstPV1 > $SollPV1) or ($IstPV1 == $SollPV1))\
{fhem ("set PV_Steckdose_1 on")}\
else\
{fhem ("set PV_Steckdose_1 off")}\
}
Zitat von: mediastudio am 03 September 2019, 21:35:42
Hallo Wzut, ich bin Dir dankbar für Deine Hinweise.
fein , aber sei doch nicht so geizig, der WR hat noch einige interessante bzw wichtige Register.
Hier mal wie das bei meinen beiden minimal ausschaut :
attr 8000TL dev-h-defExpr $val & 0x1FFFFFFF
attr 8000TL dev-h-defLen 2
attr 8000TL dev-h-defPoll 1
attr 8000TL dev-h-defUnpack N
attr 8000TL enableControlSet 1
attr 8000TL devStateIcon ok:on fault:message_attention warnings:message_attention
attr 8000TL obj-h30201-map 35:fault,303:off,307:ok,455:warnings
attr 8000TL obj-h30201-reading state
attr 8000TL obj-h30211-map 336:Contact manufacturer, 337:Contact installer, 338:invalid, 887:none
attr 8000TL obj-h30211-reading Aktion
attr 8000TL obj-h30529-reading Gesamtertrag
attr 8000TL obj-h30535-reading Tagesertrag
attr 8000TL obj-h30775-reading Wirkleistung
attr 8000TL obj-h30953-expr ($val & 0xFFF) / 10
attr 8000TL obj-h30953-reading Temperatur
und wenn du vllt noch ein WR Icon suchst :
Zitat<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="250px" height="250px" viewBox="0 0 250 250" version="1.1" fill="#000000">
<g id="surface740315">
<path style=" stroke:none;fill-rule:nonzero;fill:#000000;fill-opacity:1;" d="M 45 20 C 31.273438 20 20 31.273438 20 45 L 20 205 C 20 218.726562 31.273438 230 45 230 L 205 230 C 218.726562 230 230 218.726562 230 205 L 230 45 C 230 31.273438 218.726562 20 205 20 Z M 45 30 L 205 30 C 207.308594 30 209.46875 30.566406 211.425781 31.503906 L 31.503906 211.425781 C 30.566406 209.46875 30 207.308594 30 205 L 30 45 C 30 36.726562 36.726562 30 45 30 Z M 218.496094 38.574219 C 219.433594 40.53125 220 42.691406 220 45 L 220 205 C 220 213.273438 213.273438 220 205 220 L 45 220 C 42.691406 220 40.53125 219.433594 38.574219 218.496094 Z M 69.960938 55.15625 C 68.933594 55.128906 67.921875 55.160156 66.945312 55.242188 C 64.332031 55.46875 61.898438 56.058594 59.738281 56.902344 C 51.082031 60.289062 46.054688 66.933594 46.054688 66.933594 L 53.945312 73.066406 C 53.945312 73.066406 57.667969 68.460938 63.386719 66.222656 C 69.109375 63.980469 76.261719 63.332031 86.464844 73.535156 C 98.761719 85.832031 111.609375 86.480469 120.261719 83.097656 C 128.917969 79.710938 133.945312 73.066406 133.945312 73.066406 L 126.054688 66.933594 C 126.054688 66.933594 122.332031 71.539062 116.613281 73.777344 C 110.890625 76.019531 103.738281 76.667969 93.535156 66.464844 C 85.464844 58.394531 77.164062 55.34375 69.960938 55.15625 Z M 125 160 L 125 170 L 195 170 L 195 160 Z M 125 180 L 125 190 L 155 190 L 155 180 Z M 165 180 L 165 190 L 195 190 L 195 180 Z M 165 180 "/>
</g>
</svg>
in eine Textdatei kopieren bsp acdc.svg und unter /opt/fhem/www/images/fhemSVG speichern
Hallo Wzut, ich habe nun mal die readings eingefügt.
Bei Gesamtertrag habe ich einen 7-stelligen Wert den ich so gesetzt habe:
attr PWP obj-h30529-expr ($val & 0x1FFFFFFF ) / 1000
attr PWP obj-h30529-reading Gesamtertrag
Dann bekomme ich die richtige Ausgabe Gesamtertrag: 2126.275 KWh.
Würde den gerne zwei Stellen hinter dem Punkt aufgerundet anzeigen.
Der Wert für den Tagesertrag bleibt unverändert, zu hoch.
Der Wert von der Temperatur wird nur angezeigt wenn auch die Wirkleistung >0 ist.
Dieses ,,attr PWP enableControlSet 1" bringt eine Fehlermeldung.
Wie ich aber sehe kennst Du dich mit WS von SMA aus, ich bin da ein Neuling.
Gibt es eine Möglichkeit den Modbus vom SMA gleichzeitig von zwei Geräten abzufragen?
du kannst Werte problemlos noch formatieren, bei deinem Gesamtertrag wäre das z.B.
attr PWP obj-h30529-format %.2f
K.A. was da bei deinem Tagesertrag schief läuft, stimmt denn die Registernummer für deinen Typ laut SMA Modbus Doku ?
Das SMA nur eine gültige Temperatur überträgt wenn der WR auch arbeitet finde ich auch etwas unglücklich, aber mir ist die 0 persönlich lieber als ein Pseudowert mit seinen gesetzten High Bits. Aber man kann sich ja mit FHEM Bordmitteln (Stichwort userReadings) noch ganz gut weiterhelfen.
Lass enableControlSet einfach weg, sitzt bei mir vermutlich auch nur noch als Altlast
Zugriff von mehr als einem Gerät sollte kein Problem sein solange du es mit dem Abfrageintervall nicht übertreibst. Ggf. immer mal wieder das Log checken ob FHEM mault das er nicht oder nur teilweise geantwortet hat.
Hallo Wzut,
deine Angaben sind schon richtig, hier ist ein Link vom SMA
http://files.sma.de/dl/2585/WEBBOX-MODBUS-TB-de-19.pdf
da sehe ich ab Seite 25 unter ID3 die Parameter. Die Formatierung klappt habe nun wie im GUI vom SMA die gleiche Anzeige.
wie Webbox ? Du hast doch einen TP 8.0 ?
https://www.sma.de/service/downloads.html -> Monitoring & Control -> MODBUS PROTOCOLL SCHNITSTELLE -> alle anzeigen
dann runter bis
Technical Information - SMA Modbus® Interface - SUNNY TRIPOWER 8.0 / 10.0 (STP8.0-3AV-40 / STP10.0-3AV-40)
Art: Technische InformationenSprache: International Dokumentennummer: MODBUS-HTML_STP8-10-3AV-40_V11Versionsnummer: 1.1
MODBUS-HTML_STP8-10-3AV-40_V11.zip
ergibt dann https://files.sma.de/dl/24399/MODBUS-HTML_STP8-10-3AV-40_V11.zip
Ich habe mir die Dateien runtergeladen und werde da mal sehen wie die Parameter sind.
Du warst mir eine große Hilfe, seit Juli habe ich eine PV mit 9,92 KW pik. Mein Vorhaben läuft soweit. Ich habe verschiedene Hardware im Einsatz. Grundausstattung ein Bungalow mit EnOcean seit 2011. Jetzt setze ich zum Teil auch EspEasy und Sonoff ein. Mit Sonoff über Fhem habe ich noch kleine Probleme.
Besten Gruß aus Windeck Rosbach
Bei 9,92kWp hast du schon richtig Geld in die Hand genommen. Überlege dir mal ob du da als SMA Nutzer und Smart Home Fan nicht noch 500 Öre draufpackst und dir einen Sunny Home Manager 2.0 gönnst. (gab sogar letzte Woche im Inverter Thread ein Angebot eines Users )
zumal du ja mit deinen Schaltsteckdosen eh schon in die Richtung Eigenverbrauchoptimierung steuerst.
IMHO nur mit dem HM2.0 siehst du was von deiner aktuellen PV Leistung wirklich übrig bleibt. Die Daten sind dann auch im Sunny Portal verfügbar und du bist sogar ein Stück unabhängig von FHEM was History und Charts betrifft. Im Gegenzug gibt es aber dann auch die SMA Module von DS_Starter
(Heiko) die dir das alles wieder schön zu FHEM bringen. Ich habe meinen HM2.0 letztes Jahr von meinem Solar Guru verpasst bekommen ohne Ahnung davon zu haben und bin jetzt heilfroh das er ihn damals als unbedingt erforderlich aufs Angebot gesetzt hat.
Hallo, über einen "Sunny Home Manager 2.0" habe ich schon nachgedacht. Bei mir ist die 70% Regelung im SMA eingestellt. Da ich 2020 ein Pool mit Wärmepumpe bauen will, hätte ich gerne die 100%-tige Ausnutzung meiner PV. Das ist der nächste Ansatz. Nachdem Du mir ja so schnell geholfen hast, kann ich schon mal eine elektrische Zusatzheizung für die Fußbodenheizung steuern.
Meine Wärmepumpe hat einen 200 L Pufferspeicher den ich mit einer 1KW Heizpatrone aufgerüstet habe, diese schaltet sich bei PV-Leistung >1500 Watt zu und der Kreislauf der Fußbodenheizung wird vorgewärmt. Ich habe nun ,,gosona" WiFi Steckdosen auf Sonoff gefläsht. Diese Steckdosen messen die Leistung der Verbraucher, dadurch kann ich die zurzeit Gesamtentnahme ermitteln und so Verbraucher Zu- oder Abschalten. Fazit, es darf bei zu geringer PV-Leistung kein teurer, eingekaufter Strom verbraucht werden. Das wende ich auf Zusatzgeräte an, auch einen Heizlüfter im Wohnbereich.
Servus,
ich habe aktuell einen SunnyBoy 2.5 hier rumliegen und wollte den mal über FHEM auslesen.
Jetzt habe ich mich ein wenig in das Thema eingelesen und glaube, die für mich einfachste Variante, die auch offline funktioniert ist über MODBUS?!
Jetzt habe ich habe mal ne Frage... Anbei ist die Modbusbeschreibung für den SunnyBoy 2.5
Wie komme ich an die Werte?
Mit define SunnyBoy ModbusAttr 3 30 192.168.178.8:502 TCP habe ich den WR erreicht... ich habe mir jetzt eure Attribute angeschaut aber werde noch nicht recht schlau draus.
Was ich verstanden habe:
Hiermit lege ich ein Reading Wirkleistung an, lese das aus dem obj-h (Holding register) mit der Nummer aus meiner ModbusTabelle aus, unpack sagt noch was es ist, also Strink, Int, etc?! und len sagt wieviel Register das läuft (steh auch in der Tabelle)
attr PWP obj-h30775-len 2
attr PWP obj-h30775-unpack N
attr PWP obj-h30775-poll 1
attr PWP obj-h30775-reading Wirkleistung
Aber ich bekomme nix...
Habt ihr mal ein Beispiel und wie ich das genau in FHEM eintrage...
Internals:
DEF 3 30 192.168.178.8:502 TCP
DeviceName 192.168.178.8:502
EXPECT idle
FD 4
FUUID 60520f2d-f33f-2912-baf1-c87fd5987c23dd54
IODev SunnyBoy
Interval 30
LASTOPEN 1615997146.6411
MODBUSID 3
MODE master
MODULEVERSION Modbus 4.4.00 - 7.2.2021
NAME SunnyBoy
NOTIFYDEV global
NR 16
NTFY_ORDER 50-SunnyBoy
PARTIAL
PROTOCOL TCP
STATE opened
TCPConn 1
TYPE ModbusAttr
devioLoglevel 3
nextOpenDelay 60
READ:
READINGS:
2021-03-17 17:05:47 state opened
defptr:
SunnyBoy 3
lastRead:
Attributes:
obj-h30055-len 2
obj-h30055-reading Hersteller
Hier im IOBroker geht das irgendwie einfacher... ab Minute 11...
https://www.youtube.com/watch?v=bX7py1NiRLA
VG+Danke
René
ähh ... warum ist in deinem list in Bruchstücken Register h30055 drin , lesen willst du aber h30775 ?
dein mini list ist schon richtig, nur musst du es auch beim Device benutzen :)
Tipp : du kannst beim SMA einiges an Tipparbeit sparen wenn du poll/len& unpack quasi als default fest legst, dann du nur noch ein Attribut pro Reading
attr SunnyBoy dev-h-defExpr $val & 0x1FFFFFFF
attr SunnyBoy dev-h-defLen 2
attr SunnyBoy dev-h-defPoll 1
attr SunnyBoy dev-h-defUnpack N
attr SunnyBoy obj-h30775-reading Wirkleistung
attr SunnyBoy obj-h30201-reading Status
attr SunnyBoy obj-h30953-reading Temperatur
attr SunnyBoy obj-h30529-reading Gesamtertrag
attr SunnyBoy obj-h30535-reading Tagesertrag
Hi,
danke für die schnelle Reaktion...
Deine Werte funktionieren bei mir auch...
h30055 war bei mir drin, weil ich den Hersteller rauslesen wollte so als Test... laut Doku/Tabelle ist das
Nameplate.Vendor 30055 2 U32 TAGLIST RO
Mit deinen 3 defaults habe ich quasi die 2 Register, immer An unsigned long werte (Pack-Doku) und Poll 1 ist immer alle Werte aktualisieren, richtig?!
Wie gebe ich das denn eigentlich über FHEM Oberfläche als Attribut ein?! zB obj-[cdih][1-9][0-9]*-reading ???
Ich habe jetzt alles in die fhem.cfg kopiert. Aber die Oberfläche meckert immer wenn ich ein Reading anlege, dass es nicht dem Format entspricht...
Was ist aber mit den anderen Werten, die so interessant sind... die sind zum Teil ja nicht alle U32 sondern S32 oder U64...
Dann muss ich ein extra obj-[cdih][1-9][0-9]*-unpack anlegen oder?
ei , ei wie bist du den zum Developer Status gekommen, das sind doch Basics :)
Nix fhem.cfg kopieren, ich hatte in meinem Beispiel extra schon deinen Device Namen verwendet.
Du hättest nur Zeile für Zeile kopieren und in FHEMWEB in die Eingabezeile pasten müssen oder eben die raw Ansicht öffnen und alles am Stück reinpacken.
Wenn du nun an Register kommst die nicht mehr dem default entsprechen must du halt mehr machen , Bsp das Temperatur Register:
(ich bleibe jetzt bei meinen Namen)
attr 8000TL obj-h30953-expr ($val & 0xFFFF) / 10
attr 8000TL obj-h30953-format %.0f
attr 8000TL obj-h30953-reading Temperatur
oder noch eines
attr 8000TL obj-h30211-map 336:Contact manufacturer, 337:Contact installer, 338:invalid, 887:none
attr 8000TL obj-h30211-reading Aktion
Hi,
ja, das war mir durchaus klar, dass ich das Zeile für Zeile oben ins FHEMWEB eintragen kann oder der schlechtere Web über die cfg-Datei.
Ich wollte nur wissen in welchem Format das Modul das unten in der Attribut Zeile fordert, da habe ich jetzt schon X-Sachen ausprobiert, das Modul nimmt da nix an oder geht das überhaupt so oder nur über die FHEMWEB Zeile mit den attr-Einträgen?!
VG
René
So ich habe jetzt ein wenig weiter mit den Attributen rumgespielt... so langsam wird es.
Auch mit den Formatierungen und den Maps habe ich schon was gebaut.
Leider liegt der WR hier bei mir trocken und sauber im Büro und nicht alle Werte liefern auch ein Ergebniss... daher die Frage...
Ich habe zwar nur einen 1phasigen WR, aber warum zeigt er bei Netzspannung_Phase_L1 so einen komischen Wert an: 536870911.00?!!?
Ist das unpack da nicht richtig?! Laut Doku ist es ein U32 und das sollte dann ja passen mit dem Defaultwert?!
Die zweite Frage wäre, warum wird keine Temperatur angezeigt?!
Oder muss das Gerät auch komplett eingeschaltet sein?! Aktuell hat es zwar Strom und Netzwerk, aber der Hauptschalter am Gerät ist aus.
VG+Danke
René
Internals:
DEF 3 30 192.168.178.8:502 TCP
DeviceName 192.168.178.8:502
EXPECT idle
FD 4
FUUID 60520f2d-f33f-2912-baf1-c87fd5987c23dd54
IODev SunnyBoy
Interval 30
LASTOPEN 1616090389.6054
MODBUSID 3
MODE master
MODULEVERSION Modbus 4.4.00 - 7.2.2021
NAME SunnyBoy
NOTIFYDEV global
NR 16
NTFY_ORDER 50-SunnyBoy
PARTIAL
PROTOCOL TCP
STATE opened
TCPConn 1
TYPE ModbusAttr
devioLoglevel 3
nextOpenDelay 60
QUEUE:
READ:
BUFFER
READINGS:
2021-03-18 19:09:50 DC_Leistung_Eingang 0.00
2021-03-18 19:09:50 DC_Spannung_Eingang 0.00
2021-03-18 19:09:50 DC_Strom_Eingang 0.00
2021-03-18 19:09:50 Gesamtertrag 6863862
2021-03-18 19:09:51 Nennfrequenz 50.00
2021-03-18 19:09:50 Netzspannung_Phase_L1 536870911.00
2021-03-18 19:09:50 Netzspannung_Phase_L2 536870911.00
2021-03-18 19:09:51 Netzspannung_Phase_L3 536870911.00
2021-03-18 19:09:51 Netzstrom_Phase_L1 0.000
2021-03-18 19:09:51 Netzstrom_Phase_L2 0.000
2021-03-18 19:09:51 Netzstrom_Phase_L3 0.000
2021-03-18 19:09:49 Status OK
2021-03-18 19:09:50 Tagesertrag 0
2021-03-18 19:09:51 Temperatur 0
2021-03-18 19:09:50 Wirkleistung 0
2021-03-18 18:59:49 state opened
REMEMBER:
lid 3
lname SunnyBoy
lrecv 1616090991.698
lsend 1616090991.68283
defptr:
SunnyBoy 3
gotReadings:
Nennfrequenz 50.00
lastRead:
h30201 1616090990.00274
h30529 1616090990.12247
h30535 1616090990.24268
h30769 1616090990.36266
h30771 1616090990.48264
h30773 1616090990.62256
h30775 1616090990.74286
h30783 1616090990.86457
h30785 1616090990.98272
h30787 1616090991.10264
h30953 1616090991.22272
h30977 1616090991.34533
h30979 1616090991.46292
h30981 1616090991.58273
h40135 1616090991.70258
Attributes:
dev-h-defExpr $val & 0x1FFFFFFF
dev-h-defLen 2
dev-h-defPoll 1
dev-h-defUnpack N
obj-h30201-map 35:Fehler, 303:Aus, 307:OK, 455:Warnung
obj-h30201-reading Status
obj-h30529-reading Gesamtertrag
obj-h30535-reading Tagesertrag
obj-h30769-format %.2f
obj-h30769-reading DC_Strom_Eingang
obj-h30771-format %.2f
obj-h30771-reading DC_Spannung_Eingang
obj-h30773-format %.2f
obj-h30773-reading DC_Leistung_Eingang
obj-h30775-reading Wirkleistung
obj-h30783-format %.2f
obj-h30783-reading Netzspannung_Phase_L1
obj-h30785-format %.2f
obj-h30785-reading Netzspannung_Phase_L2
obj-h30787-format %.2f
obj-h30787-reading Netzspannung_Phase_L3
obj-h30953-expr ($val & 0xFFFF) / 10
obj-h30953-format %.0f
obj-h30953-reading Temperatur
obj-h30977-format %.3f
obj-h30977-reading Netzstrom_Phase_L1
obj-h30979-format %.3f
obj-h30979-reading Netzstrom_Phase_L2
obj-h30981-format %.3f
obj-h30981-reading Netzstrom_Phase_L3
obj-h40135-expr ($val & 0xFFFF) / 100
obj-h40135-format %2.2f
obj-h40135-reading Nennfrequenz
Temperatur ist bei mir z.Z. auch 0 da er jetzt nichts produziert , wegen L1 schaue ich morgen wenn wieder Sonne da ist.
So ich kann dich beruhigen : Sobald er arbeitet gibt es auch eine Temperatur.
Mit der L1 ist genauso, gestern Abend hatte ich mit unpack N auch so irre Werte wie du, heute morgen habe ich 23474
Wenn da noch zwei Nachkommastellen drin sind ergäbe das 234,74 - klingt plausibel.
Das ist so ein Thema das ich bei SMA noch nier verstanden habe, einige Werte sind nur "echt" wenn der WR wirklich arbeitet, aber statt im anderen Fall einfach 0 ins Register zu schreiben setzen sie irgendwelche höhere Bits und man hat dann diese unsinnig hohen Werte.
In dem Fall hilft nur das Register noch mit einer Bitmaske zu verunden und damit die ganzen Bits die im Normalfall nie 1 sein können einfach platt zumachen.
Moinsen,
cool, danke für dein Feedback, dann bleibt das erstmal so bei mir...
Das mit der Logik bei SMA ist wirklich komisch, denn bei Netzstrom_Phase_L1 also den Ampere, da steht ja bei mir 0.000 drin.
Da müsstest du ja jetzt auch Werte größer 0 haben, oder?!
Ich weiß zwar noch nicht ob ich das jemals brauchen werde, aber die so kann man die Netzspannung ja in kein Diagramm bringen.
VG
Rene
Gib mal die Register Nr, ich habe das bei mir per default nicht drin und das schöne Exel Sheet von SMA mit allen Modbus Werten ist auch irgendwo in meinen Backups versteckt.
Moinsen,
ich habe diese Attribute hier, das Dokument für den SunnyBoy2.5 habe ich auch ein paar Posts weiter unten drangehangen gehabt.
attr SunnyBoy obj-h30783-format %.2f
attr SunnyBoy obj-h30783-reading Netzspannung_Phase_L1
attr SunnyBoy obj-h30785-format %.2f
attr SunnyBoy obj-h30785-reading Netzspannung_Phase_L2
attr SunnyBoy obj-h30787-format %.2f
attr SunnyBoy obj-h30787-reading Netzspannung_Phase_L3
attr SunnyBoy obj-h30837-reading Wirkleistung_Max
attr SunnyBoy obj-h30953-expr ($val & 0xFFFF) / 10
attr SunnyBoy obj-h30953-format %.0f
attr SunnyBoy obj-h30953-reading Temperatur
attr SunnyBoy obj-h30977-format %.3f
attr SunnyBoy obj-h30977-reading Netzstrom_Phase_L1
attr SunnyBoy obj-h30979-format %.3f
attr SunnyBoy obj-h30979-reading Netzstrom_Phase_L2
attr SunnyBoy obj-h30981-format %.3f
attr SunnyBoy obj-h30981-reading Netzstrom_Phase_L3
Also h30977, h30979 und h30981.
VG+Danke
René
h30977 liefert bei mir z.Z. unformatiert 8275 , schaut also auch ganz gut aus
ja super... wäre also 8,275 A. Mal sehen was heute abend ist.
Gibts eine Möglichkeit das Format so anzupassen bei den Volt-Zahlen, dass man sagen kann, alles über 240V = X, sodass da nie solche (536870911.00) extremen Werte rauskommen können?! X könnte 0 oder ein max Wert sein, aber nie ein so krasser Wert.
Die Doku von MODBUS gibt mir leider nichts her dafür...
Man könnte ja mal mit Stefan, der das MODBUS Modul geschrieben hat sonst sprechen?!
VG
REné
na klar , habe ich doch geschrieben , Bitmaske drüber und alle unerwünschten Bits totschlagen.
Per default gibt es ja schon
dev-h-defExpr $val & 0x1FFFFFFF
ergo neue passende Bitmaske nach persönlichem Geschmack nehmen und dem Register direkt zuweisen.
Moinsen,
ich habe mal versucht mich in das Thema reinzulesen...
Volt auf der Phase 1-3 gehen ja bis 240V.
240 entspricht 11110000 in Bits.
Damit ich alle Zahlen von 0-240 abbilden kann, müssen alle diese Stellen 1 werden können, alle darüber müsste ich mit mit 0 belegen...
Ist das die Bitmaske nicht 11111111 = 255 = FF?
Jetzt wird bei mir der 255,00 angezeigt.
obj-h30783-format %.2f
obj-h30783-reading Netzspannung_Phase_L1
obj-h30785-expr $val & 0xFF
obj-h30785-format %.2f
obj-h30785-reading Netzspannung_Phase_L2
obj-h30787-expr $val & 0xFF
obj-h30787-format %.2f
obj-h30787-reading Netzspannung_Phase_L
Wäre das richtig?!
VG
René
ne Denkfehler , die 240 sind in Wahrheit 24000 da ja später noch das Komma gesetzt werden kann :)
attr 8000TL obj-h30783-expr ($val & 0x5FFF) /100
Hallo Zusammen,
ich hoffe ich bin hier richtig.
Nachdem das SMA Inverter Modul sich nicht mit meinem neuen SMA STP8.0SE Hybridwechselrichter verbindet (eigentlich kann der Speedwire aber es kommt nur Timeout) versuche ich es nun mit Modbus.
defmod STP8SE ModbusAttr 3 30 192.168.xx.xx:502 TCP
attr STP8SE dev-h-defExpr $val & 0x1FFFFFFF
attr STP8SE dev-h-defLen 2
attr STP8SE dev-h-defPoll 1
attr STP8SE dev-h-defUnpack N
attr STP8SE event-on-change-reading .*
attr STP8SE obj-h30201-map 35:Fehler, 303:Aus, 307:OK, 455:Warnung
attr STP8SE obj-h30201-reading Status
attr STP8SE obj-h30217-map 16777213:Fehler, 51:geschlossen, 311:offen
attr STP8SE obj-h30217-reading Netzrelais
attr STP8SE obj-h30529-reading Gesamtertrag
attr STP8SE obj-h30535-reading Tagesertrag
attr STP8SE obj-h30769-expr ($val & 0xFFFF) / 1000
attr STP8SE obj-h30769-format %.3f
attr STP8SE obj-h30769-reading DC_Strom_1
attr STP8SE obj-h30771-expr ($val & 0xFFFF) / 100
attr STP8SE obj-h30771-format %.2f
attr STP8SE obj-h30771-reading DC_Spannung_1
attr STP8SE obj-h30773-reading DC_Leistung_1
attr STP8SE obj-h30775-reading Wirkleistung
attr STP8SE obj-h30777-reading Wirkleistung_L1
attr STP8SE obj-h30779-reading Wirkleistung_L2
attr STP8SE obj-h30781-reading Wirkleistung_L3
attr STP8SE obj-h30843-expr ($val & 0xFFFF) / 1000
attr STP8SE obj-h30843-format %.3f
attr STP8SE obj-h30843-reading Batteriestrom
attr STP8SE obj-h30845-reading Ladezustand
attr STP8SE obj-h30849-expr ($val & 0xFFFF) / 10
attr STP8SE obj-h30849-format %.1f
attr STP8SE obj-h30849-reading Batterietemperatur
attr STP8SE obj-h30851-expr ($val & 0xFFFF) / 100
attr STP8SE obj-h30851-format %.2f
attr STP8SE obj-h30851-reading Batteriespannung
attr STP8SE obj-h30953-expr ($val & 0xFFFF) / 10
attr STP8SE obj-h30953-format %.1f
attr STP8SE obj-h30953-reading Temperatur
attr STP8SE obj-h30955-map 16777213:Fehler, 303:Aus, 2291:standby, 2292:laden, 2293:entladen
attr STP8SE obj-h30955-reading Batteriestatus
attr STP8SE obj-h30957-expr ($val & 0xFFFF) / 1000
attr STP8SE obj-h30957-format %.3f
attr STP8SE obj-h30957-reading DC_Strom_2
attr STP8SE obj-h30959-expr ($val & 0xFFFF) / 100
attr STP8SE obj-h30959-format %.2f
attr STP8SE obj-h30959-reading DC_Spannung_2
attr STP8SE obj-h30961-reading DC_Leistung_2
attr STP8SE obj-h31393-reading Batterieladeleistung
attr STP8SE obj-h31395-reading Batterieentladleistung
attr STP8SE obj-h34661-len 4
attr STP8SE obj-h34661-reading Batterieladung
attr STP8SE obj-h34665-len 4
attr STP8SE obj-h34665-reading Batterieentladung
attr STP8SE room PV->Stromversorgung
setstate STP8SE opened
setstate STP8SE 2022-07-06 18:12:50 Batterieentladleistung 0
setstate STP8SE 2022-07-06 18:12:50 Batterieentladung 0
setstate STP8SE 2022-07-06 18:12:50 Batterieladeleistung 0
setstate STP8SE 2022-07-06 18:12:50 Batterieladung 536870911
setstate STP8SE 2022-07-06 18:12:49 Batteriespannung 374.80
setstate STP8SE 2022-07-06 18:12:49 Batteriestatus standby
setstate STP8SE 2022-07-06 18:12:48 Batteriestrom 0.000
setstate STP8SE 2022-07-06 18:12:49 Batterietemperatur 20.0
setstate STP8SE 2022-07-06 18:12:47 DC_Leistung_1 1512
setstate STP8SE 2022-07-06 18:12:50 DC_Leistung_2 450
setstate STP8SE 2022-07-06 18:12:47 DC_Spannung_1 576.50
setstate STP8SE 2022-07-06 18:12:49 DC_Spannung_2 404.40
setstate STP8SE 2022-07-06 18:12:47 DC_Strom_1 2.622
setstate STP8SE 2022-07-06 18:12:49 DC_Strom_2 1.086
setstate STP8SE 2022-07-06 18:12:46 Gesamtertrag 41117
setstate STP8SE 2022-07-06 18:12:48 Ladezustand 100
setstate STP8SE 2022-07-06 18:12:46 Netzrelais geschlossen
setstate STP8SE 2022-07-06 18:12:46 Status OK
setstate STP8SE 2022-07-06 18:12:46 Tagesertrag 21216
setstate STP8SE 2022-07-06 18:12:49 Temperatur 38.8
setstate STP8SE 2022-07-06 18:12:47 Wirkleistung 1870
setstate STP8SE 2022-07-06 18:12:47 Wirkleistung_L1 663
setstate STP8SE 2022-07-06 18:12:48 Wirkleistung_L2 665
setstate STP8SE 2022-07-06 18:12:48 Wirkleistung_L3 667
setstate STP8SE 2022-07-06 17:44:10 state opened
Soweit komme ich an alle Interessanten werte ran, nur nicht die Batterieladung und Entladung in wh.
Da kommt nur Blödsinn raus.
Die Register sind vom SBS2.5 aber liefern mir keine Plausiblen werte...
31397 Battery charge Wh U64 FIX0 RO
31401 Battery discharge Wh U64 FIX0 RO
34661 Charge of current battery Wh U64 FIX0 RO
34665 Battery discharge of current battery Wh U64 FIX0 RO
Hat Jemand eine Idee oder kennt ein neueres Dokument?
Gruß
Max
Hallo,
ich bekomme jetzt soweit alle Daten die ich aktuell benötige.
Hier die Konfiguration falls jemand auch einen SMA STP Smart Energy hat.
defmod STP8SE ModbusAttr 3 30 192.168.xx.xx:502 TCP
attr STP8SE dev-h-defExpr $val & 0x1FFFFFFF
attr STP8SE dev-h-defLen 2
attr STP8SE dev-h-defPoll 1
attr STP8SE dev-h-defUnpack N
attr STP8SE event-min-interval .*:1200
attr STP8SE event-on-change-reading .*eistung.*:10,.*DC_Spannung.*:5,.*trom.*:0.2,.*EYESTERDAY.*,.*Batteriespannung.*:0.5
attr STP8SE obj-h30201-map 35:Fehler, 303:Aus, 307:OK, 455:Warnung
attr STP8SE obj-h30201-reading Status
attr STP8SE obj-h30217-map 16777213:Fehler, 51:geschlossen, 311:offen
attr STP8SE obj-h30217-reading Netzrelais
attr STP8SE obj-h30529-reading Gesamtertrag
attr STP8SE obj-h30535-reading Tagesertrag
attr STP8SE obj-h30769-expr ($val & 0xFFFF) / 1000
attr STP8SE obj-h30769-format %.3f
attr STP8SE obj-h30769-reading DC_Strom_1
attr STP8SE obj-h30771-expr ($val & 0xFFFF) / 100
attr STP8SE obj-h30771-format %.2f
attr STP8SE obj-h30771-reading DC_Spannung_1
attr STP8SE obj-h30773-reading DC_Leistung_1
attr STP8SE obj-h30775-expr $val & 0xFFFFFFFF
attr STP8SE obj-h30775-len 2
attr STP8SE obj-h30775-reading Wirkleistung
attr STP8SE obj-h30775-unpack l>
attr STP8SE obj-h30777-reading Wirkleistung_L1
attr STP8SE obj-h30779-reading Wirkleistung_L2
attr STP8SE obj-h30781-reading Wirkleistung_L3
attr STP8SE obj-h30843-expr ($val & 0xFFFF) / 1000
attr STP8SE obj-h30843-format %.3f
attr STP8SE obj-h30843-reading Batteriestrom
attr STP8SE obj-h30845-reading Ladezustand
attr STP8SE obj-h30849-expr ($val & 0xFFFF) / 10
attr STP8SE obj-h30849-format %.1f
attr STP8SE obj-h30849-reading Batterietemperatur
attr STP8SE obj-h30851-expr ($val & 0xFFFF) / 100
attr STP8SE obj-h30851-format %.2f
attr STP8SE obj-h30851-reading Batteriespannung
attr STP8SE obj-h30953-expr ($val & 0xFFFF) / 10
attr STP8SE obj-h30953-format %.1f
attr STP8SE obj-h30953-reading Temperatur
attr STP8SE obj-h30955-map 16777213:Fehler, 303:Aus, 2291:standby, 2292:laden, 2293:entladen
attr STP8SE obj-h30955-reading Batteriestatus
attr STP8SE obj-h30957-expr ($val & 0xFFFF) / 1000
attr STP8SE obj-h30957-format %.3f
attr STP8SE obj-h30957-reading DC_Strom_2
attr STP8SE obj-h30959-expr ($val & 0xFFFF) / 100
attr STP8SE obj-h30959-format %.2f
attr STP8SE obj-h30959-reading DC_Spannung_2
attr STP8SE obj-h30961-reading DC_Leistung_2
attr STP8SE obj-h31393-reading Batterieladeleistung
attr STP8SE obj-h31395-reading Batterieentladleistung
attr STP8SE obj-h31397-expr $val & 0xFFFFFFFFFFFFFFFF
attr STP8SE obj-h31397-len 4
attr STP8SE obj-h31397-reading Batterieladung
attr STP8SE obj-h31397-unpack Q>
attr STP8SE obj-h31401-expr $val & 0xFFFFFFFFFFFFFFFF
attr STP8SE obj-h31401-len 4
attr STP8SE obj-h31401-reading Batterieentladung
attr STP8SE obj-h31401-unpack Q>
attr STP8SE devStateIcon {\
my $mode = 'measure_power@green';;;;\
$mode = 'measure_power@yellow' if (ReadingsVal($name, "Wirkleistung", "") < 1);;;;\
\
my $dc_sum = ReadingsVal($name,"DC_Leistung",0);; \
\
my $mode2 = 'sani_solar@green';;;;\
$mode2 = 'sani_solar@yellow' if ($dc_sum < 1);;;;\
\
my $mode3 = 'solar@green';;;;\
$mode3 = 'solar@yellow' if (ReadingsVal($name,"DC_Leistung_1",0) < 1);;;;\
\
my $mode4 = 'solar@green';;;;\
$mode4 = 'solar@yellow' if (ReadingsVal($name,"DC_Leistung_2",0) < 1);;;;\
\
my $chargePw = ReadingsVal($name, "Batterieleistung", "");;;;\
\
my $charge = '';;;;\
$charge = 'control_arrow_leftward@greenyellow' if ($chargePw < 0);;;;\
$charge = 'control_arrow_rightward@green' if ($chargePw > 0);;;;\
\
my $ChargeStatus = 'measure_battery_100@green';;;;\
$ChargeStatus = 'measure_battery_75@green' if (ReadingsVal($name, "Ladezustand", "") < 80);;;;\
$ChargeStatus = 'measure_battery_50@yellow' if (ReadingsVal($name, "Ladezustand", "") < 55);;;;\
$ChargeStatus = 'measure_battery_25@orange' if (ReadingsVal($name, "Ladezustand", "") < 30);;;;\
$ChargeStatus = 'measure_battery_0@red' if (ReadingsVal($name, "Ladezustand", "") < 6);;;;\
\
my $Cap = (ReadingsVal($name,"Ladezustand",0) -5) * 190;;\
\
\
"<div>" . \
FW_makeImage($mode,"measure_power") ." AC ". ReadingsVal($name,"Wirkleistung",0) ."W ". \
FW_makeImage($mode2,"sani_solar") ." DC ".$dc_sum."W ". \
FW_makeImage($mode3,"solar") ." MPP1 ".ReadingsVal($name,"DC_Leistung_1",0)."W ". \
FW_makeImage($mode4,"solar") ." MPP2 ".ReadingsVal($name,"DC_Leistung_2",0)."W ". \
FW_makeImage($ChargeStatus,"") . \
FW_makeImage($charge,"") ." ". $chargePw ."W ". \
ReadingsVal($name,"Ladezustand",0) ."% ".\
$Cap."wh ".\
"</div>"}
Gruß
Max
Zitat von: MadMax am 09 Juli 2022, 15:00:25
Hallo,
ich bekomme jetzt soweit alle Daten die ich aktuell benötige.
Hier die Konfiguration falls jemand auch einen SMA STP Smart Energy hat.
Danke!
Hab die Namen etwas für mich angepasst, aber warst mir eine große Hilfe, allein das ModbusAttr-Modul verstehen.
Interessanterweise ist bei mir die Summe der Wirkleistung L1+L2+L3 nicht das selbe wie die gesamte Wirkleistung. Ist das bei dir auch so?
Das was man aktuell an Verbrauch hat (was der WR selbst ja berechnet für seine eigene Websiten-Darstellung bzw. für die App) scheint man nicht abrufen zu können. Ich rechne das dann selbst aus, sieh hier:
https://forum.fhem.de/index.php/topic,128947.0.html (https://forum.fhem.de/index.php/topic,128947.0.html)
(War eigentlich ne Frage, hab mir die Antwort dann 20min später selber gegeben....)
Ganz passt das noch nicht. Ich bekomme bei Wirkleistung keine negativer Werte sondern stattdessen Werte kurz vor 32bit-Vollausschlag, trotz des "attr STP8SE obj-h30775-unpack l>". (Eingenverbrauch WR nachts wenn auch keine Batterie-Einspeisung mehr.)
Die Wirkleistung der drei Phasen ist auch signed Datentyp, hier fehlt bei dir das passende unpack. (Generell wäre zu überlegen, ob es nicht sinnvoller ist, signed als default zu machen und bei den unsigned einen entsprechenden unpack anzugeben.)
Was ich noch nicht verstehe: Warum blendest du per Default einige Bits aus per "attr STP8SE dev-h-defExpr $val & 0x1FFFFFFF"? Ist das der "Workaround" um das Vorzeichen zu ignorieren?
(Nein das ist nicht der Grund, dass das signed nicht funktioniert, das passende expr für den 30775 habe ich schon auch.)
Hallo,
mittlerweile habe ich den WR so in betrieb:
defmod STP8SE ModbusAttr 3 30 192.168.xx.xx:502 TCP
attr STP8SE dev-h-defLen 2
attr STP8SE dev-h-defPoll 1
attr STP8SE dev-h-defUnpack N
attr STP8SE devStateIcon {\
my $mode = 'measure_power@green';;;;\
$mode = 'measure_power@yellow' if (ReadingsVal($name, "Wirkleistung", "") < 1);;;;\
\
my $dc_sum = ReadingsVal($name,"DC_Leistung",0);; \
\
my $mode2 = 'sani_solar@green';;;;\
$mode2 = 'sani_solar@yellow' if ($dc_sum < 1);;;;\
\
my $mode3 = 'solar@green';;;;\
$mode3 = 'solar@yellow' if (ReadingsVal($name,"DC_Leistung_1",0) < 1);;;;\
\
my $mode4 = 'solar@green';;;;\
$mode4 = 'solar@yellow' if (ReadingsVal($name,"DC_Leistung_2",0) < 1);;;;\
\
my $chargePw = ReadingsVal($name, "Batterieleistung", "");;;;\
\
my $charge = '';;;;\
$charge = 'control_arrow_leftward@greenyellow' if ($chargePw < 0);;;;\
$charge = 'control_arrow_rightward@green' if ($chargePw > 0);;;;\
\
my $ChargeStatus = 'measure_battery_100@green';;;;\
$ChargeStatus = 'measure_battery_75@green' if (ReadingsVal($name, "Ladezustand", "") < 80);;;;\
$ChargeStatus = 'measure_battery_50@yellow' if (ReadingsVal($name, "Ladezustand", "") < 55);;;;\
$ChargeStatus = 'measure_battery_25@orange' if (ReadingsVal($name, "Ladezustand", "") < 30);;;;\
$ChargeStatus = 'measure_battery_0@red' if (ReadingsVal($name, "Ladezustand", "") < 6);;;;\
\
my $Cap = (ReadingsVal($name,"Ladezustand",0) -5) * 190;;\
\
\
"<div>" . \
FW_makeImage($mode,"measure_power") ." AC ". ReadingsVal($name,"Wirkleistung",0) ."W ". \
FW_makeImage($mode2,"sani_solar") ." DC ".$dc_sum."W ". \
FW_makeImage($mode3,"solar") ." MPP1 ".ReadingsVal($name,"DC_Leistung_1",0)."W ". \
FW_makeImage($mode4,"solar") ." MPP2 ".ReadingsVal($name,"DC_Leistung_2",0)."W ". \
FW_makeImage($ChargeStatus,"") . \
FW_makeImage($charge,"") ." ". $chargePw ."W ". \
ReadingsVal($name,"Ladezustand",0) ."% ".\
$Cap."wh ".\
"</div>"}
attr STP8SE event-min-interval .*:1200
attr STP8SE event-on-change-reading .*eistung.*:10,.*DC_Spannung.*:5,.*trom.*:0.2,.*EYESTERDAY.*,.*Batteriespannung.*:0.5,Ladezustand.*
attr STP8SE group PV Energy
attr STP8SE obj-h30201-map 35:Fehler, 303:Aus, 307:OK, 455:Warnung
attr STP8SE obj-h30201-reading Status
attr STP8SE obj-h30217-map 16777213:Fehler, 51:geschlossen, 311:offen
attr STP8SE obj-h30217-reading Netzrelais
attr STP8SE obj-h30529-reading Gesamtertrag
attr STP8SE obj-h30535-reading Tagesertrag
attr STP8SE obj-h30769-expr ($val & 0xFFFF) / 1000
attr STP8SE obj-h30769-format %.3f
attr STP8SE obj-h30769-reading DC_Strom_1
attr STP8SE obj-h30771-expr ($val & 0xFFFF) / 100
attr STP8SE obj-h30771-format %.2f
attr STP8SE obj-h30771-reading DC_Spannung_1
attr STP8SE obj-h30773-reading DC_Leistung_1
attr STP8SE obj-h30775-expr $val
attr STP8SE obj-h30775-len 2
attr STP8SE obj-h30775-reading Wirkleistung
attr STP8SE obj-h30775-unpack i>
attr STP8SE obj-h30777-expr $val
attr STP8SE obj-h30777-reading Wirkleistung_L1
attr STP8SE obj-h30777-unpack i>
attr STP8SE obj-h30779-expr $val
attr STP8SE obj-h30779-reading Wirkleistung_L2
attr STP8SE obj-h30779-unpack i>
attr STP8SE obj-h30781-expr $val
attr STP8SE obj-h30781-reading Wirkleistung_L3
attr STP8SE obj-h30781-unpack i>
attr STP8SE obj-h30843-expr $val/1000
attr STP8SE obj-h30843-format %.3f
attr STP8SE obj-h30843-reading Batteriestrom
attr STP8SE obj-h30843-unpack i>
attr STP8SE obj-h30845-reading Ladezustand
attr STP8SE obj-h30849-expr ($val & 0xFFFF) / 10
attr STP8SE obj-h30849-format %.1f
attr STP8SE obj-h30849-reading Batterietemperatur
attr STP8SE obj-h30851-expr ($val & 0xFFFF) / 100
attr STP8SE obj-h30851-format %.2f
attr STP8SE obj-h30851-reading Batteriespannung
attr STP8SE obj-h30953-expr ($val & 0xFFFF) / 10
attr STP8SE obj-h30953-format %.1f
attr STP8SE obj-h30953-reading Temperatur
attr STP8SE obj-h30955-map 16777213:Fehler, 303:Aus, 2291:standby, 2292:laden, 2293:entladen
attr STP8SE obj-h30955-reading Batteriestatus
attr STP8SE obj-h30957-expr ($val & 0xFFFF) / 1000
attr STP8SE obj-h30957-format %.3f
attr STP8SE obj-h30957-reading DC_Strom_2
attr STP8SE obj-h30959-expr ($val & 0xFFFF) / 100
attr STP8SE obj-h30959-format %.2f
attr STP8SE obj-h30959-reading DC_Spannung_2
attr STP8SE obj-h30961-reading DC_Leistung_2
attr STP8SE obj-h31393-reading Batterieladeleistung
attr STP8SE obj-h31395-reading Batterieentladleistung
attr STP8SE obj-h31397-expr $val & 0xFFFFFFFFFFFFFFFF
attr STP8SE obj-h31397-len 4
attr STP8SE obj-h31397-reading Batterieladung
attr STP8SE obj-h31397-unpack Q>
attr STP8SE obj-h31401-expr $val & 0xFFFFFFFFFFFFFFFF
attr STP8SE obj-h31401-len 4
attr STP8SE obj-h31401-reading Batterieentladung
attr STP8SE obj-h31401-unpack Q>
attr STP8SE obj-h40073-reading BAT_EV_Untere_Batterieentladegrenze
attr STP8SE obj-h40149-len 2
attr STP8SE obj-h40149-reading Set_Leistung
attr STP8SE obj-h40149-set 1
attr STP8SE obj-h40149-unpack i>
attr STP8SE obj-h40151-reading Set_Aktiv
attr STP8SE obj-h40151-set 1
attr STP8SE obj-h40236-reading Set_BMS_Mode
attr STP8SE obj-h40236-set 1
attr STP8SE obj-h40721-reading BAT_Minimale_Breite_des_Tiefentladeschutzbereichs
attr STP8SE obj-h40781-reading Set_Netzaustauschleistung
attr STP8SE obj-h40781-set 1
attr STP8SE obj-h40793-reading Set_LadeP_min
attr STP8SE obj-h40793-set 1
attr STP8SE obj-h40795-reading Set_LadeP_max
attr STP8SE obj-h40795-set 1
attr STP8SE obj-h40797-reading Set_EntladeP_min
attr STP8SE obj-h40797-set 1
attr STP8SE obj-h40799-reading Set_EntladeP_max
attr STP8SE obj-h40799-set 1
Damit kann ich auf die Ladung manuell über Modbus steuern.
Ja die Summe der Leistungten passt bei mir auch nicht 100%, außerdem wird die Batterieentladung nur auf 10w genau gerundet.
Gruß
Max
Hi,
Zitat von: MadMax am 29 August 2022, 18:20:11attr STP8SE obj-h30775-unpack i>
attr STP8SE obj-h30777-expr $val
Was ist der Hintergrund deines wechsels von l (klein L) auf i? Soweit ich sehe ist der Unterschied, dass du i nicht die Länge des Integers definierst - was macht das in der Praxis für einen Unterschied?
Und welchen Zweck hat ein "expr $val" - was macht das anders als das expr ganz wegzulassen?
Jedenfalls, ich habe jetzt mal angefangen mich ein wenig mit diesen ganzen Unpack-Optionen etc. zu beschäftigen. Du hast einen Standard definiert und Abweichungen davon jeweils einzeln definiert. Ich glaube ich mach das anders: Man kann auch Typen definieren. Man braucht ja fast immer die gleichen Dinge.
Ich hab mal mit folgenden angefangen, und die entsprechend der Tabelle von SMA benannt:
attr WR dev-type-S32_FIX0-len 2
attr WR dev-type-S32_FIX0-unpack l>
attr WR dev-type-U32_FIX2-len 2
attr WR dev-type-U32_FIX2-unpack L>
attr WR dev-type-U32_FIX2-expr $val / 100
attr WR dev-type-U32_FIX2-format %.2f
attr WR dev-type-S32_FIX3-len 2
attr WR dev-type-S32_FIX3-unpack l>
attr WR dev-type-S32_FIX3-expr $val / 1000
attr WR dev-type-S32_FIX3-format %.3f
Man braucht für die einzelnen Datenobjekte dann immer nur noch angeben, welchen Typ sie haben, spart einiges Copy&Paste, da ja viel gleich ist:
attr WR obj-h30775-reading Pw
attr WR obj-h30775-type S32_FIX0
attr WR obj-h30783-reading U_L1
attr WR obj-h30783-type U32_FIX2
attr WR obj-h30843-reading Bat_I
attr WR obj-h30783-type S32_FIX3
Ich denke ich arbeit da heut abend weiter, kann dann auch meine Lösung komplett posten wenn ichs fertig hab.
Das mit den Stati sieht auch interessant aus, aber damit hab ich mich noch gar nicht beschäftigt, ich muss erstmal die Daten vernünftig reinbekommen. Und das schreiben hab ich auch noch nicht angeschaut.
Zitat von: MadMax am 29 August 2022, 18:20:11Damit kann ich auf die Ladung manuell über Modbus steuern.
Blöde Frage, aber anhand was steuerst du das, und wieso lässt ihn nicht einfach selber machen, bzw. mit der Sunny-Portal-Prognose?
Zitat von: MadMax am 29 August 2022, 18:20:11Ja die Summe der Leistungten passt bei mir auch nicht 100%,
Ich hab mir das nochmal angeschaut. Wenn man Momentanwerte anschaut passt hat man ständig das Gefühl, es passt nicht. Plottet man beides (also die Wirkleistungssumme vom Wechselrichter sowie die selbstgerechnete Summe L1+L2+L3) als Diagramm, sieht es eher so aus, als sei der Hauptunterschied, dass die Zahlen ggf. ein paar Sekunden versatz haben, die Kurven passen jedenfalls recht gut zusammen. Kleine Abweichungen dann ggf. noch durch Rundungsfehler, er gibt ja nur ganze Watt aus.
Zitat von: MadMax am 29 August 2022, 18:20:11außerdem wird die Batterieentladung nur auf 10w genau gerundet.
Sicher, dass er nicht einfach nur 10W-Stufen macht? Auch beim Blick in die Wechselrichtereigene App/Webseite seh ich da meist nur 10W-Stufen, und die Differenz von 3-5W wird aus dem Netz bezogen oder ins Netz eingespeist.
Mich wundert an der Stelle eher was anderes - die Summe beider PV-String-DC-Leistungen ist größer als die AC-Leistung (also wenn keine Batterieladung), was logisch ist weil der Wechselrichter einen Wirkungsgrad <100% hat. Im nächtlichen Batteriebetrieb sieht aber die AC-Leistung und die Batterie-Entladeleistung gleich aus. Wahrscheinlich wird das aber daran liegen, dass 2% von 200W (nachts von der Batterie) absolut nur ne Handvoll Watt sind die in Rauschen und Rundungsfehler untergehen, bei >5kW vom Dach fällt das eher auf.
Grüße,
Didi
Ich hatte irgendwann alle Werte dir ich brauchte.
Ich hab einfach nur viel rumprobiert bis die Werte gepasst hatten :o
Die Ladung steuere ich manuell weil bei 37kwp im Sommer auch gerne mal über 20kw vom Dach kommen und da hat die Steuerung von SMA am Nachmittag die Batterie in 15minuten mit 10kw voll geladen was jedesmal für die Batterie ein Schlag ins Gesicht ist.
Darum Steuere ich das selbst. Außerdem muss ich die Batterie nicht immer auf 100% laden.
Zitat von: MadMax am 29 August 2022, 19:09:26Ich hatte irgendwann alle Werte dir ich brauchte.
Ich hab einfach nur viel rumprobiert bis die Werte gepasst hatten :o
Okay alles klar :D
Zitat von: MadMax am 29 August 2022, 19:09:26Die Ladung steuere ich manuell weil bei 37kwp
Und da hast du nur die 8kW-Version vom WR? :D
D.h. du hast nur einen Wechselrichter mit Batterie?
Zitat von: MadMax am 29 August 2022, 19:09:26im Sommer auch gerne mal über 20kw vom Dach kommen und da hat die Steuerung von SMA am Nachmittag die Batterie in 15minuten mit 10kw voll geladen was jedesmal für die Batterie ein Schlag ins Gesicht ist.
Okay, d.h. du steuerst weniger die Zeit sondern vielmehr die Ladeleistung.
Ich habe insgesamt 5 Wechselrichter aber nur der STP8.0SE ist über Modbus eingebunden, die anderen über SMAInverter.
Ja genau, ich will wegen der Effizienz nur aus der PV vom STP8.0SE in die Batterie laden, darum gebe ich als sollwert zum laden die aktuelle DC Leistung mal 0.8 vor und begrenze das ganze noch auf 2000w.
Ich berechne den mindestladestand für die nächste Nacht mit etwas Reserve.
Dann lass ich noch "Platz" für die 70% Regelung und ab 15uhr lade ich dann mit maximal 2000w bis 80% und alle 7 Tage mal auf 100%.
Das Funktioniert aktuell sehr gut, ich denke wenn die Sonnenstunden weniger werden und es auch Diesiger wird werde ich auch noch über die anderen WR von der AC-Seite nachladen müssen.
Also die AC-Leistung kann auch negativ sein.
Hi,
wenn der WR keinen Strom mehr produziert, dann stehen bei mir sinnfrei Werte in den Readings.
Wie kann ich diese Werte einfach auf 0 setzen?
Bei eingigen Werte funktioniert es:
DC_Leistung_Eingang
Netzstrom_Phase_L2
bei einigen wie:
DC_Spannung_Eingang
DC_Strom_Eingang
Nennfrequenz
Netzspannung_Phase_L2
funktioniert es nicht...
Danke
VG
René
Internals:
DEF 3 30 192.168.178.7:502 TCP
DeviceName 192.168.178.7:502
EXPECT idle
FD 60
FUUID 608005a6-f33f-0804-ef70-a711145ff3715ef4
IODev SunnyBoy
Interval 30
LASTOPEN 1664861995.58783
MODBUSID 3
MODE master
MODULEVERSION Modbus 4.4.04 - 17.7.2021
NAME SunnyBoy
NOTIFYDEV global
NR 576
NTFY_ORDER 50-SunnyBoy
PARTIAL
PROTOCOL TCP
STATE OK
TCPConn 1
TYPE ModbusAttr
devioLoglevel 3
eventCount 18733
nextOpenDelay 60
QUEUE:
READ:
BUFFER
READINGS:
2022-10-04 19:40:23 DC_Leistung_Eingang 0.00
2022-10-04 19:40:22 DC_Spannung_Eingang 21474836.48
2022-10-04 19:40:22 DC_Strom_Eingang 2147483.65
2022-10-04 19:40:22 Gesamtertrag 6910104
2022-10-04 19:40:23 Nennfrequenz 655.35
2021-04-23 08:09:54 Nennleistung_im_Zustand_Ok 2500
2022-10-04 19:40:23 Netzspannung_Phase_L2 42949672.95
2022-10-04 19:40:23 Netzstrom_Phase_L2 0.00
2022-10-04 19:40:22 Status OK
2022-10-04 19:40:22 Tagesertrag 9.143
2022-10-04 19:40:23 Temperatur 0
2022-10-04 19:40:22 Wirkleistung_Begrenzung 2500
2022-10-04 19:40:23 Wirkleistung_Max 2500
2022-10-04 19:40:23 Wirkleistung_Phase_L2 0
2022-10-04 19:40:23 statStateDay opened: 19:40:26 opened_Count: 1
2022-10-03 23:59:55 statStateDayLast opened: 24:00:00 opened_Count: 1
2022-10-04 19:40:23 statStateMonth opened: 3d 19:40:26 opened_Count: 1
2022-09-30 23:59:55 statStateMonthLast opened: 1d 01:18:31 opened_Count: 1 (since: 2022-09-29_22:41:24)
2022-10-04 19:40:23 statStateYear opened: 4d 20:58:57 opened_Count: 1 (since: 2022-09-29_22:41:24)
2022-10-04 07:39:56 state opened
REMEMBER:
lid 3
lname SunnyBoy
lrecv 1664905223.7915
lsend 1664905223.77444
defptr:
SunnyBoy 3
gotReadings:
Netzstrom_Phase_L2 0.00
helper:
_98_statistics EnergieManagement
lastRead:
h30201 1664905222.33045
h30233 1664905222.46102
h30529 1664905222.59304
h30535 1664905222.71326
h30769 1664905222.83658
h30771 1664905222.95322
h30773 1664905223.07406
h30775 1664905223.19438
h30785 1664905223.31375
h30803 1664905223.43337
h30837 1664905223.55426
h30953 1664905223.67299
h30979 1664905223.79283
Attributes:
alias SunnyBoy
dev-h-defExpr $val & 0x1FFFFFFF
dev-h-defLen 2
dev-h-defPoll 1
dev-h-defUnpack N
obj-h30201-map 35:Fehler, 303:Aus, 307:OK, 455:Warnung
obj-h30201-reading Status
obj-h30233-reading Wirkleistung_Begrenzung
obj-h30529-reading Gesamtertrag
obj-h30535-expr $val/1000
obj-h30535-format %.3f
obj-h30535-reading Tagesertrag
obj-h30769-expr $val/1000
obj-h30769-format %.2f
obj-h30769-reading DC_Strom_Eingang
obj-h30771-expr $val/100
obj-h30771-format %.2f
obj-h30771-reading DC_Spannung_Eingang
obj-h30773-format %.2f
obj-h30773-reading DC_Leistung_Eingang
obj-h30775-reading Wirkleistung_Phase_L2
obj-h30785-expr $val/100
obj-h30785-format %.2f
obj-h30785-reading Netzspannung_Phase_L2
obj-h30803-expr ($val & 0xFFFF) / 100
obj-h30803-format %2.2f
obj-h30803-reading Nennfrequenz
obj-h30837-reading Wirkleistung_Max
obj-h30953-expr ($val & 0xFFFF) / 10
obj-h30953-format %.0f
obj-h30953-reading Temperatur
obj-h30979-expr ($val & 0x7FFF) /1000
obj-h30979-format %.2f
obj-h30979-reading Netzstrom_Phase_L2
room ENERGIE,HWR
stateFormat Status
Zitat von: fireball am 04 Oktober 2022, 19:44:06
Wie kann ich diese Werte einfach auf 0 setzen?
obj-h30803-expr ($val & 0xFFFF) / 100
nicht unbedingt 0 aber um die sinnvoll zu bändigen kann man z.B. schon mal alles platt schlagen was nicht sein kann.
Am Beispiel Frequenz statt 0xFFFF runter gehen auf 0x13FF - also von 65535 auf nur noch 5119
obj-h30803-expr ($val & 0x13FF) / 100
Danke, das hat soweit geklappt, jetzt steht da 51.19.
Warum dann aber nicht so, da steht dann glatt 50.00, zumindest solange kein echter Wert anliegt.
($val & 0x1388) / 100
Kannst du mir das Vorgehen nochmal genau erklären? $val ist der Wert, wenn der da ist, brauch ich nur noch ein Format und evtl. eine Umrechnung, zB /1000 oder so.
Was macht das ($val & 0x13FF) genau?
Und warum setze ich das aktuell fast für jeden Wert, hab aber auch noch einen globalen Umrechner dev-h-defExpr $val & 0x1FFFFFFF
VG+Danke
René
SMA Geräte haben die Eigenschaft, sofern der WR die angefragten Werte nicht ermitteln kann, bestimmte Werte zurückzugeben. Das passiert z.B. bei einem Reboot, Update etc. Ich habe bei mir dafür das dev-h-defIgnoreExpr Attribut gesetzt:
( ( $val==536870911 ) || ( $val==2147483648 ) || ( $val==4294967295 ) || ( $val==65535 ) )
VG
habl
Das mit der PV Steckdose ist eine tolle Idee. Ich habe daran einen Heizlüfter angeschlossen der "überflüssigen" PV Strom in Heizenergie umwandelt.
Ich habe statt dem Notify ein DOIF verwandt. Damit kann ich mir das Dummy Device sparen.
defmod PWP_DOIF_1 DOIF ([PWP:"^Wirkleistung:.*$"] and ([PWP:Wirkleistung] >= [PWP_DOIF_1:PWP_sollwert] ))\
(\
set MQTT2_shellyplus1pm_0cdc7ef63bdc on\
)\
DOELSEIF ([PWP:Wirkleistung] < [PWP_DOIF_1:PWP_sollwert] )\
(\
set MQTT2_shellyplus1pm_0cdc7ef63bdc off\
)
attr PWP_DOIF_1 eventMap cmd_1:on cmd_2:off
attr PWP_DOIF_1 icon sani_heating_automatic
attr PWP_DOIF_1 readingList PWP_sollwert
attr PWP_DOIF_1 room SMA
attr PWP_DOIF_1 setList PWP_sollwert:slider,0,100.0,7000
attr PWP_DOIF_1 webCmd PWP_sollwert
Hallo zusammen,
ich kämpfe auch gerade mit der Bitmaske und komme nicht weiter :(
Ich habe einen Sunny Tripower 4.0
Nach dem Neustart bei Dunkelheit heute habe ich auch die großen Werte:
Internals:
DEF 3 30 192.168.1.171:502 TCP
DeviceName 192.168.1.171:502
EXPECT idle
FD 34
FUUID 638d30b2-f33f-1a0c-ce3d-639131a7a1738e5e
IODev STP4
Interval 30
LASTOPEN 1673628861.5019
MODBUSID 3
MODE master
MODULEVERSION Modbus 4.4.11 - 5.10.2022
NAME STP4
NOTIFYDEV global
NR 848
NTFY_ORDER 50-STP4
PARTIAL
PROTOCOL TCP
STATE aktuell: 2147483648 Watt / total: 4294967295 Watt
TCPConn 1
TYPE ModbusAttr
devioLoglevel 3
eventCount 24
nextOpenDelay 60
QUEUE:
READ:
BUFFER
READINGS:
2023-01-13 19:20:23 Gesamtertrag 4294967295
2023-01-13 19:32:26 Status OK
2023-01-13 19:20:23 Tagesertrag 4294967295
2023-01-12 21:59:00 TagesertragStat 2179
2023-01-13 19:20:23 Temperatur 2147483648
2023-01-13 19:20:23 Wirkleistung 2147483648
2023-01-13 19:29:27 state active
REMEMBER:
lid 3
lname STP4
lrecv 1673634747.20055
lsend 1673634747.01617
defptr:
STP4 3
gotReadings:
lastRead:
h30201 1673634746.40292
h30529 1673634023.25735
h30535 1673634023.38157
h30775 1673634023.50684
h30953 1673634023.65104
Attributes:
DbLogExclude Status, Temperatur, Wirkleistung, state, Gesamtertrag
alias SUNNY TRIPOWER 4.0
dev-h-defExpr $val & 0x1FFFFFFF
dev-h-defIgnoreExpr ( ( $val==536870911 ) || ( $val==2147483648 ) || ( $val==4294967295 ) || ( $val==65535 ) )
dev-h-defLen 2
dev-h-defPoll 1
dev-h-defUnpack N
event-on-change-reading TagesertragStat
group 4: Energie
icon measure_photovoltaic_inst
obj-h30201-map 35:Fehler, 303:Aus, 307:OK, 455:Warnung
obj-h30201-reading Status
obj-h30529-reading Gesamtertrag
obj-h30535-reading Tagesertrag
obj-h30775-reading Wirkleistung
obj-h30953-reading Temperatur
room Energie
stateFormat aktuell: Wirkleistung Watt / total: Tagesertrag Watt
verbose 0
Hab schon einiges probiert und auch gedacht dev-h-defIgnoreExpr hilft, aber wie Ihr seht leider nicht :(
VG
S.
Hallo,
Ich habe den SMA Hybridwechselrichter inzwischen gut im SMAInverter Modul integriert.
https://forum.fhem.de/index.php/topic,56080.msg1257813.html#msg1257813
Da brauchst du nur die IP Adresse und das Passwort.
Gruß
Max
PS: Die Normalen Tripower sind schon lange intigriert.
Kann das sein, dass das nur funktioniert, wenn man das SMA Portal eingerichtet hat. Hab ich nämlich nicht, und bekomme daher einen Timeout...
Hallo,
eigentlich verbindet sich das Modul über Speedwire und dabei sollte es egal sein ob die WR im Portal ist.
Du brauchst auf jedenfall das Installateur Passwort.
Gruß Max
Ah, Speedwire wird das Problem sein, der setzt doch eine Kabelverbindung voraus. Ich hab aktuell leider nur WLAN anliegen.
Das weiß ich nicht aber wäre schon möglich
Zitat von: MadMax am 09 Juli 2022, 15:00:25Hallo,
ich bekomme jetzt soweit alle Daten die ich aktuell benötige.
Hier die Konfiguration falls jemand auch einen SMA STP Smart Energy hat.
attr STP8SE devStateIcon {\
my $mode = 'measure_power@green';;;;\
$mode = 'measure_power@yellow' if (ReadingsVal($name, "Wirkleistung", "") < 1);;;;\
\
my $dc_sum = ReadingsVal($name,"DC_Leistung",0);; \
\
my $mode2 = 'sani_solar@green';;;;\
$mode2 = 'sani_solar@yellow' if ($dc_sum < 1);;;;\
\
my $mode3 = 'solar@green';;;;\
$mode3 = 'solar@yellow' if (ReadingsVal($name,"DC_Leistung_1",0) < 1);;;;\
\
my $mode4 = 'solar@green';;;;\
$mode4 = 'solar@yellow' if (ReadingsVal($name,"DC_Leistung_2",0) < 1);;;;\
\
my $chargePw = ReadingsVal($name, "Batterieleistung", "");;;;\
\
my $charge = '';;;;\
$charge = 'control_arrow_leftward@greenyellow' if ($chargePw < 0);;;;\
$charge = 'control_arrow_rightward@green' if ($chargePw > 0);;;;\
\
my $ChargeStatus = 'measure_battery_100@green';;;;\
$ChargeStatus = 'measure_battery_75@green' if (ReadingsVal($name, "Ladezustand", "") < 80);;;;\
$ChargeStatus = 'measure_battery_50@yellow' if (ReadingsVal($name, "Ladezustand", "") < 55);;;;\
$ChargeStatus = 'measure_battery_25@orange' if (ReadingsVal($name, "Ladezustand", "") < 30);;;;\
$ChargeStatus = 'measure_battery_0@red' if (ReadingsVal($name, "Ladezustand", "") < 6);;;;\
\
my $Cap = (ReadingsVal($name,"Ladezustand",0) -5) * 190;;\
\
\
"<div>" . \
FW_makeImage($mode,"measure_power") ." AC ". ReadingsVal($name,"Wirkleistung",0) ."W ". \
FW_makeImage($mode2,"sani_solar") ." DC ".$dc_sum."W ". \
FW_makeImage($mode3,"solar") ." MPP1 ".ReadingsVal($name,"DC_Leistung_1",0)."W ". \
FW_makeImage($mode4,"solar") ." MPP2 ".ReadingsVal($name,"DC_Leistung_2",0)."W ". \
FW_makeImage($ChargeStatus,"") . \
FW_makeImage($charge,"") ." ". $chargePw ."W ". \
ReadingsVal($name,"Ladezustand",0) ."% ".\
$Cap."wh ".\
"</div>"}
Gruß
Max
Hallo Max,
kannst du nochmal erläutern wie dein devStatIcon funktionier und was dann am Ende rauskommen soll? Habe verwsucht das nachzubauen, abert bei wird nur die Zeile
measure_power@green AC 2147483648W sani_solar@yellow DC 0W solar@yellow MPP1 0W solar@yellow MPP2 0W measure_battery_100@green W 536870911% 102005472140wh
in Fhem angezeigt. Wie kann ich das zum laufen bekommen?
Danke
Zitat von: Dr.McKay am 20 März 2023, 19:59:21Zitat von: MadMax am 09 Juli 2022, 15:00:25Hallo Max,
kannst du nochmal erläutern wie dein devStatIcon funktionier und was dann am Ende rauskommen soll? Habe verwsucht das nachzubauen, abert bei wird nur die Zeile
measure_power@green AC 2147483648W sani_solar@yellow DC 0W solar@yellow MPP1 0W solar@yellow MPP2 0W measure_battery_100@green W 536870911% 102005472140wh
in Fhem angezeigt. Wie kann ich das zum laufen bekommen?
Danke
Hat sich erledigt, der Icon Pfad war bei mir verstellt.
Hallo,
Hat sich zwar erledigt aber es sollte so aussehen.
Screenshot_20230321-052432_Firefox.jpg
Das SMAInverter Modul kann drn STPxxSE jetzt aber auch auslesen.
Du musst nicht Modbus nutzen.
Gruß Max
Hallo Max,
Stefan hat mich auf diesen Thread aufmerksam gemacht und ich habe Deine folgenden Registerdefinitionen gefunden:
Zitat von: MadMax am 29 August 2022, 18:20:11attr STP8SE obj-h40793-reading Set_LadeP_min
attr STP8SE obj-h40793-set 1
attr STP8SE obj-h40795-reading Set_LadeP_max
attr STP8SE obj-h40795-set 1
attr STP8SE obj-h40797-reading Set_EntladeP_min
attr STP8SE obj-h40797-set 1
attr STP8SE obj-h40799-reading Set_EntladeP_max
attr STP8SE obj-h40799-set 1
Konntest Du diese Register mal erfolgreich testen?
In der aktuellen Spec für die STP-SE fehlen z. B. die Register 40793 und 40797. Und ich habe es bisher nicht geschafft, mit dem Register 40795 irgendeine Wirkung zu erzielen. Muss ggf. Register 40151 auf "aktiv" (802) gestellt werden? Ich würde gerne ebenfalls gelegentlich die Aufladung der Batterie auf z. B. 90% begrenzen (zur Schonung) und dachte mir, ich könnte dazu 40795 auf "0" setzen, wenn die 90% erreicht sind, und wieder erhöhen, wenn z. B. 80% unterschritten werden.
Danke und Gruß
Thomas
Hallo Thomas,
Ja ich nutze das und Steuere die Ladung manuell.
Register 40151 muss auf 802 gesetzt werden so das du Steuern kannst.
Du solltest aber nicht 1 mal pro sec senden dann hängt sich der WR auf.
Ich frage alle 2s die Daten ab und wenn der sollwert den ich berechne sich änder dann übertrage ich den oder nach 30s.
Das läuft so.
Gruß Max
Hallo Max,
danke schön für Deine Erläuterung. Ich werde dann weiter experimentieren. Vielleicht finde ich eine einfache Lösung, die bei Dauersonnenschein den Speicher vor langem Standby bei 100% Ladung bewahrt, ohne dass ich gleich die Ladesteuerung komplett selber machen muss :) .
Gruß
Thomas
Hallo zusammen, ich habe versucht Netzeinspeisung und Netzbezug mit auszulesen.
attr STP8SE obj-h30867-expr ($val & 0x7FFF)
attr STP8SE obj-h30867-reading Netzeinspeisung
attr STP8SE obj-h30865-expr ($val & 0x7FFF)
attr STP8SE obj-h30865-reading Netzbezug
Die Werte scheinen aber nicht zu passen und werden auch nicht aktuallisert. Hat jemand die Werte schon am laufen?
Habe die Werte hier gefunden: https://forum.iobroker.net/assets/uploads/files/721_sma_modbus-tb-de-13.pdf
Danke schon mal
Habe meinen Fehler gefunden - nachdem ich Netz.* in das Attribut event-on-change-reading scheinen die Werte zu passen.
Sieht dann in Summe so aus:
attr STP8SE event-on-change-reading .*eistung.*:10,.*DC_Spannung.*:5,.*trom.*:0.2,.*EYESTERDAY.*,.*Batteriespannung.*:0.5,Netz.*
attr STP8SE obj-h30867-expr ($val & 0x7FFF)
attr STP8SE obj-h30867-reading Netzeinspeisung
attr STP8SE obj-h30865-expr ($val & 0x7FFF)
attr STP8SE obj-h30865-reading Netzbezug
Auslesen der Werte mache ich über die Module 76_SMAInverter.pm und SMAEM.pm.
Die Steuerung erfolgt dann über Modbus TCP
Moin,
magst Du da vielleicht die Batteriekapazität mit aufnehmen?
Im Modbus geht das ja recht einfach:
attr STP8EM obj-h40187-reading BatterieNennWh
eventuell noch $val & 0xFFFF und dann die aktuelle Kapazität ausrechenen:
my $Cap = ReadingsVal($name,"BatterieNennWh",0) / 100 * ReadingsVal($name,"Ladezustand",0);
Wäre schick, wenn das auch in den SMA-Modulen ginge.
Liebe Grüße
Oskar
Zitat von: Oskar am 06 Dezember 2023, 19:51:27magst Du da vielleicht die Batteriekapazität mit aufnehmen?
Ich bin ja blind. Ist ja schon drin "BAT_RATED_CAPACITY"...
Hi,
gibts einen Wert im WR der wiedergibt, ob der WR im Notstrom läuft oder nicht?!
Ich würde gern ein paar UseCases implementieren, die zB Geräte abschalten, falls Stromausfall ist.
Wenn ja, könnte man das auch in das SMAInverter Modul mit aufnehmen!?
VG+Danke
René
Ja gibt es, steht auch in der Doku.
INV_OperatingStatus / operating_status : Betriebsstatus des Wechselrichters (Netzparallelbetrieb/Backup) (bei Hybridwechselrichtern)
Zumindest beim SMAINVERTER Modul.
Hi, das klingt ja super, habe auch grad in die Doku geschaut in FHEM, aber über die Zustände steht da nix.
Wo finde ich die?
VG+Danke
Unzen Links wenn du das Modul auf hast steht "help for SMAInverter".
Da sind dann alle Readings beschrieben.
Im Zweifel testen indem du die Sicherung vom Wechselrichter raus nimmst ;D