Intégration Voltalis

Bonjour à toutes et tous,

tout d’abord merci à vous pour cette intégration et tout le travail !
J’aimerai simplement savoir si il est possible de modifier la température cible dans HA en fonction du mode sélectionné ?
Exemple: Mode éco → 15.5°
Dans mon cas la temperature cible reste celle gardée en mémoire et si je modifie la T° cible le mode passe en Maison. Je souhaite savoir si il est possible que la température cible soit « liée » au mode ?

Merci d’avance et bon continuation :slight_smile:

Hello, l intégration est top, merci . Seul souci pour moi, les infos de Temperature sont donnés en Farenheint, je ne trouve pas comment les avoir en Celsius??

Je voudrais bien en savoir plus… Tu as une config a nous montrer? un retour d’expérience.

Regarde dans les liens que j’ai mis et dans le topic dédié : Nouveau thermostat type proportionnel avec gestion des presets / portes et fenêtres / détection de mouvement / gestion de présence et surconsommation - #1905 par Kant1

Merci beaucoup pour cette intégration que je ne pouvais pas faire avec Jeedom. Je viens de migrer vers Home Assistant et suis tombé avec bonheur sur votre travail.
J’ai une dizaine de radiateurs connectés à la solution Voltalis (dont 3 de type grille-pains) + 1 ballon d’eau chaude et 2 sèche serviettes.
L’intégration s’est bien passée dans mon Home Assistant. Cependant, dans le sens HA->Voltalis, j’ai des erreurs lorsque je modifie les modes ou les consignes de température : Echec de l'exécution de l'action climate/set_temperature. 'ECOV'
Avez-vous une idée de ce qui peut dysfonctionner ?

Voici le détail des messages d’erreur :

Détails du journal (ERREUR)
Cette erreur provient d'une intégration personnalisée
Enregistreur: homeassistant
Source: custom_components/voltalis/climate.py:154
intégration: voltalis (documentation, problèmes)
S'est produit pour la première fois: 12 novembre 2024 à 21:21:31 (1203 occurrences)
Dernier enregistrement: 18:39:42

Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 266, in _handle_refresh_interval
    await self._async_refresh(log_failures=True, scheduled=True)
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 481, in _async_refresh
    self.async_update_listeners()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 176, in async_update_listeners
    update_callback()
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 561, in _handle_coordinator_update
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1007, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1132, in _async_write_ha_state
    self.__async_calculate_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1071, in __async_calculate_state
    if state_attributes := self.state_attributes:
                           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 324, in __getattribute__
    return super().__getattribute__(__name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 562, in state_attributes
    data[ATTR_PRESET_MODE] = self.preset_mode
                             ^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 324, in __getattribute__
    return super().__getattribute__(__name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/voltalis/climate.py", line 154, in preset_mode
    return HA_PRESET_MODES[self.appliance.programming.mode]
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 'ECOV'

Cette erreur peut correspondre à l’utilisation d’un mode non prévu.
Les modes actuellement prévus dans VOLTALIS et HA sont les suivants :

VOLTALIS_PRESET_MODES = {
    PRESET_ECO: "ECO",
    PRESET_COMFORT: "CONFORT",
    PRESET_HOME: "TEMPERATURE",
    PRESET_AWAY: "HORS_GEL",
    PRESET_NONE: "NORMAL"
}

HA_PRESET_MODES = {
    "ECO": PRESET_ECO,
    "NORMAL": PRESET_NONE ,
    "CONFORT": PRESET_COMFORT,
    "TEMPERATURE": PRESET_HOME,
    "HORS_GEL": PRESET_AWAY,
}

Les modes HA étant mappés sur les modes VOLTALIS

Essaye peut être de regarder de ce côté …

1 « J'aime »

Hello @Remy_JACOB ,

Y a rien de Versatile la dedans. Peut être un post dans le github de Voltatis. Il ne comprend pas le preset ‹ ECOV › mais jamais Vtherm n’envoie ECOV en preset mais que des temperature de consigne. Donc je ne sais pas trop d’ou ca vient.

Exactement, ce ECOV me laisse penser que tu as fais une erreur de syntaxe quelque-part.
Est-ce quu tu envoie un changement de preset ton device Voltalis à un moment. Si oui, c’est là qu’il faut regarder

Salut !
Deux questions :
Avez vous une carte sympa pour l’affichage des informations Volatlis (les programmes, les radiateurs ont peu d’importance) ?
Est-ce normal que mon programme ‹ Normal › oscille entre allumé et indisponible ?

Normal a été allumé
09:27:44 - Il y a 3 heures
Normal est devenu indisponible
09:26:41 - Il y a 3 heures
Normal a été allumé
09:18:05 - Il y a 3 heures
Normal est devenu indisponible
09:17:02 - Il y a 3 heures
Normal a été allumé
09:15:52 - Il y a 3 heures
Normal est devenu indisponible
09:14:49 - Il y a 3 heures
Normal a été allumé
09:13:40 - Il y a 3 heures
Normal est devenu indisponible
09:11:20 - Il y a 3 heures
Normal a été allumé
09:09:05 - Il y a 3 heures
Normal est devenu indisponible
09:08:02 - Il y a 3 heures
Normal a été allumé
09:04:43 - Il y a 3 heures
Normal est devenu indisponible
09:02:30 - Il y a 3 heures
Normal a été allumé
08:58:07 - Il y a 3 heures
Normal est devenu indisponible
08:57:04 - Il y a 3 heures
Normal a été allumé
08:53:41 - Il y a 3 heures
Normal est devenu indisponible
08:52:31 - Il y a 3 heures
Normal a été allumé
08:47:07 - Il y a 4 heures
Normal est devenu indisponible
08:46:04 - Il y a 4 heures
Normal a été allumé
08:44:54 - Il y a 4 heures
Normal est devenu indisponible
08:42:37 - Il y a 4 heures
Normal a été allumé
08:41:27 - Il y a 4 heures
Normal est devenu indisponible
08:38:01 - Il y a 4 heures
Normal a été allumé
08:32:33 - Il y a 4 heures
Normal est devenu indisponible
08:29:10 - Il y a 4 heures
Normal a été allumé
08:28:00 - Il y a 4 heures
Normal est devenu indisponible
08:26:56 - Il y a 4 heures
Normal a été allumé
08:24:43 - Il y a 4 heures
Normal est devenu indisponible
08:22:30 - Il y a 4 heures

etc

Bonjour,

Après avoir en vain recherché ce qui pouvait envoyer un preset égal à ECOV, j’ai modifié le code de climate.py comme suit (à partir de la ligne 151) :

@property
    def preset_mode(self) -> str:
        """Return the current preset mode."""
        if self.appliance.programming.mode == "ECOV":
            return "ECO"
        else:
            return HA_PRESET_MODES[self.appliance.programming.mode]

Et là, tout fonctionne bien !

1 « J'aime »

A tout hasard, tu n’as que des chauffages sur Voltalis ? pas de chauffe-eau ou autres ?

J’ai un ballon d’eau chaude connecté à Voltalis mais il ne remonte pas bien dans HA. L’entité est water_heater.ballon_eau_chaude_none et l’état inconnu

Via les outils de développement j’ai

min_temp: 43.3
max_temp: 60
current_temperature: null
temperature: null
target_temp_high: null
target_temp_low: null
friendly_name: Ballon eau chaude None
supported_features: 0

Il est bien visible dans l’application Voltalis mais n’est pas pris en compte dans « Etat de mon dispositif » et donc dans le diagnostic disponible dans l’application Voltalis.

Si tu peux executer cette requete pour te logguer en remplacant {{email}} et {{password}} par tes identifiants Voltalis :

curl --location 'https://api.myvoltalis.com/auth/login' \
--header 'Content-Type: application/json' \
--data-raw '{
    "login": "mon@email.com",
    "password": "xxxxxxxxxxxxxxx"
}'

Dans le résultat tu récuperes la valeur du token que tu utilises alors dans cette requete :

curl --location 'https://api.myvoltalis.com/api/account/me' \
--header 'Authorization: Bearer xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx'

Tu récupéres la valeur de defaultSite.id dans le résultat, que tu utilises dans cette requete à la place de {{defaultSite.id}} et toujours avec le token :

curl --location 'https://api.myvoltalis.com/api/site/{{defaultSite.id}}/managed-appliance' \
--header 'Authorization: Bearer xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx'

Regarde si une appliance retourne la valeur ECOV dans les valeurs possibles de availableModes.

Par exemple pour un radiateur tu as ces valeurs :

[
    {
        "id": 1867293,
        "name": "salle à manger ",
        "applianceType": "HEATER",
        "modulatorType": "VX_WIRE",
        "availableModes": [
            "ECO",
            "CONFORT",
            "TEMPERATURE",
            "HORS_GEL"
        ],

Hello @Remy_JACOB

Tu es condamné a refaire ta modif à chaque mise à jour. Tu vas vite en avoir marre mais ca fait le job en attendant mieux je suppose.

Effectivement, les radiateurs grille-pains (Entrée, Cuisine, Bureau Karine) et les sèche-serviettes (Douche, Salle de bain étage) ont un mode égal à ECOV:

[
    {
        "id": 1466124,
        "name": "Salon droite",
        "applianceType": "HEATER",
        "modulatorType": "VX_WIRE",
        "availableModes": [
            "ECO",
            "CONFORT",
            "TEMPERATURE",
            "HORS_GEL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": true,
            "untilFurtherNotice": null,
            "mode": "ECO",
            "idPlanning": 114884,
            "endDate": null,
            "temperatureTarget": 19.0,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    },
    {
        "id": 1466213,
        "name": "Salon gauche",
        "applianceType": "HEATER",
        "modulatorType": "VX_WIRE",
        "availableModes": [
            "ECO",
            "CONFORT",
            "TEMPERATURE",
            "HORS_GEL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": true,
            "untilFurtherNotice": null,
            "mode": "ECO",
            "idPlanning": 114886,
            "endDate": null,
            "temperatureTarget": 19.0,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    },
    {
        "id": 1466237,
        "name": "Chambre Rémy et Karine",
        "applianceType": "HEATER",
        "modulatorType": "VX_WIRE",
        "availableModes": [
            "ECO",
            "CONFORT",
            "TEMPERATURE",
            "HORS_GEL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": true,
            "untilFurtherNotice": null,
            "mode": "ECO",
            "idPlanning": 114896,
            "endDate": null,
            "temperatureTarget": 17.0,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    },
    {
        "id": 1466267,
        "name": "Salle de jeu",
        "applianceType": "HEATER",
        "modulatorType": "VX_WIRE",
        "availableModes": [
            "ECO",
            "CONFORT",
            "TEMPERATURE",
            "HORS_GEL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": true,
            "untilFurtherNotice": null,
            "mode": "ECO",
            "idPlanning": 114880,
            "endDate": null,
            "temperatureTarget": 19.0,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    },
    {
        "id": 1466287,
        "name": "Bureau Rémy",
        "applianceType": "HEATER",
        "modulatorType": "VX_WIRE",
        "availableModes": [
            "ECO",
            "CONFORT",
            "TEMPERATURE",
            "HORS_GEL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": true,
            "untilFurtherNotice": null,
            "mode": "CONFORT",
            "idPlanning": 114887,
            "endDate": null,
            "temperatureTarget": 19.0,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    },
    {
        "id": 1477691,
        "name": "Entrée",
        "applianceType": "HEATER",
        "modulatorType": "VX_RELAY",
        "availableModes": [
            "TEMPERATURE",
            "ECOV",
            "NORMAL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": true,
            "untilFurtherNotice": null,
            "mode": "ECOV",
            "idPlanning": 114888,
            "endDate": null,
            "temperatureTarget": null,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    },
    {
        "id": 1477701,
        "name": "WC RDC",
        "applianceType": "HEATER",
        "modulatorType": "VX_RELAY",
        "availableModes": [
            "TEMPERATURE",
            "ECOV",
            "NORMAL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": true,
            "untilFurtherNotice": null,
            "mode": "TEMPERATURE",
            "idPlanning": 114889,
            "endDate": null,
            "temperatureTarget": 18.0,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    },
    {
        "id": 1477725,
        "name": "Ballon eau chaude",
        "applianceType": "WATER_HEATER",
        "modulatorType": "VX_RELAY",
        "availableModes": [
            "NORMAL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": true,
            "untilFurtherNotice": null,
            "mode": "NORMAL",
            "idPlanning": 114882,
            "endDate": null,
            "temperatureTarget": null,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    },
    {
        "id": 1477767,
        "name": "Cuisine",
        "applianceType": "HEATER",
        "modulatorType": "VX_RELAY",
        "availableModes": [
            "TEMPERATURE",
            "ECOV",
            "NORMAL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": true,
            "untilFurtherNotice": null,
            "mode": "TEMPERATURE",
            "idPlanning": 114891,
            "endDate": null,
            "temperatureTarget": 19.0,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    },
    {
        "id": 1477823,
        "name": "Bureau Karine",
        "applianceType": "HEATER",
        "modulatorType": "VX_RELAY",
        "availableModes": [
            "TEMPERATURE",
            "ECOV",
            "NORMAL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": true,
            "untilFurtherNotice": null,
            "mode": "NORMAL",
            "idPlanning": 114893,
            "endDate": null,
            "temperatureTarget": 19.0,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    },
    {
        "id": 1477860,
        "name": "Salle de bain étage",
        "applianceType": "HEATER",
        "modulatorType": "VX_RELAY",
        "availableModes": [
            "TEMPERATURE",
            "ECOV",
            "NORMAL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": false,
            "untilFurtherNotice": null,
            "mode": "NORMAL",
            "idPlanning": 114883,
            "endDate": null,
            "temperatureTarget": null,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    },
    {
        "id": 1477902,
        "name": "Douche",
        "applianceType": "HEATER",
        "modulatorType": "VX_RELAY",
        "availableModes": [
            "TEMPERATURE",
            "ECOV",
            "NORMAL"
        ],
        "voltalisVersion": "Vx",
        "programming": {
            "progType": "USER",
            "progName": "Semaine normale",
            "idManualSetting": null,
            "isOn": false,
            "untilFurtherNotice": null,
            "mode": "NORMAL",
            "idPlanning": 114894,
            "endDate": null,
            "temperatureTarget": 19.0,
            "defaultTemperature": 18.0
        },
        "heatingLevel": 2
    }
]

Bonjour

Prévoyez vous une correction du code afin de remonter les bons modes et de gérer correctement les équipements de type relais (radiateurs grille pain et ballon d’eau chaude) ?

Bonjour!
Les températures remontent bien sur mon HA, mais avec le bridge homekit j’ai toujours cette température fixée à 21 qui me fausse mes affichages, est-ce que c’est modifiable ?


Aussi, ce serait top de pouvoir gérer les programmes personnalisés, sans passer par l’app voltalis, ce serait dur à mettre en place?
merci!

Bonjour. Je suis nouveau sur Home Assistant et j’ai intégré tout ça. C’est génial pour avoir tout sur mon Dashboard.
Mais je n’arrive pas à avoir toutes les options mentionnés dans le fil de discussion.
Par exemple, je n’ai pas la possibilité du preset. J’ai que le mode auto, chauffage et OFF. Est- ce qu’il faut que je réalise des modifications en particulier?
Merci pour vos retours et encore merci pour cette intégration.

J’ai trouvé. C’est la mushroom card qui ne permet pas d’afficher les presets.
Je vais regarder les autres thèmes pour voir ce qui pourrait m’afficher tout cela avec moins de place.