Api marée info : Présentation en Horloge marée

image

Voici une proposition de sensor en % permettant de localiser l’aiguille d’horloge de marée dans une card de type canvas-gauge-card. dont le Yaml sera le suivant :

type: custom:canvas-gauge-card
entity: sensor.tide_pos
card_height: 150
gauge:
  animation: true
  type: radial-gauge
  title: Marée Port-Louis
  width: 220
  height: 150
  borderShadowWidth: 0
  borderOuterWidth: 0
  borderMiddleWidth: 0
  borderInnerWidth: 0
  minValue: 0
  maxValue: 100
  startAngle: 180
  ticksAngle: 360
  valueBox: false
  majorTicks:
    - Haute
    - 1/5
    - 2/4
    - Descendante
    - 4/2
    - 5/1
    - Basse
    - 1/5
    - 2/4
    - Montante
    - 4/2
    - 5/1
    - Haute
  minorTicks: 2
  strokeTicks: true
  borders: true
  highlights: []
  colorNeedle: rgb(0,255,0)
  useMinPath: true

Ici le sensor:

- name: "tide_pos"
  unit_of_measurement: "%"
  state: >-
    {# requete date courante #}  
    {% set date_courante = as_timestamp(states.sensor.myport_97_mareedujour.attributes.dateCourante) %}
    
    {# requete marée du jour #} 
    {% set heure_maree_1 = states.sensor.myport_97_mareedujour.attributes.horaire_0_0 %}
    {% set heure_maree_1_complete = heure_maree_1 + ":00" %}
    {% set heure_maree_1_objet = strptime(heure_maree_1_complete, '%H:%M:%S') %}
    {% set maree_1 = date_courante + heure_maree_1_objet.hour * 3600 + heure_maree_1_objet.minute * 60 + heure_maree_1_objet.second %}

    {% set heure_maree_2 = states.sensor.myport_97_mareedujour.attributes.horaire_0_1 %}
    {% set heure_maree_2_complete = heure_maree_2 + ":00" %}
    {% set heure_maree_2_objet = strptime(heure_maree_2_complete, '%H:%M:%S') %}
    {% set maree_2 = date_courante + heure_maree_2_objet.hour * 3600 + heure_maree_2_objet.minute * 60 + heure_maree_2_objet.second %}

    {% set heure_maree_3 = states.sensor.myport_97_mareedujour.attributes.horaire_0_2 %}
    {% set heure_maree_3_complete = heure_maree_3 + ":00" %}
    {% set heure_maree_3_objet = strptime(heure_maree_3_complete, '%H:%M:%S') %}
    {% set maree_3 = date_courante + heure_maree_3_objet.hour * 3600 + heure_maree_3_objet.minute * 60 + heure_maree_3_objet.second %}

    {% if (states.sensor.myport_97_mareedujour.attributes.nb_maree_0) == 4 %}
    {% set heure_maree_4 = states.sensor.myport_97_mareedujour.attributes.horaire_0_3 %}
    {% set heure_maree_4_complete = heure_maree_4 + ":00" %}
    {% set heure_maree_4_objet = strptime(heure_maree_4_complete, '%H:%M:%S') %}
    {% set maree_4 = date_courante + heure_maree_4_objet.hour * 3600 + heure_maree_4_objet.minute * 60 + heure_maree_4_objet.second %}
    {%endif %} 

    {% set heure_maree_1J2 = states.sensor.myport_97_mareedujour.attributes.horaire_1_0 %}
    {% set heure_maree_1J2_complete = heure_maree_1J2 + ":00" %}
    {% set heure_maree_1J2_objet = strptime(heure_maree_1J2_complete, '%H:%M:%S') %}
    {% set maree_1J2 = date_courante + (24+heure_maree_1J2_objet.hour) * 3600 + heure_maree_1J2_objet.minute * 60 + heure_maree_1J2_objet.second %}

    {# Requete état prochaine marée #}
    {% if (states.sensor.myport_97_mareedujour.attributes.next_etat_1) == "PM" %} 
    {% set rab=50 %}
    {% else %}
    {% set rab=0 %}
    {% endif %}

    {# Si heure actuelle anterieure à la première heure de marée #}
    {% if as_timestamp(now())<=maree_1 %}
    {{ rab+50 - (50*(maree_1-as_timestamp(now()))/(maree_2 - maree_1))| int }}
    {% endif %} 

    {# Si heure actuelle entre les deux premier horaires du jour #}
    {% if as_timestamp(now())>maree_1 and as_timestamp(now())<maree_2 %}
    {{ rab + (50*(as_timestamp(now())-maree_1)/(maree_2 - maree_1))| int }}
    {% endif %} 

    {# Si heure actuelle entre deuxième et troisième horaires du jour #}
    {% if as_timestamp(now())>maree_2 and as_timestamp(now())<maree_3 %}
    {{ rab + (50*(as_timestamp(now())-maree_2)/(maree_3 - maree_2))| int }}
    {% endif %}

    {# Si 4 marees dans la journée #}
    {% if (states.sensor.myport_97_mareedujour.attributes.nb_maree_0) == 4 %}

    {# Si heure actuelle entre troisième et quatrième horaires du jour #}
    {% if as_timestamp(now())>maree_3 and as_timestamp(now())<maree_4 %}
    {{ rab + (50*(as_timestamp(now())-maree_3)/(maree_4 - maree_3))| int }}
    {% endif %} 

    {# Si heure actuelle entre quatrième du jour et premier du lendemain #}
    {% if as_timestamp(now())>maree_4 %}
    {{ rab + (50*(as_timestamp(now())-maree_4)/(maree_1J2- maree_4)) | int }}
    {% endif %} 

    {%else%}

    {# Si heure actuelle entre quatrième du jour et premier du lendemain #}
    {% if as_timestamp(now())>maree_3 %}
    {{ rab + (50*(as_timestamp(now())-maree_3)/(maree_1J2- maree_3)) | int }}
    {% endif %} 

    {% endif %}