Installer la carte Météo France

Un tuto non car ca depand bcp de ton niveau de node red et javascript, hacf etc et selon il y aurait trop de trucs a mettre
Mais je peux te filer la function de NR que j’ai mise et le bout de javascript que j’ai changé dans le js de la carte et je te previens je suis pas un developpeur fou donc le code n’est surement pas optimisé ni bien ecrit lol
Sous NR voila la fonction
Tu recupere le sensor et tu en crée un nouveau comme cela
Attention c’est valable uniquement pour 24h sur le principe car je n’ai pas les infos de levé et couché du soleil a plus de 24h
Et pour mon besoin j’ai fait que sur les 9h glissante a toi d’adapter si tu veux plus
Pour les icones nuit j’en ai que 3 au final avec une lune qui est nuit clair, partiellement nuageux et venteux
Les autres il y avait pas de diff entre le jour et la nuit

var forecast = msg.payload.attributes.forecast;
var contextHA = global.get('homeassistant');
var sunrise = new Date(contextHA.homeAssistant.states["sun.sun"].attributes.next_rising);
var sunset = new Date(contextHA.homeAssistant.states["sun.sun"].attributes.next_setting);
var nuit = contextHA.homeAssistant.states["sun.sun"].state;
var datetime0 = new Date(forecast[0].datetime);
var datetime1 = new Date(forecast[1].datetime);
var datetime2 = new Date(forecast[2].datetime);
var datetime3 = new Date(forecast[3].datetime);
var datetime4 = new Date(forecast[4].datetime);
var datetime5 = new Date(forecast[5].datetime);
var datetime6 = new Date(forecast[6].datetime);
var datetime7 = new Date(forecast[7].datetime);
var datetime8 = new Date(forecast[8].datetime);
var datetime9 = new Date(forecast[9].datetime);
if(nuit === "below_horizon"){
    if(datetime0 < sunrise) {
        if(msg.payload.attributes.forecast[0].condition === "partlycloudy"){
            msg.payload.attributes.forecast[0].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[0].condition === "windy-variant"){
            msg.payload.attributes.forecast[0].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[0].condition === "sunny"){
            msg.payload.attributes.forecast[0].condition = "sunnynight";
        }
    }
    if(datetime1 < sunrise) {
        if(msg.payload.attributes.forecast[1].condition === "partlycloudy"){
            msg.payload.attributes.forecast[1].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[1].condition === "windy-variant"){
            msg.payload.attributes.forecast[1].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[1].condition === "sunny"){
            msg.payload.attributes.forecast[1].condition = "sunnynight";
        }
    }
    if(datetime2 < sunrise) {
        if(msg.payload.attributes.forecast[2].condition === "partlycloudy"){
            msg.payload.attributes.forecast[2].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[2].condition === "windy-variant"){
            msg.payload.attributes.forecast[2].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[2].condition === "sunny"){
            msg.payload.attributes.forecast[2].condition = "sunnynight";
        }
    }
    if(datetime3 < sunrise) {
        if(msg.payload.attributes.forecast[3].condition === "partlycloudy"){
            msg.payload.attributes.forecast[3].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[3].condition === "windy-variant"){
            msg.payload.attributes.forecast[3].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[3].condition === "sunny"){
            msg.payload.attributes.forecast[3].condition = "sunnynight";
        }
    }
    if(datetime4 < sunrise) {
        if(msg.payload.attributes.forecast[4].condition === "partlycloudy"){
            msg.payload.attributes.forecast[4].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[4].condition === "windy-variant"){
            msg.payload.attributes.forecast[4].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[4].condition === "sunny"){
            msg.payload.attributes.forecast[4].condition = "sunnynight";
        }
    }
    if(datetime5 < sunrise) {
        if(msg.payload.attributes.forecast[5].condition === "partlycloudy"){
            msg.payload.attributes.forecast[5].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[5].condition === "windy-variant"){
            msg.payload.attributes.forecast[5].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[5].condition === "sunny"){
            msg.payload.attributes.forecast[5].condition = "sunnynight";
        }
    }
    if(datetime6 < sunrise) {
        if(msg.payload.attributes.forecast[6].condition === "partlycloudy"){
            msg.payload.attributes.forecast[6].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[6].condition === "windy-variant"){
            msg.payload.attributes.forecast[6].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[6].condition === "sunny"){
            msg.payload.attributes.forecast[6].condition = "sunnynight";
        }
    }
    if(datetime7 < sunrise) {
        if(msg.payload.attributes.forecast[7].condition === "partlycloudy"){
            msg.payload.attributes.forecast[7].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[7].condition === "windy-variant"){
            msg.payload.attributes.forecast[7].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[7].condition === "sunny"){
            msg.payload.attributes.forecast[7].condition = "sunnynight";
        }
    }
    if(datetime8 < sunrise) {
        if(msg.payload.attributes.forecast[8].condition === "partlycloudy"){
            msg.payload.attributes.forecast[8].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[8].condition === "windy-variant"){
            msg.payload.attributes.forecast[8].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[8].condition === "sunny"){
            msg.payload.attributes.forecast[8].condition = "sunnynight";
        }
    }
    if(datetime9 < sunrise) {
        if(msg.payload.attributes.forecast[9].condition === "partlycloudy"){
            msg.payload.attributes.forecast[9].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[9].condition === "windy-variant"){
            msg.payload.attributes.forecast[9].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[9].condition === "sunny"){
            msg.payload.attributes.forecast[9].condition = "sunnynight";
        }
    }
}else{
    if(datetime0 > sunset) {
        if(msg.payload.attributes.forecast[0].condition === "partlycloudy"){
            msg.payload.attributes.forecast[0].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[0].condition === "windy-variant"){
            msg.payload.attributes.forecast[0].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[0].condition === "sunny"){
            msg.payload.attributes.forecast[0].condition = "sunnynight";
        }
    }
    if(datetime1 > sunset) {
        if(msg.payload.attributes.forecast[1].condition === "partlycloudy"){
            msg.payload.attributes.forecast[1].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[1].condition === "windy-variant"){
            msg.payload.attributes.forecast[1].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[1].condition === "sunny"){
            msg.payload.attributes.forecast[1].condition = "sunnynight";
        }
    }
    if(datetime2 > sunset) {
        if(msg.payload.attributes.forecast[2].condition === "partlycloudy"){
            msg.payload.attributes.forecast[2].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[2].condition === "windy-variant"){
            msg.payload.attributes.forecast[2].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[2].condition === "sunny"){
            msg.payload.attributes.forecast[2].condition = "sunnynight";
        }
    }
    if(datetime3 > sunset) {
        if(msg.payload.attributes.forecast[3].condition === "partlycloudy"){
            msg.payload.attributes.forecast[3].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[3].condition === "windy-variant"){
            msg.payload.attributes.forecast[3].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[3].condition === "sunny"){
            msg.payload.attributes.forecast[3].condition = "sunnynight";
        }
    }
    if(datetime4 > sunset) {
        if(msg.payload.attributes.forecast[4].condition === "partlycloudy"){
            msg.payload.attributes.forecast[4].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[4].condition === "windy-variant"){
            msg.payload.attributes.forecast[4].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[4].condition === "sunny"){
            msg.payload.attributes.forecast[4].condition = "sunnynight";
        }
    }
    if(datetime5 > sunset) {
        if(msg.payload.attributes.forecast[5].condition === "partlycloudy"){
            msg.payload.attributes.forecast[5].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[5].condition === "windy-variant"){
            msg.payload.attributes.forecast[5].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[5].condition === "sunny"){
            msg.payload.attributes.forecast[5].condition = "sunnynight";
        }
    }
    if(datetime6 > sunset) {
        if(msg.payload.attributes.forecast[6].condition === "partlycloudy"){
            msg.payload.attributes.forecast[6].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[6].condition === "windy-variant"){
            msg.payload.attributes.forecast[6].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[6].condition === "sunny"){
            msg.payload.attributes.forecast[6].condition = "sunnynight";
        }
    }
    if(datetime7 > sunset) {
        if(msg.payload.attributes.forecast[7].condition === "partlycloudy"){
            msg.payload.attributes.forecast[7].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[7].condition === "windy-variant"){
            msg.payload.attributes.forecast[7].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[7].condition === "sunny"){
            msg.payload.attributes.forecast[7].condition = "sunnynight";
        }
    }
    if(datetime8 > sunset) {
        if(msg.payload.attributes.forecast[8].condition === "partlycloudy"){
            msg.payload.attributes.forecast[8].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[8].condition === "windy-variant"){
            msg.payload.attributes.forecast[8].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[8].condition === "sunny"){
            msg.payload.attributes.forecast[8].condition = "sunnynight";
        }
    }
    if(datetime9 > sunset) {
        if(msg.payload.attributes.forecast[9].condition === "partlycloudy"){
            msg.payload.attributes.forecast[9].condition = "partlycloudynight";
        }
        if(msg.payload.attributes.forecast[9].condition === "windy-variant"){
            msg.payload.attributes.forecast[9].condition = "windy-variantnight";
        }
        if(msg.payload.attributes.forecast[9].condition === "sunny"){
            msg.payload.attributes.forecast[9].condition = "sunnynight";
        }
    }
}
return msg;

Le bout de javascript que j’ai changé
ce qu’il y a entre quote doit correspondre au nom de ton fichier icon sans l’extension
donc tu adapte selon les icones que tu as
Pour que ca marche tu dois enlever aussi le js.gz sinon il est loadé par defaut dans le repertoire de la carte
Attention si tu y touche et que tu reinstalle la carte tes modifs seront perdu

const weatherIconsDay = {
  clear: "CLEAR_DAY",
  "clear-night": "CLEAR_NIGHT",
  sunnynight: "CLEAR_NIGHT",
  cloudy: "CLOUDY_2",
  fog: "FOG_2",
  hail: "HEAVY_RAIN",
  lightning: "LIGHT_HAZE",
  "lightning-rainy": "LIGHT_RAIN",
  partlycloudy: "PARTLY_CLOUDY_DAY",
  partlycloudynight: "PARTLY_CLOUDY_NIGHT",
  "windy-variantnight": "PARTLY_CLOUDY_NIGHT",
  pouring: "MODERATE_RAIN",
  rainy: "LIGHT_RAIN",
  snowy: "HEAVY_SNOW",
  "snowy-rainy": "MODERATE_SNOW",
  sunny: "CLEAR_DAY",
  windy: "WIND",
  "windy-variant": "WIND",
  exceptional: "!!",
};

const weatherIconsNight = {
  ...weatherIconsDay,
  clear: "CLEAR_NIGHT",
  sunny: "CLEAR_NIGHT",
  partlycloudy: "PARTLY_CLOUDY_NIGHT",
  "windy-variant": "PARTLY_CLOUDY_NIGHT",
};

du beau travail et je pense que c’est exactement pour ça que le dev d’origine n’a pas voulu de continuer :wink:
Merci !!

Utilisant le concept d’aurelienb j’ai crée un fork et modifié le contenu.
J’ai ajouté une logique pour les icones, aussi que (!) pour les prochaines heures. Aussi ajouté force de vent pour les cartes montrent des données horaires. C’est pas encore parfait mais ça marche.
Des états qui n’ont pas des icones de nuits sonts p.e. cloudy/windy/thunderstorm et il faut les créer et je n’avais pas de désir pour le faire…peut-être dans la future?
Si vous voulez le tester, merci d’avance, if faut just ajouter mon lien github dans HACS

image

vingerha/lovelace-meteofrance-weather-card2: :partly_sunny: Carte Lovelace dédiée à l’intégration Météo-France pour Home Assistant. (github.com)

Merci je vais regarder avec mais faibles connaissances.

Il y a des petits soucis de plus, le mien mais aussi l’origine (de hacf-fr) ne me laisse plus choisir d’autres sensors, je pense que c’est depuis 2022.4…
EDIT: j’ai ajouté quelque chose dans le docu sur ma page de github comment les resoudrent

Top
Ton code est plus propre que le mien lol et bcp plus simple comme cela

Je ne veux pas dire propre car j’ai copié une section pour ne pas affecter d’autre choses … :slight_smile:
Mais, j’avais déjà pennsé comment resoudre cet situation et c’est toi qui m’a donné l’idée comment la faire…restent sur les 24 heures prochaines

au pire tu simules les prochains levé et couché c’est pas comme ci ca changeait d’une heure a chaque fois c’est plutot l’ordre de la minute
Si tu reprends la date en rajoutant 1 jours ca passera largement juste le jour ou le levé ou le couché sera pile poile à l’heure pile tu auras un decallage mais bon

Bonjour,

J’ai bien avancé et suis presque au bout (j’apprends c’est bien merci) par contre j’ai un petit soucis lorsque je supprime le fichier js.gz ça ne fonctionne plus. il me dit « carte inexistante ». Une idée ? Merci

@vingerha

je pense qu’il y a un doublon:

    one_hour_forecast: true
    hourlyforecast: false

si je met les 2 à true, j’ai deux fois les lignes du bas:
lovelace-meteofrance-weather-card2

oui et c’est fait exprès car je ne voullait pas toucher d’autres fonctionnalités…comme écrit avant, c’est pas parfait et je ne voullait pas depenser plus de temps pour l’instant.
Dans la configuration de la carte il faur désélectionnner ça:

Pas de soucis, c’est ce que j’avais fait.

Je viens de faire un maj pour les icones de nuit car sun/sun change ces dates déjà avant le lever du soleil, v1.1 et la version meilleure maintenant

Verifie sur quoi pointe ta ressource
moi j’ai ca directement sans le hacstag
/local/community/lovelace-meteofrance-weather-card/meteofrance-weather-card.js

mais utilise la carte de vingerha plutot ca t’evitera des soucis non ?

Merci c’est très propre.

Petite question : comment la localisation est-elle détectée ?

Est ce par une géolocalisation par rapport à l’adresse IP ou peut on paramétrer manuellement ?

Je suis désolé si c 'est une question déjà traitée ou de débutant

On utilise l’intégration de meteo-france ou il faut rentrer la ville, on peut ajouter plusieurs villes, malheureusement par ville on a q’une choix: soit par jour soit par heur, je pense qu ça marche aussi avec d’autre fournisseur de meteo mai pas testé pas moi

1 « J'aime »

Je te remercie j’ai compris ma boulette (il s’appuyait sur un autre fichier weather

Bonjour comment arrivez vous a activer les bandeaux de couleurs indiquant par exemple « vigilance rouge en cours »?

et clairement chez nous 33,9 n’est pas du tout ‹ vigilance › :slight_smile:

tu vas sur le site de meteo france, tu tapes le nom de ta ville, si pas d’alerte sur le site meteo france, pas d’alerte sur HA :wink: