Coder Social home page Coder Social logo

davidrapan / ha-solarman Goto Github PK

View Code? Open in Web Editor NEW
31.0 4.0 11.0 442 KB

⚡ Solarman Stick Logger integration for 🏠 Home Assistant

License: MIT License

Python 100.00%
deye energy home-assistant home-assistant-integration home-automation inverter sofar sol-ark solar solarman

ha-solarman's Introduction

⚡ Solarman Stick Logger

GitHub Activity HACS Supported Community Forum Discussions Wiki

🠶 Signpost

Note

It's still 🚧 work in progress but currently very 🐎 stable 😉
If you are curious about what's planned next look into 🪧 Milestones
Use 💬 Discussions for 🙏 Q&A and 💡 Development Planning, etc. and leave 🚩 Issues for 🐞 bug reporting, 🎁 feature requests and such...

Important

Inspired by StephanJoubert/home_assistant_solarman but w/ a lot of ✍ crucial changes & new features
Implemented using asynchronous pysolarmanv5 and fetching through DataUpdateCoordinator + incorporates many more fixes and improvements and also up to date features of HA (while trying to fully preserve backward compatibility)

Warning

It's not possible to install this integration side by side using HACS with the version from Stephan! It will be overwritten when not done manually

🔨 Installation

🔌 Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

🪛 HACS (Manually)

🔧 Manually

  • Copy the contents of 'custom_components/solarman' directory into the Home Assistant with exactly the same hirearchy within the '/config' directory

👤 Contributors

ha-solarman's People

Contributors

crazyus3r avatar cryptocake avatar davidrapan avatar floppe avatar frsantos avatar jmccrohan avatar sofkaski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ha-solarman's Issues

Please add sensor: Solarman - Daily Total Consumption to match the value in energy dashboard and Solarman App

Hi David,

could you please add a sensor that shows exactly the same value for the “Daily total consumption” as the value in the energy dashboard?

The KWh value in the official Solarman App, Deye App and Energy Ease App for mobile devices show the same value for Daily total consumption as the Energy dashboard in Home Assistant.

The already available “Daily Load Consumption” doesn’t match wit the “Daily total consumption”. This value is slightly lower.

Adding this sensor would be highly appreciated. Alternatively could you make it available as a template sensor? I have no clue how generate the code for it.

Joe

Updating release deletes custom_parameters.yaml

StephansJoubert original integration did not delete the file custom_parameters.yaml when used in the inverter_definitions folder. This was to allow tweaks to be made of an existing parameters file and ensure that it survive an update. This functionality appears to have been lost with the latest 24.07.24 update.

update_interval not working

Adding the default section to the inverter configuration and then restarting HA does not change the update rate. Code from commit c55af98

default:
  update_interval: 30
  digits: 6

Daily, Monthly, Yearly and Total generation entities no longer available on update to 2024.8.1 and latest integration

did the usual upgrade on the new release, 2024.8.1 and Daily, Monthly, Yearly and Total Generation entities have become unavailable.

Had also upgraded to the latest Solarman instance from HACS

image

winding integration back to 24.07.14 seems to resolve the issue for daily generation but Monthly, Yearly and Total remain unavailable

Winding back to 2024.8.0 brings back all entities

Updating to Solarman 24.08.04 on HA2024.8.0 has the same issue...so seems to be incompatability in there somewhere

Through some trial and error Ive managed to get 2024.8.1 and 24.07.14 working to give me at least daily generation....so will look to getting the rest at some point to...

If you need me to check anything do let me know

Does this integration work with the SUN-M160G4-EU-Q0?

Hi I am planing to buy this SUN-M160G4-EU-Q0 inverter and I am not sure if this addon supports this device.

Is there a "supported" or "checked" device list?

Do i need an additional Hardware device (Solarman Stick Logger) to get the information from my inverter to my home assitant?
Or is there an ESP Home equivalent of this hardware (similar to the DTU for Hoymiles) ? (I am asking because if found the following in another issue)

Compliments for the great work. 👍I've been using your integration for about a week now. 
Works perfectly. Also, I use an ESP Home variant and can also configure the Deye with it.
I look forward to this expansion in your solution!

Originally posted by @Summer-of69 in #9 (comment)

Production Values & Alert Entities not working anymore

Hi there,

i'm kind of new to home-assistant therefore please be kind to me. After the Update Update of 2024.8 (at least that is my assumption) I'm got the following issues:

Value of my 2MTTP Deye in total comsumption does not match.

in the past i always got values between 2-5 kwh. A typical day looks like this:
image
After the update it looks like this:
image
Values add 200 kwh to a day ... same goes on the next days:
image

Value=sensor.deye_total_production
image

2nd Issue:
The Value: Altert on the Deye Decvice - every 5 secounds the value chances. In my mind i can't remember this behaviour. When i check the micro inverter manually via the ip/statuspage - all looks good.

image

Maybe someone could help me out - thanks

Support for Ethernet Logger LSE-3

I am using a Sofar Hybrid Box (SOFAR HYD 20KTL-3PH) with a LSE-3 logger and get no responses when trying to use the thing with the ha-solarman code. Neither with the code here nor with the original from StephanJoubert.

Reading through @StephanJouberts repo I found this issue which seems to indicate that the LSE-3 device needs different encapsulation ...

Anyone working on this ? Or is there some secret to get my setup to communicate with ha-solarman which I just neglected until now?

[Feature Request] Add Custom Sensor: Today‘s PV Consumption [kWh]

Hi David,

is it possible to add a permanent custom sensor in the deye_sgo4lp3.yaml definition file to fulfill the following task?

Today‘s PV Consumption [kWh]

1. This sensor should calculate the consumption taken from the sun only.

2. The sensor should not include: Battery Charge/Discharge, Energy Export and Grid Import.

This sensor would be great to visualize the consumed Energy with the energy source.

Any idea how to implement this?

Using of own yaml - fail

Hi David,
I have created my own yaml file and added it to the folder "inverter_definitions". I can't select my yaml fail in the configuration because the name is not displayed. At StephanJoubert all inverter yaml are listed in the fail const.py.
In which file can I find the list of inverter yaml files?

Writing modbus registers

Hello David, how can I write the registers.

I use such an automation to write the wallbox registers via Modbus. (See yaml code below).
Does it work the same way with the Deye Iverters?
What is the name of the hub for Deye sg04lp3? Slave number is 1 or 0?

`- id: '1680707528756'
alias: Setze Ladestrom
description: ''
trigger:

  • platform: state
    entity_id:
    • sensor.output_strom_wallbox
      condition: []
      action:
  • service: modbus.write_register
    data:
    hub: modbus heidelberg wallbox
    address: 261
    slave: 1
    value:
    • '{{ (states.sensor.output_strom_wallbox.state) }}'`

[Feature Request] Add facility to be able to stop / start integration from an Automation

Issue #17 requested to reduce the number of errors / warnings logged when Solar only powered inverters go off-line at night and then come online in the morning. The changes implemented in #17 have improved the situation but the final and best solution is to be able to instruct the integration to cleanly disconnect from the inverter and to stop trying to connect until such time as the integration is enabled again. This could be achieved by the integration providing a binary_sensor or switch that can be enabled / disabled by an automation at sunset and sunrise.

Correction for "Today Consumption [kWh]" working for Deye Hybrid (deye_sg04lp3.yaml) - [Fault: Operator missing for subtraction]

Hi David,

I added your Custom Sensor for "Today's Consumption [kWh]" from your Wiki and realised that the operators for substraction were missing. The result was a much to high value as the values weren't substracted.

I tested the following YAML Code for the Custom Sensor (deye_sg04lp3.yaml) and it is working fine:

  - group: Custom Sensors
    items:
      # Calculates today's energy consumption
      # Formula: Today Energy Bought [0x0208] + Today Production [0x0211] + Today Battery Discharge [0x0203] - Today Energy Sold [0x0209] - Today Battery Charge [0x0202]
      - name: Today Consumption
        friendly_name: Today's Consumption
        alt: Daily Consumption
        description: Includes today's house consumption as well inverter consumption and AC/DC conversion losses
        class: energy
        state_class: total_increasing
        uom: kWh
        rule: 1
        digits: 1
        registers: [0x0208, 0x0211, 0x0203, 0x0209, 0x0202]
        sensors:
          - scale: 0.1
            registers: [0x0208]
          - scale: 0.1
            registers: [0x0211]
          - scale: 0.1
            registers: [0x0203]
          - operator: subtract
            scale: 0.1
            registers: [0x0209]
          - operator: subtract
            scale: 0.1
            registers: [0x0202]   

Add this sensor for Deye Hybrid SG04LP3:

  1. Copy code to your "deye_sg04lp3.yaml" or "custom_configurations.yaml"
  2. Restart Home Assistant
  3. Add newly created sensor "sensor.solarman_today_consumption" to your dashboard

Description:
This Sensor will add a calculated value from today's house consumption as well inverter consumption and AC/DC conversion losses.

Settings Parameters

Hi, in the YAML File from this integreation are also Settings Parameters, but if i add the Inverter i get only the Sensor Entitys.

image

Is there any hidden option ?

Differences between *this and original implementation

i switched from the original repo to yours, trying to fix a problem with 2 of my inverters, but i noticed that:

  • status_connection property is named connection_status in your build. Is that intended?
  • status_lastupdate is missing

it would be nice to have same basic properties, or not?

Today and total loss sensors show non-monotonic growth

I noticed the following log entries:

2024-08-11 16:35:10.679 WARNING (Recorder) [homeassistant.components.sensor.recorder] Entity sensor.inverter_total_losses from integration solarman has state class total_increasing, but its state is not strictly increasing. Triggered by state 305.3 (305.4) with last_updated set to 2024-08-11T13:30:14.321651+00:00.

2024-08-11 17:05:10.590 WARNING (Recorder) [homeassistant.components.sensor.recorder] Entity sensor.inverter_today_losses from integration solarman has state class total_increasing, but its state is not strictly increasing. Triggered by state 1 (1.1) with last_updated set to 2024-08-11T14:00:31.043815+00:00.

The formula for today's losses:

Today(Daily) losses = Today(Daily) Energy Import(Bought) + Today(Daily) Production + Today(Daily) Battery Discharge - Today(Daily) Energy Export(Sold) - Today(Daily) Battery Charge - Today(Daily) Load Consumption

When looking from the history the values of registers used in the calculation are growing monotonically around these times, but the calculated value does not.

last_changed today_energy_bought today_production today_battery_discharge today_energy_sold today_battery_charge today_load_consumption today_losses
2024-08-11T13:45:00.000Z 3.5 24.3 0 19.2 0 7.6 1
2024-08-11T13:50:23.091Z 3.5 24.3 0 19.3 0 7.6 1
2024-08-11T13:50:23.092Z 3.5 24.3 0 19.3 0 7.6 1.1
2024-08-11T13:50:23.094Z 3.5 24.5 0 19.3 0 7.6 1.1
2024-08-11T14:00:31.043Z 3.5 24.5 0 19.7 0 7.7 1
2024-08-11T14:00:31.044Z 3.5 24.9 0 19.7 0 7.7 1
2024-08-11T14:10:08.361Z 3.5 24.9 0 20 0 7.7 1
2024-08-11T14:10:08.362Z 3.5 24.9 0 20 0 7.8 1

Looking at longer history of losses it seems that the value typically oscillates one decimal up and down while growing over a longer period. Could this be related to timing of register reads compared to when the inverter updates these values? E.g. some registers are updated with new values in the inverter and rest are 'old' values.

Inverter configuration:

  • deye_sg04lp3.yaml

Versions:

  • ha-solarman 55615e5
  • Core 2024.8.1
  • Supervisor 2024.08.0
  • Operating System 12.4
  • Frontend 20240809.0

Possible for v4

Hey is it somehow possible to use this with v4 protocol?
That would be so awesome :)

[Feature Request] Add HA's binary_sensor platform

Solar Inverters have several single bit status flags that are currently represented in HA as normal sensors. The advantage of using a binary_sensor is that HA will better show the on/off state by changing the icon colour and icon.

Could we silence errors when inverter is offline?

My inverter gets power from the sun, so at nights the inverter is offline and stick logger is unreachable.

I've lost the logs now when I've restarted several times, but the logs are quite noisy at nights. Perhaps enough with a warning message or remove stack trace and only show unreachable.

Cannot connect to inverter using domain

Logger: homeassistant.config_entries
Source: config_entries.py:586
First occurred: 5:42:07 AM (1 occurrences)
Last logged: 5:42:07 AM

Error setting up entry SolarBK-DEYE-Domain for solarman
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 586, in async_setup
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/solarman/init.py", line 39, in async_setup_entry
if IPv4Address(inverter_host).is_private:
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/ipaddress.py", line 1319, in init
self._ip = self._ip_int_from_string(addr_str)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/ipaddress.py", line 1206, in _ip_int_from_string
raise AddressValueError("Expected 4 octets in %r" % ip_str)
ipaddress.AddressValueError: Expected 4 octets in 'mydomain.net'

I hope you can develope the new function that connect to inverter via domain name.

Thanks a lot!

[Solved] Today‘s Losses entity with SG04LP3.yaml shows incorrect (high) value

Hi David,

are you or anyone else able to explain the value of „Today‘s Power Losses“ to me? I think this value is not calculated the right way maybe?

My configuration:
Deye 8K Hybrid SG04 LP3-EU

Inverter_definition file: (unedited orriginal file from release v24.07.24):
deye_sg04lp3.yaml

Result:
IMG_8399
(These values are from 0:00 until 8:00 o‘clock)

Thanx again for your help!
Joe

Does it work with high voltage inverters?

I presume this does not work with SUN-10K-SG01HP3-EU-AM2 ?

That's a high voltage inverter, serial no. starts with 23xxx, so presumably it's not protocol Version 5, but 4? Or another?

Futhermore the sensors/registers are different for the HV inverters...

Control the inverter

Hi,
thank you for your great work.
Is it also possible to do some kind of Controlling the inverter?
e.g. Charge the battery with grid power?

Thanks.

Startup error

I noticed an error in system startup when I needed to shutdown the Raspberry hosting my HA instance to resuffle power cabling.
The sequence was the following:

  1. I shutdown the host (sudo shutdown -h now)
  2. Pulled Rasberry power cable off and fiddled with cabling
  3. Plugged rasberry power source back -> system boot
  4. Solarman integration did not start up and there was the following in the log:
Error setting up entry Inverter for solarman
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 586, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/solarman/__init__.py", line 61, in async_setup_entry
    inverter = Inverter(inverter_host, inverter_serial, inverter_port, inverter_mb_slave_id, name, inverter_mac, lookup_path, lookup_file)
                                                                                                   ^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'inverter_mac' where it is not associated with a value
2024-07-22 17:38:27.164 WARNING (MainThread) [homeassistant.components.sensor] Setup of sensor platform bms_connector is taking over 10 seconds.
2024-07-22 17:38:31.817 WARNING (MainThread) [homeassistant.components.energy.sensor] Found unexpected state_class None for sensor.inverter_today_energy_bought
2024-07-22 17:38:31.817 WARNING (MainThread) [homeassistant.components.energy.sensor] Found unexpected state_class None for sensor.inverter_today_energy_sold
  1. Reloaded the solarman integration -> the integration started normally

Solarman AC & DC Temperature - Sensors missing for DEYE Hybrid SG04LP3

Hi David,

Just testing your integration in my productive system.

My Configuration:
DEYE Hybrid 8K SG04LP3 EU
PYTES E-Box Battery

I installed your integration parallel to the Solarman integration 1.4.3 by Stephen and realized that it was overwritten.

Result:
Many sensors have different names. That’s not a big problem and can be fixed manually.

I realized that the following sensor is missing:
Solarman AC Temperature
Could you please add it?

I‘m impressed by the speed of reloading the values. This integration is much faster.

Great work and many thanks!

Error setting up entry Sofar for solarman

Logger: homeassistant.config_entries
Quelle: config_entries.py:604
Erstmals aufgetreten: 14:56:07 (3 Vorkommnisse)
Zuletzt protokolliert: 14:57:30

Error setting up entry Sofar for solarman
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 604, in async_setup
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/solarman/init.py", line 72, in async_setup_entry
await inverter.load(name, inverter_mac, lookup_path, lookup_file)
File "/config/custom_components/solarman/api.py", line 80, in load
self.profile = ParameterParser(self.parameter_definition)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/solarman/parser.py", line 51, in init
self._code = self._registers_table[0]
~~~~~~~~~~~~~~~~~~~~~^^^
KeyError: 0

v24.08.14 - Failed to Setup

Describe the bug
After updating from v24.08.04 to v24.08.14 the integrations fails to setup. Removing and adding again didn't help.

Attach the debug log

2024-08-16 14:51:01.963 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Solis for solarman
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 604, in async_setup
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/solarman/__init__.py", line 72, in async_setup_entry
await inverter.load(name, inverter_mac, lookup_path, lookup_file)
File "/config/custom_components/solarman/api.py", line 80, in load
self.profile = ParameterParser(self.parameter_definition)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/solarman/parser.py", line 51, in __init__
self._code = self._registers_table[0]
~~~~~~~~~~~~~~~~~~~~~^^^
KeyError: 0
2024-08-16 14:52:50.190 DEBUG (MainThread) [custom_components.solarman] async_setup_entry({'created_at': '2024-08-16T17:51:00.740913+00:00', 'data': {'name': 'Solis', 'inverter_discovery': True, 'inverter_host': '192.168.68.124', 'inverter_serial': 4089846851, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'inverter_passthrough': False, 'lookup_file': 'solis_3p-4g.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}, 'disabled_by': None, 'domain': 'solarman', 'entry_id': '01J5E50VM492P99NJ0KS3NY55Z', 'minor_version': 1, 'modified_at': '2024-08-16T17:51:00.740917+00:00', 'options': {'name': 'Solis', 'inverter_discovery': True, 'inverter_host': '192.168.68.124', 'inverter_serial': 4089846851, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'inverter_passthrough': False, 'lookup_file': 'solis_3p-4g.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'title': 'Solis', 'unique_id': None, 'version': 1})
2024-08-16 14:52:50.193 DEBUG (MainThread) [custom_components.solarman.discovery] discover
2024-08-16 14:52:50.310 DEBUG (MainThread) [custom_components.solarman.discovery] _discover: [192.168.68.124, 34EAE7EA644A, 4089846851]
2024-08-16 14:52:51.405 DEBUG (MainThread) [custom_components.solarman.parser] Defaults for update_interval: 5, code: 4, min_span: 25, digits: 6
2024-08-16 14:52:51.406 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Solis for solarman
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 604, in async_setup
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/solarman/__init__.py", line 72, in async_setup_entry
await inverter.load(name, inverter_mac, lookup_path, lookup_file)
File "/config/custom_components/solarman/api.py", line 80, in load
self.profile = ParameterParser(self.parameter_definition)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/solarman/parser.py", line 51, in __init__
self._code = self._registers_table[0]
~~~~~~~~~~~~~~~~~~~~~^^^
KeyError: 0
2024-08-16 14:53:00.752 DEBUG (MainThread) [custom_components.solarman.config_flow] ConfigFlowHandler.async_step_user: None
2024-08-16 14:53:00.753 DEBUG (MainThread) [custom_components.solarman.config_flow] step_user_data_process: discovery: <custom_components.solarman.discovery.InverterDiscovery object at 0x7fccaf1a3cb0>
2024-08-16 14:53:00.753 DEBUG (MainThread) [custom_components.solarman.discovery] discover
2024-08-16 14:53:00.753 DEBUG (MainThread) [custom_components.solarman.discovery] _discover_all
2024-08-16 14:53:00.753 DEBUG (MainThread) [custom_components.solarman.discovery] _discover_all: Broadcasting on 192.168.68.0/24
2024-08-16 14:53:00.856 DEBUG (MainThread) [custom_components.solarman.discovery] _discover: [192.168.68.124, 34EAE7EA644A, 4089846851]
2024-08-16 14:53:01.871 DEBUG (MainThread) [custom_components.solarman.config_flow] step_user_data_schema: data: {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.68.124', 'inverter_serial': 4089846851, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'inverter_passthrough': False, 'lookup_file': 'deye_hybrid.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}, custom_components/solarman/inverter_definitions/: ['afore_BNTxxxKTL-2mppt.yaml', 'afore_hybrid.yaml', 'deye_2mppt.yaml', 'deye_4mppt.yaml', 'deye_hybrid.yaml', 'deye_sg01hp3.yaml', 'deye_sg04lp3.yaml', 'deye_string.yaml', 'kstar_hybrid.yaml', 'pylontech_Force-H.yaml', 'sofar_g3hyd.yaml', 'sofar_hyd3k-6k-es.yaml', 'sofar_lsw3.yaml', 'sofar_wifikit.yaml', 'solarman_dtsd422-d3.yaml', 'solis_1p8k-5g.yaml', 'solis_3p-4g.yaml', 'solis_3p-5g.yaml', 'solis_hybrid.yaml', 'solis_s6-gr1p.yaml', 'zcs_azzurro-hyd-zss-hp.yaml', 'zcs_azzurro-ktl-v3.yaml']
2024-08-16 14:53:01.872 DEBUG (MainThread) [custom_components.solarman.config_flow] step_user_data_schema: STEP_USER_DATA_SCHEMA: {'name': <class 'str'>, 'inverter_discovery': <class 'bool'>, 'inverter_host': <class 'str'>, 'inverter_serial': <class 'int'>, 'inverter_port': <class 'int'>, 'inverter_mb_slave_id': <class 'int'>, 'inverter_passthrough': <class 'bool'>, 'lookup_file': In(['afore_BNTxxxKTL-2mppt.yaml', 'afore_hybrid.yaml', 'deye_2mppt.yaml', 'deye_4mppt.yaml', 'deye_hybrid.yaml', 'deye_sg01hp3.yaml', 'deye_sg04lp3.yaml', 'deye_string.yaml', 'kstar_hybrid.yaml', 'pylontech_Force-H.yaml', 'sofar_g3hyd.yaml', 'sofar_hyd3k-6k-es.yaml', 'sofar_lsw3.yaml', 'sofar_wifikit.yaml', 'solarman_dtsd422-d3.yaml', 'solis_1p8k-5g.yaml', 'solis_3p-4g.yaml', 'solis_3p-5g.yaml', 'solis_hybrid.yaml', 'solis_s6-gr1p.yaml', 'zcs_azzurro-hyd-zss-hp.yaml', 'zcs_azzurro-ktl-v3.yaml']), 'battery_nominal_voltage': <class 'int'>, 'battery_life_cycle_rating': <class 'int'>}
2024-08-16 14:53:09.165 DEBUG (MainThread) [custom_components.solarman.config_flow] ConfigFlowHandler.async_step_user: {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.68.124', 'inverter_serial': 4089846851, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'inverter_passthrough': False, 'lookup_file': 'solis_3p-4g.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}
2024-08-16 14:53:09.165 DEBUG (MainThread) [custom_components.solarman.config_flow] validate_input: {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.68.124', 'inverter_serial': 4089846851, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'inverter_passthrough': False, 'lookup_file': 'solis_3p-4g.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}
2024-08-16 14:53:09.165 DEBUG (MainThread) [custom_components.solarman.config_flow] ConfigFlowHandler.async_step_user: validation passed: {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.68.124', 'inverter_serial': 4089846851, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'inverter_passthrough': False, 'lookup_file': 'solis_3p-4g.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}
2024-08-16 14:53:09.168 DEBUG (MainThread) [custom_components.solarman] async_setup_entry({'created_at': '2024-08-16T17:53:09.166137+00:00', 'data': {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.68.124', 'inverter_serial': 4089846851, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'inverter_passthrough': False, 'lookup_file': 'solis_3p-4g.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}, 'disabled_by': None, 'domain': 'solarman', 'entry_id': '01J5E54S1ECKYWE27PQYWE9DQ6', 'minor_version': 1, 'modified_at': '2024-08-16T17:53:09.166144+00:00', 'options': {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.68.124', 'inverter_serial': 4089846851, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'inverter_passthrough': False, 'lookup_file': 'solis_3p-4g.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'title': 'Inverter', 'unique_id': None, 'version': 1})
2024-08-16 14:53:09.168 DEBUG (MainThread) [custom_components.solarman.discovery] discover
2024-08-16 14:53:09.173 DEBUG (MainThread) [custom_components.solarman.discovery] _discover: [192.168.68.124, 34EAE7EA644A, 4089846851]
2024-08-16 14:53:10.324 DEBUG (MainThread) [custom_components.solarman.parser] Defaults for update_interval: 5, code: 4, min_span: 25, digits: 6
2024-08-16 14:53:10.324 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Inverter for solarman
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 604, in async_setup
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/solarman/__init__.py", line 72, in async_setup_entry
await inverter.load(name, inverter_mac, lookup_path, lookup_file)
File "/config/custom_components/solarman/api.py", line 80, in load
self.profile = ParameterParser(self.parameter_definition)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/solarman/parser.py", line 51, in __init__
self._code = self._registers_table[0]
~~~~~~~~~~~~~~~~~~~~~^^^
KeyError: 0
2024-08-16 14:53:19.099 DEBUG (MainThread) [custom_components.solarman.config_flow] ConfigFlowHandler.async_get_options_flow: <ConfigEntry entry_id=01J5E54S1ECKYWE27PQYWE9DQ6 version=1 domain=solarman title=Inverter state=ConfigEntryState.SETUP_ERROR unique_id=None>
2024-08-16 14:53:19.099 DEBUG (MainThread) [custom_components.solarman.config_flow] OptionsFlowHandler.__init__: <ConfigEntry entry_id=01J5E54S1ECKYWE27PQYWE9DQ6 version=1 domain=solarman title=Inverter state=ConfigEntryState.SETUP_ERROR unique_id=None>
2024-08-16 14:53:19.099 DEBUG (MainThread) [custom_components.solarman.config_flow] OptionsFlowHandler.async_step_init: None
2024-08-16 14:53:19.101 DEBUG (MainThread) [custom_components.solarman.config_flow] step_user_data_schema: data: {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.68.124', 'inverter_serial': 4089846851, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'inverter_passthrough': False, 'lookup_file': 'solis_3p-4g.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}, custom_components/solarman/inverter_definitions/: ['afore_BNTxxxKTL-2mppt.yaml', 'afore_hybrid.yaml', 'deye_2mppt.yaml', 'deye_4mppt.yaml', 'deye_hybrid.yaml', 'deye_sg01hp3.yaml', 'deye_sg04lp3.yaml', 'deye_string.yaml', 'kstar_hybrid.yaml', 'pylontech_Force-H.yaml', 'sofar_g3hyd.yaml', 'sofar_hyd3k-6k-es.yaml', 'sofar_lsw3.yaml', 'sofar_wifikit.yaml', 'solarman_dtsd422-d3.yaml', 'solis_1p8k-5g.yaml', 'solis_3p-4g.yaml', 'solis_3p-5g.yaml', 'solis_hybrid.yaml', 'solis_s6-gr1p.yaml', 'zcs_azzurro-hyd-zss-hp.yaml', 'zcs_azzurro-ktl-v3.yaml']
2024-08-16 14:53:19.102 DEBUG (MainThread) [custom_components.solarman.config_flow] step_user_data_schema: STEP_USER_DATA_SCHEMA: {'name': <class 'str'>, 'inverter_discovery': <class 'bool'>, 'inverter_host': <class 'str'>, 'inverter_serial': <class 'int'>, 'inverter_port': <class 'int'>, 'inverter_mb_slave_id': <class 'int'>, 'inverter_passthrough': <class 'bool'>, 'lookup_file': In(['afore_BNTxxxKTL-2mppt.yaml', 'afore_hybrid.yaml', 'deye_2mppt.yaml', 'deye_4mppt.yaml', 'deye_hybrid.yaml', 'deye_sg01hp3.yaml', 'deye_sg04lp3.yaml', 'deye_string.yaml', 'kstar_hybrid.yaml', 'pylontech_Force-H.yaml', 'sofar_g3hyd.yaml', 'sofar_hyd3k-6k-es.yaml', 'sofar_lsw3.yaml', 'sofar_wifikit.yaml', 'solarman_dtsd422-d3.yaml', 'solis_1p8k-5g.yaml', 'solis_3p-4g.yaml', 'solis_3p-5g.yaml', 'solis_hybrid.yaml', 'solis_s6-gr1p.yaml', 'zcs_azzurro-hyd-zss-hp.yaml', 'zcs_azzurro-ktl-v3.yaml']), 'battery_nominal_voltage': <class 'int'>, 'battery_life_cycle_rating': <class 'int'>}
2024-08-16 14:53:59.007 DEBUG (MainThread) [custom_components.solarman.config_flow] ConfigFlowHandler.async_get_options_flow: <ConfigEntry entry_id=01J5E54S1ECKYWE27PQYWE9DQ6 version=1 domain=solarman title=Inverter state=ConfigEntryState.SETUP_ERROR unique_id=None>
2024-08-16 14:53:59.007 DEBUG (MainThread) [custom_components.solarman.config_flow] OptionsFlowHandler.__init__: <ConfigEntry entry_id=01J5E54S1ECKYWE27PQYWE9DQ6 version=1 domain=solarman title=Inverter state=ConfigEntryState.SETUP_ERROR unique_id=None>
2024-08-16 14:53:59.007 DEBUG (MainThread) [custom_components.solarman.config_flow] OptionsFlowHandler.async_step_init: None
2024-08-16 14:53:59.009 DEBUG (MainThread) [custom_components.solarman.config_flow] step_user_data_schema: data: {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.68.124', 'inverter_serial': 4089846851, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'inverter_passthrough': False, 'lookup_file': 'solis_3p-4g.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}, custom_components/solarman/inverter_definitions/: ['afore_BNTxxxKTL-2mppt.yaml', 'afore_hybrid.yaml', 'deye_2mppt.yaml', 'deye_4mppt.yaml', 'deye_hybrid.yaml', 'deye_sg01hp3.yaml', 'deye_sg04lp3.yaml', 'deye_string.yaml', 'kstar_hybrid.yaml', 'pylontech_Force-H.yaml', 'sofar_g3hyd.yaml', 'sofar_hyd3k-6k-es.yaml', 'sofar_lsw3.yaml', 'sofar_wifikit.yaml', 'solarman_dtsd422-d3.yaml', 'solis_1p8k-5g.yaml', 'solis_3p-4g.yaml', 'solis_3p-5g.yaml', 'solis_hybrid.yaml', 'solis_s6-gr1p.yaml', 'zcs_azzurro-hyd-zss-hp.yaml', 'zcs_azzurro-ktl-v3.yaml']
2024-08-16 14:53:59.010 DEBUG (MainThread) [custom_components.solarman.config_flow] step_user_data_schema: STEP_USER_DATA_SCHEMA: {'name': <class 'str'>, 'inverter_discovery': <class 'bool'>, 'inverter_host': <class 'str'>, 'inverter_serial': <class 'int'>, 'inverter_port': <class 'int'>, 'inverter_mb_slave_id': <class 'int'>, 'inverter_passthrough': <class 'bool'>, 'lookup_file': In(['afore_BNTxxxKTL-2mppt.yaml', 'afore_hybrid.yaml', 'deye_2mppt.yaml', 'deye_4mppt.yaml', 'deye_hybrid.yaml', 'deye_sg01hp3.yaml', 'deye_sg04lp3.yaml', 'deye_string.yaml', 'kstar_hybrid.yaml', 'pylontech_Force-H.yaml', 'sofar_g3hyd.yaml', 'sofar_hyd3k-6k-es.yaml', 'sofar_lsw3.yaml', 'sofar_wifikit.yaml', 'solarman_dtsd422-d3.yaml', 'solis_1p8k-5g.yaml', 'solis_3p-4g.yaml', 'solis_3p-5g.yaml', 'solis_hybrid.yaml', 'solis_s6-gr1p.yaml', 'zcs_azzurro-hyd-zss-hp.yaml', 'zcs_azzurro-ktl-v3.yaml']), 'battery_nominal_voltage': <class 'int'>, 'battery_life_cycle_rating': <class 'int'>}

To Reproduce
Steps to reproduce the behavior:

  1. Go to Add Device
  2. Select 'solis_3p-4g.yaml'
  3. Press submit
  4. See error

Metadata:
Version: v24.08.14

Additional context
Rolling back to v24.08.04 works normally.

Integration stays disconnected after the inverter goes back online

Today my inverter disconnected from wifi briefly, however the integration stayed offline until I found it 2h later not reporting any data. I restarted HA and the integration started working again.

Is there something that can be done to have it retry connecting periodically?

Unable to add configuration

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 586, in async_setup
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/solarman/init.py", line 59, in async_setup_entry
inverter = Inverter(inverter_host, inverter_serial, inverter_port, inverter_mb_slave_id, name, inverter_mac, lookup_path, lookup_file)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/solarman/api.py", line 132, in init
super().init(address, serial, port, mb_slave_id, AUTO_RECONNECT)
File "/config/custom_components/solarman/api.py", line 23, in init
super().init(address, serial, port = port, mb_slave_id = mb_slave_id, logger = _LOGGER, auto_reconnect = auto_reconnect, socket_timeout = TIMINGS_SOCKET_TIMEOUT)
File "/usr/local/lib/python3.12/site-packages/pysolarmanv5/pysolarmanv5_async.py", line 61, in init
self.data_wanted_ev = Event()
^^^^^^^
File "/usr/local/lib/python3.12/multiprocessing/context.py", line 93, in Event
return Event(ctx=self.get_context())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/multiprocessing/synchronize.py", line 331, in init
self._cond = ctx.Condition(ctx.Lock())
^^^^^^^^^^
File "/usr/local/lib/python3.12/multiprocessing/context.py", line 68, in Lock
return Lock(ctx=self.get_context())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/multiprocessing/synchronize.py", line 169, in init
SemLock.init(self, SEMAPHORE, 1, 1, ctx=ctx)
File "/usr/local/lib/python3.12/multiprocessing/synchronize.py", line 57, in init
sl = self._semlock = _multiprocessing.SemLock(
^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 30] Read-only file system

1721968442227
Hello David, may I ask what is wrong with this?

Deye SUN-9K-G03 with LSW3_15_FFFF_1.0.9E

HELLO. I've used Stefan's integration so far. Version 1.4.3 only works. I wanted to try yours. Unfortunately it doesn't connect. I'm pasting the log. Can you help with this?

2024-07-27 18:50:19.066 DEBUG (MainThread) [custom_components.solarman] async_setup_entry({'data': {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.1.7', 'inverter_serial': 1782345394, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'lookup_file': 'deye_string.yaml', 'battery_life_cycle_rating': 6000, 'battery_nominal_voltage': 48}, 'disabled_by': None, 'domain': 'solarman', 'entry_id': '01J3TGKF6N6NEHJ8185ANV7601', 'minor_version': 1, 'options': {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.1.7', 'inverter_serial': 1782345394, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'lookup_file': 'deye_string.yaml', 'battery_life_cycle_rating': 6000, 'battery_nominal_voltage': 48}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'title': 'Inverter', 'unique_id': None, 'version': 1})
2024-07-27 18:50:19.066 DEBUG (MainThread) [custom_components.solarman.discovery] discover
2024-07-27 18:50:19.096 DEBUG (MainThread) [custom_components.solarman.discovery] _discover: [192.168.1.7, 34EAE7B65472, 1782345394]
2024-07-27 18:50:20.185 DEBUG (MainThread) [custom_components.solarman.api] {'connections': {('mac', '34:ea:e7:b6:54:72')}, 'identifiers': {('solarman', 1782345394)}, 'name': 'Inverter', 'manufacturer': 'Deye', 'model': 'STRING', 'serial_number': 1782345394}
2024-07-27 18:50:20.186 DEBUG (MainThread) [custom_components.solarman] async_setup: coordinator.async_config_entry_first_refresh
2024-07-27 18:50:20.186 DEBUG (MainThread) [custom_components.solarman.parser] Defaults for update_interval: 5, code: 3, min_span: 25, digits: 6
2024-07-27 18:50:20.186 DEBUG (MainThread) [custom_components.solarman.api] Scheduling 2 query requests. #0
2024-07-27 18:50:20.187 DEBUG (MainThread) [custom_components.solarman.api] Querying (3 - 7) ...
2024-07-27 18:50:20.187 INFO (MainThread) [custom_components.solarman.api] Connecting to 192.168.1.7:8899
2024-07-27 18:50:20.192 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 8f 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 0d 15
2024-07-27 18:50:28.505 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 8f 41 b2 6e 3c 6a 02 01 f1 16 ee 00 f5 19 00 00 61 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 18 15
2024-07-27 18:50:28.506 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:50:29.507 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 4
2024-07-27 18:50:29.508 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:50:29.517 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:50:29.518 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 90 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 0e 15
2024-07-27 18:50:29.639 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 90 42 b2 6e 3c 6a 02 01 f2 16 ee 00 f6 19 00 00 61 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 1c 15
2024-07-27 18:50:29.640 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:50:30.642 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 3
2024-07-27 18:50:30.642 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:50:30.647 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:50:30.648 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 91 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 0f 15
2024-07-27 18:50:32.397 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 91 44 b2 6e 3c 6a 02 01 f5 16 ee 00 f9 19 00 00 61 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 25 15
2024-07-27 18:50:32.398 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:50:33.399 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 2
2024-07-27 18:50:33.399 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:50:33.406 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:50:33.407 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 92 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 10 15
2024-07-27 18:50:33.520 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 92 45 b2 6e 3c 6a 02 01 f6 16 ee 00 fa 19 00 00 61 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 29 15
2024-07-27 18:50:33.521 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:50:34.522 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 1
2024-07-27 18:50:34.522 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:50:34.529 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:50:34.530 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 93 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 11 15
2024-07-27 18:50:34.644 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 93 46 b2 6e 3c 6a 02 01 f7 16 ee 00 fb 19 00 00 61 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 2d 15
2024-07-27 18:50:34.645 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:50:35.646 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 0, aborting.
2024-07-27 18:50:35.647 DEBUG (MainThread) [custom_components.solarman.api] Request failed. [Previous Status: Disconnected]
2024-07-27 18:50:35.647 INFO (MainThread) [custom_components.solarman.api] Disconnecting from 192.168.1.7:8899
2024-07-27 18:50:35.649 DEBUG (MainThread) [custom_components.solarman.coordinator] Finished fetching Inverter data in 15.463 seconds (success: False)
2024-07-27 18:50:35.650 DEBUG (MainThread) [custom_components.solarman.coordinator] async_shutdown
2024-07-27 18:50:35.650 INFO (MainThread) [custom_components.solarman.api] Disconnecting from 192.168.1.7:8899
2024-07-27 18:50:35.651 DEBUG (MainThread) [custom_components.solarman.api] Connection lost can be during closing ignored.
2024-07-27 18:51:55.828 DEBUG (MainThread) [custom_components.solarman] async_setup_entry({'data': {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.1.7', 'inverter_serial': 1782345394, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'lookup_file': 'deye_string.yaml', 'battery_life_cycle_rating': 6000, 'battery_nominal_voltage': 48}, 'disabled_by': None, 'domain': 'solarman', 'entry_id': '01J3TGKF6N6NEHJ8185ANV7601', 'minor_version': 1, 'options': {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.1.7', 'inverter_serial': 1782345394, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'lookup_file': 'deye_string.yaml', 'battery_life_cycle_rating': 6000, 'battery_nominal_voltage': 48}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'title': 'Inverter', 'unique_id': None, 'version': 1})
2024-07-27 18:51:55.828 DEBUG (MainThread) [custom_components.solarman.discovery] discover
2024-07-27 18:51:55.901 DEBUG (MainThread) [custom_components.solarman.discovery] _discover: [192.168.1.7, 34EAE7B65472, 1782345394]
2024-07-27 18:51:57.005 DEBUG (MainThread) [custom_components.solarman.api] {'connections': {('mac', '34:ea:e7:b6:54:72')}, 'identifiers': {('solarman', 1782345394)}, 'name': 'Inverter', 'manufacturer': 'Deye', 'model': 'STRING', 'serial_number': 1782345394}
2024-07-27 18:51:57.005 DEBUG (MainThread) [custom_components.solarman] async_setup: coordinator.async_config_entry_first_refresh
2024-07-27 18:51:57.005 DEBUG (MainThread) [custom_components.solarman.parser] Defaults for update_interval: 5, code: 3, min_span: 25, digits: 6
2024-07-27 18:51:57.006 DEBUG (MainThread) [custom_components.solarman.api] Scheduling 2 query requests. #0
2024-07-27 18:51:57.006 DEBUG (MainThread) [custom_components.solarman.api] Querying (3 - 7) ...
2024-07-27 18:51:57.006 INFO (MainThread) [custom_components.solarman.api] Connecting to 192.168.1.7:8899
2024-07-27 18:51:57.018 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 06 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 84 15
2024-07-27 18:52:03.854 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 06 4b b2 6e 3c 6a 02 01 50 17 ee 00 54 1a 00 00 62 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 5a 15
2024-07-27 18:52:03.855 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:52:04.858 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 4
2024-07-27 18:52:04.858 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:52:04.865 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:52:04.866 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 07 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 85 15
2024-07-27 18:52:04.974 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 07 4c b2 6e 3c 6a 02 01 52 17 ee 00 56 1a 00 00 62 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 60 15
2024-07-27 18:52:04.975 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:52:05.976 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 3
2024-07-27 18:52:05.977 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:52:05.984 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:52:05.985 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 08 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 86 15
2024-07-27 18:52:06.100 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 08 4d b2 6e 3c 6a 02 01 53 17 ee 00 57 1a 00 00 62 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 64 15
2024-07-27 18:52:06.101 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:52:07.102 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 2
2024-07-27 18:52:07.103 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:52:07.109 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:52:07.110 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 09 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 87 15
2024-07-27 18:52:07.215 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 09 4e b2 6e 3c 6a 02 01 54 17 ee 00 58 1a 00 00 62 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 68 15
2024-07-27 18:52:07.216 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:52:08.219 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 1
2024-07-27 18:52:08.219 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:52:08.235 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:52:08.235 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 0a 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 88 15
2024-07-27 18:52:08.352 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 0a 4f b2 6e 3c 6a 02 01 55 17 ee 00 59 1a 00 00 62 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 6c 15
2024-07-27 18:52:08.353 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:52:09.354 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 0, aborting.
2024-07-27 18:52:09.355 DEBUG (MainThread) [custom_components.solarman.api] Request failed. [Previous Status: Disconnected]
2024-07-27 18:52:09.355 INFO (MainThread) [custom_components.solarman.api] Disconnecting from 192.168.1.7:8899
2024-07-27 18:52:09.359 DEBUG (MainThread) [custom_components.solarman.coordinator] Finished fetching Inverter data in 12.353 seconds (success: False)
2024-07-27 18:52:09.360 DEBUG (MainThread) [custom_components.solarman.coordinator] async_shutdown
2024-07-27 18:52:09.360 INFO (MainThread) [custom_components.solarman.api] Disconnecting from 192.168.1.7:8899
2024-07-27 18:52:09.361 DEBUG (MainThread) [custom_components.solarman.api] Connection lost can be during closing ignored.
2024-07-27 18:53:29.691 DEBUG (MainThread) [custom_components.solarman] async_setup_entry({'data': {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.1.7', 'inverter_serial': 1782345394, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'lookup_file': 'deye_string.yaml', 'battery_life_cycle_rating': 6000, 'battery_nominal_voltage': 48}, 'disabled_by': None, 'domain': 'solarman', 'entry_id': '01J3TGKF6N6NEHJ8185ANV7601', 'minor_version': 1, 'options': {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.1.7', 'inverter_serial': 1782345394, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'lookup_file': 'deye_string.yaml', 'battery_life_cycle_rating': 6000, 'battery_nominal_voltage': 48}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'title': 'Inverter', 'unique_id': None, 'version': 1})
2024-07-27 18:53:29.691 DEBUG (MainThread) [custom_components.solarman.discovery] discover
2024-07-27 18:53:29.746 DEBUG (MainThread) [custom_components.solarman.discovery] _discover: [192.168.1.7, 34EAE7B65472, 1782345394]
2024-07-27 18:53:30.838 DEBUG (MainThread) [custom_components.solarman.api] {'connections': {('mac', '34:ea:e7:b6:54:72')}, 'identifiers': {('solarman', 1782345394)}, 'name': 'Inverter', 'manufacturer': 'Deye', 'model': 'STRING', 'serial_number': 1782345394}
2024-07-27 18:53:30.838 DEBUG (MainThread) [custom_components.solarman] async_setup: coordinator.async_config_entry_first_refresh
2024-07-27 18:53:30.838 DEBUG (MainThread) [custom_components.solarman.parser] Defaults for update_interval: 5, code: 3, min_span: 25, digits: 6
2024-07-27 18:53:30.839 DEBUG (MainThread) [custom_components.solarman.api] Scheduling 2 query requests. #0
2024-07-27 18:53:30.839 DEBUG (MainThread) [custom_components.solarman.api] Querying (3 - 7) ...
2024-07-27 18:53:30.839 INFO (MainThread) [custom_components.solarman.api] Connecting to 192.168.1.7:8899
2024-07-27 18:53:30.851 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 ba 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 38 15
2024-07-27 18:53:38.634 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 ba 50 b2 6e 3c 6a 02 01 af 17 ee 00 b3 1a 00 00 62 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 d1 15
2024-07-27 18:53:38.636 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:53:39.280 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] COUNTER: a5 01 00 10 47 ba 51 b2 6e 3c 6a 00 29 15
2024-07-27 18:53:39.639 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 4
2024-07-27 18:53:39.639 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:53:39.646 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:53:39.647 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 bb 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 39 15
2024-07-27 18:53:39.771 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 bb 52 b2 6e 3c 6a 02 01 b0 17 ee 00 b4 1a 00 00 62 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 d6 15
2024-07-27 18:53:39.773 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:53:40.776 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 3
2024-07-27 18:53:40.777 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:53:40.783 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:53:40.784 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 bc 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 3a 15
2024-07-27 18:53:40.903 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 bc 53 b2 6e 3c 6a 02 01 b1 17 ee 00 b6 1a 00 00 62 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 db 15
2024-07-27 18:53:40.904 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:53:41.906 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 2
2024-07-27 18:53:41.906 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:53:41.925 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:53:41.925 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 bd 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 3b 15
2024-07-27 18:53:42.039 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 bd 54 b2 6e 3c 6a 02 01 b3 17 ee 00 b7 1a 00 00 62 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 e0 15
2024-07-27 18:53:42.040 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:53:43.043 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 1
2024-07-27 18:53:43.043 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-27 18:53:43.050 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] Successful reconnect
2024-07-27 18:53:43.050 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] SENT: a5 17 00 10 45 be 00 b2 6e 3c 6a 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 05 75 c9 3c 15
2024-07-27 18:53:43.159 DEBUG (MainThread) [custom_components.solarman.api] [1782345394] RECD: a5 1f 00 10 15 be 55 b2 6e 3c 6a 02 01 b4 17 ee 00 b8 1a 00 00 62 0e b7 65 01 03 0a 32 31 30 36 32 33 34 32 35 38 30 6e 00 00 e4 15
2024-07-27 18:53:43.160 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 7) failed. #0 [error: unpack requires a buffer of 10 bytes]
2024-07-27 18:53:44.162 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 0, aborting.
2024-07-27 18:53:44.163 DEBUG (MainThread) [custom_components.solarman.api] Request failed. [Previous Status: Disconnected]
2024-07-27 18:53:44.163 INFO (MainThread) [custom_components.solarman.api] Disconnecting from 192.168.1.7:8899
2024-07-27 18:53:44.165 DEBUG (MainThread) [custom_components.solarman.coordinator] Finished fetching Inverter data in 13.327 seconds (success: False)
2024-07-27 18:53:44.166 DEBUG (MainThread) [custom_components.solarman.coordinator] async_shutdown
2024-07-27 18:53:44.167 INFO (MainThread) [custom_components.solarman.api] Disconnecting from 192.168.1.7:8899
2024-07-27 18:53:44.167 DEBUG (MainThread) [custom_components.solarman.api] Connection lost can be during closing ignored.

HYD 6000-EP sofar + SOLARMAN + HA = imposible to connect

Dear friends

After a week trying different things to connect HA with my solarman inverter… I need some help.

Current setup:

Inverter: HYD 6000-EP sofar

1

As first option I have tried to use the SOLARMAN INTEGRATION, however all devices are show as “unknown”.

2

Following another recomendations I have tried in oder to solve:

  1. Different versions of solarman integrations (1.5… 1.4…)
  2. Different yalm configurations (sofar_lsw3.yalm, deye_hybrid.yalm….)
  3. Due to possible problems in HA, I have reinstalled in different raspberrys…
  4. I have spoken with sofar to update the logger FW to the latest version available
  5. Also I have trie another alternative solutions like MQQT + SUN SINK: https://www.youtube.com/watch?v=BJzJSi6TZMk but didn’t work too.

Now thanks a one good recommendation im trying to use the https://github.com/davidrapan/ha-solarman

But the problem is here again, here the screenshots and attach the log

4 5

I feel like it is impossible to connect with my logger from any way using HA.
5.log

Some recommendations?? I’m about to surrender after this week…

[Deye Sun 8K Hybrid SG04LP3-EU] - Updating Solarman 1.4.3 from Stephen Joubert to HA-Solarman from David Rapan - Inverter Definition file

Hi David,

I gave it another ty to udate to your integration and I have the following problem:

My hardware & software:

  • Deye Sun 8K Hybrid SG04LP3-EU
  • LSW3 Stick Logger (SN 27xxxxxxxxxx) Firmware: LSW3_15_FFFF_1.0.91R
  • Updating from Solarman 1.4.3 integration by Stephen Joubert with deyeSG04LP3.yaml selected

After updating:

  • I deleted the configuration and added it again
  • I selected "Solarman" as sensor prefix to match my old sensors and restarted Home Assistant
  • I selected the deye_sg04lp3.yaml from your integration > many sensors aren't working anymore
  • I selected my old deyeSG04LP3.yaml that was working before updating > Most of the sensors are working again and nearly everything is fine. The 5 seconds update interval was working fine.

... but ...

  • The sensors that were newly added by your integration obviously don't work selecting my old YAML for configuration.
  • I gave up another ty to update to your configuration and restored the backup with Solarman 1.4.3 by Stephen.

I know that many users with my DEYE hardware configuration had problems with the latest Solarman 1.5.1 b Stephen Joubert are using the older 1.4.3 integration with success.

As I´m not a "Pro" user I really don't know why your deye_sg04lp3.yaml ist not working. I also tried the alternate deye_sun-12k-sg04lp3.yaml without success. I really don't know what is going on anymore and can't help myself to solve the problem. I guess that some modbus registers are different and my definition file hast to be combined with yours to make it work.
For now I'm back to "never change a running system" even though your inergration looks more tempting. I know you tried to gave so much support already but my understanding of what exactly I have to do do is limited. I wish there would be an update process for dummys like me ;-)

I will add my working deye_sg04lp3.yaml just in case others have the same problem and would like to try this inverter definition. Maybe it helps.

deye_sg04lp3.yaml.txt

Update Interval

Hi David!
Where can I change the update interval? Currently the data is changed every 5 seconds.

Thanks Barnie

Overriding Stephen integration

Hi David,

Just saw your new integration and I'd like to test it, but then I just read this comment

And about the override, it works like this: Inverter with same serial number will always override the existing one. This way it works also in the version from Stephen and i kept it that way. Sorry about the inconvenience!

Would be any way of testing this in parallel? I don't like the idea of this overwriting names or values from the other working integration.

Thank you!

Deye Hybrid Querying (244 - 279) failed. #0 [V5FrameError: V5 frame does not contain a valid Modbus RTU frame]

Hi,
I tried setting up your integration but if fails when trying to connect:
image

Please find below the home-assistant.log

2024-07-29 16:26:36.229 DEBUG (MainThread) [custom_components.solarman] async_setup_entry({'data': {'name': 'Solarman', 'inverter_discovery': True, 'inverter_host': '192.168.10.52', 'inverter_serial': 4176382624, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'lookup_file': 'deye_hybrid.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}, 'disabled_by': None, 'domain': 'solarman', 'entry_id': '01J3ZE3X2CHZRAHA6FZMGDVZ2C', 'minor_version': 1, 'options': {'name': 'Solarman', 'inverter_discovery': True, 'inverter_host': '192.168.10.52', 'inverter_serial': 4176382624, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'lookup_file': 'deye_hybrid.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'title': 'Solarman', 'unique_id': None, 'version': 1})
2024-07-29 16:26:36.229 DEBUG (MainThread) [custom_components.solarman.discovery] discover
2024-07-29 16:26:36.236 DEBUG (MainThread) [custom_components.solarman.discovery] _discover: [192.168.10.52, E8FDF87C2F24, 4176382624]
2024-07-29 16:26:37.366 DEBUG (MainThread) [custom_components.solarman.api] {'connections': {('mac', 'e8:fd:f8:7c:2f:24')}, 'identifiers': {('solarman', 4176382624)}, 'name': 'Solarman', 'manufacturer': 'Deye', 'model': 'HYBRID', 'serial_number': 4176382624}
2024-07-29 16:26:37.366 DEBUG (MainThread) [custom_components.solarman] async_setup: coordinator.async_config_entry_first_refresh
2024-07-29 16:26:37.366 DEBUG (MainThread) [custom_components.solarman.parser] Defaults for update_interval: 10, code: 3, min_span: 25, digits: 6
2024-07-29 16:26:37.367 DEBUG (MainThread) [custom_components.solarman.api] Scheduling 4 query requests. #0
2024-07-29 16:26:37.367 DEBUG (MainThread) [custom_components.solarman.api] Querying (3 - 14) ...
2024-07-29 16:26:37.367 INFO (MainThread) [custom_components.solarman.api] Connecting to 192.168.10.52:8899
2024-07-29 16:26:37.392 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] SENT: a5 17 00 10 45 9b 00 a0 8a ee f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 0c b5 cf b0 15
2024-07-29 16:26:37.482 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] RECD: a5 2b 00 10 15 9b b4 a0 8a ee f8 02 01 89 e2 35 00 58 12 00 00 12 c4 71 66 01 03 18 32 32 31 30 32 39 30 32 35 33 00 01 00 00 12 0c 07 00 00 00 01 14 12 12 50 f4 22 15
2024-07-29 16:26:37.483 DEBUG (MainThread) [custom_components.solarman.api] Querying succeeded.
2024-07-29 16:26:37.483 DEBUG (MainThread) [custom_components.solarman.api] Querying (59 - 112) ...
2024-07-29 16:26:37.483 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-29 16:26:37.503 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] Successful reconnect
2024-07-29 16:26:37.503 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] SENT: a5 17 00 10 45 9c 00 a0 8a ee f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 3b 00 36 b4 11 54 15
2024-07-29 16:26:37.683 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] RECD: a5 7f 00 10 15 9c b5 a0 8a ee f8 02 01 8a e2 35 00 58 12 00 00 12 c4 71 66 01 03 6c 00 04 00 13 00 00 00 00 1e 7b 00 00 00 09 00 09 00 00 00 00 0e c5 00 00 0e a7 00 00 09 7e 00 00 00 00 00 17 00 00 00 00 13 7d 00 00 00 00 00 00 00 00 00 00 00 00 15 f4 00 00 00 00 00 00 16 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 3e 00 5c 01 4c 00 51 13 55 7a 15
2024-07-29 16:26:37.684 DEBUG (MainThread) [custom_components.solarman.api] Querying succeeded.
2024-07-29 16:26:37.685 DEBUG (MainThread) [custom_components.solarman.api] Querying (150 - 195) ...
2024-07-29 16:26:37.685 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-29 16:26:37.703 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] Successful reconnect
2024-07-29 16:26:37.703 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] SENT: a5 17 00 10 45 9d 00 a0 8a ee f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 96 00 2e 25 fa 02 15
2024-07-29 16:26:37.876 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] RECD: a5 6f 00 10 15 9d b6 a0 8a ee f8 02 01 8a e2 35 00 58 12 00 00 12 c4 71 66 01 03 5c 0a be 07 08 14 50 12 8e f7 2c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c2 48 1a 15
2024-07-29 16:26:37.877 DEBUG (MainThread) [custom_components.solarman.api] Querying succeeded.
2024-07-29 16:26:37.877 DEBUG (MainThread) [custom_components.solarman.api] Querying (244 - 279) ...
2024-07-29 16:26:37.877 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-29 16:26:37.895 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] Successful reconnect
2024-07-29 16:26:37.896 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] SENT: a5 17 00 10 45 9e 00 a0 8a ee f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 f4 00 24 04 23 5f 15
2024-07-29 16:26:39.919 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] RECD: a5 10 00 10 15 9e b7 a0 8a ee f8 02 01 8c e2 35 00 5a 12 00 00 12 c4 71 66 05 00 5e 15
2024-07-29 16:26:39.920 WARNING (MainThread) [custom_components.solarman.api] Querying (244 - 279) failed. #0 [V5FrameError: V5 frame does not contain a valid Modbus RTU frame]
2024-07-29 16:26:40.920 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 4
2024-07-29 16:26:40.921 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-29 16:26:40.941 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] Successful reconnect
2024-07-29 16:26:40.941 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] SENT: a5 17 00 10 45 9f 00 a0 8a ee f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 f4 00 24 04 23 60 15
2024-07-29 16:26:42.983 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] RECD: a5 10 00 10 15 9f b8 a0 8a ee f8 02 01 8f e2 35 00 5e 12 00 00 12 c4 71 66 05 00 67 15
2024-07-29 16:26:42.984 WARNING (MainThread) [custom_components.solarman.api] Querying (244 - 279) failed. #0 [V5FrameError: V5 frame does not contain a valid Modbus RTU frame]
2024-07-29 16:26:43.985 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 3
2024-07-29 16:26:43.985 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-29 16:26:44.008 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] Successful reconnect
2024-07-29 16:26:44.008 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] SENT: a5 17 00 10 45 a0 00 a0 8a ee f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 f4 00 24 04 23 61 15
2024-07-29 16:26:46.040 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] RECD: a5 10 00 10 15 a0 b9 a0 8a ee f8 02 01 92 e2 35 00 61 12 00 00 12 c4 71 66 05 00 6f 15
2024-07-29 16:26:46.040 WARNING (MainThread) [custom_components.solarman.api] Querying (244 - 279) failed. #0 [V5FrameError: V5 frame does not contain a valid Modbus RTU frame]
2024-07-29 16:26:47.041 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 2
2024-07-29 16:26:47.042 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-29 16:26:47.064 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] Successful reconnect
2024-07-29 16:26:47.064 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] SENT: a5 17 00 10 45 a1 00 a0 8a ee f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 f4 00 24 04 23 62 15
2024-07-29 16:26:51.067 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] RECD: a5 10 00 10 15 a1 ba a0 8a ee f8 02 01 97 e2 35 00 66 12 00 00 12 c4 71 66 05 00 7b 15
2024-07-29 16:26:51.067 WARNING (MainThread) [custom_components.solarman.api] Querying (244 - 279) failed. #0 [V5FrameError: V5 frame does not contain a valid Modbus RTU frame]
2024-07-29 16:26:52.069 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 1
2024-07-29 16:26:52.070 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-07-29 16:26:52.097 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] Successful reconnect
2024-07-29 16:26:52.097 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] SENT: a5 17 00 10 45 a2 00 a0 8a ee f8 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 f4 00 24 04 23 63 15
2024-07-29 16:26:54.125 DEBUG (MainThread) [custom_components.solarman.api] [4176382624] RECD: a5 10 00 10 15 a2 bb a0 8a ee f8 02 01 9a e2 35 00 69 12 00 00 12 c4 71 66 05 00 83 15
2024-07-29 16:26:54.126 WARNING (MainThread) [custom_components.solarman.api] Querying (244 - 279) failed. #0 [V5FrameError: V5 frame does not contain a valid Modbus RTU frame]
2024-07-29 16:26:55.127 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 0, aborting.
2024-07-29 16:26:55.127 DEBUG (MainThread) [custom_components.solarman.api] Request failed. [Previous Status: Disconnected]
2024-07-29 16:26:55.127 INFO (MainThread) [custom_components.solarman.api] Disconnecting from 192.168.10.52:8899
2024-07-29 16:26:55.128 DEBUG (MainThread) [custom_components.solarman.coordinator] Finished fetching Solarman data in 17.762 seconds (success: False)
2024-07-29 16:26:55.129 DEBUG (MainThread) [custom_components.solarman.coordinator] async_shutdown
2024-07-29 16:26:55.129 INFO (MainThread) [custom_components.solarman.api] Disconnecting from 192.168.10.52:8899
2024-07-29 16:26:55.129 DEBUG (MainThread) [custom_components.solarman.api] Connection lost can be during closing ignored.

It seems this one is causing the issue "5FrameError: V5 frame does not contain a valid Modbus RTU frame"

Any ideas to get rid of it?

TOU settings with ME3000SP

I have 2 x ME3000SP battery controller/inverters, both using WiFi stick loggers and the sofar_wifikit.yaml definitions.

I’d love to be able to switch the working mode between auto and TOU if possible, and icing on the cake would be to adjust the main TOU parameters. There’s several TOU ‘slots’ available, but I’d be happy just to be able to set the first one.

I think this must be possible, because sometimes Sofar enable the ability to change the settings from the app (although this facility seems to come and go).

I realise I could do this by switching to passive/bypass mode and using an ESP32 and mqtt, and that might be more flexible, but it’s also one more thing that might go wrong. In the spirit of keeping things simple I’d like to explore the option of changing these settings using this integration.

I’m out of my depth when it comes to the dev side, but I’d be happy to help test, if anyone is up for this.

Thank you.

Total Production is dropping to zero

Since release v24.08.04 my microinverter total production value is shortly dropping to "0" and afterwards to the correct values. This leads to wrong statistics in the energy dashboard saying that the total production happend every day.

Would be great if the drop to zero on microinverter start can be avoided each day morning.

Since latest update dropping to zero
image

Before the update you see that the value is just "not available"
image

Deye Microinverter is sending the same data with update period of 60s or 5m

First thank you for this fine solarman integration! Great Job!

I am running homeassistant in actual version. My converter is a Deye 600. Relais is installed.

I have your ha-slarman up an running installed via HACS. Nearly everthing works fine but:

I have requested at Deye support to set the update interval for my Deye 600 to 1 Minute.
They agreed to have it done. I see in the Homepage of the converter the update time is set to 1.

But nothing changed in the ha-solarman. I changed the number in the definition file: deye_2mppt.yaml.
After the installation the update_interval: 5 was set.
What ever the number I enter, and for sure I did a restart after the change, nothing happens.
The update interval is always 5 Minutes.

Can you help please?

Thank you an regards Roland

Discovery process too frequent

If the inverter cannot be reached the integration seems to go into a discovery loop of trying to find / connect to the inverter. This is too aggressive and appears to causes serious impact to the running of Home Assistant as the GUI becomes slow and unresponsive. The inverter also fails to come back on line as it is being bombarded with packets. Running a ping from another host the inverter does not respond but as soon as the integration is stopped then immediately starts responding to the ping and comes back on-line.

home-assistant_solarman_using_non_custom_config.log

Using solis_1p8k-5g profile.

Connecting to INVT iMars BG20KTR-US inverter with LSW-3

Hello,

I am trying to connect to my solar inverter INVT iMars BG20KTR-US with an LSW-3 wifi stick connected. Firmware LSW3_14_8401_1.15

I am able to connect, but get the error "The data address received in the request is not an allowable address for
the server."

Any advice on how to solve this issue? I have tested several of the different invert configs.

2024-08-07 19:58:21.629 DEBUG (MainThread) [custom_components.solarman] async_setup_entry({'data': {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.30.111', 'inverter_serial': 1724679032, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'lookup_file': 'deye_hybrid.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}, 'disabled_by': None, 'domain': 'solarman', 'entry_id': '01J4PYZZDM4RR5XFGEE23P04N0', 'minor_version': 1, 'options': {'name': 'Inverter', 'inverter_discovery': True, 'inverter_host': '192.168.30.111', 'inverter_serial': 1724679032, 'inverter_port': 8899, 'inverter_mb_slave_id': 1, 'lookup_file': 'deye_hybrid.yaml', 'battery_nominal_voltage': 48, 'battery_life_cycle_rating': 6000}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'title': 'Inverter', 'unique_id': None, 'version': 1})
2024-08-07 19:58:21.629 DEBUG (MainThread) [custom_components.solarman.discovery] discover
2024-08-07 19:58:21.636 DEBUG (MainThread) [custom_components.solarman.discovery] _discover: [192.168.30.111, 98D863D0A7B4, 1724679032]
2024-08-07 19:58:22.922 DEBUG (MainThread) [custom_components.solarman.api] {'connections': {('mac', '98:d8:63:d0:a7:b4')}, 'identifiers': {('solarman', 1724679032)}, 'name': 'Inverter', 'manufacturer': 'Deye', 'model': 'HYBRID', 'serial_number': 1724679032}
2024-08-07 19:58:22.922 DEBUG (MainThread) [custom_components.solarman] async_setup: coordinator.async_config_entry_first_refresh
2024-08-07 19:58:22.922 DEBUG (MainThread) [custom_components.solarman.parser] Defaults for update_interval: 10, code: 3, min_span: 25, digits: 6
2024-08-07 19:58:22.923 DEBUG (MainThread) [custom_components.solarman.api] Scheduling 4 query requests. #0
2024-08-07 19:58:22.923 DEBUG (MainThread) [custom_components.solarman.api] Querying (3 - 14) ...
2024-08-07 19:58:22.924 INFO (MainThread) [custom_components.solarman.api] Connecting to 192.168.30.111:8899
2024-08-07 19:58:22.935 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] SENT: a5 17 00 10 45 04 00 78 83 cc 66 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 0c b5 cf 36 15
2024-08-07 19:58:22.980 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] RECD: a5 13 00 10 15 04 70 78 83 cc 66 02 01 56 0f f3 01 ba 0e 00 00 67 a6 c0 64 01 83 02 c0 f1 65 15
2024-08-07 19:58:22.981 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 14) failed. #0 [IllegalDataAddressError: The data address received in the request is not an allowable address for
the server.
]
2024-08-07 19:58:23.182 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 4
2024-08-07 19:58:23.182 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-08-07 19:58:23.188 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] Successful reconnect
2024-08-07 19:58:23.189 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] SENT: a5 17 00 10 45 05 00 78 83 cc 66 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 0c b5 cf 37 15
2024-08-07 19:58:23.241 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] RECD: a5 13 00 10 15 05 71 78 83 cc 66 02 01 56 0f f3 01 ba 0e 00 00 67 a6 c0 64 01 83 02 c0 f1 67 15
2024-08-07 19:58:23.242 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 14) failed. #0 [IllegalDataAddressError: The data address received in the request is not an allowable address for
the server.
]
2024-08-07 19:58:23.643 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 3
2024-08-07 19:58:23.644 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-08-07 19:58:23.656 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] Successful reconnect
2024-08-07 19:58:23.657 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] SENT: a5 17 00 10 45 06 00 78 83 cc 66 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 0c b5 cf 38 15
2024-08-07 19:58:23.712 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] RECD: a5 13 00 10 15 06 72 78 83 cc 66 02 01 56 0f f3 01 ba 0e 00 00 67 a6 c0 64 01 83 02 c0 f1 69 15
2024-08-07 19:58:23.713 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 14) failed. #0 [IllegalDataAddressError: The data address received in the request is not an allowable address for
the server.
]
2024-08-07 19:58:24.315 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 2
2024-08-07 19:58:24.315 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-08-07 19:58:24.322 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] Successful reconnect
2024-08-07 19:58:24.323 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] SENT: a5 17 00 10 45 07 00 78 83 cc 66 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 0c b5 cf 39 15
2024-08-07 19:58:24.380 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] RECD: a5 13 00 10 15 07 73 78 83 cc 66 02 01 57 0f f3 01 bb 0e 00 00 67 a6 c0 64 01 83 02 c0 f1 6d 15
2024-08-07 19:58:24.381 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 14) failed. #0 [IllegalDataAddressError: The data address received in the request is not an allowable address for
the server.
]
2024-08-07 19:58:25.183 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 1
2024-08-07 19:58:25.183 DEBUG (MainThread) [custom_components.solarman.api] Reader Task done: False, cancelled: False.
2024-08-07 19:58:25.190 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] Successful reconnect
2024-08-07 19:58:25.191 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] SENT: a5 17 00 10 45 08 00 78 83 cc 66 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 03 00 0c b5 cf 3a 15
2024-08-07 19:58:25.251 DEBUG (MainThread) [custom_components.solarman.api] [1724679032] RECD: a5 13 00 10 15 08 74 78 83 cc 66 02 01 58 0f f3 01 bc 0e 00 00 67 a6 c0 64 01 83 02 c0 f1 71 15
2024-08-07 19:58:25.252 WARNING (MainThread) [custom_components.solarman.api] Querying (3 - 14) failed. #0 [IllegalDataAddressError: The data address received in the request is not an allowable address for
the server.
]
2024-08-07 19:58:26.253 DEBUG (MainThread) [custom_components.solarman.api] Querying attempts left: 0, aborting.
2024-08-07 19:58:26.253 DEBUG (MainThread) [custom_components.solarman.api] Request failed. [Previous Status: Disconnected]
2024-08-07 19:58:26.253 INFO (MainThread) [custom_components.solarman.api] Disconnecting from 192.168.30.111:8899
2024-08-07 19:58:26.256 DEBUG (MainThread) [custom_components.solarman.coordinator] Finished fetching Inverter data in 3.334 seconds (success: False)
2024-08-07 19:58:26.257 DEBUG (MainThread) [custom_components.solarman.coordinator] async_shutdown
2024-08-07 19:58:26.257 INFO (MainThread) [custom_components.solarman.api] Disconnecting from 192.168.30.111:8899

Problems with registers readings of 2 inverters, maybe not really a bug?

I have 12 inverters
all of them are ZCS, same device, same firmware version
all of them are accessible via thir web interface
i've configured all of them:
image

But 2 of them aren't working.

In the debug log i get :


2024-07-10 09:24:21.419 INFO (SyncWorker_4) [custom_components.solarman.solarman] Connecting to solarman data logger 10.1.80.109:8899
2024-07-10 09:24:22.933 WARNING (MainThread) [homeassistant.components.sensor] Updating solarman sensor took longer than the scheduled update interval 0:00:30
2024-07-10 09:24:23.027 WARNING (SyncWorker_36) [custom_components.solarman.solarman] Querying [1024 - 1067] failed with exception [Empty: ]
2024-07-10 09:24:23.028 INFO (SyncWorker_36) [custom_components.solarman.solarman] Disconnecting from solarman data logger 10.1.80.112:8899
2024-07-10 09:24:23.039 WARNING (SyncWorker_36) [custom_components.solarman.solarman] Querying [1024 - 1067] failed, [0] retry attempts left
2024-07-10 09:24:23.039 WARNING (SyncWorker_36) [custom_components.solarman.solarman] Querying registers [1024 - 1067] failed, aborting.
2024-07-10 09:24:23.501 WARNING (MainThread) [homeassistant.components.sensor] Updating esxi_stats sensor took longer than the scheduled update interval 0:00:15
2024-07-10 09:24:28.636 WARNING (SyncWorker_4) [custom_components.solarman.solarman] Querying [1154 - 1188] failed with exception [CRCError: CRC validation failed.]
2024-07-10 09:24:28.636 INFO (SyncWorker_4) [custom_components.solarman.solarman] Disconnecting from solarman data logger 10.1.80.109:8899

Any advice on what i can check to fix that?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.