Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2023.8.3 fix for modbus broke my modbus config - can't load anymore #98692

Closed
ChristophCaina opened this issue Aug 20, 2023 · 12 comments
Closed
Assignees

Comments

@ChristophCaina
Copy link

The problem

``The Update of 2023.8.3 broke my modbus configuration which I've used to Connect to a Siemens LOGO.

The config was working until the Update, No issues where detected.
Now, the system can't load the configuration anymore.

Logger: homeassistant.config
Source: config.py:878
First occurred: 19. August 2023 um 18:48:07 (1 occurrences)
Last logged: 19. August 2023 um 18:48:07

Invalid config for [modbus]: Error in sensor Luftfeuchtigkeit (t1) swap(word) not possible due to the registers count: 1, needed: 2 @ data['modbus'][0]['sensors'][1]. Got {'name': 'Luftfeuchtigkeit (t1)', 'unique_id': 't1_am1', 'address': 528, 'input_type': 'holding', 'unit_of_measurement': '%', 'device_class': 'humidity', 'state_class': 'measurement', 'scan_interval': 30, 'swap': 'word', 'scale': 0.1, 'precision': 1} Error in sensor Sonnenaufgang (t1) swap(word) not possible due to the registers count: 1, needed: 2 @ data['modbus'][0]['sensors'][2]. Got {'name': 'Sonnenaufgang (t1)', 'unique_id': 't1_sunrise', 'address': 1, 'input_type': 'holding', 'scan_interval': 10, 'swap': 'word'} Error in sensor Sonnenuntergang (t1) swap(word) not possible due to the registers count: 1, needed: 2 @ data['modbus'][0]['sensors'][3]. Got {'name': 'Sonnenuntergang (t1)', 'unique_id': 't1_sunset', 'address': 2, 'input_type': 'holding', 'scan_interval': 10, 'swap': 'word'} Error in sensor Temperatur (t1) swap(word) not possible due to the registers count: 1, needed: 2 @ data['modbus'][0]['sensors'][0]. Got {'name': 'Temperatur (t1)', 'unique_id': 't1_am2', 'address': 529, 'input_type': 'holding', 'unit_of_measurement': '°C', 'device_class': 'temperature', 'state_class': 'measurement', 'scan_interval': 30, 'swap': 'word', 'scale': 0.1, 'precision': 1}. (See /config/configuration.yaml, line 53). Please check the docs at https://www.home-assistant.io/integrations/modbus

What version of Home Assistant Core has the issue?

2023.8.3

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Morbus

Link to integration documentation on our website

No response

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

@home-assistant
Copy link

Hey there @adamchengtkc, @janiversen, @vzahradnik, mind taking a look at this issue as it has been labeled with an integration (modbus) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of modbus can trigger bot actions by commenting:

  • @home-assistant close Closes the issue.
  • @home-assistant rename Awesome new title Renames the issue.
  • @home-assistant reopen Reopen the issue.
  • @home-assistant unassign modbus Removes the current integration label and assignees on the issue, add the integration domain after the command.

(message by CodeOwnersMention)


modbus documentation
modbus source
(message by IssueLinks)

@janiversen
Copy link
Member

modbus in .3 is broken, it is fixed on dev.

You can do:

  • downgrade to .2
  • use dev

the fix will be in .4

@janiversen
Copy link
Member

janiversen commented Aug 20, 2023

Your config is wrong, "swap: word" on int16 do not make sense a word is 32 bit. version .3 catches this configuration error instead of producing wrong data.

@ChristophCaina
Copy link
Author

Thanks.
I have removed the "swap" from my configuration - now it seems to work again.

But:
according to the documentation:

swap string (optional, default: none)
Swap the order of bytes/words, options are none, byte, word, word_byte.

A configuration error should MAYBE popup as a repair or warning in HA.
a fix, should - at least in my opionion - NEVER break a working configuration.
And in my case, this fix has broken a working configuration - it did not show any wrong data.

@janiversen
Copy link
Member

janiversen commented Aug 20, 2023

You are entitled to your opinion, but

  • popup is not possible when configuring yaml
  • Data can be broken, because int16 is 16bits, so the code used 2 extra bytes, with whatever content.

And the documentation is correct. A word is defined to be 32bits, so what do you expect.

our best option was to catch it at configuration time, and inform the user.

If you do not agree, then pull requests are welcome.

@ChristophCaina
Copy link
Author

Don't get me wrong.
I agree, that a bug should be fixed.

What I do see a bit critical - is the way how it was done.
Yes, there was a "fix" for Modbus mentioned in the release notes...
BUT: if the configuration was working - and didn't show the "wrong data", it would be good, if such a change would be mentioned at least in the breaking changes section of the release notes.

Anyway - removing the swap: word from my config seems to have solved the issue.

@rarvids4
Copy link

rarvids4 commented Aug 20, 2023

I performed a rollback, have used to many scripts with swap implemented as below.
I hope that swap will work in .4 again?

name: Reactive power
        unique_id: sg_reactive_power
        slave: !secret sungrow_modbus_slave
        address: 5032 # reg 5033
        input_type: input
        count: 2
        data_type: int32
        swap: word
        precision: 0
        unit_of_measurement: W
        device_class: power
        state_class: measurement
        scale: 1
        scan_interval: 10

@janiversen
Copy link
Member

janiversen commented Aug 20, 2023

swap works in .3

the problem is slave:, this is already solved on dev, so closing issue.

you do have a problem in your configuration, you cannot mix count: and datatype: apart from custom.

@majuss
Copy link
Contributor

majuss commented Aug 28, 2023

Still broken in .4

@janiversen
Copy link
Member

janiversen commented Aug 28, 2023

Did you bother reading the error message ? you have an illegal configuration.

Please read the documentation, instead of claiming there is a bug in the integration: https://www.home-assistant.io/integrations/modbus/#parameters-usage-matrix

@majuss
Copy link
Contributor

majuss commented Aug 28, 2023

I changed all uint16 and int16 to 32 bit.

Invalid config for [modbus]: Error in sensor BDC rated power swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][19]. Got {'name': 'BDC rated power', 'unique_id': 'sg_bdc_rated_power', 'slave': 1, 'address': 5627, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'unit_of_measurement': 'W', 'device_class': 'power', 'state_class': 'measurement', 'scale': 100, 'scan_interval': 10}
Error in sensor BMS max. charging current swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][20]. Got {'name': 'BMS max. charging current', 'unique_id': 'sg_bms_max_charging_current', 'slave': 1, 'address': 5634, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'A', 'device_class': 'Current', 'scale': 1, 'scan_interval': 60}
Error in sensor BMS max. discharging current swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][21]. Got {'name': 'BMS max. discharging current', 'unique_id': 'sg_bms_max_discharging_current', 'slave': 1, 'address': 5635, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'A', 'device_class': 'Current', 'scale': 1, 'scan_interval': 60}
Error in sensor Backup phase A power swap(word) impossible because datatype(int32) is too small @ data['modbus'][0]['sensors'][23]. Got {'name': 'Backup phase A power', 'unique_id': 'sg_backup_phase_a_power', 'slave': 1, 'address': 5722, 'input_type': 'input', 'count': 1, 'data_type': 'int32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'W', 'device_class': 'power', 'state_class': 'measurement', 'scale': 1, 'scan_interval': 10}
Error in sensor Backup phase B power swap(word) impossible because datatype(int32) is too small @ data['modbus'][0]['sensors'][24]. Got {'name': 'Backup phase B power', 'unique_id': 'sg_backup_phase_b_power', 'slave': 1, 'address': 5723, 'input_type': 'input', 'count': 1, 'data_type': 'int32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'W', 'device_class': 'power', 'state_class': 'measurement', 'scale': 1, 'scan_interval': 10}
Error in sensor Backup phase C power swap(word) impossible because datatype(int32) is too small @ data['modbus'][0]['sensors'][25]. Got {'name': 'Backup phase C power', 'unique_id': 'sg_backup_phase_c_power', 'slave': 1, 'address': 5724, 'input_type': 'input', 'count': 1, 'data_type': 'int32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'W', 'device_class': 'power', 'state_class': 'measurement', 'scale': 1, 'scan_interval': 10}
Error in sensor Battery capacity swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][110]. Got {'name': 'Battery capacity', 'unique_id': 'sg_battery_capacity', 'slave': 1, 'address': 33048, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'scale': 0.01, 'scan_interval': 600}
Error in sensor Battery charging start power swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][111]. Got {'name': 'Battery charging start power', 'unique_id': 'sg_battery_charging_start_power', 'slave': 1, 'address': 33148, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'W', 'device_class': 'power', 'state_class': 'measurement', 'scale': 10, 'scan_interval': 10}
Error in sensor Battery current swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][84]. Got {'name': 'Battery current', 'unique_id': 'sg_battery_current', 'slave': 1, 'address': 13020, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'A', 'device_class': 'Current', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Battery discharging start power swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][112]. Got {'name': 'Battery discharging start power', 'unique_id': 'sg_battery_discharging_start_power', 'slave': 1, 'address': 33149, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'W', 'device_class': 'power', 'state_class': 'measurement', 'scale': 10, 'scan_interval': 10}
Error in sensor Battery forced charge discharge cmd raw swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][103]. Got {'name': 'Battery forced charge discharge cmd raw', 'unique_id': 'sg_battery_forced_charge_discharge_cmd_raw', 'slave': 1, 'address': 13050, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'scan_interval': 10}
Error in sensor Battery forced charge discharge power swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][104]. Got {'name': 'Battery forced charge discharge power', 'unique_id': 'sg_battery_forced_charge_discharge_power', 'slave': 1, 'address': 13051, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'W', 'device_class': 'power', 'state_class': 'measurement', 'scan_interval': 10}
Error in sensor Battery level swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][86]. Got {'name': 'Battery level', 'unique_id': 'sg_battery_level', 'slave': 1, 'address': 13022, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': '%', 'device_class': 'battery', 'state_class': 'measurement', 'scale': 0.1, 'scan_interval': 60}
Error in sensor Battery max charge power swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][108]. Got {'name': 'Battery max charge power', 'unique_id': 'sg_battery_max_charge_power', 'slave': 1, 'address': 33046, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'W', 'device_class': 'power', 'state_class': 'measurement', 'scale': 10, 'scan_interval': 10}
Error in sensor Battery max discharge power swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][109]. Got {'name': 'Battery max discharge power', 'unique_id': 'sg_battery_max_discharge_power', 'slave': 1, 'address': 33047, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'W', 'device_class': 'power', 'state_class': 'measurement', 'scale': 10, 'scan_interval': 10}
Error in sensor Battery power raw swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][85]. Got {'name': 'Battery power raw', 'unique_id': 'sg_battery_power_raw', 'slave': 1, 'address': 13021, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'W', 'device_class': 'power', 'state_class': 'measurement', 'scale': 1, 'scan_interval': 10}
Error in sensor Battery state of health swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][87]. Got {'name': 'Battery state of health', 'unique_id': 'sg_battery_state_of_health', 'slave': 1, 'address': 13023, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': '%', 'state_class': 'measurement', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Battery voltage swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][83]. Got {'name': 'Battery voltage', 'unique_id': 'sg_battery_voltage', 'slave': 1, 'address': 13019, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'V', 'device_class': 'Voltage', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Daily PV generation & battery discharge swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][1]. Got {'name': 'Daily PV generation & battery discharge', 'unique_id': 'sg_daily_pv_gen_battery_discharge', 'slave': 1, 'address': 5002, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Daily PV generation swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][73]. Got {'name': 'Daily PV generation', 'unique_id': 'sg_daily_pv_generation', 'slave': 1, 'address': 13001, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Daily battery charge from PV swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][79]. Got {'name': 'Daily battery charge from PV', 'unique_id': 'sg_daily_battery_charge_from_pv', 'slave': 1, 'address': 13011, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Daily battery charge swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][97]. Got {'name': 'Daily battery charge', 'unique_id': 'sg_daily_battery_charge', 'slave': 1, 'address': 13039, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Daily battery discharge swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][89]. Got {'name': 'Daily battery discharge', 'unique_id': 'sg_daily_battery_discharge', 'slave': 1, 'address': 13025, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Daily direct energy consumption swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][81]. Got {'name': 'Daily direct energy consumption', 'unique_id': 'sg_daily_direct_energy_consumption', 'slave': 1, 'address': 13016, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Daily exported energy from PV swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][75]. Got {'name': 'Daily exported energy from PV', 'unique_id': 'sg_daily_exported_energy_from_PV', 'slave': 1, 'address': 13004, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Daily exported energy swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][99]. Got {'name': 'Daily exported energy', 'unique_id': 'sg_daily_exported_energy', 'slave': 1, 'address': 13044, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Daily imported energy swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][95]. Got {'name': 'Daily imported energy', 'unique_id': 'sg_daily_imported_energy', 'slave': 1, 'address': 13035, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor EMS mode selection raw swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][102]. Got {'name': 'EMS mode selection raw', 'unique_id': 'sg_ems_mode_selection_raw', 'slave': 1, 'address': 13049, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'scan_interval': 10}
Error in sensor Grid frequency swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][12]. Got {'name': 'Grid frequency', 'unique_id': 'sg_grid_frequency', 'slave': 1, 'address': 5035, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 2, 'unit_of_measurement': 'Hz', 'device_class': 'frequency', 'state_class': 'measurement', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Inverter start stop swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][101]. Got {'name': 'Inverter start stop', 'unique_id': 'sg_inverter_start_stop', 'slave': 1, 'address': 12999, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'scan_interval': 10}
Error in sensor MPPT1 current swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][5]. Got {'name': 'MPPT1 current', 'unique_id': 'sg_mppt1_current', 'slave': 1, 'address': 5011, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 2, 'unit_of_measurement': 'A', 'device_class': 'Current', 'scale': 0.1, 'scan_interval': 10}
Error in sensor MPPT1 voltage swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][4]. Got {'name': 'MPPT1 voltage', 'unique_id': 'sg_mppt1_voltage', 'slave': 1, 'address': 5010, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'V', 'device_class': 'Voltage', 'scale': 0.1, 'scan_interval': 10}
Error in sensor MPPT2 current swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][7]. Got {'name': 'MPPT2 current', 'unique_id': 'sg_mppt2_current', 'slave': 1, 'address': 5013, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 2, 'unit_of_measurement': 'A', 'device_class': 'Current', 'scale': 0.1, 'scan_interval': 10}
Error in sensor MPPT2 voltage swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][6]. Got {'name': 'MPPT2 voltage', 'unique_id': 'sg_mppt2_voltage', 'slave': 1, 'address': 5012, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'V', 'device_class': 'Voltage', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Max SoC swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][105]. Got {'name': 'Max SoC', 'unique_id': 'sg_max_soc', 'slave': 1, 'address': 13057, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': '%', 'device_class': 'battery', 'state_class': 'measurement', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Min SoC swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][106]. Got {'name': 'Min SoC', 'unique_id': 'sg_min_soc', 'slave': 1, 'address': 13058, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': '%', 'device_class': 'battery', 'state_class': 'measurement', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Monthly PV generation (01 January) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][26]. Got {'name': 'Monthly PV generation (01 January)', 'unique_id': 'sg_monthly_pv_generation_01_january', 'slave': 1, 'address': 6226, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly PV generation (02 February) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][27]. Got {'name': 'Monthly PV generation (02 February)', 'unique_id': 'sg_monthly_pv_generation_02_february', 'slave': 1, 'address': 6227, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly PV generation (03 March) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][28]. Got {'name': 'Monthly PV generation (03 March)', 'unique_id': 'sg_monthly_pv_generation_03_march', 'slave': 1, 'address': 6228, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly PV generation (04 April) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][29]. Got {'name': 'Monthly PV generation (04 April)', 'unique_id': 'sg_monthly_pv_generation_04_april', 'slave': 1, 'address': 6229, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly PV generation (05 May) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][30]. Got {'name': 'Monthly PV generation (05 May)', 'unique_id': 'sg_monthly_pv_generation_05_may', 'slave': 1, 'address': 6230, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly PV generation (06 June) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][31]. Got {'name': 'Monthly PV generation (06 June)', 'unique_id': 'sg_monthly_pv_generation_06_june', 'slave': 1, 'address': 6231, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly PV generation (07 July) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][32]. Got {'name': 'Monthly PV generation (07 July)', 'unique_id': 'sg_monthly_pv_generation_07_july', 'slave': 1, 'address': 6232, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly PV generation (08 August) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][33]. Got {'name': 'Monthly PV generation (08 August)', 'unique_id': 'sg_monthly_pv_generation_08_august', 'slave': 1, 'address': 6233, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly PV generation (09 September) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][34]. Got {'name': 'Monthly PV generation (09 September)', 'unique_id': 'sg_monthly_pv_generation_09_september', 'slave': 1, 'address': 6234, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly PV generation (10 October) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][35]. Got {'name': 'Monthly PV generation (10 October)', 'unique_id': 'sg_monthly_pv_generation_10_october', 'slave': 1, 'address': 6235, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly PV generation (11 November) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][36]. Got {'name': 'Monthly PV generation (11 November)', 'unique_id': 'sg_monthly_pv_generation_11_november', 'slave': 1, 'address': 6236, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly PV generation (12 December) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][37]. Got {'name': 'Monthly PV generation (12 December)', 'unique_id': 'sg_monthly_pv_generation_12_december', 'slave': 1, 'address': 6237, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (01 January) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][49]. Got {'name': 'Monthly export (01 January)', 'unique_id': 'sg_monthly_export_01_january', 'slave': 1, 'address': 6595, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (02 February) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][50]. Got {'name': 'Monthly export (02 February)', 'unique_id': 'sg_monthly_export_02_february', 'slave': 1, 'address': 6596, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (03 March) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][51]. Got {'name': 'Monthly export (03 March)', 'unique_id': 'sg_monthly_export_03_march', 'slave': 1, 'address': 6597, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (04 April) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][52]. Got {'name': 'Monthly export (04 April)', 'unique_id': 'sg_monthly_export_04_april', 'slave': 1, 'address': 6598, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (05 May) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][53]. Got {'name': 'Monthly export (05 May)', 'unique_id': 'sg_monthly_export_05_may', 'slave': 1, 'address': 6599, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (06 June) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][54]. Got {'name': 'Monthly export (06 June)', 'unique_id': 'sg_monthly_export_06_june', 'slave': 1, 'address': 6600, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (07 July) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][55]. Got {'name': 'Monthly export (07 July)', 'unique_id': 'sg_monthly_export_07_july', 'slave': 1, 'address': 6601, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (08 August) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][56]. Got {'name': 'Monthly export (08 August)', 'unique_id': 'sg_monthly_export_08_august', 'slave': 1, 'address': 6602, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (09 September) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][57]. Got {'name': 'Monthly export (09 September)', 'unique_id': 'sg_monthly_export_09_september', 'slave': 1, 'address': 6603, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (10 October) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][58]. Got {'name': 'Monthly export (10 October)', 'unique_id': 'sg_monthly_export_10_october', 'slave': 1, 'address': 6604, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (11 November) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][59]. Got {'name': 'Monthly export (11 November)', 'unique_id': 'sg_monthly_export_11_november', 'slave': 1, 'address': 6605, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Monthly export (12 December) swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][60]. Got {'name': 'Monthly export (12 December)', 'unique_id': 'sg_monthly_export_12_december', 'slave': 1, 'address': 6606, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'kWh', 'device_class': 'energy', 'state_class': 'total_increasing', 'scale': 0.1, 'scan_interval': 600}
Error in sensor Phase A current swap(word) impossible because datatype(int32) is too small @ data['modbus'][0]['sensors'][91]. Got {'name': 'Phase A current', 'unique_id': 'sg_phase_a_current', 'slave': 1, 'address': 13030, 'input_type': 'input', 'count': 1, 'data_type': 'int32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'A', 'device_class': 'current', 'state_class': 'measurement', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Phase A voltage swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][9]. Got {'name': 'Phase A voltage', 'unique_id': 'sg_phase_a_voltage', 'slave': 1, 'address': 5018, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'V', 'device_class': 'Voltage', 'state_class': 'measurement', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Phase B current swap(word) impossible because datatype(int32) is too small @ data['modbus'][0]['sensors'][92]. Got {'name': 'Phase B current', 'unique_id': 'sg_phase_b_current', 'slave': 1, 'address': 13031, 'input_type': 'input', 'count': 1, 'data_type': 'int32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'A', 'device_class': 'current', 'state_class': 'measurement', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Phase B voltage swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][10]. Got {'name': 'Phase B voltage', 'unique_id': 'sg_phase_b_voltage', 'slave': 1, 'address': 5019, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'V', 'device_class': 'Voltage', 'state_class': 'measurement', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Phase C current swap(word) impossible because datatype(int32) is too small @ data['modbus'][0]['sensors'][93]. Got {'name': 'Phase C current', 'unique_id': 'sg_phase_c_current', 'slave': 1, 'address': 13032, 'input_type': 'input', 'count': 1, 'data_type': 'int32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'A', 'device_class': 'current', 'state_class': 'measurement', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Phase C voltage swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][11]. Got {'name': 'Phase C voltage', 'unique_id': 'sg_phase_c_voltage', 'slave': 1, 'address': 5020, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 1, 'unit_of_measurement': 'V', 'device_class': 'Voltage', 'state_class': 'measurement', 'scale': 0.1, 'scan_interval': 10}
Error in sensor Power factor swap(word) impossible because datatype(int32) is too small @ data['modbus'][0]['sensors'][14]. Got {'name': 'Power factor', 'unique_id': 'sg_power_factor', 'slave': 1, 'address': 5034, 'input_type': 'input', 'count': 1, 'data_type': 'int32', 'swap': 'word', 'precision': 3, 'unit_of_measurement': '%', 'device_class': 'power_factor', 'state_class': 'measurement', 'scale': 0.001, 'scan_interval': 10}
Error in sensor Reserved SoC for backup swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][107]. Got {'name': 'Reserved SoC for backup', 'unique_id': 'sg_reserved_soc_for_backup', 'slave': 1, 'address': 13099, 'input_type': 'holding', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'unit_of_measurement': '%', 'device_class': 'battery', 'state_class': 'measurement', 'scale': 1, 'scan_interval': 10}
Error in sensor Running state swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][72]. Got {'name': 'Running state', 'unique_id': 'sg_running_state', 'slave': 1, 'address': 13000, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'scale': 1, 'scan_interval': 10}
Error in sensor Sungrow device type code swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][0]. Got {'name': 'Sungrow device type code', 'unique_id': 'sg_dev_code', 'slave': 1, 'address': 4999, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'scan_interval': 600}
Error in sensor System state swap(word) impossible because datatype(uint32) is too small @ data['modbus'][0]['sensors'][71]. Got {'name': 'System state', 'unique_id': 'sg_system_state', 'slave': 1, 'address': 12999, 'input_type': 'input', 'count': 1, 'data_type': 'uint32', 'swap': 'word', 'precision': 0, 'scale': 1, 'scan_interval': 10}
Error in sensor Total backup power swap(word) impossible because datatype(int32) is too small @ data['modbus'][0]['sensors'][22]. Got {'name': 'Total backup power', 'slave': 1, 'unique_id': 'sg_total_backup_power', 'address': 5725, 'input_type': 'input', 'count': 1, 'data_type': 'int32', 'swap': 'word', 'precision': 0, 'unit_of_measurement': 'W', 'device_class': 'power', 'state_class': 'measurement', 'scale': 1, 'scan_interval': 10}. (See ?, line ?). 

Still getting the same errors.

@janiversen
Copy link
Member

Did you actually read the link I sent you...at least I can see that you did not check your parameters against the table.

Changing everything to INT32, only works if you also change your device. If your device delivers INT16 it will continue to do so.

@github-actions github-actions bot locked and limited conversation to collaborators Sep 27, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants