Closed lurgh closed 1 year ago
Interesting... I have solar heat as well. Can you download the diagnostic data from the integration and attach it?
Attaching. I also saw that the solar rooftop temp (SolarSensor) exists in the config (ID #20, the ID being complained about) but is not present in telemetry and reports Unavailable in the integration.
config_entry-omnilogic_local-b890d5d9a7b6ea9c7a9a4f1420be7eb5_1.json.txt
@lurgh I have it mostly fixed locally for your pool, it was a problem related to having more than one heater. One question I have, it looks like you have two solar temperature sensors on your spa? I'm seeing the following snippet in your MSPConfig:
...
<Sensor>
<System-Id>17</System-Id>
<Name>WaterSensor</Name>
<Type>SENSOR_WATER_TEMP</Type>
<Units>UNITS_FAHRENHEIT</Units>
<Operation>
PEO_GET_VALUE
<Action>
<Action-Function>ACT_FNC_GET_WATER_TEMP</Action-Function>
<Action-Data1>18</Action-Data1>
<Action-Data2>2</Action-Data2>
<Action-Data3>0</Action-Data3>
</Action>
</Operation>
</Sensor>
<Sensor>
<System-Id>21</System-Id>
<Name>SolarSensor</Name>
<Type>SENSOR_SOLAR_TEMP</Type>
<Units>UNITS_FAHRENHEIT</Units>
<Operation>
PEO_GET_VALUE
<Action>
<Action-Function>ACT_FNC_GET_SOLAR_TEMP</Action-Function>
<Action-Data1>20</Action-Data1>
<Action-Data2>5</Action-Data2>
<Action-Data3>0</Action-Data3>
</Action>
</Operation>
</Sensor>
<Sensor>
<System-Id>38</System-Id>
<Name>SolarSensor</Name>
<Type>SENSOR_SOLAR_TEMP</Type>
<Units>UNITS_FAHRENHEIT</Units>
<Operation>
PEO_GET_VALUE
<Action>
<Action-Function>ACT_FNC_GET_SOLAR_TEMP</Action-Function>
<Action-Data1>20</Action-Data1>
<Action-Data2>5</Action-Data2>
<Action-Data3>0</Action-Data3>
</Action>
</Operation>
</Sensor>
...
I'm not sure how to support more than one solar temperature sensor per body of water as a solar heater can only be associated with a single solar temperature sensor in the Omni. In your case your solar heater has <Sensor-System-Id>38</Sensor-System-Id>
so the sensor with System-Id 21 doesn't appear to be associated with anything?
Here is what I'm going to do... I'll configure solar sensors that have a matching solar heater, and one time at startup, I'll log a warning about having a solar sensor with no associated solar heater.
@lurgh try release 0.5.1
Seems like a good plan. Meanwhile there is actually only one sensor so I will check the MSP configuration and see since the initial setup of the solar sensor was a problem and it wouldn’t surprise me if something was left behind from an early attempt of configuring that sensor.
On Jun 23, 2023, at 9:28 AM, cryptk @.***> wrote:
Here is what I'm going to do... I'll configure solar sensors that have a matching solar heater, and one time at startup, I'll log a warning about having a solar sensor with no associated solar heater.
— Reply to this email directly, view it on GitHub https://github.com/cryptk/haomnilogic-local/issues/60#issuecomment-1604519135, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKI22UMENFOS7OERFGP5EYDXMW723ANCNFSM6AAAAAAZQ3HK5U. You are receiving this because you were mentioned.
confirmed 0.5.1 looks a lot better including showing the correct rooftop temperature. no more errors. thanks!
FWIW i don’t see a warning about the extra sensor. i will still chase that down in the MSP config when i can get out there.
On Jun 23, 2023, at 10:20 AM, cryptk @.***> wrote:
@lurgh https://github.com/lurgh try release 0.5.1
— Reply to this email directly, view it on GitHub https://github.com/cryptk/haomnilogic-local/issues/60#issuecomment-1604586489, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKI22UNTM46UFLGW7Z252VTXMXF7JANCNFSM6AAAAAAZQ3HK5U. You are receiving this because you were mentioned.
The warning will be right at the beginning when it's creating all of the entities, you can see it in the output here saying "Unable to locate a solar heater for sensor id: 21" when I simulate your pool:
2023-06-23 12:48:49.646 DEBUG (MainThread) [custom_components.omnilogic_local.binary_sensor] Configuring binary sensor for service mode with ID: 0
2023-06-23 12:48:49.647 DEBUG (MainThread) [custom_components.omnilogic_local.binary_sensor] Configuring sensor for heater equipment with ID: 5, Name: Gas
2023-06-23 12:48:49.647 DEBUG (MainThread) [custom_components.omnilogic_local.binary_sensor] Configuring sensor for heater equipment with ID: 18, Name: Solar
2023-06-23 12:48:49.647 DEBUG (MainThread) [custom_components.omnilogic_local.binary_sensor] Configuring sensor for heater equipment with ID: 12, Name: Gas
2023-06-23 12:48:49.647 DEBUG (MainThread) [custom_components.omnilogic_local.binary_sensor] Configuring sensor for heater equipment with ID: 19, Name: Solar
2023-06-23 12:48:49.651 INFO (MainThread) [homeassistant.components.button] Setting up button.omnilogic_local
2023-06-23 12:48:49.652 DEBUG (MainThread) [custom_components.omnilogic_local.sensor] Configuring sensor for air temperature with ID: 16, Name: AirSensor
2023-06-23 12:48:49.652 DEBUG (MainThread) [custom_components.omnilogic_local.sensor] Configuring sensor for water temperature with ID: 6, Name: WaterSensor
2023-06-23 12:48:49.652 DEBUG (MainThread) [custom_components.omnilogic_local.sensor] Configuring sensor for water temperature with ID: 17, Name: WaterSensor
2023-06-23 12:48:49.653 WARNING (MainThread) [custom_components.omnilogic_local.sensor] Unable to locate a solar heater for sensor id: 21
2023-06-23 12:48:49.653 DEBUG (MainThread) [custom_components.omnilogic_local.sensor] Configuring sensor for filter energy with ID: 3, Name: Filter Pump
2023-06-23 12:48:49.653 DEBUG (MainThread) [custom_components.omnilogic_local.sensor] Configuring sensor for filter energy with ID: 10, Name: Filter Pump
2023-06-23 12:48:49.674 INFO (MainThread) [homeassistant.components.number] Setting up number.omnilogic_local
2023-06-23 12:48:49.675 DEBUG (MainThread) [custom_components.omnilogic_local.button] Configuring button for pump with ID: 3, Name: Filter Pump, Speed: low
2023-06-23 12:48:49.675 DEBUG (MainThread) [custom_components.omnilogic_local.button] Configuring button for pump with ID: 3, Name: Filter Pump, Speed: medium
NB: this Omnilogic pool has a solar heater in addition to gas heater. Might be relevant to this issue?
This error flashes at the bottom of the screen as a failure on various operations like turning on a light, which reports that the operation failed although it does work (the light does turn on). I also see this same exception being the underlying cause of other errors in the log.
Example from the log:
Logger: homeassistant.components.websocket_api.http.connection Source: custom_components/omnilogic_local/sensor.py:213 Integration: Home Assistant WebSocket API (documentation, issues) First occurred: 1:39:07 PM (10 occurrences) Last logged: 2:26:11 PM
[140022850452944] Unable to locate a heater for sensor id: 20 [140022868589136] Unable to locate a heater for sensor id: 20
Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 205, in handle_call_service await hass.services.async_call( File "/usr/src/homeassistant/homeassistant/core.py", line 1910, in async_call task.result() File "/usr/src/homeassistant/homeassistant/core.py", line 1950, in _execute_service await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)( File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 226, in handle_service await service.entity_service_call( File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 811, in entity_service_call future.result() # pop exception if have ^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1034, in async_request_call await coro File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 851, in _handle_entity_call await result File "/usr/src/homeassistant/homeassistant/components/light/init.py", line 582, in async_handle_light_on_service await light.async_turn_on(**filter_turn_on_params(light, params)) File "/config/custom_components/omnilogic_local/light.py", line 151, in async_turn_on self.set_telemetry(updated_data) File "/config/custom_components/omnilogic_local/entity.py", line 90, in set_telemetry self.coordinator.async_set_updated_data(self.coordinator.data) File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 401, in async_set_updated_data self.async_update_listeners() File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 164, in async_update_listeners update_callback() File "/config/custom_components/omnilogic_local/entity.py", line 48, in _handle_coordinator_update self.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 590, in async_write_ha_state self._async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 654, in _async_write_ha_state state = self._stringify_state(available) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 596, in _stringify_state if (state := self.state) is None: ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/sensor/init.py", line 469, in state value = self.native_value ^^^^^^^^^^^^^^^^^ File "/config/custom_components/omnilogic_local/sensor.py", line 204, in native_value temp = self.sensed_data.telemetry.temp ^^^^^^^^^^^^^^^^ File "/config/custom_components/omnilogic_local/sensor.py", line 153, in sensed_data return cast(T, self.coordinator.data[self.sensed_system_id]) ^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/omnilogic_local/sensor.py", line 213, in sensed_system_id raise OmniLogicError("Unable to locate a heater for sensor id: %s" % self.system_id) custom_components.omnilogic_local.errors.OmniLogicError: Unable to locate a heater for sensor id: 20