Aohzan / ipx800

IPX800 V4 integration for Home-Assistant
Apache License 2.0
20 stars 12 forks source link

Install version de dév et toujours des erreurs #17

Closed bennijamm closed 3 years ago

bennijamm commented 3 years ago

Bonjour, Je viens de passer la version de dev sur mon serveur HA et je rencontre toujours des bugs :

` Logger: homeassistant.components.websocket_api.http.connection Source: custom_components/ipx800v4/light.py:77 Integration: Home Assistant WebSocket API (documentation, issues) First occurred: 22:47:16 (2 occurrences) Last logged: 22:48:18

[139693602581328] ('IPX800 api request error, url: %sr%s', 'http://10.0.4.200:80/api/xdevices.json?key=removed&SetR=26', {'product': 'IPX800_V4', 'status': 'Error'}) [139693602581328] ('IPX800 api request error, url: %sr%s', 'http://10.0.4.200:80/api/xdevices.json?key=removed&SetR=4', {'product': 'IPX800_V4', 'status': 'Error'}) Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 143, in handle_call_service await hass.services.async_call( File "/usr/src/homeassistant/homeassistant/core.py", line 1480, in async_call task.result() File "/usr/src/homeassistant/homeassistant/core.py", line 1515, in _execute_service await handler.job.target(service_call) File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 206, in handle_service await self.hass.helpers.service.entity_service_call( File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 649, in entity_service_call future.result() # pop exception if have File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 692, in async_request_call await coro File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 686, in _handle_entity_call await result File "/usr/src/homeassistant/homeassistant/components/light/init.py", line 308, in async_handle_light_on_service await light.async_turn_on(params) File "/usr/src/homeassistant/homeassistant/components/group/light.py", line 239, in async_turn_on await self.hass.services.async_call( File "/usr/src/homeassistant/homeassistant/core.py", line 1480, in async_call task.result() File "/usr/src/homeassistant/homeassistant/core.py", line 1515, in _execute_service await handler.job.target(service_call) File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 206, in handle_service await self.hass.helpers.service.entity_service_call( File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 649, in entity_service_call future.result() # pop exception if have File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 692, in async_request_call await coro File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 686, in _handle_entity_call await result File "/usr/src/homeassistant/homeassistant/components/light/init.py", line 308, in async_handle_light_on_service await light.async_turn_on(params) File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 717, in async_turn_on await self.hass.async_add_executor_job(ft.partial(self.turn_on, *kwargs)) File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run result = self.fn(self.args, **self.kwargs) File "/config/custom_components/ipx800v4/light.py", line 77, in turn_on self.control.on() File "/usr/local/lib/python3.8/site-packages/pypx800/init.py", line 95, in on self._request_api(params) File "/usr/local/lib/python3.8/site-packages/pypx800/init.py", line 37, in _request_api raise Exception( Exception: ('IPX800 api request error, url: %sr%s', 'http://10.0.4.200:80/api/xdevices.json?key=removed&SetR=26', {'product': 'IPX800_V4', 'status': 'Error'})

Que puis-je faire pour t'aider à les résoudre ?

Aohzan commented 3 years ago

Bonjour, Avec un temps de polling à 1s ça m'étonne pas qu'il finisse par y avoir des erreurs. De mon côté je suis à 5s et je n'ai plus d'erreurs. J'ai des modifs à faire pour essayer de corriger ça, je vais essayer de faire ça ce week-end

bennijamm commented 3 years ago

Pour info, j'ai mis 5 secondes aussi et j'ai eu des erreurs de soir :

Logger: homeassistant.components.websocket_api.http.connection
Source: custom_components/ipx800v4/cover.py:75
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 6:57:11 (2 occurrences)
Last logged: 20:30:27

[139710264806944] ('IPX800 api request error, url: %s`r%s', 'http://10.0.4.200:80/api/xdevices.json?key=removed&SetVR08=0', {'product': 'IPX800_V4', 'status': 'Error'})
[139710264806944] ('IPX800 api request error, url: %s`r%s', 'http://10.0.4.200:80/api/xdevices.json?key=removed&SetVR06=100', {'product': 'IPX800_V4', 'status': 'Error'})
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 143, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1480, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1515, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 206, in handle_service
    await self.hass.helpers.service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 649, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 692, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 686, in _handle_entity_call
    await result
  File "/usr/src/homeassistant/homeassistant/components/cover/__init__.py", line 281, in async_set_cover_position
    await self.hass.async_add_executor_job(
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/ipx800v4/cover.py", line 75, in set_cover_position
    self.control.set_level(kwargs.get(ATTR_POSITION))
  File "/usr/local/lib/python3.8/site-packages/pypx800/__init__.py", line 351, in set_level
    self._request_api(params)
  File "/usr/local/lib/python3.8/site-packages/pypx800/__init__.py", line 37, in _request_api
    raise Exception(
Exception: ('IPX800 api request error, url: %s`r%s', 'http://10.0.4.200:80/api/xdevices.json?key=removed&SetVR08=0', {'product': 'IPX800_V4', 'status': 'Error'})
Aohzan commented 3 years ago

Peux-tu tester avec la dernière version de la branche dev ?

Aohzan commented 3 years ago

Avec la dernière version, une mise à jour de l'état est faite automatiquement quand une actione st faite côté home assistant

bennijamm commented 3 years ago

super, je teste ça de suite !

bennijamm commented 3 years ago
Logger: homeassistant
Source: custom_components/ipx800v4/light.py:154
First occurred: 20:46:42 (1 occurrences)
Last logged: 20:46:42

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 130, in _handle_refresh_interval
    await self.async_refresh()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 161, in async_refresh
    await self._async_refresh(log_failures=True)
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 235, in _async_refresh
    update_callback()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 295, in _handle_coordinator_update
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 310, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 334, in _async_write_ha_state
    sstate = self.state
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 704, in state
    return STATE_ON if self.is_on else STATE_OFF
  File "/config/custom_components/ipx800v4/light.py", line 154, in is_on
    return self.coordinator.data[f"G{self._id}"]["Etat"] == "ON"
KeyError: 'G4'
Aohzan commented 3 years ago

Ca peut arriver qu'il y ait des erreurs, l'IPX800 ne répond pas toujours correctement aux requêtes, l'important c'est qu'il n'y en ait pas souvent et qu'il n'y ait pas d'erreurs lors d'actions

bennijamm commented 3 years ago

ok, par contre, si je mets 10 sec d'intervalle (ou plus), les binaries réagissent bizarrement. Ex : j'allume une lumière depuis HA, je passe donc de Off à On. Au bout de quelques secondes, le bouton repasse à off... puis à l'intervalle, quand l'IPX est lu, ça repasse à On... Est ce normal par rapport à la mise à jour de l'état qui est faite automatiquement quand une action est faite côté home assistant ?

Aohzan commented 3 years ago

Depuis la version https://github.com/Aohzan/ipx800/tree/2.1.1, ça ne devrait plus retourner à l'état d'avant (sauf si l'IPX met beaucoup de temps à répondre mais ça serait bizarre)

bennijamm commented 3 years ago

je viens de tester à l'instant avec la branche dev... tu veux une capture vidéo ?

Aohzan commented 3 years ago

Non je vois bien de quoi tu parles : https://community.home-assistant.io/t/state-not-keeping-updated-on-change/270891

Je comprends pas pourquoi ça fonctionne chez moi et pas chez toi. Est-ce que tu as d'autres équipements qui communiquent avec l'IPX800 en même temps ?

bennijamm commented 3 years ago

Oui, voilà, ça fait exactement ça ! Non, HA est le seul à interroger l'IPX. J'avais avant un Jeedom mais il est arrêté.

Aohzan commented 3 years ago

tu peux activer le debug des logs et regarder s'il y a bien un ipx800...fetching data au moment où tu actionnes une lumière ?

logger:
  default: warning
  logs:
    custom_components.ipx800v4: debug
bennijamm commented 3 years ago

yes, il y a bien un fetching data quand j'allume ou éteint une lumière. Par contre, au moment d'éteindre la lumière, la lumière s'éteint bien, le curseur passe en éteint puis revient aussitôt sur la position "allumée".

Aohzan commented 3 years ago

Est-ce que ça le fait sur toutes les lumières ? Sur quelles types d'extensions sont-elles branchées ? Tu peux faire le test sur des Virtual Output ou entrées virtuelles du genre ?

Est-ce que tu peux remplacer la ligne 141 du fichier __init__.py par pour savoir qu'est ce qui est retournée comme valeur par l'IPX au moment où tu fais l'action :

            data = await ipx.global_get()
            _LOGGER.debug("### Debug data received: %s", data)
            return data
Aohzan commented 3 years ago

Sans nouvelles je ferme