# Netatmo Station Météo - Anémomètre - Sens du vent - Points cardinaux

**URL:** <https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892>\
**Category:** Développement\
**Created:** [Décembre 10, 2020, 9:31 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892 "2020-12-10T09:31:30Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [Décembre 10, 2020, 9:31 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892/1 "2020-12-10T09:31:30Z")

</div>

Bonjour,

Comme rappelé dans d’autres sujet, @damalgos a repris le développement du service Netatmo. Je tente de lui apporter mon aide avec le matériel en ma possession.  
Je suis actuellement sur la partie Modules des Stations Météo. On pense être bon côté pluviomètre.  
Côté Anemometre on récupère bien toutes les données, mais j’aurais aimé que ce soit plus parlant.  
On récupère actuellement l’angle du vent en degré. J’ai rajouté dans le dossier utils un fichier cardinalpoints pour transformer ces angles en points cardinaux avec une flèche. Ca fonctionne bien, récupéré dans les logs. Malheureusement en BDD la value de la table device\_feature\_state n’accepte pas l’alphanumerique. J’ai donc cherché si on avait un exemple et le seul que j’ai trouvé est la caméra. Mais celle-ci n’utilise apparemment que la colonne last\_value\_string de la table device\_feature. A moins que je me trompe…  
@pierre-gilles, serait-il possible de rajouter une colonne “value\_string” dans la table device\_feature\_state qui nous permettrait de récupérer la dernière valeur dans last\_value\_string puis sur le dashboard, si on crée un DEVICE\_FEATURE\_TYPE.SENSOR.STRING, pour récupérer dans la bonne colonne la valeur ?

Merci par avance. Etant bien avancé avec @damalgos, il serait bien de pouvoir avancer rapidement sur le sujet. De mon côté je n’ai qu’1 semaine avec beaucoup de temps dispo pour bosser sur le sujet.

Images de l’avancement :

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/81f1d1a424252bf0786de8086ffb3a508acdc62d.png)  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/1/100a1a3adf2d4c26996a07e2fcb11522fc7a27a9.png)  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/812ad7382c19fd40b38e803bdd94c92df09a45e8.png)  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/8d0b1591f11c508dc021fd7a083cd34374094a1b.png)

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [Décembre 11, 2020, 1:34 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892/2 "2020-12-11T01:34:47Z")

</div>

Bon j’ai pu faire toute les modifications pour arriver à mes fins :

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/320cb83ea5166e121a0b873f34c9b808127d095d.png)

Je trouve ça plutôt pas mal pour une station météo complète. Maintenant qesako de la faisabilité en sachant que pour en arriver là il faut faire des modifs en DB, soit dans la table t\_device\_feature\_state :

- Créer une nouvelle colonne `value_string` en type “Texte”,
- Passer les 2 colonnes `value` & `value_string` en `is_nullable=YES`.
- Modifier le fichier server/lib/device/device.newStateEvent.js avec la comparaison suivant pour taper la bonne colonne

```auto
if(isNaN(event.state)) {
      await this.saveStringState(device, deviceFeature, event.state);
    } else {
      await this.saveState(deviceFeature, event.state);
    }

```

- Ainsi que pas mal d’autres fichiers en front (pour l’affichage des données) et en server.

On va donc rester en attente d’une réponse de @pierre-gilles notamment pour le feu vert sur ce sujet.

En l’état la station météo est fonctionnelle.

---

<div class="post-metadata">

**Author:** ![Tlse-vins](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/tlse-vins/32/6054_2.png) [@Tlse-vins](https://community.gladysassistant.com/u/Tlse-vins)\
**Post date:** [Décembre 11, 2020, 6:25 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892/3 "2020-12-11T06:25:10Z")

</div>

C’est super d’avoir ces infos.  
C’est quoi le CO2 996 %?

Moi j’attends la gestion de chauffage netatmo. 👍👍

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Décembre 11, 2020, 8:48 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892/4 "2020-12-11T08:48:59Z")

</div>

> [@Terdious](#):
>
> @pierre-gilles, serait-il possible de rajouter une colonne “value\_string” dans la table device\_feature\_state qui nous permettrait de récupérer la dernière valeur dans last\_value\_string puis sur le dashboard, si on crée un DEVICE\_FEATURE\_TYPE.SENSOR.STRING, pour récupérer dans la bonne colonne la valeur ?

Tu peux expliquer pourquoi vous avez besoin de ça ? Je ne vois rien dans les données que tu affiches dans l’UI qui soit en string 🙂

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [Décembre 11, 2020, 9:13 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892/5 "2020-12-11T09:13:31Z")

</div>

Ah oui mince, on peut changer l’unité, ce que je n’ai pas fait ^^ c’est 996ppm en fait ^^

Oui

> [@Tlse-vins](#):
>
> Moi j’attends la gestion de chauffage netatmo. 👍👍

@damalgos a déjà fait le retour du thermostat. Je vois pour les vannes d’ici le week-end. Apres il nous reste la consigne à faire, mais je crois que @damalgos est en attente d’un retour.

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [Décembre 11, 2020, 9:16 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892/6 "2020-12-11T09:16:12Z")

</div>

Salut @pierre-gilles,  
Les valeurs `Wind angle`, `Gust angle`, `Max Wind angle day`…  
Je ne comprend pas ta question pour le coup.  
On affiche des valeurs “-\> E”, “\<- W” … etc.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Décembre 11, 2020, 9:41 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892/7 "2020-12-11T09:41:23Z")

</div>

> [@Terdious](#):
>
> Les valeurs `Wind angle`, `Gust angle`, `Max Wind angle day`…  
> Je ne comprend pas ta question pour le coup.  
> On affiche des valeurs “-\> E”, “\<- W” … etc.

Ok, donc on parle d’un angle sur un compas on est d’accord ?

Ce genre de valeur est en générale sauvegardé en tant qu’angle en degrés (0-360°)

Cf :

 ![Screenshot 2020-12-11 at 11.35.07](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/e/eda8ed6bbac641041c2100a84bdbf2a1c36203c5.jpeg)

Je vous conseille de sauvegarder vos valeurs en tant qu’entier (pas besoin de string), et ensuite dans l’UI il faut créer un type spécial qui affichera «&nbsp;N&nbsp;» au lieu de 0°, «&nbsp;S&nbsp;» au lieu de 180°.

Cela permettra d’avoir la direction traduite, car toutes les langues n’ont pas les mêmes lettres de cardinaux.

Exemple, juste entre anglais et français il y a des différences:

N (North) - Nord  
S (South) - Sud  
E (East) - Est  
W (West) - Ouest

Tu en pense quoi ?

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Décembre 11, 2020, 9:43 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892/8 "2020-12-11T09:43:34Z")

</div>

> [@Terdious](#):
>
> Apres il nous reste la consigne à faire, mais je crois que @damalgos est en attente d’un retour.

Effectivement la partie chauffage est un sujet à part entière dans Gladys, et on est même pas à l’étape «&nbsp;spécification&nbsp;» de cette partie.

Essayez de séparer votre PR à mon avis parce que le chauffage c’est pas une mince affaire, ça sera pas pour tout de suite je pense

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [Décembre 11, 2020, 9:58 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892/9 "2020-12-11T09:58:21Z")

</div>

J’utilise une fonction mise dans le fichier server/utils/cardinalpoint.js :

```auto
/** 
 * Given "0-360" returns the nearest cardinal direction "N/NE/E/SE/S/SW/W/NW"  
 */
function getCardinalDirection(angle) {
    if (typeof angle === 'string') {
        angle = parseInt(angle);
    }
    if (angle <= 0 || angle > 360 || typeof angle === 'undefined') {
        return '☈';
    }
    const arrows = { north: '↑ N', north_north_east: '↗ NNE', north_east: '↗ NE', east: '→ E', south_east: '↘ SE', south_south_east: '↘ SSE', south: '↓ S', south_south_west: '↙ SSW', south_west: '↙ SW', west: '← W', north_west: '↖ NW', north_north_west: '↖ NNW' };
    const directions = Object.keys(arrows);
    const degree = 360 / directions.length;
    angle = angle + degree / 2;
    for (let i = 0; i < directions.length; i++) {
      if (angle >= (i * degree) && angle < (i + 1) * degree) {
          return arrows[directions[i]];
        }
    }
    return arrows['north'];
  }
  module.exports = {
    getCardinalDirection,
  };

```

Car pour l’angle du vent il y a 16 direction possible. Je trouvais cela plus simple de récupérer la valeur en String dans la DB mais en effet je n’avais pas pensé à faire ça dans l’ui. Je vois pour le passer côté front du coup.

---

<div class="post-metadata">

**Author:** ![damalgos](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/d/e274bd/32.png) [@damalgos](https://community.gladysassistant.com/u/damalgos)\
**Post date:** [Décembre 11, 2020, 11:36 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892/10 "2020-12-11T11:36:28Z")

</div>

> [@pierre-gilles](#):
>
> Essayez de séparer votre PR à mon avis parce que le chauffage c’est pas une mince affaire, ça sera pas pour tout de suite je pense

Le mieux serait à mon avis de metttre en place tout d’abord la PR netatmo qui trouve les têtes thermostatique et fournis l’information.

Dnas un second temps une PR pour le chauffage se fait pour justement répondre à ces problématiques

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Décembre 11, 2020, 1:06 UTC](https://community.gladysassistant.com/t/netatmo-station-meteo-anemometre-sens-du-vent-points-cardinaux/5892/11 "2020-12-11T13:06:35Z")

</div>

ça me va!

Pour la partie chauffage, pour moi avant de se lancer tête baissé dans le développement il faut vraiment faire une vrai étude sur les différentes solutions du marché, et comment on peut harmoniser ça dans Gladys. Je pense que ça vaudrait le coup de se renseigner sur les acteurs du marché comme Nest qui ont déjà fait ce travail, et ensuite écrire une spec fonctionnelle puis technique.

Enfin, on pourra implémenter, mais on en est très loin.

(on en parle sur l’autre sujet)

Edit: je rebondis quand même sur ça:

> [@damalgos](#):
>
> Le mieux serait à mon avis de metttre en place tout d’abord la PR netatmo qui trouve les têtes thermostatique et fournis l’information.

Il faut faire attention à ne pas induire l’utilisateur en erreur, les têtes thermostatiques si on les gère on les gère bien, je suis pas sûr qu’on veuille afficher à l’utilisateur quelque chose d’à demi géré.

Je resterais peut-être plus sur une première PR stations météo / anémométre et cie (capteurs), et ensuite faire une PR chauffage netatmo?
