Skip to content

Commit

Permalink
fix derived
Browse files Browse the repository at this point in the history
  • Loading branch information
Pho3niX90 committed Feb 20, 2025
1 parent 7f6a11a commit 957a8ab
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 31 deletions.
27 changes: 0 additions & 27 deletions custom_components/solis_modbus/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,6 @@
from custom_components.solis_modbus import DOMAIN
from custom_components.solis_modbus.const import DRIFT_COUNTER, VALUES, CONTROLLER


def get_value(self):
if len(self._register) >= 15:
values = [cache_get(self._hass, reg) for reg in self._register]
n_value = extract_serial_number(values)
elif len(self._register) > 1:
s32_values = [cache_get(self._hass, reg) for reg in self._register]
# These are two 16-bit values representing a 32-bit signed integer (S32)
high_word = s32_values[0] - (1 << 16) if s32_values[0] & (1 << 15) else s32_values[0]
low_word = s32_values[1] - (1 << 16) if s32_values[1] & (1 << 15) else s32_values[1]

# Combine the high and low words to form a 32-bit signed integer
combined_value = (high_word << 16) | (low_word & 0xFFFF)
if self._multiplier == 0 or self._multiplier == 1:
n_value = round(combined_value)
else:
n_value = combined_value * self._multiplier
else:
# Treat it as a single register (U16)
if self._multiplier == 0:
n_value = round(cache_get(self._hass, self._register[0]))
else:
n_value = cache_get(self._hass, self._register[0]) * self._multiplier

return n_value


def hex_to_ascii(hex_value):
# Convert hexadecimal to decimal
decimal_value = hex_value
Expand Down
2 changes: 1 addition & 1 deletion custom_components/solis_modbus/modbus_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from pymodbus.client import AsyncModbusTcpClient
from typing import List, Dict

from custom_components.solis_modbus.const import MODEL, DOMAIN, REGISTER, VALUE, CONTROLLER
from custom_components.solis_modbus.const import DOMAIN, REGISTER, VALUE, CONTROLLER
from custom_components.solis_modbus.data.enums import PollSpeed
from custom_components.solis_modbus.data.solis_config import InverterConfig
from custom_components.solis_modbus.helpers import cache_save
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from homeassistant.helpers.device_registry import DeviceInfo

from custom_components.solis_modbus.const import DOMAIN, MANUFACTURER, REGISTER, VALUE, CONTROLLER
from custom_components.solis_modbus.helpers import get_value, decode_inverter_model
from custom_components.solis_modbus.helpers import decode_inverter_model
from custom_components.solis_modbus.sensors.solis_base_sensor import SolisBaseSensor
from custom_components.solis_modbus.status_mapping import STATUS_MAPPING

Expand Down Expand Up @@ -76,7 +76,7 @@ def handle_modbus_update(self, event):
## start

if 33095 in self._register:
new_value = round(get_value(self))
new_value = round(self.base_sensor.get_value)
new_value = STATUS_MAPPING.get(new_value, "Unknown")

if 33049 in self._register or 33051 in self._register or 33053 in self._register or 33055 in self._register:
Expand All @@ -88,7 +88,7 @@ def handle_modbus_update(self, event):
registers = self._register.copy()
self._register = registers[:2]

p_value = get_value(self)
p_value = self.base_sensor.convert_value([self._received_values[reg] for reg in filtered_registers])
d_w_value = registers[3]
d_value = self._received_values[registers[2]]

Expand Down

0 comments on commit 957a8ab

Please sign in to comment.