Closed Sonoflex3 closed 1 year ago
Cette erreur provient d'une intégration personnalisée
Logger: homeassistant Source: custom_components/hilo/init.py:265 Integration: Hilo (documentation, issues) First occurred: 03:32:21 (2955 occurrences) Last logged: 11:20:56
Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/hilo/init.py", line 265, in on_websocket_event updated_devices = self.devices.parse_values_received(event.arguments[0]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyhilo/devices.py", line 42, in parse_values_received val.pop("attribute"), val.pop("valueType") ^^^^^^^^^^^^^^^^^^^^ KeyError: 'valueType'
I have 12 error log from hilo but i don't know how to link them properly
Même erreur. Aucune information en provenance des capteurs, mais je suis toujours capable de contrôler les thermostats. Home Assistant ne reçoit pas la mise à jour de la température et assume 0C, mais les thermostats on correctement changé. Toutes informations sur la consommation d'énergie est indisponible pour le moment.
J'ai la même problème que @fcusson
J'ai aussi ce problème. Et le problème rapporté par deathunt sur l'état prises/interrupteurs. HA n'est pas informé de l'état des appareils zigbee mais peux quand même les contrôler.
Bon matin à vous tous,
J'avais un peu de temps devant moi donc j'ai téléchargé les fichiers nécessaire au PR #272 localement. Ensuite j'ai pullé dans mon fork https://github.com/dvd-dev/python-hilo/pull/114
Écrasé les fichiers de mon custom_component local et installé mon fork the python-hilo par la commande suivante dans mon container:
pip install -e git+https://github.com/ic-dev21/python-hilo.git#egg=python-hilo
Rebooté HA.
Malheureusement pas d'effet sur le problème. Par contre ça change les erreurs de place:
This error originated from a custom integration.
Logger: pyhilo
Source: custom_components/hilo/__init__.py:339
Integration: Hilo (documentation, issues)
First occurred: 9:41:05 AM (45 occurrences)
Last logged: 9:41:05 AM
Unknown device attribute supported_attributes_list: ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired']
Unknown device attribute settable_attributes_list: ['TargetTemperature', 'GrapState']
Unknown device attribute supported_parameters_list: ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']
Unknown device attribute hilo_id: urn:hilo:philo:bc33acfffe2b042d:0
Unknown device attribute is_favorite: False
De mon côté j'ai exactement le même comportement que dans #259, pas de données de la part des thermostats tant qu'ils ne varient pas. Tous leurs setpoint sont à 0 dans l'interface aussi.
Par contre le smartenergy meter fonctionne toujours sans problèmes.
@nlz242 pourrait possiblement nous éclairer sur ces attributs? @julienld tu avais mis le doigt sur le bobo la dernière fois, des idées? @valleedelisle Aurais-tu du temps pour regarder ça?
J'ai regardé brièvement la semaine passé parce que j'étais en vacances, mais ça avait pas l'air simple à régler. J'imagine que c'est des changements du côté Hilo. Je ne pense pas avoir le temps de regarder ça prochainement avec les vacances qui sont terminées pour moi 😞
Si tu veux essayer... la première étape serait d'avoir des logs complet niveau debug (voir le README.md) et de rajouter des LOG.debug(f"var:{var}") avant les erreurs pour voir le contenu des variables...
Bonjour,
je viens de recevoir mon installation d'Hilo aujourd'hui. Je confirme avoir la même erreur:
Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/config/custom_components/hilo/__init__.py", line 265, in on_websocket_event
updated_devices = self.devices.parse_values_received(event.arguments[0])
File "/usr/local/lib/python3.10/site-packages/pyhilo/devices.py", line 42, in parse_values_received
val.pop("attribute"), val.pop("valueType")
KeyError: 'valueType'
J'ai regardé brièvement la semaine passé parce que j'étais en vacances, mais ça avait pas l'air simple à régler. J'imagine que c'est des changements du côté Hilo. Je ne pense pas avoir le temps de regarder ça prochainement avec les vacances qui sont terminées pour moi 😞
Si tu veux essayer... la première étape serait d'avoir des logs complet niveau debug (voir le README.md) et de rajouter des LOG.debug(f"var:{var}") avant les erreurs pour voir le contenu des variables...
Alright. Rien ne m’empêche d’essayer mais ma seule et unique expérience python autre que 2-3 tutos c’est ce projet-ci. Merci pour la réponse rapide!
Bonjour,
je viens de recevoir mon installation d'Hilo aujourd'hui. Je confirme avoir la même erreur:
Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/hilo/__init__.py", line 265, in on_websocket_event updated_devices = self.devices.parse_values_received(event.arguments[0]) File "/usr/local/lib/python3.10/site-packages/pyhilo/devices.py", line 42, in parse_values_received val.pop("attribute"), val.pop("valueType") KeyError: 'valueType'
Quelle version de HA roules-tu? Je me demande si la version de python n’est pas en cause. 3.10 est deprecated sur 2023.8
Je roule actuellement HA core 2023.5.4/Python 3.10.11
Je ne suis pas dev, mais selon l'erreur, il y a un problème avec la fonction qui "Parse" les valeurs retourné par hilo. Peut-être un changement de nom des attributs ou quelque chose du genre. Je vais "gosser" un peu, avec un peu de chance...
def parse_values_received(self, values: list[dict[str, Any]]) -> list[HiloDe vice]:
readings = []
for val in values:
val["device_attribute"] = self._api.dev_atts(
val.pop("attribute"), val.pop("valueType")
)
readings.append(DeviceReading(**val))
return self._map_readings_to_devices(readings)
Je roule actuellement HA core 2023.5.4/Python 3.10.11
Je ne suis pas dev, mais selon l'erreur, il y a un problème avec la fonction qui "Parse" les valeurs retourné par hilo. Peut-être un changement de nom des attributs ou quelque chose du genre. Je vais "gosser" un peu, avec un peu de chance...
def parse_values_received(self, values: list[dict[str, Any]]) -> list[HiloDe vice]: readings = [] for val in values: val["device_attribute"] = self._api.dev_atts( val.pop("attribute"), val.pop("valueType") ) readings.append(DeviceReading(**val)) return self._map_readings_to_devices(readings)
Pas un dev non plus, mais je zieutais dans ce coin-là aussi.
Merci de l'aide de tous!
Petit suivi avec le dernier update:
This error originated from a custom integration.
Logger: pyhilo
Source: custom_components/hilo/__init__.py:339
Integration: Hilo (documentation, issues)
First occurred: 7:09:48 PM (47 occurrences)
Last logged: 7:09:48 PM
Unknown device attribute supported_parameters_list: ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']
Unknown device attribute hilo_id: urn:hilo:philo:bc33acfffe2b042d:0
Unknown device attribute is_favorite: False
Unknown device attribute sdi: C0619A404FB7
Unknown device attribute last_status_time: {'value': None}
This error originated from a custom integration.
Logger: custom_components.hilo
Source: custom_components/hilo/__init__.py:391
Integration: Hilo (documentation, issues)
First occurred: 7:09:49 PM (6 occurrences)
Last logged: 7:10:51 PM
Failed to connect to websocket: Received invalid JSON
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/pyhilo/websocket.py", line 179, in _async_receive_json
data = json.loads(msg.data[:-1])
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/json/decoder.py", line 340, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 44 (char 43)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/config/custom_components/hilo/__init__.py", line 391, in start_websocket_loop
await self._api.websocket.async_listen()
File "/usr/local/lib/python3.11/site-packages/pyhilo/websocket.py", line 317, in async_listen
message = await self._async_receive_json()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyhilo/websocket.py", line 181, in _async_receive_json
raise InvalidMessageError("Received invalid JSON") from v_exc
pyhilo.exceptions.InvalidMessageError: Received invalid JSON
This error originated from a custom integration.
Logger: custom_components.hilo
Source: custom_components/hilo/__init__.py:293
Integration: Hilo (documentation, issues)
First occurred: 7:11:02 PM (1 occurrences)
Last logged: 7:11:02 PM
Unhandled websocket event: WebsocketEvent(event_type_id=1, target='DeviceListInitialValuesReceived', arguments=[[{'id': 454697, 'identifier': '0xC0619A4000004113-smart_meter', 'name': 'Meter00', 'type': 'Meter', 'category': 'Other', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'Power,ZigbeeChannel,LastUpdate,Disconnected', 'supportedAttributesList': ['Power', 'ZigbeeChannel', 'LastUpdate', 'Disconnected'], 'settableAttributes': 'Power', 'settableAttributesList': ['Power'], 'supportedParameters': '', 'supportedParametersList': []}, {'id': 454741, 'identifier': 'BC33ACFFFE2BABDD', 'name': 'Thermostat cuisine', 'type': 'Thermostat', 'groupId': 97869, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454744, 'identifier': 'BC33ACFFFE21C79A', 'name': 'Thermostat chambre des maîtres', 'type': 'Thermostat', 'groupId': 97870, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454747, 'identifier': '5C0272FFFE823394', 'name': 'Thermostat salle de bain', 'type': 'Thermostat', 'groupId': 97872, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454750, 'identifier': 'BC33ACFFFE296648', 'name': 'Thermostat chambre Mégane', 'type': 'Thermostat', 'groupId': 97871, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454756, 'identifier': 'BC33ACFFFE2BAD65', 'name': 'Thermostat salle de jeux', 'type': 'Thermostat', 'groupId': 97874, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454761, 'identifier': '5C0272FFFE8233C9', 'name': 'thermostat salle de bain en bas', 'type': 'Thermostat', 'groupId': 97873, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454764, 'identifier': 'BC33ACFFFE295E81', 'name': 'Thermostat bureau', 'type': 'Thermostat', 'groupId': 97875, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454766, 'identifier': 'BC33ACFFFE2B042D', 'name': 'Thermostat chambre invité', 'type': 'Thermostat', 'groupId': 97876, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}]], invocation=None, error=None, timestamp=datetime.datetime(2023, 8, 11, 19, 9, 46, 39141), event_type='INVOKE')
J'ai mis à jour l'intégration avec l'update d'hier [v2023.8.1] et tout fonctionne depuis. Merci pour votre travail, sans cette intégration, je n'aurais pas choisi Hilo.
Attention, je vois encore les erreurs mentionné hier dans les logs, mais tout semble fonctionner.
Python 3.11.4 Home Assistant core 2023.8.2
@nlz242 pourrait possiblement nous éclairer sur ces attributs?
Les appareils retournent plus d'attributs qu'avant, cependant ça ne devrait pas nuire à l'intégration HA. C'est normal que l'intégration fassent des warnings à ce sujet, mais pas des erreurs.
Les logs partagé ci-haut me laisse croire que l'intégration recoit du json invalide sur un message signalr... dans le passé j'ai vue ce comportement lorsqu'on tente de parse du JSON mais qu'en fait on a reçu du html (une page web d'erreur 404, ou 500 par exemple).
Il faudrait mettre un breakpoint sur le 'raise InvalidMessageError' et inspecter le message reçu (ou l'écrire dans un log). Mes 2 PR ( pythilo-hilo et https://github.com/dvd-dev/hilo/pull/272 ) nedevrait ni aider ni nuire...
@alexcailyer de ton côté tu confirmes qu'avec la derniere mise à jour, c'est ok?
On a graduellement passé les utilisateurs vers un nouveau mode de transmissions plus réactif, afin de diminuer la latence entre les interractions et le retour des informations via le cloud. Les nouveaux attributs viennent de la et on a maintenant 100% des utilisateurs sur ce mode. Les structures de données sont bonifiés mais rien n'a été retiré, afin de conserver la compatibilité avec plusieurs versions de l'app et HA, donc je serais surpris que le probleme vienne de la...
@nlz242 pourrait possiblement nous éclairer sur ces attributs?
Les appareils retournent plus d'attributs qu'avant, cependant ça ne devrait pas nuire à l'intégration HA. C'est normal que l'intégration fassent des warnings à ce sujet, mais pas des erreurs.
Les logs partagé ci-haut me laisse croire que l'intégration recoit du json invalide sur un message signalr... dans le passé j'ai vue ce comportement lorsqu'on tente de parse du JSON mais qu'en fait on a reçu du html (une page web d'erreur 404, ou 500 par exemple).
Il faudrait mettre un breakpoint sur le 'raise InvalidMessageError' et inspecter le message reçu (ou l'écrire dans un log). Mes 2 PR ( pythilo-hilo et #272 ) nedevrait ni aider ni nuire...
@alexcailyer de ton côté tu confirmes qu'avec la derniere mise à jour, c'est ok?
On a graduellement passé les utilisateurs vers un nouveau mode de transmissions plus réactif, afin de diminuer la latence entre les interractions et le retour des informations via le cloud. Les nouveaux attributs viennent de la et on a maintenant 100% des utilisateurs sur ce mode. Les structures de données sont bonifiés mais rien n'a été retiré, afin de conserver la compatibilité avec plusieurs versions de l'app et HA, donc je serais surpris que le probleme vienne de la...
Merci pour le retour. Toujours apprécié. Je suis tout sauf un dev alors je contribue au mieux de mes talents haha.
Étrange que j’ai exactement le même comportement que dans #259 , as-tu des pistes?
Merci pour le retour. Toujours apprécié. Je suis tout sauf un dev alors je contribue au mieux de mes talents haha.
Étrange que j’ai exactement le même comportement que dans #259 , as-tu des pistes?
J'ai lu en diagonale, mais de ce que je comprends... Quand on reboot l'intégration (soit l'OS, HA ou seulement l'intégration), ça prends du temps avant d'avoir des valeurs ? Si c'est ça, j'ai absolument une piste! Sur le SignalR, on publie plusieurs types de messages, incluant un message suite à la connexion avec les valeurs initial de tous les appareils... ce message n'est probablement pas traité par l'intégration HA... si c'est le cas, il faudrait "simplement" le traiter dans on_websocket_event de __init_py__.py
Je n'ai pas le nom du message sous la main... je ne suis pas sur mon ordi de travail... de mémoire le nom du message contient "Initial"... et je ne vois pas de "initial" dans le code mentionné ci-haut. Traiter ce message devrait être suffisant pour avoir les toutes les bonnes valeurs dès la connexion (et toutes reconnexions).
P.S. C'est bel et bien lié au Push vs Poll, avant l'intégration pollait et recevait 100% des devices+attributs+valeurs à chaque X secondes, au lieu d'avoir l'info globale une seule fois par connexion puis du différentiel.
Oui ça fonctionne, mais je confirme que les valeurs de température prennent du temps avant d’arriver suite à un reboot de HA. Je viens d’attendre 5 minutes et mon thermostat est toujours à 0 c dans HA.
Merci pour le retour. Toujours apprécié. Je suis tout sauf un dev alors je contribue au mieux de mes talents haha. Étrange que j’ai exactement le même comportement que dans #259 , as-tu des pistes?
J'ai lu en diagonale, mais de ce que je comprends... Quand on reboot l'intégration (soit l'OS, HA ou seulement l'intégration), ça prends du temps avant d'avoir des valeurs ? Si c'est ça, j'ai absolument une piste! Sur le SignalR, on publie plusieurs types de messages, incluant un message suite à la connexion avec les valeurs initial de tous les appareils... ce message n'est probablement pas traité par l'intégration HA... si c'est le cas, il faudrait "simplement" le traiter dans on_websocket_event de init_py.py
Je n'ai pas le nom du message sous la main... je ne suis pas sur mon ordi de travail... de mémoire le nom du message contient "Initial"... et je ne vois pas de "initial" dans le code mentionné ci-haut. Traiter ce message devrait être suffisant pour avoir les toutes les bonnes valeurs dès la connexion (et toutes reconnexions).
P.S. C'est bel et bien lié au Push vs Poll, avant l'intégration pollait et recevait 100% des devices+attributs+valeurs à chaque X secondes, au lieu d'avoir l'info globale une seule fois par connexion puis du différentiel.
Yes en gros le comportement c’est que j’ai ni le setpoint ni la température actuelle des thermostats tant qu’ils ne vivent pas un changement.
Si manuellement je vais sur chaque thermostat et que je change la consigne, je l’obtiens dans HA.
Si les thermostats vivent un changement de température ambiante, là je le reçois dans HA.
Le initial je le vois qu’il chie, fait partie du json? Regarde le dernier log que j’ai mis dans ce fil.
DeviceListInitialValuesReceived
This error originated from a custom integration.
Logger: custom_components.hilo
Source: custom_components/hilo/__init__.py:293
Integration: Hilo (documentation, issues)
First occurred: 7:11:02 PM (1 occurrences)
Last logged: 7:11:02 PM
Unhandled websocket event: WebsocketEvent(event_type_id=1, target='DeviceListInitialValuesReceived', arguments=[[{'id': 454697, 'identifier': '0xC0619A4000004113-smart_meter', 'name': 'Meter00', 'type': 'Meter', 'category': 'Other', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'Power,ZigbeeChannel,LastUpdate,Disconnected', 'supportedAttributesList': ['Power', 'ZigbeeChannel', 'LastUpdate', 'Disconnected'], 'settableAttributes': 'Power', 'settableAttributesList': ['Power'], 'supportedParameters': '', 'supportedParametersList': []}, {'id': 454741, 'identifier': 'BC33ACFFFE2BABDD', 'name': 'Thermostat cuisine', 'type': 'Thermostat', 'groupId': 97869, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454744, 'identifier': 'BC33ACFFFE21C79A', 'name': 'Thermostat chambre des maîtres', 'type': 'Thermostat', 'groupId': 97870, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454747, 'identifier': '5C0272FFFE823394', 'name': 'Thermostat salle de bain', 'type': 'Thermostat', 'groupId': 97872, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454750, 'identifier': 'BC33ACFFFE296648', 'name': 'Thermostat chambre Mégane', 'type': 'Thermostat', 'groupId': 97871, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454756, 'identifier': 'BC33ACFFFE2BAD65', 'name': 'Thermostat salle de jeux', 'type': 'Thermostat', 'groupId': 97874, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454761, 'identifier': '5C0272FFFE8233C9', 'name': 'thermostat salle de bain en bas', 'type': 'Thermostat', 'groupId': 97873, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454764, 'identifier': 'BC33ACFFFE295E81', 'name': 'Thermostat bureau', 'type': 'Thermostat', 'groupId': 97875, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}, {'id': 454766, 'identifier': 'BC33ACFFFE2B042D', 'name': 'Thermostat chambre invité', 'type': 'Thermostat', 'groupId': 97876, 'category': 'Heating', 'modelNumber': 'HT402', 'externalGroup': '', 'provider': 1, 'isFavorite': False, 'supportedAttributes': 'CurrentTemperature,TargetTemperature,Heating,Humidity,Power,DrmsState,MaxTempSetpoint,MinTempSetpoint,Disconnected,Version,ZigbeeVersion,Unpaired', 'supportedAttributesList': ['CurrentTemperature', 'TargetTemperature', 'Heating', 'Humidity', 'Power', 'DrmsState', 'MaxTempSetpoint', 'MinTempSetpoint', 'Disconnected', 'Version', 'ZigbeeVersion', 'Unpaired'], 'settableAttributes': 'TargetTemperature,GrapState', 'settableAttributesList': ['TargetTemperature', 'GrapState'], 'supportedParameters': 'MaxTempSetpoint,MinTempSetpoint,StateTemperatures,LoadConnected,LockKeypad,BackLight', 'supportedParametersList': ['MaxTempSetpoint', 'MinTempSetpoint', 'StateTemperatures', 'LoadConnected', 'LockKeypad', 'BackLight']}]], invocation=None, error=None, timestamp=datetime.datetime(2023, 8, 11, 19, 9, 46, 39141), event_type='INVOKE')
Update:
J'ai ajouté un:
#new#
elif event.target == "DeviceListInitialValuesReceived":
LOG.warning("Device List Initial values Received")
#end new#
Après le elif ici
Et clairement je passe dans ce bout-là de la boucle if au boot-up, voir log ci-bas:
This error originated from a custom integration.
Logger: custom_components.hilo
Source: custom_components/hilo/__init__.py:282
Integration: Hilo (documentation, issues)
First occurred: 2:27:04 PM (1 occurrences)
Last logged: 2:27:04 PM
Device List Initial values Received
J'ai plus de temps pour jouer avec aujourd'hui mais si quelqu'un a le gout de ramasser la balle au bon je pense que c'est dans ce coin-là qu'il faut regarder.
Edit: @valleedelisle, @julienld, @alexcailyer rendu-là je suis rendu au bout de mon talent. Il faut réussir à traiter l'event websocket comme il faut. J'ai éssayé avec :
updated_devices = self.devices.parse_values_received(event.arguments[0])
for device in updated_devices:
async_dispatcher_send(
self._hass, SIGNAL_UPDATE_ENTITY.format(device.id)
)
Mais ça ne fonctionne pas.
Si j'ai un peu de temps cette semaine je vais remettre le logging en fonction sur hilo et pyhilo, je vais faire updater le setpoint de mes thermostats à bras et voir comment c'est reçu et par où c'est traité, j'ai l'impression que je dois faire invoquer la même chose/quelque chose d'assez semblable avec "DeviceListInitialValuesReceived".
Si quelqu'un d'autre a le temps d'essayer d'ici là, gâtez-vous!
Expérience faite, résultats:
Changement de setpoint:
2023-08-15 20:09:04.786 DEBUG (MainThread) [pyhilo] [Thermostat thermostat salle de bain en bas (454761)] Received <Reading target_temperature 15.0°C>
Changement de température (demandez-moi pas comment j'ai fait, j'aurais honte de vous répondre).
2023-08-15 20:10:26.984 DEBUG (MainThread) [pyhilo] [Thermostat thermostat salle de bain en bas (454761)] Received <Reading current_temperature 28.5°C>
@valleedelisle, j'pas un kingpin, mais serait-ce possible que comme "DeviceListInitialValuesReceived" contient une brique d'info (voir fichier joint) InitialValuesReceived.txt
Le "self.devices.parse_values_received(event.arguments[0])
" ne peut pas fonctionner parce que:
@nlz242 Suis-je dans les patates avec mon interprétation du payload? Promis, je comprends vite quand on explique longtemps.
@ic-dev21 @valleedelisle , @julienld , @alexcailyer Salut les boys, bon je n'ai pas tant d'expérience dans Python, mais je suis un dev. J'ai debuggé le payload reçu ainsi que l'erreur et j'ai un fix temporaire. J'ai pas trop le temps de faire un pull request pour le momen (et j'ai pas testé tout les cas possible) mais l'erreur vient du fait que la clé valueType est manquante dans certains items de la list[HiloDevice] values dans la fonction parse_value_received.
Ce qui fait que ça crash.
Exemple:
{
"deviceId": xxxxx,
"locationId": xxxxx,
"timeStampUTC": "2023-08-18T21:10:35.9786702Z",
"attribute": "Disconnected",
"value": False,
},
comparement aux autres items valides
{
"deviceId": xxxxx,
"locationId": xxxxx,
"timeStampUTC": "2023-08-18T21:10:35.9786697Z",
"attribute": "Power",
"value": 2516.0,
"valueType": "Watt",
},
J'ai juste fait un quick fix dans le fichier /lib/python3.9/site-packages/pyhilo/devices.py pour pouvoir bypass l'erreur,
if val.get("valueType")== None:
val["valueType"]="OnOff"
def parse_values_received(self, values: list[dict[str, Any]]) -> list[HiloDevice]:
#LOG.debug(values)
readings = []
for val in values:
if val.get("valueType")== None:
val["valueType"]="OnOff"
val["device_attribute"] = self._api.dev_atts(
val.pop("attribute"), val.pop("valueType")
#val.pop("attribute"), val.pop("event_type_id")
)
readings.append(DeviceReading(**val))
return self._map_readings_to_devices(readings)
Par contre, est-ce que ça peut causer d'autre erreur ailleurs, peut-être. Je fake l'item qui n'a pas de valueType comme un OnOff mais dans le fond il faudrait surement le popper de la liste rendu là.
Bref voilà ma petite contribution du vendredi, cheers.
@ic-dev21 @valleedelisle , @julienld , @alexcailyer Salut les boys, bon je n'ai pas tant d'expérience dans Python, mais je suis un dev. J'ai debuggé le payload reçu ainsi que l'erreur et j'ai un fix temporaire. J'ai pas trop le temps de faire un pull request pour le momen (et j'ai pas testé tout les cas possible) mais l'erreur vient du fait que la clé valueType est manquante dans certains items de la list[HiloDevice] values dans la fonction parse_value_received.
Ce qui fait que ça crash.
Exemple:
{ "deviceId": xxxxx, "locationId": xxxxx, "timeStampUTC": "2023-08-18T21:10:35.9786702Z", "attribute": "Disconnected", "value": False, },
comparement aux autres items valides
{ "deviceId": xxxxx, "locationId": xxxxx, "timeStampUTC": "2023-08-18T21:10:35.9786697Z", "attribute": "Power", "value": 2516.0, "valueType": "Watt", },
J'ai juste fait un quick fix dans le fichier /lib/python3.9/site-packages/pyhilo/devices.py pour pouvoir bypass l'erreur,
if val.get("valueType")== None: val["valueType"]="OnOff"
def parse_values_received(self, values: list[dict[str, Any]]) -> list[HiloDevice]: #LOG.debug(values) readings = [] for val in values: if val.get("valueType")== None: val["valueType"]="OnOff" val["device_attribute"] = self._api.dev_atts( val.pop("attribute"), val.pop("valueType") #val.pop("attribute"), val.pop("event_type_id") ) readings.append(DeviceReading(**val)) return self._map_readings_to_devices(readings)
Par contre, est-ce que ça peut causer d'autre erreur ailleurs, peut-être. Je fake l'item qui n'a pas de valueType comme un OnOff mais dans le fond il faudrait surement le popper de la liste rendu là.
Bref voilà ma petite contribution du vendredi, cheers.
Merci, je suis zéro un dev donc pardonne mes questions possiblement stupide. Ça “règle” le task exception pour le ValueType mais ça ne fait rien pour les valeurs qui n’apparaissent pas au départ du websocket, right?
@ic-dev21 Moi ce bug la empêchait 100% des données de se récupérer. Donc, je n'avais aucun retour de donnée, aucun statut de switch, aucun degrés pour mes thermostats. J'activais une switch ça se décochait instantanément. Mes thermostats était tous à zéro. Donc, je ne suis pas sur, c'était quoi ton bug, mais si tous tes thermostats était à zéro, essaye ça lol.
@ic-dev21 Moi ce bug la empêchait 100% des données de se récupérer. Donc, je n'avais aucun retour de donnée, aucun statut de switch, aucun degrés pour mes thermostats. J'activais une switch ça se décochait instantanément. Mes thermostats était tous à zéro. Donc, je ne suis pas sur, c'était quoi ton bug, mais si tous tes thermostats était à zéro, essaye ça lol.
Mes switch sont sur zigbee2mqtt.
Pour ce qui est du comportement: Mes thermostats affichent 0 autant en température qu’en setpoint tant qu’il n’y a pas de changement après redémarrage de HA. Dès que ça varie ca se popule tranquillement pas vite. En dedans de quelques heures tout revient.
Ces infos là ne se retrouvent pas du tout dans le premier message websocket reçu de ce que je vois (y’a une pièce jointe plus haut si tu veux le log). C’est plus ça que je tentais de débugger au départ.
Tu peux faire le test sans ton fix. Repars HA et chauffe un peu un thermostat avec un séchoir exemple. Il va s’afficher rapidement. Change le setpoint et il rentre vite aussi.
Même chose pour un état de lumière sûrement. Flip une switch et tu dois la voir apparaître à partir de ce moment-là.
J’ai fait un PR semaine dernière qui élimine quelques warning du log mais ça règle pas tout malheureusement et je suis pas full hot en python/prog en général, c’est juste un hobby que je fais pour le fun.
@ic-dev21 Mmm, ben avec mon fix la, tout load dés le restart de HA. As-tu essayé voir ?
Salut tout le monde! Désolé, j'suis un peu busy ces temps-ci et j'manque de temps. J'peux même pas tester car, pour une raison obscure, ma passerelle hilo semble avoir perdu contact avec mes devices. Je vais devoir me mettre là dessus éventuellement. Par contre, j'vous fais 100% confiance alors si vous me dites qu'un fix fonctionne, je vais le merger et le release.
Merci à vous tous pour votre implication!
Salut tout le monde! Désolé, j'suis un peu busy ces temps-ci et j'manque de temps. J'peux même pas tester car, pour une raison obscure, ma passerelle hilo semble avoir perdu contact avec mes devices. Je vais devoir me mettre là dessus éventuellement. Par contre, j'vous fais 100% confiance alors si vous me dites qu'un fix fonctionne, je vais le merger et le release.
Merci à vous tous pour votre implication!
Workin' on it.
Le fix de @stetsonandblack fonctionne à première vue. J'ai encore des warning pour le deviceinitialvaluesreceived car je n'ai pas trouvé moyen de bien le gérer encore.
Je suis pas assez ferré pour ajouter un string dans tes datatypes, mais le hilo_id va rester en warning tant que c'est pas fait.
Je vais essayer de te faire un/des PR bientôt.
J'ai aussi des problèmes avec l'app Hilo Android en ce moment. Les états des thermostat datent de hier au moins dans l'app officielle. Donc vérifiez votre app Hilo avant de faire des tests!
Je viens de vérifier les mesures de température de mes thermostats dans l'app officiel et moi c'est 100% accurate.
Dans la fonction parse_values_received, on tente de la retirer avec la méthode pop sans valider si ValueType existe. Je viens de lire qu'on peut ajouter un 2e argument à la méthode pop qui au lieu de retourner une "KeyError", va retourner la valeur entrée.
val.pop("valueType") ==> val.pop("valueType", None)
Si ça fonctionne, ça serait peut-être un peu plus propre que d'inventer une nouvelle valeur pour la retirer par la suite, même si le résultat sera le même...
https://stackabuse.com/python-how-to-remove-a-key-from-a-dictionary/
Ça n'a pas rapport, mais test.py ça m'a l'air brisé. Hilo n'est jamais déclaré... Est-ce que c'était avant SignalR? J'essaie de monter un environnement test pour ne pas briser mon instance HA. from pyhilo import API, Hilo
Je viens de vérifier les mesures de température de mes thermostats dans l'app officiel et moi c'est 100% accurate.
Dans la fonction parse_values_received, on tente de la retirer avec la méthode pop sans valider si ValueType existe. Je viens de lire qu'on peut ajouter un 2e argument à la méthode pop qui au lieu de retourner une "KeyError", va retourner la valeur entrée.
val.pop("valueType") ==> val.pop("valueType", None)
Si ça fonctionne, ça serait peut-être un peu plus propre que d'inventer une nouvelle valeur pour la retirer par la suite, même si le résultat sera le même...
https://stackabuse.com/python-how-to-remove-a-key-from-a-dictionary/
Ça n'a pas rapport, mais test.py ça m'a l'air brisé. Hilo n'est jamais déclaré... Est-ce que c'était avant SignalR? J'essaie de monter un environnement test pour ne pas briser mon instance HA. from pyhilo import API, Hilo
Je confirme, tout est spot-on côté valeurs ici aussi sous iOS.
J'ai du temps aujourd'hui (blonde travaille et enfant chez mamie, wouhou!) si ton environnement de test te fait trop chier je peux l'essayer ici en local.
@alexcailyer Mon fix est surement pas la meilleur chose a merger tel quel, moi en gros je testais des affaires pour que sa fonctionne et j'ai juste posté la première chose qui fonctionnait car je travaillais en même temps lol. Donc oui le deuxième argument pour pop serait plus clean. Moi je n'ais pas oser balancer une valeur None dans la nouvelle propriété device_attribute, je me disais que ca peterais p-e plus loin.Je n'ai pas regardé ce qui se passe après dans
readings.append(DeviceReading(**val))
return self._map_readings_to_devices(readings)
Je viens de l'essayer live @alexcailyer , fonctionne.
@valleedelisle PR prête
Good job guys! Désolé de pas être plus disponible, je suis à l'extérieur en vacances.
Le dim. 20 août 2023, 19 h 30, Ian C. @.***> a écrit :
@valleedelisle https://github.com/valleedelisle PR prête
— Reply to this email directly, view it on GitHub https://github.com/dvd-dev/hilo/issues/274#issuecomment-1685424984, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAZNVCJHXKOROSGQDWQS56DXWKMZFANCNFSM6AAAAAA3FI2PWU . You are receiving this because you were mentioned.Message ID: @.***>
@valleedelisle PR prête
J'aimerais essayer ta PR par contre je ne trouve pas ou appliquer les modifications manuellement dans pyhilo (vu que c'est un package) dans HomeAssistant. Quand je vais dans mon Studio Code sur HA, dans /lib/Pyhon3.11/ je n'ai rien qui réfère à pyhilo
@valleedelisle PR prête
J'aimerais essayer ta PR par contre je ne trouve pas ou appliquer les modifications manuellement dans pyhilo (vu que c'est un package) dans HomeAssistant. Quand je vais dans mon Studio Code sur HA, dans /lib/Pyhon3.11/ je n'ai rien qui réfère à pyhilo
Salut, je roule sous docker. Je vais dans le terminal de docker et avec
pip install -e git+https://github.com/ic-dev21/python-hilo.git#egg=python-hilo
J’installe mon fork.
@valleedelisle PR prête
J'aimerais essayer ta PR par contre je ne trouve pas ou appliquer les modifications manuellement dans pyhilo (vu que c'est un package) dans HomeAssistant. Quand je vais dans mon Studio Code sur HA, dans /lib/Pyhon3.11/ je n'ai rien qui réfère à pyhilo
Salut, je roule sous docker. Je vais dans le terminal de docker et avec
pip install -e git+https://github.com/ic-dev21/python-hilo.git#egg=python-hilo
J’installe mon fork.
Ah ok ouin, je suis sur HA OS pi je viens de voir que c'est pas mal plus compliqué pour tester des packages de dépendences. Demain je vais peut-être avoir le temps de setup ça
Je viens de tout merger et releaser
Ceux qui le peuvent, pouvez-vous updater Hilo et nous donner des news?
J’essaie ça en revenant de la job.
Le mar. 22 août 2023 à 17:54, Ian C. @.***> a écrit :
Ceux qui le peuvent, pouvez-vous updater Hilo et nous donner des news?
— Reply to this email directly, view it on GitHub https://github.com/dvd-dev/hilo/issues/274#issuecomment-1688981026, or unsubscribe https://github.com/notifications/unsubscribe-auth/AK4537TTWP2CVOZM2FCT5DDXWUTCFANCNFSM6AAAAAA3FI2PWU . You are receiving this because you were mentioned.Message ID: @.***>
J'ai fait l'update sur mon raspberry HAOS et sur Docker et rien n'a changé 🤔
Je vais essayé de regarder les log pour voir si il y a de quoi de différents d'avant.
J’ai fait lupdate sur mon Proxmox avec HAPS et tout fonctionne parfaitement!
Malheuresement je viens de faire l'update et j'ai toujours 0⁰ comme données sur tout les thermostat et ainsi que 0w pour le compteur électrique plusieurs code d'erreur dans mon log je vais essayer de verifier si je peux trouve de quoi 😮💨
Ca fonctionne pour moi! Peut être tu peut juste commercer avec la dernière étape pour éviter un reinstall, ça c’est que j’ai fais:
effacer l’intégration et le repo hacs. File editor > effacer hilo_state.yaml Reboot HA Va dans Développer Tools > statistics et « fix issue » pour tout hilo. Ca va effacer les vieux sensors. Reboot HA rajoute repo hacs et integration Hilo. Fait ton configuration. Attends 5 minute et reboot HA
important reboot ton gateway hilo dans l’appli iOS our Android. Après que j’ai fait ça, les donnes sont apparu
Sent from Outlook for iOShttps://aka.ms/o0ukef
From: Sonoflex3 @.> Sent: Tuesday, August 22, 2023 6:53:55 PM To: dvd-dev/hilo @.> Cc: maxiemusic @.>; Comment @.> Subject: Re: [dvd-dev/hilo] Pas de données pour tous les capteur de température des thermostats et du compteur électrique (Issue #274)
Reopened #274https://github.com/dvd-dev/hilo/issues/274.
— Reply to this email directly, view it on GitHubhttps://github.com/dvd-dev/hilo/issues/274#event-10163785861, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AV363M2ZM6EQFRSGKCKJ4S3XWU2AHANCNFSM6AAAAAA3FI2PWU. You are receiving this because you commented.Message ID: @.***>
Câline y’a quelque chose qui doit nous échapper, de mon côté ça marche tempête
Pour ma part, ça fonctionne. Les valeurs sont disponible dès le démarrage de Home Assistant Core après l'update.
J'ai tout de même vérifier les logs et parmi quelques avertissements, j'avais une erreur pour le sensor hilo_energy_total. Cependant, il semble OK... Possiblement que ça se produit seulement au démarrage. Je vais surveiller...
Merci et bonne soirée messieurs!
Error while setting up utility_meter platform for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 362, in _async_setup_platform
await asyncio.shield(task)
File "/usr/src/homeassistant/homeassistant/components/utility_meter/sensor.py", line 232, in async_setup_platform
conf_meter_source = hass.data[DATA_UTILITY][meter][CONF_SOURCE_SENSOR]
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
KeyError: 'hilo_energy_total'
De mon côté, j'ai toujours pas de données sur chacun de mes thermostats, et rien du tout sur mon énergie totale, les 2 dernières versions n'ont rien changé (même après avoir désinstallé et réinstallé l'intégration) J'ai quand même un log:
Traceback (most recent call last):
File "/config/custom_components/hilo/__init__.py", line 265, in on_websocket_event
updated_devices = self.devices.parse_values_received(event.arguments[0])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyhilo/devices.py", line 44, in parse_values_received
readings.append(DeviceReading(**val))
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyhilo/device/__init__.py", line 226, in __init__
if self.device_attribute and self.device_attribute.value_type != "boolean"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'value_type'
Je viens de comprendre un truc, la méthode pop() permet bien de retirer du dictionary "val", la clé valueType, mais retourne aussi sa valeur. Comme ils sont utilisés pour les deux arguments de la fonction dev_atts(), je suppose qu'avant valueType retournait toujours quelque chose quitte à retourner un str "null", mais que maintenant ça arrive que la clé n'est pas présente ce qui nous causait la KeyError.
En regardant les classes DeviceReading et puis ensuite DeviceAttribute, on retrouve des if,else statement qui indique:
if self.hilo_value_type in ("null", "OnOff"):
value = "boolean"
else:
value = HILO_UNIT_CONVERSION.get(
self.hilo_value_type, camel_to_snake(self.hilo_value_type)
)
On forçait la valeur "boolean" à value_type quand hilo retournait notre str "null" ou "OnOff" dans valueType ou bien on regardait notre constante HILO_UNIT_CONVERSION qui n'a aucune entrée quand la valeur est nulle (None).
Je crois que dans ce cas là, on pourrait retourner le str "null" lorsque valueType n'est pas présent dans val pour que la classe DeviceAttribute puisse forcer la valeur str "boolean.
Je viens de faire le changement dans mon instance HA core et c'est toujours fonctionnel pour moi. J'ai tout de même du mal à comprendre pourquoi ça fonctionne pour certains et pas pour d'autres, mais l'erreur de @Eradash semble être causé par notre None.
def parse_values_received(self, values: list[dict[str, Any]]) -> list[HiloDevice]:
readings = []
for val in values:
val["device_attribute"] = self._api.dev_atts(
val.pop("attribute"), val.pop("valueType", "null")
)
readings.append(DeviceReading(**val))
return self._map_readings_to_devices(readings)