[new binding] Logger LSW for Sofar/Omnik/IE for SolarmanPV based on protocol v5 (iGEN tech)

Hello,

I have created a binding integrating with mentioned logger. It works with loggers with serial number 17xxxxx which are based on version 5 of the solarman protocol. It connects locally to the 8899 port of the logger.

It works fairly stable and I would test it for a week or two to catch corner cases before releasing it.

However I am wondering how the binding should behave when inverter goes offline because the low energy production, through the night? As for know I just setting the offline state of the thing bounded to the inverter/logger. Also, daily production is resetting after inverter start in the morning, which is not very good representation of reality.

Current supported channels:

			<channel id="operatingState" typeId="operatingState-channel"/>
			<channel id="fault" typeId="fault-channel"/>
			<channel id="gridAVoltage" typeId="gridVoltage-channel">
				<label>Grid A Voltage</label>
				<description>DC voltage of the first grid connected to the inverter</description>
			</channel>
			<channel id="gridACurrent" typeId="gridCurrent-channel">
				<label>Grid A Current</label>
				<description>DC current of the first grid connected to the inverter</description>
			</channel>
			<channel id="gridBVoltage" typeId="gridVoltage-channel">
				<label>Grid B Voltage</label>
				<description>DC voltage of the second grid connected to the inverter</description>
			</channel>
			<channel id="gridBCurrent" typeId="gridCurrent-channel">
				<label>Grid B Current</label>
				<description>DC current of the second grid connected to the inverter</description>
			</channel>
			<channel id="gridAPower" typeId="gridPower-channel">
				<label>Grid A Power</label>
				<description>Power of the first grid connected to the inverter</description>
			</channel>
			<channel id="gridBPower" typeId="gridPower-channel">
				<label>Grid B Power</label>
				<description>Power of the second grid connected to the inverter</description>
			</channel>
			<channel id="outputActivePower" typeId="activePower-channel"/>
			<channel id="outputReactivePower" typeId="reactivePower-channel"/>
			<channel id="outputFrequency" typeId="outputFrequency-channel"/>
			<channel id="1stPhaseVoltage" typeId="acVoltage-channel">
				<label>1st Phase Voltage</label>
				<description>Voltage of the 1st phase genarated by inverter</description>
			</channel>
			<channel id="1stPhaseCurrent" typeId="acCurrent-channel">
				<label>1st Phase Current</label>
				<description>Current of the 1st phase generated by inverter</description>
			</channel>
			<channel id="2ndPhaseVoltage" typeId="acVoltage-channel">
				<label>2nd Phase Voltage</label>
				<description>Voltage of the 2nd phase genarated by inverter</description>
			</channel>
			<channel id="2ndPhaseCurrent" typeId="acCurrent-channel">
				<label>2nd Phase Current</label>
				<description>Current of the 2nd phase generated by inverter</description>
			</channel>
			<channel id="3rdPhaseVoltage" typeId="acVoltage-channel">
				<label>3rd Phase Voltage</label>
				<description>Voltage of the 3rd phase genarated by inverter</description>
			</channel>
			<channel id="3rdPhaseCurrent" typeId="acCurrent-channel">
				<label>3rd Phase Current</label>
				<description>Current of the 3rd phase generated by inverter</description>
			</channel>
			<channel id="totalEnergyProduction" typeId="totalEnergyProduction-channel"/>
			<channel id="totalGenerationTime" typeId="totalGenerationTime-channel"/>
			<channel id="todayEnergyProduction" typeId="todayEnergyProduction-channel"/>
			<channel id="todayGenerationTime" typeId="todayGenerationTime-channel"/>
			<channel id="inverterModuleTemperature" typeId="temperature-channel">
				<label>Module Temperature</label>
				<description>Module temperature</description>
			</channel>
			<channel id="inverterInnerTemperature" typeId="temperature-channel">
				<label>Inner Temperature</label>
				<description>Inner temperature</description>
			</channel>

Latest version - https://github.com/ptrbojko/openhab-addons/releases/tag/lswlogger-beta-01

Regards

1 Like

Hi,

Can U please share the script You’ve used to connect to a logger ?

Michal

Here is the initial release

This is a binding so it must be deployed to your openhab instance. As for now - logs shouts more that it should for production systems, have it mind.

I wouldn’t consider this as a daily use binding, but if someone want to help me with tests - this for you.

I have patched unit handling and some minor bugs here and there. Also handling states of connection with logger should be better.

2 Likes

Looks great, is there any example how to setup the thing and items through config files for this binding ?

Try messing around following snipper

Thing lswlogger:LSWLoggerV5:SOMEID "Label" @ "Location" [hostname="ip-to-inverter",  port="8899", serialNumber="YOUR-LOGGER-SN",  refreshTime="120", retriesCount="10" , maxOfflineTime="2160"]

This is becase, thing has following config

		<config-description>
			<parameter name="hostname" type="text" required="true">
				<context>network-address</context>
				<label>Logger Hostname/IP</label>
				<description>Hostname or IP address of the device.</description>
			</parameter>
			<parameter name="port" type="integer" min="1" required="true">
				<label>Port</label>
				<description>TCP port of the device.</description>
				<default>8899</default>
			</parameter>
			<parameter name="serialNumber" type="integer" required="true">
				<context></context>
				<label>Logger serial number</label>
				<description>Logger serial number, those with format 17xxxx are confirmed to be supported.</description>
			</parameter>
			<parameter name="refreshTime" type="integer" required="true">
				<label>Refresh time</label>
				<description>Interval the device is polled in sec.</description>
				<default>120</default>
			</parameter>
			<parameter name="retriesCount" type="integer">
				<label>Number of retries</label>
				<description>Number of connecting retries before giving up and assuming that logger is offline</description>
				<default>10</default>
			</parameter>
			<parameter name="maxOfflineTime" type="integer">
				<label>maxOfflineTime</label>
				<description>Maximum time (in minutes) in which logger is assumed to be offline</description>
				<default>2160</default>
			</parameter>
		</config-description>

Thanks!

Tried connecting my datalogger but unfortunately it doesn’t work.
I have SN 19xxxxxxx and firmware ME-121001-V1.0.6

Binding is probably incompatible with your binding :frowning:

It seems that your stick may not be supported. You may ask the vendor to update the firmware remotely (you can email sofar for that) and make another try.

Supported sticks:
wifi stick with firmware - LSW3_15_FFFF_1.0.57, those have serial number starting with 17xxx
wifi stick with firmware - LSW3_15_FFFF_1.0.65, those have serial number starting with 17xxx
eth stick with firmware - ME_08_2701_2.06, those have serial number starting with 21xxx

For being sure you may make logs more verbose:
log:set debug org.openhab.binding.lswlogger

And recheck