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

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

My invertor was installed last week, and last minute we switched the Solis invertor for a Sofar, but the backend stuff seems to be the same!

My thing comes online and the channel online also reports on.
Other channels remains empty, but it’s dark now, so maybe no data is coming through now…?

I see one warning in the logs:
2021-12-10 23:16:58.102 [WARN ] [al.protocolv5.UnknownResponseHandler] - Unknown response from logger dcb03cb0e4, length 46: A513001015000D1A65E26902018418040074020000E0B8AF6101900200036615A501001047000E1A65E269003015

Device serial number 177xxxxxxx
Firmware version LSW3_15_270A_1.32

I have a wifi logger atm, but will be changed to an ethernet version.

Hi,

Did you manage to check the binding during a day?

Vesrion 1.32 may be v4 protocol which I have not implemented in my binding.

Piotr

hi , yes during the day I receive the same warnings and no other channels are updated.

edit: I have received the LAN logger and will try to set it up today to see which firmware and protocol it uses.

edit: @Piotr_Bojko I installed the eth logger, buth same message
Device serial number 210xxxxxxx
Firmware version ME_0C_270A_1.05

2021-12-16 21:32:13.766 [WARN ] [al.protocolv5.UnknownResponseHandler] - Unknown response from logger ceca6e271c, length 9: A5170010450300B502

@Piotr_Bojko are you still working on this binding?

Hi, currently I have heave workload at work, so no - I don’t do anything with the binding. It may last few weeks until I would have some time to improve it.

I will put the binding to the markeplace then, or maybe to the official listing for binding in OH.

In meantime, and because I had no time to check projects like Sofar2mqtt, I created a rule which gets the data from the cloud (not my preferred way, but it works…)

The only thing you need is access to the API, you can request this by sending a mail to customerservice@solarmanpv.com

I created a lot of items, and a rule which is triggered every 5 minutes (0 0/5 * * * ? *)

items:

Group  						solarman  									"Solarman"                              <energy> (General)  ["Sensor"]

String 						solarman_token 								"Bearer token" 				    		<energy> (solarman) ["Sensor"]
String 						solarman_SN 								"SN" 									<energy> (solarman) ["Sensor"]
String 						solarman_HardwareVersion 					"Hardware Version" 						<energy> (solarman) ["Sensor"]
String 						solarman_MasterSoftwareVersion 				"Master Software Version" 				<energy> (solarman) ["Sensor"]
String 						solarman_ViceSoftwareVersion 				"Vice Software Version" 				<energy> (solarman) ["Sensor"]
String 						solarman_StandardMainVersion 				"Standard Main Version" 				<energy> (solarman) ["Sensor"]
String 						solarman_CommunicationCPUSoftwareVersion	"Communication CPU Software Version"	<energy> (solarman) ["Sensor"]
Number:ElectricPotential 	solarman_DCVoltagePV1 						"DC Voltage PV1" 						<energy> (solarman) ["Sensor"] {stateDescription="unit"[pattern="%.1f %unit%"]}
Number:ElectricPotential 	solarman_DCVoltagePV2 						"DC Voltage PV2" 						<energy> (solarman) ["Sensor"]
Number:ElectricCurrent 		solarman_DCCurrentPV1 						"DC Current PV1" 						<energy> (solarman) ["Sensor"]
Number:ElectricCurrent 		solarman_DCCurrentPV2 						"DC Current PV2" 						<energy> (solarman) ["Sensor"]
Number:Power 				solarman_DCPowerPV1 						"DC Power PV1" 							<energy> (solarman) ["Sensor"]
Number:Power 				solarman_DCPowerPV2 						"DC Power PV2" 							<energy> (solarman) ["Sensor"]
Number:ElectricPotential 	solarman_ACVoltageRUA 						"AC Voltage R/U/A" 						<energy> (solarman) ["Sensor"]
Number:ElectricCurrent 		solarman_ACCurrentRUA 						"AC Current R/U/A" 						<energy> (solarman) ["Sensor"]
Number:Power 				solarman_TotalACOutputPower 				"Total AC Output Power" 				<energy> (solarman) ["Sensor"]
Number:Frequency 			solarman_ACOutputFrequencyR 				"AC Output Frequency R" 				<energy> (solarman) ["Sensor"]
Number:ElectricPotential 	solarman_OutputVoltageOffgridRphase 		"Output Voltage Off-grid--R phase" 		<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_CumulativeProductionActive 		"Cumulative Production (Active)" 		<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_DailyProductionActive 				"Daily Production (Active)" 			<energy> (solarman) ["Sensor"]
Number:Power 				solarman_ActivePowerPVExt 					"ActivePower PV Ext" 					<energy> (solarman) ["Sensor"]
Number:ElectricCurrent 		solarman_DcComponentPhaseRCurrent 			"Dc Component- Phase R Current" 		<energy> (solarman) ["Sensor"]
Number:ElectricPotential 	solarman_DcComponentPhaseRVoltage 			"Dc Component- Phase R Voltage" 		<energy> (solarman) ["Sensor"]
Number:ElectricCurrent 		solarman_PpcAcCurrentR 						"Ppc Ac Current R" 						<energy> (solarman) ["Sensor"]
Number:Power 				solarman_TotalReactivePower 				"Total Reactive Power" 					<energy> (solarman) ["Sensor"]
Number:Power 				solarman_RPhaseLoadRctivePower 				"R-Phase Load Rctive Power" 			<energy> (solarman) ["Sensor"]
String 						solarman_GridStatus 						"Grid Status" 							<energy> (solarman) ["Sensor"]
Number:Frequency 			solarman_GridFrequency 						"Grid Frequency" 						<energy> (solarman) ["Sensor"]
Number:Power 				solarman_TotalGridPower 					"Total Grid Power" 						<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_CumulativeGridFeedin 				"Cumulative Grid Feed-in" 				<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_CumulativeEnergyPurchased 			"Cumulative Energy Purchased" 			<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_DailyGridFeedin 					"Daily Grid Feed-in" 					<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_DailyEnergyPurchased 				"Daily Energy Purchased" 				<energy> (solarman) ["Sensor"]
Number:ElectricCurrent 		solarman_LeakCurrent 						"Leak Current" 							<energy> (solarman) ["Sensor"]
Number:ElectricResistance 	solarman_InsulationImpedance1 				"Insulation Impedance 1" 				<energy> (solarman) ["Sensor"]
Number:ElectricPotential 	solarman_NBUSVoltage 						"NBUS Voltage" 							<energy> (solarman) ["Sensor"]
Number:ElectricCurrent 		solarman_ConsumptionCurrentRUA 				"Consumption Current R/U/A" 			<energy> (solarman) ["Sensor"]
Number:Power 				solarman_TotalConsumptionPower 				"Total Consumption Power" 				<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_CumulativeConsumption 				"Cumulative Consumption" 				<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_DailyConsumption 					"Daily Consumption" 					<energy> (solarman) ["Sensor"]
String 						solarman_BatteryStatus 						"Battery Status" 						<energy> (solarman) ["Sensor"]
Number:Power 				solarman_BatteryPower 						"Battery Power" 						<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_TotalChargingEnergy 				"Total Charging Energy" 				<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_TotalDischargingEnergy 			"Total Discharging Energy" 				<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_DailyChargingEnergy 				"Daily Charging Energy" 				<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_DailyDischargingEnergy 			"Daily Discharging Energy" 				<energy> (solarman) ["Sensor"]
Number:Power 				solarman_PowerBatteryPack1 					"Power Battery Pack 1" 					<energy> (solarman) ["Sensor"]
Number:ElectricPotential 	solarman_TotalVoltageBatteryPack1 			"Total Voltage Battery Pack 1" 			<energy> (solarman) ["Sensor"]
Number:ElectricCurrent 		solarman_CurrentBatteryPack1 				"Current- Battery Pack 1" 				<energy> (solarman) ["Sensor"]
Number:Dimensionless 		solarman_SoCBatteryPack1 					"SoC- Battery Pack 1" 					<energy> (solarman) ["Sensor"] {stateDescription="unit"[pattern="%.1f %unit%"]}
Number 						solarman_CycleTimesBatteryPack1 			"Cycle Times-Battery Pack1" 			<energy> (solarman) ["Sensor"]
Number:Temperature 			solarman_TemperatureBatteryPack1 			"Temperature- Battery Pack 1" 			<energy> (solarman) ["Sensor"]
Number:Temperature 			solarman_ModuleTemperature 					"Module Temperature" 					<energy> (solarman) ["Sensor"]
Number:Temperature 			solarman_SinglePlateAmbientTemperature 		"Single Plate Ambient Temperature" 		<energy> (solarman) ["Sensor"]
Number:Temperature 			solarman_RadiatorTemperature1 				"Radiator Temperature 1" 				<energy> (solarman) ["Sensor"]
DateTime 					solarman_SystemTime 						"System Time" 							<energy> (solarman) ["Sensor"] {stateDescription="date"[pattern="%1$td-%1$tm-%1$tY %1$tH:%1$tM"]}
Number:ElectricCurrent 		solarman_BalancedCurrent 					"Balanced Current" 						<energy> (solarman) ["Sensor"]
Number:Time 				solarman_GenerationTimeToday 				"Generation Time Today" 				<energy> (solarman) ["Sensor"]
Number:Time 				solarman_GenerationTimeTotal 				"Generation Time Total" 				<energy> (solarman) ["Sensor"]
Number:Time 				solarman_TotalRunningHour 					"Total Running Hour" 					<energy> (solarman) ["Sensor"]
Number 						solarman_BootCountdown 						"Boot Countdown" 						<energy> (solarman) ["Sensor"]
Number:ElectricCurrent 		solarman_BuckCurrent 						"Buck Current" 							<energy> (solarman) ["Sensor"]
Number:ElectricPotential 	solarman_BusVoltage 						"Bus Voltage" 							<energy> (solarman) ["Sensor"]
Number:ElectricPotential 	solarman_PBUSVoltage 						"PBUS Voltage" 							<energy> (solarman) ["Sensor"]
String 						solarman_Inverterstatus 					"Inverter status" 						<energy> (solarman) ["Sensor"]
Number:Energy 				solarman_CumulativeSelfUsed 				"Cumulative Self Used" 					<energy> (solarman) ["Sensor"]

rule:
You first need some things:

curl --request POST \
  --url 'https://api.solarmanpv.com/account/v1.0/token?appId=<appId>&language=en&=' \
  --header 'Content-Type: application/json' \
  --data '{
	"appSecret": "<appSecret>",
	"email": "<email>",
	"password": "<passwordConvertedToSHA256>"
}'

I also scheduled a rule to obtain a new token every 30 days (token expires after 60 days) (0 0 8 1 * ? *)

val appId = "***********"
val appSecret = "***********"
val email = "***********"
val pwd = "***********"
val url = "https://api.solarmanpv.com/account/v1.0/token?appId=" + appId + "&language=en"
             
val content = '{"appSecret": "' + appSecret + '", "email": "' + email + '", "password": "' + pwd + '"}'
val headers = newHashMap("Content-Type" -> "application/json")
  
var String request  = sendHttpPostRequest(url, "application/json", content, headers, 3000)
logInfo("Solarman", "update token")
val token = transform("JSONPATH", "$..access_token", request)
//logInfo("Solarman", "token : " + token)
solarman_token.postUpdate(token)

Main rule:

val deviceSn = "************"
val url = "https://api.solarmanpv.com/device/v1.0/currentData?language=en&="
val token = solarman_token.state 
val content = '{"deviceSn": "' + deviceSn + '"}'
val headers = newHashMap("Authorization" -> "Bearer " + token)
var String request  = sendHttpPostRequest(url, "application/json", content, headers, 3000)   
val keys = transform("JSONPATH", "$..dataList..key", request)
val data = transform("JSONPATH", "$..dataList", request)
val Integer dataCount = Integer::parseInt(transform("JSONPATH", "$..dataList.length()", data))

var Integer j = 0  
while (j < dataCount) {
  var String dataKey = transform("JSONPATH", "$[" + j +"].key", data)
  var String dataValue = transform("JSONPATH", "$[" + j +"].value", data)
  var String dataUnit = transform("JSONPATH", "$[" + j +"].unit", data)
  var String dataName = transform("JSONPATH", "$[" + j +"].name", data)
  var String itemName = "solarman_" + dataName.replace(" ", "").replace("-","").replace("/","").replace("(","").replace(")","").replace("Single Pla","SinglePla")
  itemName.postUpdate(dataValue)  
    
  j++
}

This rule loops trough all received data and adds the values to the items. Maybe not the best way, but it works fine for me since 2 months :slight_smile:

Hello.

Thanks for your work.

I’ve got an Error in the rule, can you help me ?

2022-02-19 10:45:00.877 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID ‘MyRules_Solar-1’ failed: For input string: “{“code”:null,“msg”:null,“success”:true,“requestId”:“bf43c57e43985f58”,“deviceSn”:“4033847309”,“deviceId”:203084057,“deviceType”:“COLLECTOR”,“deviceState”:1,“dataList”:[{“key”:“SN1”,“value”:“4033847309”,“unit”:null,“name”:“Embedded Device SN”},{“key”:“MDUv1”,“value”:“MW3_14_5406_1.29”,“unit”:null,“name”:“Module Version No”},{“key”:“WORK_TIM1”,“value”:“1”,“unit”:“s”,“name”:“Total running time”},{“key”:“OFFSET_TIM1”,“value”:“1645263763”,“unit”:“s”,“name”:“Offset time”},{“key”:“SEND_PERIOD1”,“value”:“5”,“unit”:“Min”,“name”:“Data Uploading Period”},{“key”:“COLLECT_PERIOD1”,“value”:“60”,“unit”:“s”,“name”:“Data Acquisition Period”},{“key”:“max_conn_n1”,“value”:“1”,“unit”:null,“name”:“Max. No. of Connected Devices”},{“key”:“SGits1”,“value”:“6”,“unit”:null,“name”:“Signal Strength”},{“key”:“HEA_F1”,“value”:“120”,“unit”:“s”,“name”:“Heart Rate”}]}” in MyRules_Solar

Thanks for help !

Best regards

Hendrik

Is this all you get from the logs? Because you have a different device, you obviously need other items, did you create them?

ps: I added a second script to update the bearer token every month (expires after 60 days)

Okay, thanks for your fast answer.

There are not more logging Informations.

The rule crashed in the line:

val Integer dataCount = Integer::parseInt(transform(“JSONPATH”, “$…dataList.length()”, data))

I don’t know why…

I tryed the transform(“JSONPATH”, “$…dataList.length()”, data)
Without an error.

So that’s why the error cames from the parseInt?

Any idea ?

What’s the content of the request variable? Did you already tested the HTTP calls in a program like Postman?
We need to make sure the response you get is a correct json output.

Thanks for your work, it helped me a lot accessing solarman cloud data using the solarman API.
One Question: How did you manage the units (variable dataUnit)? I needed to write the units manually one by one into the stateDescription. Did you find another solution using dataUnit?
Next steps: I also would like to access my data w/o using the cloud. My device is a “Bosswerk MI600” microinverter, which seems to be identical to DEYE SUN600. Included is a datalogger and a WLAN-unit sending the data into the solarman cloud. I did some sniffing of the network traffic using wirkshark and I think, someday I will be successful in reading the data directly.
My Firmware version: MW3_15_5406_1.35

Piotr, thanks a lot for your work. Direct access is not working for me:

The lswlogger is online, but openhab.log shows error (debug on):

2022-02-27 11:42:40.750 [WARN ] [al.protocolv5.UnknownResponseHandler] - Unknown response from logger 04487b6e8e, length 29: A510001015007B907C31F2020100B01B00922300002AA5FF6106009715
2022-02-27 11:44:40.752 [DEBUG] [internal.protocolv5.LswLoggerHandler] - Ticking org.openhab.binding.lswlogger.internal.protocolv5.states.SendingRequestState@7d8e6f
2022-02-27 11:44:40.757 [DEBUG] [internal.protocolv5.LswLoggerHandler] - Ticking org.openhab.binding.lswlogger.internal.protocolv5.states.ReadingResponseState@178580c
2022-02-27 11:44:40.761 [WARN ] [al.protocolv5.UnknownResponseHandler] - Unknown response from logger 04487b6e8e, length 43: A510001015007E907C31F2020176B01B00092400002AA5FF6106008815A501001047007F907C31F2000615
2022-02-27 11:44:40.763 [DEBUG] [ternal.protocolv5.ResponseDispatcher] - Handler class org.openhab.binding.lswlogger.internal.protocolv5.UnknownResponseHandler matched response
2022-02-27 11:44:40.764 [DEBUG] [internal.protocolv5.LswLoggerHandler] - Ticking org.openhab.binding.lswlogger.internal.protocolv5.states.WaitingForNextSendRequestState@1bfa413

Inverter: Bosswerk MI600 (lieke DEYE SUN600)
Firmware version: MW3_15_5406_1.35
S/N: 2106xxxxxx

Perhaps I’ll try to extract the data using LAN sniffing having a network logger in between.
Any idea?

The binding is working fine for me, but there are a few observations:

  • Logger is also sending some data that are not recognised, maybe this will help decode them:
2022-05-15 10:39:15.432 [WARN ] [al.protocolv5.UnknownResponseHandler] - Unknown response from logger xxxx, length 14: A501001047000EEED5A166003015
2022-05-15 10:45:42.474 [WARN ] [al.protocolv5.UnknownResponseHandler] - Unknown response from logger xxxx, length 138: A5610010150015EED5A1660201D717841B610200005DA5FC4601034E00020000000000000000000010FC008415290148003700B000E2FF90138B09BD015B09C2015209C10156000046E7000018EF0A30016A00290032197B10E11506003C0000000100000487000000009F7E1715A5010010470016EED5A166003815A5010010470017EED5A166003915
  • When logger goes offline at night, the reconnection attempts produce exceptions in the log file, that just causes the log file to grow and get dirty. I would prefer if these were not logged as they are normal situation.
  • For the midnight, the daily production should reset internally, as the logger will be offline. I display on a wall tablet the daily production and daily consumption from the energy meter and the second resets at midnight but the first stays until the morning. That could be a configuration option how to behave here.
  • There was a question about how the binding should behave at night. I think it can keep on trying to reconnect at some intervals, if it does not dump exceptions to the log. It could try to ping the device, but echo requests may be filtered on some routed networks. Maybe we could make use of the sunrise/sunset hours calculated based on location position, which can be configured in OH. When there is sunrise + some time and device is not up, it is likely there is fault. It will be detected earlier than with the max timeout approach. In hours between sunset + some time until sunrise - some time the binding can stop attempts to reconnect. It all could be of course configurable, so users can choose other approaches if the want.
    Great job on the binding, it is very useful for me!

OK, I have this results for device serial number 23146XXXXX with firmware version
LSW3_15_FFFF_1.0.65. No data received. Are you planing to add support for other protocols in future @Piotr_Bojko ?

15:37:15.714 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from UNINITIALIZED to INITIALIZING
15:37:15.722 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from INITIALIZING to UNKNOWN
15:37:15.805 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from UNKNOWN to ONLINE
15:37:15.805 [WARN ] [nal.protocolv5.UnknownResponseHandler] - Unknown response from logger falownik, length 29: A5100010150082CAAAF68902015C9D0D003D290000C553A06206003915
15:39:15.808 [WARN ] [nal.protocolv5.UnknownResponseHandler] - Unknown response from logger falownik, length 14: A5010010470083CAAAF68900CE15
15:41:15.810 [WARN ] [nal.protocolv5.UnknownResponseHandler] - Unknown response from logger falownik, length 43: A5100010150084CAAAF6890201D49D0D00B5290000C553A06206002B15A5010010470085CAAAF68900D015
15:43:15.812 [WARN ] [nal.protocolv5.UnknownResponseHandler] - Unknown response from logger falownik, length 29: A5100010150086CAAAF68902014C9E0D002D2A0000C553A06206001F15
15:44:03.135 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from ONLINE to UNKNOWN
15:44:03.159 [WARN ] [nal.protocolv5.UnknownResponseHandler] - Unknown response from logger falownik, length 29: A5100010150008CAAAF6890201EC9E0D009B000000D753A06206009715
15:44:03.160 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from UNKNOWN to ONLINE
15:44:06.578 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from ONLINE to UNKNOWN
15:44:06.593 [WARN ] [nal.protocolv5.UnknownResponseHandler] - Unknown response from logger falownik, length 29: A5100010150009CAAAF6890201EF9E0D009F000000D753A06206009F15
15:44:06.593 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from UNKNOWN to ONLINE
15:44:16.682 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from ONLINE to UNKNOWN
15:44:16.903 [WARN ] [nal.protocolv5.UnknownResponseHandler] - Unknown response from logger falownik, length 29: A510001015000ACAAAF6890201F99E0D00A9000000D753A0620600B415
15:44:16.905 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from UNKNOWN to ONLINE
15:45:15.813 [WARN ] [.internal.protocolv5.LswLoggerHandler] - Context is closed, not switching to org.openhab.binding.lswlogger.internal.protocolv5.states.SendingRequestState@1def46d
15:45:47.508 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from ONLINE to UNKNOWN
15:45:48.160 [WARN ] [nal.protocolv5.UnknownResponseHandler] - Unknown response from logger falownik, length 29: A510001015000CCAAAF6890201559F0D0004010000D753A06206006F15
15:45:48.160 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from UNKNOWN to ONLINE
15:46:03.160 [WARN ] [.internal.protocolv5.LswLoggerHandler] - Context is closed, not switching to org.openhab.binding.lswlogger.internal.protocolv5.states.SendingRequestState@52c38d67
15:46:06.594 [WARN ] [.internal.protocolv5.LswLoggerHandler] - Context is closed, not switching to org.openhab.binding.lswlogger.internal.protocolv5.states.SendingRequestState@75267c2e
15:46:16.906 [WARN ] [.internal.protocolv5.LswLoggerHandler] - Context is closed, not switching to org.openhab.binding.lswlogger.internal.protocolv5.states.SendingRequestState@7e2815a6
15:46:55.940 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from ONLINE to UNKNOWN
15:46:56.158 [WARN ] [nal.protocolv5.UnknownResponseHandler] - Unknown response from logger falownik, length 29: A510001015000DCAAAF6890201999F0D0048010000D753A0620600F815
15:46:56.160 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from UNKNOWN to ONLINE
15:46:56.162 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'LSWLogger_Online' changed from NULL to ON
15:46:57.874 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from ONLINE to UNKNOWN
15:46:58.090 [WARN ] [nal.protocolv5.UnknownResponseHandler] - Unknown response from logger falownik, length 29: A510001015000ECAAAF68902019A9F0D004A010000D753A0620600FC15
15:46:58.090 [INFO ] [hab.event.ThingStatusInfoChangedEvent] - Thing 'lswlogger:LSWLoggerV5:falownik' changed from UNKNOWN to ONLINE
15:47:48.162 [WARN ] [.internal.protocolv5.LswLoggerHandler] - Context is closed, not switching to org.openhab.binding.lswlogger.internal.protocolv5.states.SendingRequestState@3adc96c1
15:48:56.160 [WARN ] [.internal.protocolv5.LswLoggerHandler] - Context is closed, not switching to org.openhab.binding.lswlogger.internal.protocolv5.states.SendingRequestState@1d397374
15:48:58.093 [WARN ] [nal.protocolv5.UnknownResponseHandler] - Unknown response from logger falownik, length 14: A501001047000FCAAAF689005A15

Hello,
I have a device serial with SN: 2336xxxxxx and firmware LSW3_15_FFFF_1.0.78.
I connected to the LSW Logger it came online, but all the values are wrong, reading static(not updating) or senseless data.
@Piotr_Bojko are you planning to work on this? I am happy to contribute towards those efforts.
What is more important to me (which seems to be missing here) is reading the backup battery information.
That is are they charging or discharging, and if they are full. Only then i can put meaningful realtime rules to maximize my available PV power while prioritizing the batteries (ensuring they are not being discharged during the day).

@wars has a big list of attributes, can these be added to logger to read in realtime as opposed to going o the solarman api (which is delayed 15 minutes) while is good for logging through grafana would be not suite the need for near realtime reactions.
Looking forward to having back.
Espresso

@Piotr_Bojko when I try to activate your binding in karaf, I get

Error starting bundle 266: Could not resolve module: org.opehnab.binding.lswlogger [266]
Unresolved requirement: Import-Package: org.openhab.core.library.unit

Any idea anyone how I can solve this? I am running openhab 2.5.12
Thanks!
Tomek

I didn’t test it against 2.5.x flavours. Sorry :slight_smile:

I think I will release the plugin either as a pull request to standard builtin oh addons or as a standalone bundle to marketplace. In either ways it will be possible to tinker it to cover more logger firmware versions or oh (like 2.5.x)

Try in a console feature:install [look for anything that might resemble the missing package]