FRONIUS Wechselrichter

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…

Fortsetzung

Bei letzem Wert kann man die Statusvariable wie folgt übersetzen

MBI_WR_7.PNG

Wie gesagt, immer auf die übergeordnete Instanz achten bei der Anlage.


Dann kommen die Werte des SM an die Reihe:

Fortsetzung folgt










Fortsetzung folgt

Das wars dann auch schon.
Das ganze funktioniert bei mir bis heute völlig prpblemlos. Der WR ist per WLAN angebunden.

Ich habe mir dann noch da, wo ich es für sinnvoll hielt, Variablen angelegt in kWh statt in Wh und lasse die bei Variablenänderungen direkt neu erzeugen.

Der Rest ist dann nur noch Mathematik (Erzeugte Arbeit abzüglich eingespeister Arbeit = direkt verbrauchte Arbeit ) etc. etc.

Ich würde die Abfragezeiten/Pollintervalle der ModBusinstanzen nicht zu kurz machen dort, wo es keinen Sinn macht. Die erzeugte Arbeit beispielsweise muss man bestimmt nicht sekündlich abfragen. Ich denke, da reicht auch sowas wie jede Minute. Bei der erzeugten Leistung hingegen ist es ggf interessant, das sekündlich zu machen.

Ich hoffe, ich konnte damit einigen helfen und das das eine einigemrassen komplette Zusammenfassung der bisherigen Erkenntnisse hier ist.

Hallo Bambo,

mega geile Anleitung Hut ab, ich versuche das gerade nachzustellen. Sinnvoll wäre es wenn wir mit dem Exporter einen Export hier rein machen würden, damit die Handarbeit weg fällt.

Der Exporter kann glaube ich keine Instanzen exportieren. Und Scripte, außer das im Ereignis, sehe ich keine.
Michael

Hab hier schon ein Skript gepostet um Modbus Instanzen ohne großen Aufwand zu installieren

Gesendet von meinem D6633 mit Tapatalk