FRONIUS Wechselrichter

Vielen Dank … aber da passiert leider nichts.

Ich werde das Gefühl nicht los, dass in IPS mit Modbus irgendwas nicht stimmt :confused:

@paresy Kannst Du helfen?

Grüße,
Christoph

Mal so eine Frage in die Runde zwischendurch.

Ist der Fronius WR nun das Gerät, welches ihr in Verbindung mit IPS bei einer Neuanschaffung empfehlen könnt oder gibt es da bessere Alternativen?

Bei den SMA habe ich gesehen, das diese für Energiespeicher schon vorgerichtet sind, weiss nur nicht ob der WR so ideal zur Integration mit IPS ist, was ich gerade für den Eigenverbrauch als Vorraussetzung sehen würde?

Viele Grüße,
Doc

Soweit ich weiß bietet SMA auch gute Integrationsmöglichkeiten für exzterne Anwendungen an.
Gibt auch schon einiges hier im Forum dafür.

Gesendet von meinem D6633 mit Tapatalk

Ich hab jetzt bei fronius zugeschlagen. Klingt für mich überzeugend.

Wenn diese Modbus Schnittstelle irgendwo mal vernünftig und eindeutig dokumentiert wäre … dann ja.

Ich mag immer noch nicht glaube, dass Dinge, die über die JSON API kommen, nicht über Modbus ausgelesen werden können. Aber an dem Problem sind wir dran.

Wenn die PHP-Class Werte liefert, dann wird auch mit IP-Symcon was kommen, bei mir (mit 4.10 und ECS Drehstronzähler) läuft es mit dem Swap-Haken und bei signed habe ich einen Haken bei Faktor Multiplikator 1000.
Gruß Helmut
Nachtrag: und wenn Du Dieses hier beachtest?

Je nach FunctionCode muss auch eine passende Adresse eingetragen werden. Diese kann der Tabelle entnommen werden. Die nachfolgende Tabelle bietet ebenfalls einen Überblick, welcher FunctionCode bei welcher Parameterierung innerhalb von IP-Symcon gesendet wird:

FunctionCode 0x01 (1) 1 - 10000 Geräteadresse - 1 Read Coils
FunctionCode 0x05 (5) 1 - 10000 Geräteadresse - 1 Write Single Coil
FunctionCode 0x02 (2) 10001 - 20000 Geräteadresse - 10001 Read Discrete Inputs
FunctionCode 0x03 (3) 40001 - 50000 Geräteadresse - 40001 Read Holding Registers
FunctionCode 0x10 (16) 40001 - 50000 Geräteadresse - 40001 Write Multiple registers
FunctionCode 0x04 (4) 30001 - 40000 Geräteadresse - 30001 Read Input Registers

Also Du bei Deiner Adresse mal 40072-40001 = 71 einträgst ?

Qualität aus Österreich halt [emoji6]

Gesendet von meinem D6633 mit Tapatalk

Habe das jetzt nochmal mit IPS Bordmittel ausprobiert.

An der IPS-Version kann das nicht liegen, funktioniert bei mir so seit ich den Fronius Wechselrichter habe
und das war IPS-Version 3.4 bis zur jetzt aktuellsten.

Socket+Splitter.jpgSocket.jpgSplitter.jpgDevice.jpg

Hmm … Okay. Dann werde ich dort mal einen Raspberry mit einer frischen IPS Installation aufsetzen und mal schauen, wie sich die Modbus Geschichte dort verhält.

Ich danke Euch bis hier her.

Ja super, habt ja noch ca. 12 Monate Zeit :D:D:D

Mal im ernst, werde mir dann mal Angebote für den Fronius Symo machen lassen.

Danke fürs Feedback,
Grüße,
Doc

Ich habe es noch nicht geschafft, einen frischen Raspberry aufzusetzen, aber ich bin eine Erkenntnis reiche.

Ich habe im bestehenden System den Client Socket, die Splitter Instanz und die Modbus Instanzen bzgl. des SmartMeters alle gelöscht und neu angelegt. In der Splitter Instanz im Debug taucht gar nichts auf. Die eine Modbus Instanz müsste doch alle 5 Sekunden eine Abfrage schicken.

Irgendwas läuft da schief …

Ich habe auf der frischen IPS Installation keinerlei Probleme, per Modbus den Wechselrichter und das SmartMeter gleichzeitig auszulesen. Wo der Fehler in der Produktivinstallation ist, kann ich noch nicht sagen, aber es soll hier ja auch nicht darum gehen.

Mein Ziel ist weiterhin, herauszufinden, wo sich per Modbus Abfrage der Wert versteckt, den ich mit der JSON API mit PowerReal_P_Sum abfragen kann.

Unter 40097 (32 Bit Real) auf Adresse 240 kommt das, was ich suche. Aber aus welcher Dokumentation hast Du diesen Wert nun herausgefischt?

Danke!

@manni

Dumme Frage, aber liefert der Push Service bei dir plausible Werte was den aktuellen Stromverbrauch angeht?
Bei mir zeigts über den PUsh Service z.B. 1800W Stromverbrauch an. Auf der lokalen Webseite des Fronius WR zeigt es mir aber eher 150-200W an. 150W - 200W ist auch das, was stimmen sollte.

Dasselbe Problem habe ich aber auch mit den hier genannten JSON PHP Abfragen. Der aktuelle Verbrauch ist nicht plausibel.

Kann das mit einem Smartmeter zusammenhängen? Kann man beim Einbau da etwas falschmachen?

@manni

hast du darüber evtl. schon mal die Leistung der beiden MPP-Tracker abgefragt?
Damit könnte man die Leistung der beiden Strings vergleichen. Im Falle ein leistungseinbuße könnte man so zumindest den String identifizieren…
Ich habe zu dem diverse Varianten (diverse DEVICE IDs probiert) durchprobiert - alles ohne Daten:

/solar_api/v1/GetStringRealtimeData.cgi?Scope=Device&DeviceID=0&DataCollection=NowStringControlData





Im FHEM Forum gibt’s einen Beitrag zur Abfrage über Modbus:
Vielleicht kann man das über Modbus abfrage in IP-SYMCON ebenfalls einbinden…

##############################################################################
# Multiple MPPT Inverter Extension Model (I160)
# Startadresse bei Einstellung "float" : 40263 -1
# Startadresse bei Einstellung "int+SF": 40253 -1
##############################################################################

#-----------------------------------------------------------------------------
# Multiple MPPT Inverter Extension Register: Scale Factor
#-----------------------------------------------------------------------------
	"h40265"	=>	{	# float
#	"h40255"	=>	{	# int+SF
#	Start: +3, Länge: 1, sunssf; Current Scale Factor
					name		=> "DCA_SF",				# internal name of this register in the hardware doc
					reading		=> ".ScaleFactor_Current",	# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "s>",					# defines the translation between data in the module and in the communication frame
					format		=> '%.0f',					# format string for sprintf
					polldelay	=> "x3",					# only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
				},
	"h40266"	=>	{	# float
#	"h40256"	=>	{	# int+SF
#	Start: +4, Länge: 1, sunssf; Voltage Scale Factor
					name		=> "DCV_SF",				# internal name of this register in the hardware doc
					reading		=> ".ScaleFactor_Voltage",	# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "s>",					# defines the translation between data in the module and in the communication frame
					format		=> '%.0f',					# format string for sprintf
					polldelay	=> "x3",					# only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
				},
	"h40267"	=>	{	# float
#	"h40257"	=>	{	# int+SF
#	Start: +5, Länge: 1, sunssf; Power Scale Factor
					name		=> "DCW_SF",				# internal name of this register in the hardware doc
					reading		=> ".ScaleFactor_Power",	# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "s>",					# defines the translation between data in the module and in the communication frame
					format		=> '%.0f',					# format string for sprintf
					polldelay	=> "x3",					# only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
				},
	"h40268"	=>	{	# float
#	"h40258"	=>	{	# int+SF
#	Start: +6, Länge: 1, sunssf; Energy Scale Factor
					name		=> "DCWH_SF",				# internal name of this register in the hardware doc
					reading		=> ".ScaleFactor_Energy",	# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "s>",					# defines the translation between data in the module and in the communication frame
					format		=> '%.0f',					# format string for sprintf
					polldelay	=> "x3",					# only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
				},

#-----------------------------------------------------------------------------
# Multiple MPPT Inverter Extension Register: String 1
#-----------------------------------------------------------------------------
	"h40273"	=>	{	# float
#	"h40263"	=>	{	# int+SF
#	Start: +11, Länge: 1, uint16; String 1 Input ID
					name		=> "1_ID",					# internal name of this register in the hardware doc
					reading		=> "Sting1_ID",				# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "S>",					# defines the translation between data in the module and in the communication frame
					poll		=> "once",					# only poll once after define (or after a set)
				},
	"h40274"	=>	{	# float
#	"h40264"	=>	{	# int+SF
#	Start: +12, Länge: 8, String; String 1 Input ID Sting
					name		=> "1_IDStr",				# internal name of this register in the hardware doc
					reading		=> "Sting1_Str",			# name of the reading for this value
					len			=> 8,						# number of Registers this value spans
					unpack		=> "A*",					# defines the translation between data in the module and in the communication frame
					poll		=> "once",					# only poll once after define (or after a set)
				},
	"h40282"	=>	{	# float
#	"h40272"	=>	{	# int+SF
#	Start: +20, Länge: 1, uint16; String 1: DC Current
					name		=> "1_DCA",					# internal name of this register in the hardware doc
					reading		=> "Current_String1__A",	# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "S>",					# defines the translation between data in the module and in the communication frame
#					expr		=> '$val *10**ReadingsNum($name,".ScaleFactor_Current",0)',	# conversion of raw value to visible value 
					expr		=> 'MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Current",0),0,20,$name,"Current_String1__A")',	# conversion of raw value to visible value 
					format		=> '%.2f',					# format string for sprintf
					polldelay	=> "x3",					# only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
				},
	"h40283"	=>	{	# float
#	"h40273"	=>	{	# int+SF
#	Start: +21, Länge: 1, uint16; String 1: DC Voltage
					name		=> "1_DCV",					# internal name of this register in the hardware doc
					reading		=> "Voltage_String1__V",	# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "S>",					# defines the translation between data in the module and in the communication frame
#					expr		=> '$val *10**ReadingsNum($name,".ScaleFactor_Voltage",0)',	# conversion of raw value to visible value 
					expr		=> 'MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Voltage",0),0,1000,$name,"Voltage_String1__V")',	# conversion of raw value to visible value 
					format		=> '%.0f',					# format string for sprintf
					polldelay	=> "x3",					# only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
				},
	"h40284"	=>	{	# float
#	"h40274"	=>	{	# int+SF
#	Start: +22, Länge: 1, uint16; String 1: DC Power
					name		=> "1_DCW",					# internal name of this register in the hardware doc
					reading		=> "Power_String1__W",		# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "S>",					# defines the translation between data in the module and in the communication frame
#					expr		=> '$val *10**ReadingsNum($name,".ScaleFactor_Power",0)',	# conversion of raw value to visible value 
					expr		=> 'MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Power",0),0,7000,$name,"Power_String1__W")',	# conversion of raw value to visible value 
					format		=> '%.0f',					# format string for sprintf
					polldelay	=> "x3",					# only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
				},
	"h40285"	=>	{	# float
#	"h40275"	=>	{	# int+SF
#	Start: +23, Länge: 2, acc32; String 1: Lifetime Energy
					name		=> "1_DCWH",				# internal name of this register in the hardware doc
					reading		=> "Energy_total_String1__kWh",	# name of the reading for this value
					len			=> 2,						# number of Registers this value spans
					unpack		=> "L>",					# defines the translation between data in the module and in the communication frame
					expr		=> '$val *10**ReadingsNum($name,".ScaleFactor_Energy",0)/1000',	# conversion of raw value to visible value 
					format		=> '%.3f',					# format string for sprintf
					polldelay	=> 900,						# request only if last read is older than 15 minutes
				},
	"h40287"	=>	{	# float
#	"h40277"	=>	{	# int+SF
#	Start: +25, Länge: 2, uint32; String 1: Timestamp
					name		=> "1_Tms",					# internal name of this register in the hardware doc
					reading		=> "Time_String1__sec",	# name of the reading for this value
					len			=> 2,						# number of Registers this value spans
					unpack		=> "L>",					# defines the translation between data in the module and in the communication frame
					format		=> '%.0f',					# format string for sprintf
					polldelay	=> 900,						# request only if last read is older than 15 minutes
				},
	"h40289"	=>	{	# float
#	"h40279"	=>	{	# int+SF
#	Start: +27, Länge: 1, int16; String 1: Temperature
					name		=> "1_Tmp",					# internal name of this register in the hardware doc
					reading		=> "Temp_String1__C",		# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "f>",					# defines the translation between data in the module and in the communication frame
					format		=> '%.1f',					# format string for sprintf
					polldelay	=> 900,						# request only if last read is older than 15 minutes
				},
	"h40290"	=>	{	# float
#	"h40280"	=>	{	# int+SF
#	Start: +28, Länge: 1, enum16; String 1: Operating State
					name		=> "1_DCSt",				# internal name of this register in the hardware doc
					reading		=> "Operating_State_String1",# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "n",						# defines the translation between data in the module and in the communication frame
					map			=> "1:Off, 2:in.operation(no.feed-in), 3:Run-up.phase, 4:normal.operation, 5:Power.Reduction, 6:Switch-off.phase, 7:Error.exists, 8:Standby",	# map to convert visible values to internal numbers (for reading and writing)
					polldelay	=> "x3",					# only poll this Value if last read is older than 5*Iteration, otherwiese getUpdate will skip it
				},

#-----------------------------------------------------------------------------
# Multiple MPPT Inverter Extension Register: String 2
#-----------------------------------------------------------------------------
	"h40293"	=>	{	# float
#	"h40283"	=>	{	# int+SF
#	Start: +31, Länge: 1, uint16; String 2 Input ID
					name		=> "2_ID",					# internal name of this register in the hardware doc
					reading		=> "Sting2_ID",				# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "S>",					# defines the translation between data in the module and in the communication frame
					poll		=> "once",					# only poll once after define (or after a set)
				},
	"h40294"	=>	{	# float
#	"h40284"	=>	{	# int+SF
#	Start: +32, Länge: 8, String; String 2 Input ID Sting
					name		=> "2_IDStr",				# internal name of this register in the hardware doc
					reading		=> "Sting2_Str",			# name of the reading for this value
					len			=> 8,						# number of Registers this value spans
					unpack		=> "A*",					# defines the translation between data in the module and in the communication frame
					poll		=> "once",					# only poll once after define (or after a set)
				},
	"h40302"	=>	{	# float
#	"h40292"	=>	{	# int+SF
#	Start: +40, Länge: 1, uint16; String 2: DC Current
					name		=> "2_DCA",					# internal name of this register in the hardware doc
					reading		=> "Current_String2__A",	# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "S>",					# defines the translation between data in the module and in the communication frame
#					expr		=> '$val *10**ReadingsNum($name,".ScaleFactor_Current",0)',	# conversion of raw value to visible value 
					expr		=> 'MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Current",0),0,20,$name,"Current_String2__A")',	# conversion of raw value to visible value 
					format		=> '%.2f',					# format string for sprintf
					polldelay	=> "x3",					# only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
				},
	"h40303"	=>	{	# float
#	"h40293"	=>	{	# int+SF
#	Start: +41, Länge: 1, uint16; String 2: DC Voltage
					name		=> "2_DCV",					# internal name of this register in the hardware doc
					reading		=> "Voltage_String2__V",	# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "S>",					# defines the translation between data in the module and in the communication frame
#					expr		=> '$val *10**ReadingsNum($name,".ScaleFactor_Voltage",0)',	# conversion of raw value to visible value 
					expr		=> 'MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Voltage",0),0,2000,$name,"Voltage_String2__V")',	# conversion of raw value to visible value 
					format		=> '%.0f',					# format string for sprintf
					polldelay	=> "x3",					# only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
				},
	"h40304"	=>	{	# float
#	"h40294"	=>	{	# int+SF
#	Start: +42, Länge: 1, uint16; String 2: DC Power
					name		=> "2_DCW",					# internal name of this register in the hardware doc
					reading		=> "Power_String2__W",		# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "S>",					# defines the translation between data in the module and in the communication frame
#					expr		=> '$val *10**ReadingsNum($name,".ScaleFactor_Power",0)',	# conversion of raw value to visible value 
					expr		=> 'MinMaxChk($val*10**ReadingsNum($name,".ScaleFactor_Power",0),0,7000,$name,"Power_String2__W")',	# conversion of raw value to visible value 
					format		=> '%.0f',					# format string for sprintf
					polldelay	=> "x3",					# only poll this Value if last read is older than 3*Iteration, otherwiese getUpdate will skip it
				},
	"h40305"	=>	{	# float
#	"h40295"	=>	{	# int+SF
#	Start: +43, Länge: 2, acc32; String 2: Lifetime Energy
					name		=> "2_DCWH",				# internal name of this register in the hardware doc
					reading		=> "Energy_total_String2__kWh",	# name of the reading for this value
					len			=> 2,						# number of Registers this value spans
					unpack		=> "L>",					# defines the translation between data in the module and in the communication frame
					expr		=> '$val *10**ReadingsNum($name,".ScaleFactor_Energy",0)/1000',	# conversion of raw value to visible value 
					format		=> '%.3f',					# format string for sprintf
					polldelay	=> 900,						# request only if last read is older than 15 minutes
				},
	"h40307"	=>	{	# float
#	"h40297"	=>	{	# int+SF
#	Start: +45, Länge: 2, uint32; String 2: Timestamp
					name		=> "2_Tms",					# internal name of this register in the hardware doc
					reading		=> "Time_String2__sec",	# name of the reading for this value
					len			=> 2,						# number of Registers this value spans
					unpack		=> "L>",					# defines the translation between data in the module and in the communication frame
					format		=> '%.0f',					# format string for sprintf
					polldelay	=> 900,						# request only if last read is older than 15 minutes
				},
	"h40309"	=>	{	# float
#	"h40299"	=>	{	# int+SF
#	Start: +47, Länge: 1, int16; String 2: Temperature
					name		=> "2_Tmp",					# internal name of this register in the hardware doc
					reading		=> "Temp_String2__C",		# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "f>",					# defines the translation between data in the module and in the communication frame
					format		=> '%.1f',					# format string for sprintf
					polldelay	=> 900,						# request only if last read is older than 15 minutes
				},
	"h40310"	=>	{	# float
#	"h40300"	=>	{	# int+SF
#	Start: +48, Länge: 1, enum16; String 2: Operating State
					name		=> "2_DCSt",				# internal name of this register in the hardware doc
					reading		=> "Operating_State_String2",# name of the reading for this value
					len			=> 1,						# number of Registers this value spans
					unpack		=> "n",						# defines the translation between data in the module and in the communication frame
					map			=> "1:Off, 2:in.operation(no.feed-in), 3:Run-up.phase, 4:normal.operation, 5:Power.Reduction, 6:Switch-off.phase, 7:Error.exists, 8:Standby",	# map to convert visible values to internal numbers (for reading and writing)
					polldelay	=> "x3",					# only poll this Value if last read is older than 5*Iteration, otherwiese getUpdate will skip it
				}


# Ende parseInfo
);

Über folgende ARCHIV Abfrage, bekommt man für den jeweiligen Tag von String 1, String 2, Ampere/Volt und GesamtWatt Leistung.

http://IP/solar_api/v1/GetArchiveData.cgi?Scope=System&StartDate=26.06.2017&EndDate=26.06.2017&Channel=Current_DC_String_1&Channel=Current_DC_String_2&Channel=Voltage_DC_String_1&Channel=Voltage_DC_String_2&Channel=PowerReal_PAC_Sum

Ergebnis:


{
	"Head" : {
		"RequestArguments" : {
			"Scope" : "System",
			"StartDate" : "2017-06-10T00:00:00+02:00",
			"EndDate" : "2017-06-10T23:59:59+02:00",
			"Channel" : "Voltage_DC_String_2",
			"SeriesType" : "Detail",
			"HumanReadable" : "True"
		},
		"Status" : {
			"Code" : 0,
			"Reason" : "",
			"UserMessage" : "",
			"ErrorDetail" : {
				"Nodes" : []
			}
		},
		"Timestamp" : "2017-06-29T13:28:23+02:00"
	},
	"Body" : {
		"Data" : {
			"inverter\/1" : {
				"NodeType" : 97,
				"DeviceType" : 123,
				"Start" : "2017-06-10T00:00:00+02:00",
				"End" : "2017-06-10T23:59:59+02:00",
				"Data" : {
					"Voltage_DC_String_2" : {
						"_comment" : "channelId=131585",
						"Unit" : "V",
						"Values" : {
							"-7200" : 0.9,
							"-6900" : 1,
							"-6600" : 1.1,
							"-6300" : 1.5,
							"-6000" : 1.5,
							"-5700" : 1.6,
							"-5400" : 1.4,
							"-5100" : 1.2,
							"-4800" : 1,
							"-4500" : 1.1,
							"-4200" : 1,
							"-3900" : 1,
							"-3600" : 1.1,
							"-3300" : 0.9,
							"-3000" : 1,
							"-2700" : 0.9,
							"-2400" : 1,
							"-2100" : 0.9,
							"-1800" : 1,
							"-1500" : 0.8,
							"-1200" : 0.7,
							"-900" : 0.6,
							"-600" : 0.9,
							"-300" : 0.7,
							"0" : 0.7,
							"300" : 0.9,
							"600" : 0.9,
							"900" : 1.7,
							"1200" : 1.8,
							"1500" : 1.7,
							"1800" : 1.4,
							"2100" : 1.3,
							"2400" : 1.1,
							"2700" : 1.2,
							"3000" : 0.9,
							"3300" : 0.8,
							"3600" : 0.9,
							"3900" : 0.9,
							"4200" : 1.1,
							"4500" : 1.3,
							"4800" : 1.6,
							"5100" : 1.5,
							"5400" : 1.1,
							"5700" : 1,
							"6000" : 1.3,
							"6300" : 1.2,
							"6600" : 1.3,
							"6900" : 1.6,
							"7200" : 2,
							"7500" : 3,
							"7800" : 3.9,
							"8100" : 5.4,
							"8400" : 7.9,
							"8700" : 14.2,
							"9000" : 23.7,
							"9300" : 43.8,
							"9600" : 75.9,
							"9900" : 122,
							"10200" : 168.2,
							"10500" : 216.1,
							"10800" : 230.1,
							"11100" : 267,
							"11400" : 290.9,
							"11700" : 305.5,
							"12000" : 355,
							"12300" : 363.2,
							"12600" : 376.7,
							"12900" : 370.9,
							"13200" : 387,
							"13500" : 391.7,
							"13800" : 398.3,
							"14100" : 398.2,
							"14400" : 402.3,
							"14700" : 404.4,
							"15000" : 408.2,
							"15300" : 409.2,
							"15600" : 410.2,
							"15900" : 416.2,
							"16200" : 419.6,
							"16500" : 423.5,
							"16800" : 428.8,
							"17100" : 432.2,
							"17400" : 436.4,
							"17700" : 438,
							"18000" : 451,
							"18300" : 438.4,
							"18600" : 426.2,
							"18900" : 430.8,
							"19200" : 433.5,
							"19500" : 428.6,
							"19800" : 423.8,
							"20100" : 430.7,
							"20400" : 436.4,
							"20700" : 439.2,
							"21000" : 431.8,
							"21300" : 426.7,
							"21600" : 424.8,
							"21900" : 430.2,
							"22200" : 433.6,
							"22500" : 435,
							"22800" : 431,
							"23100" : 435.4,
							"23400" : 434.2,
							"23700" : 418.7,
							"24000" : 422.3,
							"24300" : 417.3,
							"24600" : 413,
							"24900" : 407.1,
							"25200" : 404.3,
							"25500" : 400.9,
							"25800" : 399.6,
							"26100" : 400.2,
							"26400" : 399.9,
							"26700" : 397.5,
							"27000" : 403.3,
							"27300" : 413.6,
							"27600" : 403.1,
							"27900" : 397.1,
							"28200" : 395.1,
							"28500" : 392.4,
							"28800" : 388.1,
							"29100" : 405.8,
							"29400" : 397.3,
							"29700" : 391.8,
							"30000" : 388.2,
							"30300" : 388,
							"30600" : 387.6,
							"30900" : 389.5,
							"31200" : 384.9,
							"31500" : 405,
							"31800" : 404.4,
							"32100" : 413.9,
							"32400" : 412.2,
							"32700" : 414.2,
							"33000" : 423.4,
							"33300" : 416.3,
							"33600" : 407.2,
							"33900" : 404.9,
							"34200" : 404.9,
							"34500" : 403.4,
							"34800" : 381.9,
							"35100" : 381.5,
							"35400" : 390.2,
							"35700" : 371.4,
							"36000" : 369.1,
							"36300" : 369.1,
							"36600" : 369.1,
							"36900" : 369.1,
							"37200" : 371,
							"37500" : 366.9,
							"37800" : 383.7,
							"38100" : 393.4,
							"38400" : 393.4,
							"38700" : 393.4,
							"39000" : 385.5,
							"39300" : 390.8,
							"39600" : 393.8,
							"39900" : 391.5,
							"40200" : 391.5,
							"40500" : 391.5,
							"40800" : 391.5,
							"41100" : 391.4,
							"41400" : 391.5,
							"41700" : 391.5,
							"42000" : 391.1,
							"42300" : 387.4,
							"42600" : 384,
							"42900" : 387.4,
							"43200" : 389.1,
							"43500" : 391.1,
							"43800" : 389.5,
							"44100" : 389,
							"44400" : 393.7,
							"44700" : 398.2,
							"45000" : 401,
							"45300" : 398.3,
							"45600" : 395.5,
							"45900" : 392.2,
							"46200" : 393.8,
							"46500" : 394.7,
							"46800" : 397.7,
							"47100" : 397.6,
							"47400" : 395.4,
							"47700" : 396.3,
							"48000" : 396.2,
							"48300" : 397.4,
							"48600" : 398.6,
							"48900" : 398.6,
							"49200" : 400.8,
							"49500" : 401.1,
							"49800" : 399.8,
							"50100" : 400,
							"50400" : 401.9,
							"50700" : 402.9,
							"51000" : 404.2,
							"51300" : 405.2,
							"51600" : 404.3,
							"51900" : 401.1,
							"52200" : 405.4,
							"52500" : 405.3,
							"52800" : 404.9,
							"53100" : 406.6,
							"53400" : 405.2,
							"53700" : 405.1,
							"54000" : 404.3,
							"54300" : 406.9,
							"54600" : 407.4,
							"54900" : 407.4,
							"55200" : 407.3,
							"55500" : 406.7,
							"55800" : 407.2,
							"56100" : 406.9,
							"56400" : 405.8,
							"56700" : 398.7,
							"57000" : 407.2,
							"57300" : 407.8,
							"57600" : 401.4,
							"57900" : 417.4,
							"58200" : 414.7,
							"58500" : 412,
							"58800" : 405.7,
							"59100" : 415.7,
							"59400" : 404,
							"59700" : 406.9,
							"60000" : 416.3,
							"60300" : 412.4,
							"60600" : 410.3,
							"60900" : 398.2,
							"61200" : 392.4,
							"61500" : 406.2,
							"61800" : 425.7,
							"62100" : 420.2,
							"62400" : 424.3,
							"62700" : 421.9,
							"63000" : 419.6,
							"63300" : 419.6,
							"63600" : 418.8,
							"63900" : 418.2,
							"64200" : 417.9,
							"64500" : 416.4,
							"64800" : 414.2,
							"65100" : 411.5,
							"65400" : 406.3,
							"65700" : 401.2,
							"66000" : 397,
							"66300" : 391.7,
							"66600" : 386.6,
							"66900" : 379.1,
							"67200" : 372.7,
							"67500" : 367.4,
							"67800" : 366.8,
							"68100" : 366.1,
							"68400" : 361,
							"68700" : 348.6,
							"69000" : 342.1,
							"69300" : 327.8,
							"69600" : 313.1,
							"69900" : 297.6,
							"70200" : 266,
							"70500" : 257.1,
							"70800" : 236,
							"71100" : 204.5,
							"71400" : 159.9,
							"71700" : 125.7,
							"72000" : 88.5,
							"72300" : 52.7,
							"72600" : 34.4,
							"72900" : 19.4,
							"73200" : 12.3,
							"73500" : 7.4,
							"73800" : 4.7,
							"74100" : 3.1,
							"74400" : 2,
							"74700" : 1.5,
							"75000" : 1.1,
							"75300" : 0.9,
							"75600" : 0.8,
							"75900" : 0.7,
							"76200" : 0.7,
							"76500" : 0.7,
							"76800" : 0.6,
							"77100" : 0.7,
							"77400" : 0.7,
							"77700" : 0.7,
							"78000" : 0.8,
							"78300" : 0.7,
							"78600" : 0.8,
							"78900" : 0.8
						}
					}
				}
			}
		}
	}
}

Danke danke danke für das Script!
Das hat ja super funktioniert!!!

Gruss

Stephan

Ja, kann man nicht anders sagen. Hab ihn jetzt hängen.
Mechanisch durchdacht und solide. Im Betrieb leise.
Regelverhalten für 70% dyn in Verbindung mit Smartmeter überzeugend.
Schattenmanagement top.
MPPT Regelung auch top.

Würde wieder zuschlagen.

Also den Smartmeter bekomme ich problemlos abgefragt.
Den Wechselrichter an sich auch, aber nur mit einem Wert Register 40091 (Aktuelle Erzeugungsleistung).
Ich finde allerdings nirgends ein Dokument, wo die anderen Register des Wechselrichters aufgeführt sind. Ich habe zig PDFs, aber keines, in dem 40091 bzw 40092 (soll ja in Symcon um 1 vermindert werden) als Erzeugungsleistung definiert sind.

Kann mir jemand bitte einen Link zu den beiden Dateien schicken (oder die Dateien), aus denen ich die Adressen entnehmen kann. Oder eine Aufstellung?

Und dann muss es dich beim smartmeter auch noch Werte geben wie tägliche Erzeugung/Bezug/EV und möglicherweise auch monatlich und jährlich.

Ich finde einfach die passenden Dokus nicht.
Wäre toll, wenn da jemand helfen könnte.

Willkommen im Club Bambo.

Grüße

So, jetzt meine Lösung, die ich mithilfe der vielen Vorarbeiten hier und einigem Ausprobieren ans Laufen gebracht habe.
Bei mir installierte Geräte:
Fronius Primo 4.0 mit Fronius SMartmeter 63A im Einspeisepunkt.

In der Weboberfläche des WR Modbus TCP einschalten:


In der IPS Console:
Es müssen zwei I/O Instanzen angelegt werden, eine für den WR, eine für das SM.
Beide haben als IP-Adresse diejenige des WR mit Port 502
1.PNG

2.PNG

3.PNG


Danach zwei Splitter Instanzen anlegen, eine für den WR, eine für das SM. Hier auf die GeräteID und die übergeordnete Instanz achten.

4.PNG

5.PNG


Danach ModBus Geräte anlegen. Zuerst die für den WR (Bedeutung in den Bildern):

Fortsetzung folgt…