Skip to content

Commit

Permalink
Merge remote-tracking branch 'cabeljunky/master' into feature/address…
Browse files Browse the repository at this point in the history
…selection

# Conflicts:
#	custom_components/solaredge_modbus/__init__.py
  • Loading branch information
binsentsu committed Aug 1, 2022
2 parents 6214dd9 + 18b2635 commit a48bdec
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 6 deletions.
18 changes: 12 additions & 6 deletions custom_components/solaredge_modbus/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
DOMAIN,
DEFAULT_NAME,
DEFAULT_SCAN_INTERVAL,
DEFAULT_MODBUS_ADDRESS,
CONF_MODBUS_ADDRESS,
CONF_READ_METER1,
CONF_READ_METER2,
CONF_READ_METER3,
Expand All @@ -46,6 +48,7 @@
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Required(CONF_HOST): cv.string,
vol.Required(CONF_PORT): cv.string,
vol.Optional(CONF_MODBUS_ADDRESS, default=DEFAULT_MODBUS_ADDRESS): cv.positive_int,
vol.Optional(CONF_READ_METER1, default=DEFAULT_READ_METER1): cv.boolean,
vol.Optional(CONF_READ_METER2, default=DEFAULT_READ_METER2): cv.boolean,
vol.Optional(CONF_READ_METER3, default=DEFAULT_READ_METER3): cv.boolean,
Expand Down Expand Up @@ -75,6 +78,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
host = entry.data[CONF_HOST]
name = entry.data[CONF_NAME]
port = entry.data[CONF_PORT]
address = entry.data[CONF_MODBUS_ADDRESS]
scan_interval = entry.data[CONF_SCAN_INTERVAL]
read_meter1 = entry.data.get(CONF_READ_METER1, False)
read_meter2 = entry.data.get(CONF_READ_METER2, False)
Expand All @@ -85,7 +89,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
_LOGGER.debug("Setup %s.%s", DOMAIN, name)

hub = SolaredgeModbusHub(
hass, name, host, port, scan_interval, read_meter1, read_meter2, read_meter3, read_battery1, read_battery2
hass, name, host, port, address, scan_interval, read_meter1, read_meter2, read_meter3, read_battery1, read_battery2
)
"""Register the hub."""
hass.data[DOMAIN][name] = {"hub": hub}
Expand Down Expand Up @@ -135,6 +139,7 @@ def __init__(
name,
host,
port,
address,
scan_interval,
read_meter1=False,
read_meter2=False,
Expand All @@ -147,6 +152,7 @@ def __init__(
self._client = ModbusTcpClient(host=host, port=port)
self._lock = threading.Lock()
self._name = name
self._address = address
self.read_meter1 = read_meter1
self.read_meter2 = read_meter2
self.read_meter3 = read_meter3
Expand Down Expand Up @@ -267,7 +273,7 @@ def read_modbus_data_meter3(self):
def read_modbus_data_meter(self, meter_prefix, start_address):
"""start reading meter data """
meter_data = self.read_holding_registers(
unit=1, address=start_address, count=103
unit=self._address, address=start_address, count=103
)
if not meter_data.isError():
decoder = BinaryPayloadDecoder.fromRegisters(
Expand Down Expand Up @@ -561,7 +567,7 @@ def read_modbus_data_meter(self, meter_prefix, start_address):
return False

def read_modbus_data_inverter(self):
inverter_data = self.read_holding_registers(unit=1, address=40071, count=38)
inverter_data = self.read_holding_registers(unit=self._address, address=40071, count=38)
if not inverter_data.isError():
decoder = BinaryPayloadDecoder.fromRegisters(
inverter_data.registers, byteorder=Endian.Big
Expand Down Expand Up @@ -688,7 +694,7 @@ def read_modbus_data_storage(self):
else:
return True # Nothing to read here

storage_data = self.read_holding_registers(unit=1, address=0xE000, count=count)
storage_data = self.read_holding_registers(unit=self._address, address=0xE000, count=count)
if not storage_data.isError():
decoder = BinaryPayloadDecoder.fromRegisters(
storage_data.registers, byteorder=Endian.Big,wordorder=Endian.Little
Expand Down Expand Up @@ -774,7 +780,7 @@ def read_modbus_data_battery2(self):

def read_modbus_data_battery(self, battery_prefix, start_address):
if not battery_prefix + "attrs" in self.data:
battery_data = self.read_holding_registers(unit=1, address=start_address, count=0x4C)
battery_data = self.read_holding_registers(unit=self._address, address=start_address, count=0x4C)
if not battery_data.isError():
decoder = BinaryPayloadDecoder.fromRegisters(
battery_data.registers, byteorder=Endian.Big,wordorder=Endian.Little
Expand Down Expand Up @@ -822,7 +828,7 @@ def decode_string(decoder):

self.data[battery_prefix + "attrs"] = battery_info

storage_data = self.read_holding_registers(unit=1, address=start_address + 0x6C, count=28)
storage_data = self.read_holding_registers(unit=self._address, address=start_address + 0x6C, count=28)
if not storage_data.isError():
decoder = BinaryPayloadDecoder.fromRegisters(
storage_data.registers, byteorder=Endian.Big,wordorder=Endian.Little
Expand Down
3 changes: 3 additions & 0 deletions custom_components/solaredge_modbus/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
DEFAULT_NAME,
DEFAULT_SCAN_INTERVAL,
DEFAULT_PORT,
DEFAULT_MODBUS_ADDRESS,
CONF_MODBUS_ADDRESS,
CONF_READ_METER1,
CONF_READ_METER2,
CONF_READ_METER3,
Expand All @@ -28,6 +30,7 @@
vol.Optional(CONF_NAME, default=DEFAULT_NAME): str,
vol.Required(CONF_HOST): str,
vol.Required(CONF_PORT, default=DEFAULT_PORT): int,
vol.Optional(CONF_MODBUS_ADDRESS, default=DEFAULT_MODBUS_ADDRESS): int,
vol.Optional(CONF_READ_METER1, default=DEFAULT_READ_METER1): bool,
vol.Optional(CONF_READ_METER2, default=DEFAULT_READ_METER2): bool,
vol.Optional(CONF_READ_METER3, default=DEFAULT_READ_METER3): bool,
Expand Down
2 changes: 2 additions & 0 deletions custom_components/solaredge_modbus/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
DEFAULT_NAME = "solaredge"
DEFAULT_SCAN_INTERVAL = 30
DEFAULT_PORT = 1502
DEFAULT_MODBUS_ADDRESS = 1
DEFAULT_READ_METER1 = False
DEFAULT_READ_METER2 = False
DEFAULT_READ_METER3 = False
Expand All @@ -10,6 +11,7 @@
CONF_SOLAREDGE_HUB = "solaredge_hub"
ATTR_STATUS_DESCRIPTION = "status_description"
ATTR_MANUFACTURER = "Solaredge"
CONF_MODBUS_ADDRESS = "modbus_address"
CONF_READ_METER1 = "read_meter_1"
CONF_READ_METER2 = "read_meter_2"
CONF_READ_METER3 = "read_meter_3"
Expand Down
1 change: 1 addition & 0 deletions custom_components/solaredge_modbus/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"host": "The ip-address of your Solaredge device",
"name": "The prefix to be used for your SolarEdge sensors",
"port": "The TCP port on which to connect to the SolarEdge",
"modbus_address": "The modbus address",
"read_meter_1": "Read meter 1 data (only for meter models)",
"read_meter_2": "Read meter 2 data (only for meter models)",
"read_meter_3": "Read meter 3 data (only for meter models)",
Expand Down

0 comments on commit a48bdec

Please sign in to comment.