Skip to content

Repository files navigation

apiMareeInfo

Intégration Home Assistant pour récupérer les informations de marée et de météo marine.

Version actuelle

v2.1.11 - Refactoring architecture, sécurité, corrections

📝 Changelog

v2.1.11

  • 🏗️ Refactoring architecture : Extraction des clients API (ListePorts, MeteoMarine, MeteoMarineLive, StormIO) dans api_clients.py, suppression de sensorApiMaree.py, parseurs dédiés dans parsers.py.
  • 🔄 Coordinator unique : Suppression du double coordinator — un seul DataUpdateCoordinator créé dans __init__.py avec support StormGlass natif.
  • 🔒 Parsers défensifs : Accès .get() sur les clés API imbriquées (contenu["marees"], previs["detail"]) — pas de crash si l'API retourne une réponse partielle.
  • 🌡️ Visibility en float : Capteur visibility casté en float au lieu de str — compatible SensorStateClass.MEASUREMENT.
  • ⚡ Cache capteurs : native_value et extra_state_attributes partagent un cache — 1 appel status/update au lieu de 2.
  • 🛡️ Live feed optionnel : Un échec de l'endpoint live ne met plus les capteurs marées en unavailable (PR #65, merci @3liXIr).
  • 🏷️ Platform enum : PLATFORMS utilise Platform.SENSOR / Platform.WEATHER (HA 2023.7+).
  • 🔤 Traductions : strings.json aligné sur les vrais keys capteurs + translation_key ajouté.
  • 🧹 Nettoyage : Pattern try/except ImportError supprimé, config_entry= ajouté au coordinator, __name__ écrasé supprimé, DeviceInfo au lieu de dict brut.
  • 🐍 Typage : mypy 0 erreur, ruff 0 violation.

v2.1.10

  • 🔄 Retry automatique : Appels réseau avec tenacity — backoff exponentiel, max 3 tentatives sur erreurs transitoires (réseau, 429, 5xx) (issue #51).
  • ⚠️ Exceptions métier : ApiError, RateLimitError, NotFoundError, NetworkError remplacent le pattern {"error": "UNKERROR_001"}.
  • 📝 Logging structuré : [source] GET url -> status (retriable) pour chaque tentative.
  • ⏱️ Timeout configurable : Paramètre max_retries sur async_fetch_json (défaut 3).

v2.1.9

  • 🧪 Tests unitaires pytest : Correction de 57 tests échoués (noms de méthodes obsolètes), ajout de test_config_flow.py (27 tests), test_sensor.py (140 tests), test_weather.py (40 tests) (issue #50).
  • 📊 Couverture 87% : Objectif 80% dépassé. Modules couverts à 100% : config_flow.py, const.py, http_utils.py, types.py.
  • 🔤 Alignement API : Tests synchronisés avec les nouveaux noms de méthodes (get_port_name, has_error, get_next_tide_state, etc.).

v2.1.8

  • 🌞 Capteur UV : MareeUVSensor câblé à la vraie donnée API MeteoConsult (previs.detail) au lieu de retourner 0 en dur (issue #52).
  • 🧪 Compatibilité : Les capteurs Freeze/Snow restent en dummy pour compatibilité carte MeteoFrance HACS.
  • 🧪 Tests : Ajout de 3 tests pour get_uv_status(), correction de l'import dans les tests.

v2.1.7

  • 🔧 CI/CD complet : Pipeline unifié avec lint (ruff), typecheck (mypy), tests (pytest + coverage), CodeQL et HACS validation (issue #57).
  • 🧹 Nettoyage : Suppression des workflows obsolètes remplacés par un seul ci.yml.
  • 🗑️ Fichiers legacy supprimés : testMareeInfo.py et test_search.py.

v2.1.6

  • 🌊 Nouveau capteur : sensor.prochaine_grande_maree — affiche la date/heure de la prochaine grande marée (coefficient >= 100) avec les attributs coefficient, type, hauteur, delai, horaire (issue #47).
  • 📊 Prévisions étendues : Les données MeteoConsult sont maintenant exploitées sur 15 jours au lieu de 6, permettant de détecter les grandes marées à venir.
  • ⚠️ Comportement morte-eau : Le capteur affiche unavailable en période de morte-eau (aucun coefficient >= 100 dans les 15 jours). C'est normal : les grandes marées ne surviennent que lors des périodes d'équinoxe (2-4 fois par mois).

v2.1.5

  • 🏷️ Constantes centralisées : DEFAULT_MAX_HOURS, DEFAULT_SCAN_INTERVAL, CONF_STORM_KEY déplacés dans const.py (issue #55).
  • 🔤 Nommage FR→EN : Les méthodes publiques de ApiMareeInfo ont été renommées en anglais (get_port_name(), get_tide_data(), has_error(), etc.) (issue #55).
  • 🔤 Noms de classes PascalCase : manageSensorState → SensorStateManager (issue #55).
  • 🔤 Variables snake_case : _sAM → _sensor_manager dans sensor.py (issue #55).

v2.1.4

  • 🏷️ Typage complet : Ajout de TypedDict pour les structures de données (TideData, ForecastData, LiveForecastItemRaw, etc.) avec hints sur tous les attributs et méthodes (issue #53).

v2.1.2

  • 🔧 Refactor HTTP : Extraction du helper HTTP partagé (http_utils.py) supprimant la duplication de code entre ListePorts et MeteoMarine (issue #48).
  • ✅ Tests unitaires : Ajout d'une suite de tests complète avec pytest + couverture.
  • 🤖 CI GitHub Actions : Ajout du workflow tests.yml pour exécuter les tests automatiquement.
  • 📦 Dépendances de test : Ajout de requirements-test.txt et pyproject.toml.

v2.0.0

  • 🚀 Entité Weather : Ajout d'une plateforme météo complète (weather) native pour Home Assistant.
  • 🎨 Compatibilité Carte Météo-France : Capteurs harmonisés pour fonctionner avec la carte Lovelace personnalisée Météo-France.
  • 📈 Prévisions de pluie : Support de la pluie dans l'heure avec graphique et détection de la prochaine pluie.
  • 🌬️ Pression atmosphérique : Ajout d'un capteur de pression et de ses prévisions (hPa). Compatible avec la carte content-card-pressure-forecast.
  • 🌓 Gestion Jour/Nuit : Icônes dynamiques basées sur la position du soleil (sun.sun).
  • ⚡ Rafraîchissement optimisé : Passage à un intervalle de mise à jour de 15 minutes pour plus de précision sur les prévisions.
  • 🛠️ Refonte technique : Migration vers des dictionnaires standards pour les attributs et nettoyage complet du code.

v1.5.2

  • ✅ Correction de l'erreur 403 : Résolution des problèmes de requête à l'API MeteoMarine
  • ✅ Headers HTTP optimisés : Ajout des headers de sécurité (sec-*) et User-Agent Chrome à jour
  • ✅ Gestion SSL améliorée : Support SSL désactivé pour plus de compatibilité
  • ✅ Support async/await : Gestion correcte des coroutines asyncio pour les tests

Versions antérieures

Consultez l'historique git pour les détails des versions précédentes.

Installation

  1. Copiez le dossier custom_components/apiMareeInfo dans votre dossier config/custom_components/.
  2. Redémarrez Home Assistant.

Configuration

⚠️ La configuration via le fichier configuration.yaml n'est plus supportée. Tout se fait désormais via l'interface utilisateur.

  1. Allez dans Paramètres -> Appareils et services.
  2. Cliquez sur le bouton Ajouter une intégration en bas à droite.
  3. Recherchez et sélectionnez apiMareeInfo.
  4. Étape 1 : Recherche - Entrez le nom de la ville ou du port que vous souhaitez suivre (ex: "Saint-Malo").
  5. Étape 2 : Sélection - Choisissez le port exact dans la liste déroulante qui s'affiche, puis validez.

Capteurs (Sensors)

Cette intégration utilise les standards de nommage récents de Home Assistant. Un appareil (Device) est créé pour chaque port configuré (ex: Maree Saint-Malo), et les capteurs sont associés à cet appareil.

Voici les entités disponibles (exemple pour le port de Saint-Malo) :

Entité ID (exemple) Description
Marée sensor.maree_saint_malo Capteur principal. L'état indique le statut actuel. Contient tous les détails en attributs.
Prochaine Haute sensor.maree_saint_malo_prochaine_haute Heure et hauteur de la prochaine marée haute.
Prochaine Basse sensor.maree_saint_malo_prochaine_basse Heure et hauteur de la prochaine marée basse.
Température Eau sensor.maree_saint_malo_temperature_eau Température de l'eau (si disponible).
Prochaine Grande Marée sensor.maree_saint_malo_prochaine_grande_maree Date/heure de la prochaine marée avec coefficient >= 100. Indisponible en morte-eau.

Migration depuis une ancienne version

Si vous utilisiez une version précédente configurée en YAML :

  1. Supprimez les lignes correspondantes dans votre configuration.yaml.
  2. Redémarrez Home Assistant.
  3. Ajoutez l'intégration via l'interface comme décrit ci-dessus.
  4. Pensez à mettre à jour vos cartes Lovelace avec les nouveaux noms d'entités (les anciens noms du type sensor.myport_... ne sont plus utilisés par défaut).

Crédits

Données fournies par Météo Consult.

Avertissement

Cette intégration est développée de manière indépendante et n'est affiliée ni à Météo Consult.

About

un sensor pour récupérer les informations des prochaines marées

Resources

Stars

16 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages