Skip to content

Commit

Permalink
Merge pull request #248 from claudegel/error-code-fix
Browse files Browse the repository at this point in the history
Error code fix
  • Loading branch information
claudegel authored Jun 7, 2024
2 parents cc77aee + 9e7211c commit d260a1d
Show file tree
Hide file tree
Showing 8 changed files with 96 additions and 278 deletions.
2 changes: 1 addition & 1 deletion custom_components.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"neviweb130": {
"version": "2.7.6",
"version": "2.7.7",
"local_location": "/custom_components/neviweb130/__init__.py",
"remote_location": "https://github.com/claudegel/sinope-130/tree/master/custom_components/__init__.py",
"visit_repo": "https://github.com/claudegel/sinope-130",
Expand Down
2 changes: 1 addition & 1 deletion custom_components/neviweb130/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
HOMEKIT_MODE,
STAT_INTERVAL,
)
VERSION = '2.7.6'
VERSION = '2.7.7'

_LOGGER = logging.getLogger(__name__)

Expand Down
239 changes: 31 additions & 208 deletions custom_components/neviweb130/climate.py

Large diffs are not rendered by default.

30 changes: 21 additions & 9 deletions custom_components/neviweb130/light.py
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ def __init__(self, data, device_info, name, sku, firmware):
self._led_off = "0,0,0,0"
self._wattage = 0
self._wattage_status = None
self._temp_status = None
self._error_code = None
self._rssi = None
self._onoff = None
self._is_light = device_info["signature"]["model"] in \
Expand Down Expand Up @@ -358,7 +358,11 @@ def update(self):
self._wattage = device_data[ATTR_LIGHT_WATTAGE]["value"]
self._wattage_status = device_data[ATTR_LIGHT_WATTAGE]["status"]
if ATTR_ERROR_CODE_SET1 in device_data and len(device_data[ATTR_ERROR_CODE_SET1]) > 0:
self._temp_status = device_data[ATTR_ERROR_CODE_SET1]["temperature"]
if device_data[ATTR_ERROR_CODE_SET1]["raw"] != 0:
self._error_code = device_data[ATTR_ERROR_CODE_SET1]["raw"]
self.notify_ha(
f"Warning: Neviweb Device error code detected: " + str(device_data[ATTR_ERROR_CODE_SET1]["raw"]) + " for device: " + self._name + ", Sku: " + self._sku
)
self._keypad = device_data[ATTR_KEYPAD]
self._timer = device_data[ATTR_TIMER]
self._rssi = device_data[ATTR_RSSI]
Expand Down Expand Up @@ -411,7 +415,7 @@ def extra_state_attributes(self):
data = {}
data.update({'wattage': self._wattage,
'wattage_status': self._wattage_status,
'temperature_status': self._temp_status,
'error_code': self._error_code,
'onOff': self._onoff,
'keypad': lock_to_ha(self._keypad),
'timer': self._timer,
Expand Down Expand Up @@ -635,7 +639,7 @@ def __init__(self, data, device_info, name, sku, firmware):
self._intensity_min = 600
self._wattage = 0
self._wattage_status = None
self._temp_status = None
self._error_code = None
self._rssi = None
self._is_dimmable = device_info["signature"]["model"] in \
DEVICE_MODEL_DIMMER
Expand Down Expand Up @@ -664,7 +668,11 @@ def update(self):
self._wattage = device_data[ATTR_LIGHT_WATTAGE]["value"]
self._wattage_status = device_data[ATTR_LIGHT_WATTAGE]["status"]
if ATTR_ERROR_CODE_SET1 in device_data and len(device_data[ATTR_ERROR_CODE_SET1]) > 0:
self._temp_status = device_data[ATTR_ERROR_CODE_SET1]["temperature"]
if device_data[ATTR_ERROR_CODE_SET1]["raw"] != 0:
self._error_code = device_data[ATTR_ERROR_CODE_SET1]["raw"]
self.notify_ha(
f"Warning: Neviweb Device error code detected: " + str(device_data[ATTR_ERROR_CODE_SET1]["raw"]) + " for device: " + self._name + ", Sku: " + self._sku
)
self._keypad = device_data[ATTR_KEYPAD]
self._timer = device_data[ATTR_TIMER]
self._rssi = device_data[ATTR_RSSI]
Expand All @@ -688,7 +696,7 @@ def extra_state_attributes(self):
data = {}
data.update({ATTR_BRIGHTNESS_PCT: self._brightness_pct,
'minimum_intensity': self._intensity_min,
'temperature_status': self._temp_status,
'error_code': self._error_code,
'wattage': self._wattage,
'wattage_status': self._wattage_status,
'onOff': self._onoff,
Expand Down Expand Up @@ -738,7 +746,7 @@ def __init__(self, data, device_info, name, sku, firmware):
self._intensity_min = 600
self._wattage = 0
self._double_up = None
self._temp_status = None
self._error_code = None
self._rssi = None
self._is_dimmable = device_info["signature"]["model"] in \
DEVICE_MODEL_NEW_DIMMER
Expand Down Expand Up @@ -772,7 +780,11 @@ def update(self):
self._wattage = device_data[ATTR_WATTAGE_INSTANT]
self._timer = device_data[ATTR_TIMER]
if ATTR_ERROR_CODE_SET1 in device_data and len(device_data[ATTR_ERROR_CODE_SET1]) > 0:
self._temp_status = device_data[ATTR_ERROR_CODE_SET1]["temperature"]
if device_data[ATTR_ERROR_CODE_SET1]["raw"] != 0:
self._error_code = device_data[ATTR_ERROR_CODE_SET1]["raw"]
self.notify_ha(
f"Warning: Neviweb Device error code detected: " + str(device_data[ATTR_ERROR_CODE_SET1]["raw"]) + " for device: " + self._name + ", Sku: " + self._sku
)
self._rssi = device_data[ATTR_RSSI]
self._led_on = str(device_data[ATTR_LED_ON_INTENSITY])+","+str(device_data[ATTR_LED_ON_COLOR]["red"])+","+str(device_data[ATTR_LED_ON_COLOR]["green"])+","+str(device_data[ATTR_LED_ON_COLOR]["blue"])
self._led_off = str(device_data[ATTR_LED_OFF_INTENSITY])+","+str(device_data[ATTR_LED_OFF_COLOR]["red"])+","+str(device_data[ATTR_LED_OFF_COLOR]["green"])+","+str(device_data[ATTR_LED_OFF_COLOR]["blue"])
Expand All @@ -794,7 +806,7 @@ def extra_state_attributes(self):
data = {}
data.update({ATTR_BRIGHTNESS_PCT: self._brightness_pct,
'minimum_intensity': self._intensity_min,
'temperature_status': self._temp_status,
'error_code': self._error_code,
'phase_control': self._phase_control,
'double_up_Action': self._double_up,
'wattage': self._wattage,
Expand Down
2 changes: 1 addition & 1 deletion custom_components/neviweb130/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
"dependencies": [],
"codeowners": ["@claudegel"],
"requirements": [],
"version": "2.7.6",
"version": "2.7.7",
"homeassistant": "2024.2.1"
}
23 changes: 14 additions & 9 deletions custom_components/neviweb130/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -415,10 +415,9 @@ def __init__(self, data, device_info, name, device_type, sku, firmware):
self._tank_height = None
self._tank_percent = None
self._gauge_type = None
self._temperature = None
self._data = None
self._batt_percent_normal = None
self._batt_status_normal = None
self._error_code = None
self._is_leak = device_info["signature"]["model"] in \
IMPLEMENTED_SENSOR_MODEL or device_info["signature"]["model"] in IMPLEMENTED_NEW_SENSOR_MODEL
self._is_connected = device_info["signature"]["model"] in \
Expand Down Expand Up @@ -472,7 +471,11 @@ def update(self):
self._batt_status_normal = device_data[ATTR_BATT_STATUS_NORMAL]
if self._is_new_leak:
if ATTR_ERROR_CODE_SET1 in device_data and len(device_data[ATTR_ERROR_CODE_SET1]) > 0:
self._data = device_data[ATTR_ERROR_CODE_SET1]["data"]
if device_data[ATTR_ERROR_CODE_SET1]["raw"] != 0:
self._error_code = device_data[ATTR_ERROR_CODE_SET1]["raw"]
self.notify_ha(
f"Warning: Neviweb Device error code detected: " + str(device_data[ATTR_ERROR_CODE_SET1]["raw"]) + " for device: " + self._name + ", Sku: " + self._sku
)
self._battery_voltage = device_data[ATTR_BATTERY_VOLTAGE]
if ATTR_RSSI in device_data:
self._rssi = device_data[ATTR_RSSI]
Expand Down Expand Up @@ -551,7 +554,7 @@ def extra_state_attributes(self):
'battery_type': self._battery_type,
'rssi': self._rssi})
if self._is_new_leak:
data.update({'data': self._data})
data.update({'error_code': self._error_code})
data.update({'sku': self._sku,
'device_model': str(self._device_model),
'device_model_cfg': self._device_model_cfg,
Expand Down Expand Up @@ -692,8 +695,6 @@ def __init__(self, data, device_info, name, device_type, sku, firmware):
self._tank_height = None
self._tank_percent = None
self._gauge_type = None
self._temperature = None
self._data = None
self._batt_percent_normal = None
self._batt_status_normal = None
self._is_connected = device_info["signature"]["model"] in \
Expand Down Expand Up @@ -811,7 +812,7 @@ def __init__(self, data, device_info, name, device_type, sku, firmware):
self._fuel_percent_alert = None
self._battery_alert = None
self._battery_voltage = None
self._temperature = None
self._error_code = None
self._rssi = None
self._is_monitor = device_info["signature"]["model"] in \
IMPLEMENTED_TANK_MONITOR
Expand All @@ -838,7 +839,11 @@ def update(self):
self._fuel_percent_alert = device_data[ATTR_FUEL_PERCENT_ALERT]
self._battery_alert = device_data[ATTR_BATT_ALERT]
if ATTR_ERROR_CODE_SET1 in device_data and len(device_data[ATTR_ERROR_CODE_SET1]) > 0:
self._temperature = device_data[ATTR_ERROR_CODE_SET1]["temperature"]
if device_data[ATTR_ERROR_CODE_SET1]["raw"] != 0:
self._error_code = device_data[ATTR_ERROR_CODE_SET1]["raw"]
self.notify_ha(
f"Warning: Neviweb Device error code detected: " + str(device_data[ATTR_ERROR_CODE_SET1]["raw"]) + " for device: " + self._name + ", Sku: " + self._sku
)
self._battery_voltage = device_data[ATTR_BATTERY_VOLTAGE]
if ATTR_RSSI in device_data:
self._rssi = device_data[ATTR_RSSI]
Expand Down Expand Up @@ -877,7 +882,7 @@ def extra_state_attributes(self):
'gauge_type': self._gauge_type,
'fuel_alert': "OK" if self._fuel_alert else "Low",
'fuel_percent_alert': "Off" if self._fuel_percent_alert == 0 else self._fuel_percent_alert,
'temperature': self._temperature,
'error_code': self._error_code,
'rssi': self._rssi,
'sku': self._sku,
'device_model': str(self._device_model),
Expand Down
69 changes: 21 additions & 48 deletions custom_components/neviweb130/switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -986,9 +986,8 @@ def __init__(self, data, device_info, name, sku, firmware, device_type):
self._drstatus_active = "off"
self._drstatus_optout = "off"
self._drstatus_onoff = "off"
self._relayK1 = None
self._relayK2 = None
self._rssi = None
self._error_code = None
self._controlled_device = None
self._is_load = device_info["signature"]["model"] in \
IMPLEMENTED_LOAD_DEVICES
Expand Down Expand Up @@ -1019,8 +1018,11 @@ def update(self):
self._drstatus_optout = device_data[ATTR_DRSTATUS][ATTR_OPTOUT]
self._drstatus_onoff = device_data[ATTR_DRSTATUS][ATTR_ONOFF]
if ATTR_ERROR_CODE_SET1 in device_data and len(device_data[ATTR_ERROR_CODE_SET1]) > 0:
self._relayK1 = device_data[ATTR_ERROR_CODE_SET1]["relayK1"]
self._relayK2 = device_data[ATTR_ERROR_CODE_SET1]["relayK2"]
if device_data[ATTR_ERROR_CODE_SET1]["raw"] != 0:
self._error_code = device_data[ATTR_ERROR_CODE_SET1]["raw"]
self.notify_ha(
f"Warning: Neviweb Device error code detected: " + str(device_data[ATTR_ERROR_CODE_SET1]["raw"]) + " for device: " + self._name + ", Sku: " + self._sku
)
if ATTR_RSSI in device_data:
self._rssi = device_data[ATTR_RSSI]
self._controlled_device = device_data[ATTR_CONTROLLED_DEVICE]
Expand Down Expand Up @@ -1055,8 +1057,7 @@ def extra_state_attributes(self):
'eco_status': self._drstatus_active,
'eco_optOut': self._drstatus_optout,
'eco_onoff': self._drstatus_onoff,
'relayK1': self._relayK1,
'relayK2': self._relayK2,
'error_code': self._error_code,
'rssi': self._rssi,
'sku': self._sku,
'device_model': str(self._device_model),
Expand Down Expand Up @@ -1097,6 +1098,7 @@ def __init__(self, data, device_info, name, sku, firmware, device_type):
self._water_temp_min = None
self._water_temp_time = None
self._rssi = None
self._error_code = None
self._temperature = None
self._water_leak_status = None
self._cold_load_status = None
Expand All @@ -1105,13 +1107,6 @@ def __init__(self, data, device_info, name, sku, firmware, device_type):
self._consumption = None
self._consumption_time = None
self._watt_time_on = None
self._stm_mcu = None
self._temp_status = None
self._thermal_overload = None
self._current_overload = None
self._j2connector = None
self._j3connector = None
self._line_error = None
self._is_tank_load = device_info["signature"]["model"] in \
IMPLEMENTED_WATER_HEATER_LOAD_MODEL
self._energy_stat_time = time.time() - 1500
Expand All @@ -1135,13 +1130,11 @@ def update(self):
self._water_leak_status = device_data[ATTR_WATER_LEAK_STATUS]
self._water_temp = device_data[ATTR_ROOM_TEMPERATURE]
if ATTR_ERROR_CODE_SET1 in device_data and len(device_data[ATTR_ERROR_CODE_SET1]) > 0:
self._temp_status = device_data[ATTR_ERROR_CODE_SET1]["temperatureSensor"]
self._stm_mcu = device_data[ATTR_ERROR_CODE_SET1]["stm_mcu"]
self._thermal_overload = device_data[ATTR_ERROR_CODE_SET1]["thermalOverload"]
self._current_overload = device_data[ATTR_ERROR_CODE_SET1]["currentOverload"]
self._j2connector = device_data[ATTR_ERROR_CODE_SET1]["j2Connector"]
self._j3connector = device_data[ATTR_ERROR_CODE_SET1]["j3Connector"]
self._line_error = device_data[ATTR_ERROR_CODE_SET1]["lineError"]
if device_data[ATTR_ERROR_CODE_SET1]["raw"] != 0:
self._error_code = device_data[ATTR_ERROR_CODE_SET1]["raw"]
self.notify_ha(
f"Warning: Neviweb Device error code detected: " + str(device_data[ATTR_ERROR_CODE_SET1]["raw"]) + " for device: " + self._name + ", Sku: " + self._sku
)
self._wattage = device_data[ATTR_WATTAGE]
self._current_power_w = device_data[ATTR_WATTAGE_INSTANT]
self._cold_load_status = device_data[ATTR_COLD_LOAD_PICKUP_STATUS]
Expand Down Expand Up @@ -1189,13 +1182,6 @@ def extra_state_attributes(self):
'cold_load_pickup_status': self._cold_load_status,
'cold_load_remaining_time': remainig_time(self._cold_load_remaining_time),
'tank_size': neviweb_to_ha(self._tank_size),
'temperature_status': self._temp_status,
'stm_Mcu': self._stm_mcu,
'thermal_overload': self._thermal_overload,
'current_overload': self._current_overload,
'j2Connector': self._j2connector,
'j3Connector': self._j3connector,
'line_error': self._line_error,
'eco_status': self._drstatus_active,
'eco_optOut': self._drstatus_optout,
'eco_onoff': self._drstatus_onoff,
Expand All @@ -1206,6 +1192,7 @@ def extra_state_attributes(self):
'protection_Temperature': self._temperature,
'protection_Consumption': self._consumption,
'protection_consumption_overtime': self._consumption_time,
'error_code': self._error_code,
'rssi': self._rssi,
'sku': self._sku,
'device_model': str(self._device_model),
Expand Down Expand Up @@ -1255,14 +1242,8 @@ def __init__(self, data, device_info, name, sku, firmware, device_type):
self._water_tank_on = None
self._water_leak_status = None
self._tank_size = None
self._stm_mcu = None
self._temp_status = None
self._thermal_overload = None
self._current_overload = None
self._j2connector = None
self._j3connector = None
self._line_error = None
self._rssi = None
self._error_code = None
self._leg_status_temp = None
self._leg_status_consumption = None
self._leg_status_over_time = None
Expand Down Expand Up @@ -1293,13 +1274,11 @@ def update(self):
self._water_leak_disconected_status = device_data[ATTR_WATER_LEAK_DISCONECTED_STATUS]
self._water_temp = device_data[ATTR_WATER_TEMPERATURE]
if ATTR_ERROR_CODE_SET1 in device_data and len(device_data[ATTR_ERROR_CODE_SET1]) > 0:
self._temp_status = device_data[ATTR_ERROR_CODE_SET1]["temperatureSensor"]
self._stm_mcu = device_data[ATTR_ERROR_CODE_SET1]["stm_mcu"]
self._thermal_overload = device_data[ATTR_ERROR_CODE_SET1]["thermalOverload"]
self._current_overload = device_data[ATTR_ERROR_CODE_SET1]["currentOverload"]
self._j2connector = device_data[ATTR_ERROR_CODE_SET1]["j2Connector"]
self._j3connector = device_data[ATTR_ERROR_CODE_SET1]["j3Connector"]
self._line_error = device_data[ATTR_ERROR_CODE_SET1]["lineError"]
if device_data[ATTR_ERROR_CODE_SET1]["raw"] != 0:
self._error_code = device_data[ATTR_ERROR_CODE_SET1]["raw"]
self.notify_ha(
f"Warning: Neviweb Device error code detected: " + str(device_data[ATTR_ERROR_CODE_SET1]["raw"]) + " for device: " + self._name + ", Sku: " + self._sku
)
if ATTR_DRSTATUS in device_data:
self._drstatus_active = device_data[ATTR_DRSTATUS][ATTR_DRACTIVE]
self._drstatus_optout = device_data[ATTR_DRSTATUS][ATTR_OPTOUT]
Expand Down Expand Up @@ -1357,13 +1336,6 @@ def extra_state_attributes(self):
'cold_load_remaining_time': remainig_time(self._cold_load_remaining_time),
'cold_load_temperature': self._cold_load_temp,
'tank_size': neviweb_to_ha(self._tank_size),
'temperature_status': self._temp_status,
'stm_Mcu': self._stm_mcu,
'thermal_overload': self._thermal_overload,
'current_overload': self._current_overload,
'j2Connector': self._j2connector,
'j3Connector': self._j3connector,
'line_error': self._line_error,
'eco_status': self._drstatus_active,
'eco_optOut': self._drstatus_optout,
'eco_onoff': self._drstatus_onoff,
Expand All @@ -1379,6 +1351,7 @@ def extra_state_attributes(self):
'leg_status_temperature': self._leg_status_temp,
'leg_status_consumption': self._leg_status_consumption,
'leg_status_consumption_over_time': self._leg_status_over_time,
'error_code': self._error_code,
'rssi': self._rssi,
'sku': self._sku,
'device_model': str(self._device_model),
Expand Down
Loading

0 comments on commit d260a1d

Please sign in to comment.