Skip to content
This repository has been archived by the owner on Oct 7, 2021. It is now read-only.

Siterwell GS361A-H04 #51

Open
Kirmas opened this issue Nov 8, 2020 · 14 comments
Open

Siterwell GS361A-H04 #51

Kirmas opened this issue Nov 8, 2020 · 14 comments

Comments

@Kirmas
Copy link

Kirmas commented Nov 8, 2020

Hello, I have Siterwell GS361A-H04 devise, this devise discovered in your integration, but has a few bugs:

  1. His temperature data must be divided by 10 (showing 195 when must be 19.5 etc.)
  2. I trying to use https://github.com/ollo69/ha_tuya_custom to avoid this but, when HA try to updete temperature using api, api returned out of range error.

Additional information:
Discovery -
image
Try to set 250
image
Try to set 25
image

To avoid second issue with ha_tuya_custom i change set_temperature function
def set_temperature(self, temperature):
"""Set new target temperature."""

    # the value used to set temperature is scaled based on the configured divider
    divider = self._divider or 1

    if not self.has_decimal():
        temp_val = round(float(temperature))
        set_val = temp_val * divider
    else:
        temp_val = float(temperature)
        set_val = round(float(temperature) * divider)
    if self._control_device("temperatureSet", {"value": temp_val}):
        self._update_data("temperature", set_val)

But as I understand this change can broke other devise integration.

Sorry for my English. If you misunderstand something ask me please.
Regards, Igor

@Kirmas
Copy link
Author

Kirmas commented Nov 8, 2020

After additional research i realise that only second issue is a problem. First - i must configure on my side.

@hribaro1
Copy link

hribaro1 commented Nov 9, 2020

If I use above for set_temperature, I get this erro when trying to set temperature

Failed to call service climate/set_temperature. set_temperature() got an unexpected keyword argument 'entity_id'

@hribaro1
Copy link

hribaro1 commented Nov 9, 2020

Sorry wrong climate.py update.

    ### **_set_val = round(float(temperature) * divider)_**

If I add this to original in \tuyaha\devices\climate.py nothing changes.
Still the same issue that entity becomes unavailable.

@Kirmas
Copy link
Author

Kirmas commented Nov 9, 2020

@hribaro1 Could you change log verbosity in your HA integration to debug and provide log for me. In my situation. I had ValueOutOfRange message in the log.

@PaulAnnekov What do you thinking about change debug message to warning or error?
image

@hribaro1
Copy link

hribaro1 commented Nov 9, 2020

A little out of my league.
Can you direct me how to change log verbosity?

@Kirmas
Copy link
Author

Kirmas commented Nov 9, 2020

@hribaro1
Copy link

hribaro1 commented Nov 9, 2020

I also see OutofRange, but why?

020-11-09 13:06:16 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.1895224152] Received {'type': 'call_service', 'domain': 'climate', 'service': 'set_temperature', 'service_data': {'entity_id': 'climate.87760457ecfabc5c425c', 'temperature': 1.5}, 'id': 50}
2020-11-09 13:06:16 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event call_service[L]: domain=climate, service=set_temperature, service_data=entity_id=climate.87760457ecfabc5c425c, temperature=1.5>
2020-11-09 13:06:17 DEBUG (SyncWorker_43) [custom_components.tuya_custom.tuyaha.tuyaapi] Tuya request response: {'payload': {}, 'header': {'payloadVersion': 1, 'code': 'ValueOutOfRange'}}
2020-11-09 13:06:17 DEBUG (SyncWorker_43) [custom_components.tuya_custom.tuyaha.tuyaapi] control device error, error code is ValueOutOfRange
2020-11-09 13:06:17 DEBUG (SyncWorker_43) [homeassistant.components.ssdp] Scanning
2020-11-09 13:06:17 DEBUG (SyncWorker_13) [custom_components.tuya_custom.tuyaha.tuyaapi] Discovery: Use cached info
2020-11-09 13:06:17 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=climate.87760457ecfabc5c425c, old_state=<state climate.87760457ecfabc5c425c=heat_cool; hvac_modes=['off', 'heat_cool'], min_temp=0.1, max_temp=12.2, target_temp_step=0.5, current_temperature=2.0, temperature=1.9, tuya_device_id=87760457ecfabc5c425c, friendly_name=Kopalnica otroci, supported_features=1 @ 2020-11-09T13:01:13.271120+01:00>, new_state=<state climate.87760457ecfabc5c425c=unavailable; hvac_modes=['off', 'heat_cool'], min_temp=0.1, max_temp=12.2, target_temp_step=0.5, friendly_name=Kopalnica otroci, supported_features=1 @ 2020-11-09T13:06:17.106736+01:00>>
2020-11-09 13:06:17 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.1895224152] Sending {"id": 2, "type": "event", "event": {"event_type": "state_changed", "data": {"entity_id": "climate.87760457ecfabc5c425c", "old_state": {"entity_id": "climate.87760457ecfabc5c425c", "state": "heat_cool", "attributes": {"hvac_modes": ["off", "heat_cool"], "min_temp": 0.1, "max_temp": 12.2, "target_temp_step": 0.5, "current_temperature": 2.0, "temperature": 1.9, "tuya_device_id": "87760457ecfabc5c425c", "friendly_name": "Kopalnica otroci", "supported_features": 1}, "last_changed": "2020-11-09T12:01:13.271120+00:00", "last_updated": "2020-11-09T12:01:13.271120+00:00", "context": {"id": "daab05ca8662579396d247a9ba2b64ee", "parent_id": null, "user_id": null}}, "new_state": {"entity_id": "climate.87760457ecfabc5c425c", "state": "unavailable", "attributes": {"hvac_modes": ["off", "heat_cool"], "min_temp": 0.1, "max_temp": 12.2, "target_temp_step": 0.5, "friendly_name": "Kopalnica otroci", "supported_features": 1}, "last_changed": "2020-11-09T12:06:17.106736+00:00", "last_updated": "2020-11-09T12:06:17.106736+00:00", "context": {"id": "f2ae42e233001c29f4c7a71fc8aba675", "parent_id": null, "user_id": "ad4f028b25784d1b81685911604ea5dc"}}}, "origin": "LOCAL", "time_fired": "2020-11-09T12:06:17.106870+00:00", "context": {"id": "f2ae42e233001c29f4c7a71fc8aba675", "parent_id": null, "user_id": "ad4f028b25784d1b81685911604ea5dc"}}}

@hribaro1
Copy link

hribaro1 commented Nov 9, 2020

Min and max range is in this case 0.1 - 12.2 and I tried to set 1.5

@Kirmas
Copy link
Author

Kirmas commented Nov 9, 2020

@hribaro1 This range is the same with Tuya app? Can you check log without my changes? And what devise do you use?

@hribaro1
Copy link

hribaro1 commented Nov 9, 2020

Range of thermostat currently set is 10-30 degrees, but even if I want to set to 11 I have the same error

2020-11-09 15:06:21 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.1766847248] Received {'type': 'call_service', 'domain': 'climate', 'service': 'set_temperature', 'service_data': {'entity_id': 'climate.87760457ecfabc5c3ae3', 'temperature': 11}, 'id': 31}
2020-11-09 15:06:21 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event call_service[L]: domain=climate, service=set_temperature, service_data=entity_id=climate.87760457ecfabc5c3ae3, temperature=11>
2020-11-09 15:06:22 DEBUG (SyncWorker_45) [custom_components.tuya_custom.tuyaha.tuyaapi] Tuya request response: {'payload': {}, 'header': {'payloadVersion': 1, 'code': 'ValueOutOfRange'}}
2020-11-09 15:06:22 DEBUG (SyncWorker_45) [custom_components.tuya_custom.tuyaha.tuyaapi] control device error, error code is ValueOutOfRange
2020-11-09 15:06:22 DEBUG (SyncWorker_5) [custom_components.tuya_custom.tuyaha.tuyaapi] Discovery: Use cached info
2020-11-09 15:06:22 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=climate.87760457ecfabc5c3ae3, old_state=<state climate.87760457ecfabc5c3ae3=heat_cool; hvac_modes=['off', 'heat_cool'], min_temp=0.1, max_temp=12.2, target_temp_step=0.5, current_temperature=1.9, temperature=1.9, tuya_device_id=87760457ecfabc5c3ae3, friendly_name=Kopalnica starši, supported_features=1 @ 2020-11-09T13:11:28.374923+01:00>, new_state=<state climate.87760457ecfabc5c3ae3=unavailable; hvac_modes=['off', 'heat_cool'], min_temp=0.1, max_temp=12.2, target_temp_step=0.5, friendly_name=Kopalnica starši, supported_features=1 @ 2020-11-09T15:06:22.180919+01:00>>

Type is Xiamen Hysen Control Tuya wifi thermostat

image

@Kirmas
Copy link
Author

Kirmas commented Nov 9, 2020

In my case, I have the same data in HA and Tuya.
This is my config.

tuya_custom:
  devices_config:
    - device_name: Siterwell GS361A-H04
      unit_of_measurement: "C" # "F" or "C", not set to use value provided from cloud - **In my case this was very important**
      temp_divider: 10 # any positive number, all temperature values will be divided by this value

@PaulAnnekov
Copy link
Owner

@ollo69 you were the last one who updated climate component. Can you suggest on how to deal with this issue?

@Kirmas

What do you thinking about change debug message to warning or error?

Done.

@ollo69
Copy link
Contributor

ollo69 commented Dec 7, 2020

I think that problem is that the temperature value should not multiplied by divider in set_temperature method:

            temp_val = set_val = round(float(temperature) * divider)

Unfortunately this is not a rule, because in other cases the transformation is correct. Probably should be added an option to select the right action, than added an option in HA Tuya Integration to set it properly.
I will create a PR when I will be sure about this...

@PaulAnnekov
Copy link
Owner

That makes sense. As Tuya API doesn't return model id, we can't handle it entirely in code.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants