claudegel / sinope-130

Neviweb130 custom component for Home Assistant to manage devices connected via a GT130 and wifi devices from Sinopé
GNU General Public License v3.0
73 stars 15 forks source link

Normalisation du nommage des attributs #244

Closed biereluc closed 3 months ago

biereluc commented 4 months ago

Problémaique

Le nommage des attributs n'est pas standard d'un device à un autre. Par exemple des attributs du RM3500ZB commencent par une majuscule et donc doivent être appellé dans les templates avec la case sensible. Par contre votre standard dans bien autres devices est de toujours mettre l'attribut en minuscule.

Exemple wattage_instant:

Avec le RM3500ZB, appeler wattage_instant en minuscule génère une erreur

{% states.switch.neviweb130_switch_chauffe_eau.attributes.wattage_instant %}

image

Il faut l'appeler avec le W majuscule :

{% states.switch.neviweb130_switch_device1.attributes.Wattage_instant %}

Mais il faut appeler avec un w minuscule avec un RM3200RF

{% set wattage = states.switch.neviweb_switch_device2.attributes.wattage_instant %}

Il devient difficile de faire des scripts qui appellent un même attribut qui se retrouve dans tous les appareils Neviweb peu importe les modèles. Comme par exemple wattage qui est en minuscule dans bien des appareils et en majuscule dans le RM3500ZB.

Votre norme générale

Votre standard de nommage général pour d'autre produit GT125 ou GT130 commence par des minuscules, sauf quelques attributs qui se sont peut-être glissés avec le temps dans des mises à jour, entre autre Activation.

Exemples

#  RM3200RF / GT125 (TOUT en minuscule)
operation_mode: manual
eco_status: none
rssi: 30
timer: 0
occupancy: home
away_mode: auto
keypad: unlocked
wattage: 0    #   <----- Exemple OK
wattage_instant: 0   #   <----- Exemple OK
hourly_kwh: 0
daily_kwh: 0
sku: RM3200RF
device_class: power
icon: mdi:pool
friendly_name: Device 2

# Versus un RM3500ZB / GT130 (Un peu aléatoire)
onOff: on
Wattage: 4335   #   <----- Exemple PAS STANDARD
Wattage_instant: 0   #   <----- Exemple PAS STANDARD
hourly_kwh_count: 5364.141
daily_kwh_count: 5363.141
monthly_kwh_count: 5205.669
hourly_kwh: 0.105
daily_kwh: 1.105
monthly_kwh: 158.577
Water_leak_status: ok    #   <----- 
Water_temperature: 49.75    #   <----- 
Cold_load_pickup_status: 1    #   <----- 
Cold_load_remaining_time: off    #   <----- 
Tank_size: 60 gal    #   <----- 
Temperature_status: null    #   <----- 
Stm_Mcu: null    #   <----- 
Thermal_overload: null    #   <----- 
Current_overload: null    #   <----- 
j2Connector: null
j3Connector: null
Line_error: null    #   <----- 
eco_status: off
eco_optOut: off
eco_onoff: off
eco_optout_reason: off
Water_temp_min: 45    #   <----- 
Water_time_on: 240    #   <----- 
Water_temp_time: 2    #   <----- 
Protection_Temperature: ok    #   <----- 
Protection_Consumption: ok    #   <----- 
Protection_consumption_overtime: ok    #   <----- 
Rssi: -64    #   <----- 
sku: RM3500ZB
device_model: 2151
device_model_cfg: 0
firmware: 0.3.3
Activation: true    #   <----- 
device_type: power
device_class: switch
icon: mdi:water-boiler
friendly_name: Device 1

Autres exemples plus standard

# TH1300ZB / GT130
hvac_modes: heat, off
min_temp: 5
max_temp: 30
preset_modes: away, none
current_temperature: 23.1
temperature: 22.5
hvac_action: idle
preset_mode: none
wattage: 2172
[...]
sku: TH1300ZB
device_model: 737
device_model_cfg: 0
firmware: 1.2.0
Activation: true    #   <----- 
id: 399292
unit_of_measurement: °C
device_class: temperature
friendly_name: Devide 4
supported_features: 401

# TH1300ZB / GT130
hvac_modes: heat, off
min_temp: 5
max_temp: 30
preset_modes: away, none
current_temperature: 23.1
temperature: 22.5
hvac_action: idle
preset_mode: none
wattage: 2172
[...]
sku: TH1300ZB
device_model: 737
device_model_cfg: 0
firmware: 1.2.0
Activation: true    #   <----- 
unit_of_measurement: °C
device_class: temperature
friendly_name: Device 3
supported_features: 401

De règle générale, les appareils et les attributs de plus utilisés sont toujours en minuscule dans vos définitions. J'ai trouvé toutefois quelques appareils où certains attributs sont en majuscule et minuscule (Pour les appareils que je possède), les voici :

Merci pour votre bon travail.

claudegel commented 4 months ago

Merci, ça fait un bout de temps que je me dis que je dois faire le ménage. les pointes sont finis alors le nettoyage du printemps s'impose. Si vous dites que les attributs commençant pas une majuscule sont problématique alors on va tout mettre en minuscule pour tous les custom_components. Ca va certainement causer quelques frustrations pour ceux qui ont déjà des automations avec un attribut en majuscule mais c'est logique de tout uniformiser. En plus je préparer une mise a jour qui risque de causer quelques breaking changes pour me conformer aux nouvelles exigence de HA. On va donc faire le gros ménage. merci,

claudegel commented 4 months ago

Il faudrait aussi, tant qu'à faire le ménage s'assurer que pour toutes les plateformes, GT130, Gt125 les noms des attributs soient les mêmes si possible. Je vais créer une nouvelle branche avec les modifications et si vous avez un peut de temps pour tester ça serait bien. je vous avise quand c'est disponible.

claudegel commented 4 months ago

Bon j'ai corrigé les noms et trouvé des doublons. https://github.com/claudegel/sinope-130/tree/attr-name

biereluc commented 4 months ago

J'ai copié les nouveaux fichiers de la branche dans ma config Home assistant et j'ai modifié mes scripts et automatisation avec les nouveaux attributs sans majuscule. Le tout semble bien fonctionner et je n'ai pas eu d'erreur pour le moment.

andguay commented 4 months ago

Bonjour, je suis nouveau sur Github et j'ai récemment installé sinope-130 sur Home Assistant. Dans le menu Settings / System / Logs / Load Full Logs j'ai ces erreurs. Est-ce relié ou un problème distinct ?

024-05-27 11:27:09.075 ERROR (MainThread) [homeassistant.helpers.entity_registry] 'sensor' from integration neviweb130 has a non string unique_id '440110', please report it to the author of the 'neviweb130' custom integration 2024-05-27 11:27:09.076 ERROR (MainThread) [homeassistant.helpers.entity_registry] 'light' from integration neviweb130 has a non string unique_id '488061', please report it to the author of the 'neviweb130' custom integration 2024-05-27 11:27:09.076 ERROR (MainThread) [homeassistant.helpers.entity_registry] 'climate' from integration neviweb130 has a non string unique_id '458820', please report it to the author of the 'neviweb130' custom integration 2024-05-27 11:27:09.076 ERROR (MainThread) [homeassistant.helpers.entity_registry] 'switch' from integration neviweb130 has a non string unique_id '491980', please report it to the author of the 'neviweb130' custom integration 2024-05-27 11:27:09.076 ERROR (MainThread) [homeassistant.helpers.entity_registry] 'light' from integration neviweb130 has a non string unique_id '488058', please report it to the author of the 'neviweb130' custom integration 2024-05-27 11:27:09.076 ERROR (MainThread) [homeassistant.helpers.entity_registry] 'light' from integration neviweb130 has a non string unique_id '488031', please report it to the author of the 'neviweb130' custom integration 2024-05-27 11:27:09.076 ERROR (MainThread) [homeassistant.helpers.entity_registry] 'switch' from integration neviweb130 has a non string unique_id '458832', please report it to the author of the 'neviweb130' custom integration 2024-05-27 11:27:09.077 ERROR (MainThread) [homeassistant.helpers.entity_registry] 'climate' from integration neviweb130 has a non string unique_id '458822', please report it to the author of the 'neviweb130' custom integration 2024-05-27 11:27:09.077 ERROR (MainThread) [homeassistant.helpers.entity_registry] 'switch' from integration neviweb130 has a non string unique_id '440113', please report it to the author of the 'neviweb130' custom integration 2024-05-27 11:27:09.077 ERROR (MainThread) [homeassistant.helpers.entity_registry] 'switch' from integration neviweb130 has a non string unique_id '491236', please report it to the author of the 'neviweb130' custom integration 2024-05-27 11:27:09.077 ERROR (MainThread) [homeassistant.helpers.entity_registry] 'climate' from integration neviweb130 has a non string unique_id

Note : Ça ne semble pas causer de problème pour l'instant mais pourrait changer lors d'une mise à jour de HA.

claudegel commented 4 months ago

En fait ce n'est pas une erreur mais un warning. HA demande que les appareils aient un unique_id alphanumérique alors que Néviweb fournit un unique_id numérique. Pour l'instant ça donne juste un warning au début des log mais je travail a corriger le tout dès que possible. Malheureusement HA inscrit les entités dans un fichier core.entity_registry et avant de convertir les unique_id en alphanumérique, ce qui est facile, il faut que je trouve une façon de corriger les unique_id dans ce fichier. Sinon on va doubler tous les appareils. Mais on a encore beaucoup de temps... jusqu'en 2025

andguay commented 4 months ago

En fait ce n'est pas une erreur mais un warning. HA demande que les appareils aient un unique_id alphanumérique alors que Néviweb fournit un unique_id numérique. Pour l'instant ça donne juste un warning au début des log mais je travail a corriger le tout dès que possible. Malheureusement HA inscrit les entités dans un fichier core.entity_registry et avant de convertir les unique_id en alphanumérique, ce qui est facile, il faut que je trouve une façon de corriger les unique_id dans ce fichier. Sinon on va doubler tous les appareils. Mais on a encore beaucoup de temps... jusqu'en 2025

Merci pour le retour rapide.