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 %}