Créer un sensor simple qui ne dépend de rien et ne se remet pas à zéro à chaque relance

J’utilise une commande Rest pour qu’un script Python envoie des données dans le sensor sensor.wallbox_sessions_de_charge:

rest_command:
  send_data_to_api:
    url: 'http://homeassistant.local:8123/api/states/sensor.wallbox_sessions_de_charge'
    method: 'post'
    content_type: 'application/json'
    headers:
      Authorization: 'Bearer ggggggggggggggggjjjjjjjjjjjjjjjjj'  # Remplacez {{ token }} par votre token
    payload: '{{ data | tojson }}'

Cela fonctionne très bien, mais ma difficulté est ce sensor sensor.wallbox_sessions_de_charge, je ne sais pas vraiment comment le créer, où l’enregistrer.

Si je fais un template, il repart à zéro à chaque relance.
Je n’ai pas trouvé de ‹ plateforme › qui permette de créer un sensor simple qui ne se remet pas à zéro à chaque relance.

Merci si vous avez une idée, une semaine que je cherche…

ton sensor doit afficher un resultat numerique ou alphanumerique ou autre ?

Avec les input_* Integrations - Home Assistant ?
Tu le crées (en texte ou en nombre). Tu as une valeur initiale et ensuite, tu peux le modifier via l’API.

mon sensor a une valeur dont je me moque puis il a des infos en attributs.

En json, ça ressemble à ça :

    data =  {
            "state": "on",
                "attributes": {
                  "updated_at": "14/10/2023 16:42:39",
                  "sessionscharge": [
                    {
                      "consommation": 2.14,
                      "coût": 0.43,
                      "durée": "00:27",
                      "début": "19/09/2023 20:36",
                      "fin": "21:03",
                      "km": 17,
                      "saved_at": 1695150359
                    },
                    {
                      "consommation": 23.29,
                      "coût": 4.66,
                      "durée": "04:19",
                      "début": "21/09/2023 21:06",
                      "fin": "01:25",
                      "km": 192,
                      "saved_at": 1695323159
                    },
                    {
                      "consommation": 7.68,
                      "coût": 1.54,
                      "durée": "01:23",
                      "début": "22/09/2023 08:45",
                      "fin": "10:08",
                      "km": 63,
                      "saved_at": 1695409559
                    },
                    {
                      "consommation": 23.80,
                      "coût": 4.76,
                      "durée": "04:26",
                      "début": "23/09/2023 16:57",
                      "fin": "21:23",
                      "km": 196,
                      "saved_at": 1695495959
                    },
                    {
                      "consommation": 23.64,
                      "coût": 4.73,
                      "durée": "04:05",
                      "début": "26/09/2023 20:59",
                      "fin": "01:04",
                      "km": 195,
                      "saved_at": 1695755159
                    },
                    {
                      "consommation": 24.04,
                      "coût": 4.81,
                      "durée": "05:17",
                      "début": "28/09/2023 21:21",
                      "fin": "02:38",
                      "km": 198,
                      "saved_at": 1695927959
                    },
                    {
                      "consommation": 17.30,
                      "coût": 3.46,
                      "durée": "03:51",
                      "début": "30/09/2023 21:31",
                      "fin": "01:22",
                      "km": 143,
                      "saved_at": 1696100759
                    },
                    {
                      "consommation": 22.18,
                      "coût": 4.44,
                      "durée": "04:25",
                      "début": "03/10/2023 20:43",
                      "fin": "01:08",
                      "km": 183,
                      "saved_at": 1696359959
                    },
                    {
                      "consommation": 23.86,
                      "coût": 4.77,
                      "durée": "05:26",
                      "début": "05/10/2023 21:03",
                      "fin": "02:29",
                      "km": 197,
                      "saved_at": 1696532759
                    },
                    {
                      "consommation": 23.43,
                      "coût": 4.69,
                      "durée": "05:07",
                      "début": "07/10/2023 20:34",
                      "fin": "01:41",
                      "km": 193,
                      "saved_at": 1696705559
                    },
                    {
                      "consommation": 23.32,
                      "coût": 4.66,
                      "durée": "04:40",
                      "début": "10/10/2023 20:57",
                      "fin": "04:40",
                      "km": 192,
                      "saved_at": 1696964759
                    },
                    {
                      "consommation": 25.19,
                      "coût": 5.04,
                      "durée": "04:39",
                      "début": "12/10/2023 19:53",
                      "fin": "00:32",
                      "km": 208,
                      "saved_at": 1697137559
                    },
                    {
                      "consommation": 8.61,
                      "coût": 1.72,
                      "durée": "01:32",
                      "début": "13/10/2023 21:05",
                      "fin": "22:37",
                      "km": 71,
                      "saved_at": 1697223959
                    },
                    {
                      "consommation": 27.76,
                      "coût": 5.55,
                      "durée": "04:46",
                      "début": "16/10/2023 02:11",
                      "fin": "06:57",
                      "km": 231,
                      "saved_at": 1697474976
                    }                        
                   ]
                }
            }

oui, j’y avais pensé mais comme j’ai des attributs qui sont mes données, je peux mettre des attributs en input_text par exemple ?

Et

C’est quoi le problème ? Ca veut dire quoi « repartir de zéro » ?
Tu veux garder les valeurs de tous les attributs entre deux restarts, sans appel à l’API pour le remettre d’équerre ?

Je ne pense pas qu’un input_text/number puisse avoir des attributs.

cela veut dire se purger de toutes données

oui, chaque attribut est une donnée cf. json au dessus, je ne voudrais pas les perdre.

oui je pense comme toi, c’est pour ça que je cherche un moyen d’avoir un sensor qui garde ses données.

Salut…
Tu peux passer par une entrée liste ! A voir pour récupération ensuite !

Sinon par création d’un Appareil avec MQTT ou tu y met les sensors de données

Salut,
pas certain d’avoir compris ce que tu fais exactement entre l’api, le python et le sensor.
Mais effectivement la suggestion de @Doubledom est pas mal.
Avec le python c’est assez simple de publier du json sur un topic MQTT avec l’option retain. Ensuite un sensor MQTT peut récupérer le JSON et directement coller dans l’état et les attributs.
Le retain permet de récupérer les infos dès le démarrage.

Je crois avoir trouvé mon bonheur : GitHub - Wibias/hass-variables: Home Assistant variables component

Je pense que c’est exactement ce que je cherche, je teste et vous dis…

MQTT, j’ai essayé mais c’est une surcouche pour rien si l’intégration ci dessus fonctionne…

11 jours après, je reviens vers vous pour vous tenir informé.

Oui, je confirme cette intégration (hass-variables) est juste géniale !!

Pour ceux qui ne la connaissent pas, elle permet de créer une entité qui ne perd pas ses valeurs au démarrage et qui ne dépend de rien ni personne. Un genre de « variable » globale et permanente.

Vraiment top, merci aux développeurs.

J’ai donc utilisé cette entité pour développer ma carte des sessions de charges de la voiture électrique de ma femme. C’est top, tout fonctionne parfaitement, je vais le documenter sur mon blog, comme toujours et je vous donnerai toutes les explications.

Une belle surprise cette intégration, regardez elle vaut le coup. :innocent: :+1:

1 « J'aime »