# ===================================================================== # VICTRON MOBILE — refait le 07/10/2026 (demande du proprietaire). # Une colonne, de haut en bas : alertes, batterie, reseau, energie du jour, # nuit, borne, chauffe-eau, cellules, flux des 4 dernieres heures. # ⚠️ LECTURE SEULE : aucun appui ne commande le contacteur EDF, la borne ou # le chauffe-eau (une fiche « more-info » de switch permet de les basculer en # deux appuis ; les automates en sont les seuls proprietaires). # Ancienne version : victron_mobile.yaml.bak-20261007. # ===================================================================== views: - title: Mobile path: default_view icon: mdi:cellphone cards: - type: vertical-stack cards: # ---------- 1. ALERTES (seulement quand quelque chose ne va pas) ---------- # « EDF ouvert » n'est PAS une alerte : c'est l'etat normal ici. - type: conditional conditions: - condition: or conditions: - condition: state entity: sensor.evcs_reseau state: mesure_muette - condition: state entity: sensor.evcs_reseau state: incoherent card: type: markdown content: | ## ⚠️ Réseau : {{ states('sensor.evcs_reseau') | replace('_', ' ') }} {{ state_attr('sensor.evcs_reseau', 'explication') or '' }} - type: conditional conditions: - condition: or conditions: - condition: state entity: sensor.evcs_cellules state: perime - condition: state entity: sensor.evcs_cellules state: muet card: type: markdown content: | ## ⚠️ Cellules : {{ states('sensor.evcs_cellules') }} Modules lus : {{ state_attr('sensor.evcs_cellules', 'modules_lus') }} sur 9. - type: conditional conditions: - condition: state entity: input_boolean.victron_auto_charge_enabled state: "off" card: type: markdown content: | ## ⚠️ Auto batterie OFF - type: conditional conditions: - condition: state entity: input_boolean.victron_charge_override_enabled state: "on" card: type: markdown content: | ## 🖐️ Override actif # ---------- 2. BATTERIE ---------- - type: custom:vertical-stack-in-card card_mod: &carte style: | ha-card { border-radius: 20px; border: 1px solid rgba(255,255,255,0.10); box-shadow: 0 6px 16px rgba(0,0,0,0.18); } cards: - type: custom:gauge-card-pro entity: sensor.victron_battery_soc header: Batterie min: 0 max: 100 needle: true segments: - from: 0 color: "#f44336" - from: 25 color: "#fb8c00" - from: 50 color: "#fdd835" - from: 75 color: "#43a047" - type: custom:mushroom-template-card primary: >- {% set p = states('sensor.victron_battery_power') | float(0) %} {{ 'Charge' if p > 30 else ('Décharge' if p < -30 else 'Au repos') }} {{ p | abs | round(0) }} W ({{ states('sensor.victron_battery_current') | float(0) | round(1) }} A) secondary: >- Cible du matin {{ states('input_number.victron_evcs_night_target_soc') | float(0) | round(1) }} % • requis maintenant {{ states('input_number.evcs_balance_required_soc') | float(0) | round(1) }} % multiline_secondary: true icon: mdi:battery-charging tap_action: action: none # ---------- 3. RESEAU (lecture seule) ---------- - type: custom:mushroom-template-card card_mod: *carte primary: >- {% set r = states('sensor.evcs_reseau') %} {{ {'non_raccorde': 'EDF ouvert (normal)', 'raccorde': 'EDF fermé', 'etablissement': 'EDF en cours de fermeture', 'mesure_muette': 'EDF : mesure muette', 'incoherent': 'EDF : incohérent'}.get(r, 'EDF : ' ~ r) }} {% if is_state('switch.edf_general_ok_switch', 'on') %} — {{ states('sensor.victron_grid_power_l1') | float(0) | round(0) }} W{% endif %} secondary: >- Acheté aujourd'hui : {{ states('sensor.evcs_import_jour_kwh') }} kWh icon: mdi:transmission-tower icon_color: "{{ 'blue' if is_state('switch.edf_general_ok_switch', 'on') else 'grey' }}" tap_action: action: none # ---------- 4. ENERGIE DU JOUR ---------- - type: markdown card_mod: *carte content: | {% set vt = states('input_text.evcs_balance_vrm_today').split(',') %} {% set ns = namespace(tot=0, reste=0) %} {% if vt | length == 24 %}{% for i in range(24) %}{% set v = vt[i] | float(0) %}{% set ns.tot = ns.tot + v %}{% if i > now().hour %}{% set ns.reste = ns.reste + v %}{% elif i == now().hour %}{% set ns.reste = ns.reste + v * (1 - now().minute / 60) %}{% endif %}{% endfor %}{% endif %} ### Aujourd'hui | | | |---|---:| | ☀️ Produit | **{{ states('sensor.evcs_production_jour_kwh') }} kWh** | | ☀️ Prévu (VRM) / reste | {{ ns.tot | round(1) }} / {{ ns.reste | round(1) }} kWh | | 🏠 Consommé | {{ states('sensor.evcs_consommation_jour_kwh') }} kWh | | ⚡ Acheté EDF | {{ states('sensor.evcs_import_jour_kwh') }} kWh | | 🔎 Solaire maintenant | {{ states('sensor.victron_pv_power_system') | float(0) | round(0) }} W — {{ states('sensor.evcs_pv_diagnostic') | replace('_', ' ') }} | {% if state_attr('sensor.evcs_historisation_heartbeat', 'statut') != 'ok' %} **⚠️ Service d'historisation : {{ state_attr('sensor.evcs_historisation_heartbeat', 'statut') }}** — les capteurs calculés sont figés. {% endif %} # ---------- 5. LA NUIT ---------- # Le soir : la prevision ; le matin : le bilan de la nuit ecoulee. - type: markdown card_mod: *carte content: | {% if now().hour >= 14 or now().hour < 2 %} ### 🌙 Cette nuit {{ state_attr('sensor.evcs_prevision_nuit', 'texte_rapport') or states('sensor.evcs_prevision_nuit') }} {% else %} ### 🌙 La nuit dernière {{ state_attr('sensor.evcs_bilan_nuit', 'texte_rapport') or states('sensor.evcs_bilan_nuit') }} {% endif %} Charge de la voiture la nuit : **{{ {'sans_edf': 'sans EDF', 'complete': 'complète'}.get(states('input_select.victron_evcs_night_charge_mode'), states('input_select.victron_evcs_night_charge_mode')) }}** # ---------- 6. BORNE / VEHICULE ---------- - type: custom:mushroom-template-card card_mod: *carte primary: >- {{ states('sensor.victron_evcs_status_fr') }} {% if is_state('binary_sensor.victron_evcs_vehicle_connected', 'on') %} — {{ states('input_select.victron_evcs_vehicle') }}{% endif %} secondary: >- {% set w = states('sensor.victron_evcs_ac_power') | float(0) %} {% if w > 50 %}{{ w | round(0) }} W • {{ states('input_text.victron_evcs_source_mode') }} • {{ states('sensor.evcs_hq2239dnt7p_last_session_energy') }} kWh {% else %}{{ (states('input_text.victron_evcs_surplus_reason').split('|') | first) | trim }}{% endif %} {% if is_state('input_select.victron_evcs_vehicle', 'JEEP') %} • Jeep {{ states('sensor.jeep_renegade_phev_hvbattery_charge') }} %{% endif %} multiline_secondary: true icon: mdi:ev-station icon_color: >- {% if states('sensor.victron_evcs_ac_power') | float(0) > 50 %}green {% elif is_state('binary_sensor.victron_evcs_vehicle_connected', 'on') %}blue{% else %}grey{% endif %} tap_action: action: none # ---------- 7. CHAUFFE-EAU ---------- - type: custom:mushroom-template-card card_mod: *carte primary: >- Chauffe-eau {{ 'sous tension' if is_state('switch.tt_chauffe_eau_pleumeur_switch', 'on') else 'coupé' }} {% set w = states('input_number.victron_water_heater_observed_power_w') | float(0) %}{% if w > 50 %} — {{ w | round(0) }} W{% endif %} secondary: >- {% set p = states('input_text.evcs_balance_ecs_nuit_jour').split('|') %} {% if p | length >= 3 and p[0] == now().strftime('%Y-%m-%d') %}{{ 'Jour faible : eau chaude en heures creuses' if p[1] == 'on' else 'Jour normal : eau chaude au solaire' }} {% else %}Décision du jour après 07:24{% endif %} • {{ states('sensor.evcs_chauffe_eau_jour_kwh') }} kWh depuis 07:24 multiline_secondary: true icon: mdi:water-boiler icon_color: "{{ 'orange' if is_state('switch.tt_chauffe_eau_pleumeur_switch', 'on') else 'grey' }}" tap_action: action: none # ---------- 8. CELLULES ---------- - type: custom:mushroom-template-card card_mod: *carte primary: >- Cellules : écart {{ states('sensor.evcs_cellules') }}{{ ' mV' if states('sensor.evcs_cellules') | is_number else '' }} secondary: >- {{ state_attr('sensor.evcs_cellules', 'modules_lus') }} modules sur 9 • le plus sensible : n°{{ state_attr('sensor.evcs_cellules', 'repere_le_plus_sensible') }} icon: mdi:battery-heart-variant icon_color: "{{ 'green' if states('sensor.evcs_cellules') | is_number else 'orange' }}" tap_action: action: none # ---------- 9. FLUX DES 4 DERNIERES HEURES ---------- - type: custom:apexcharts-card card_mod: *carte graph_span: 4h header: show: true title: Flux d'énergie (4 h) show_states: false series: - entity: sensor.victron_pv_power_system name: Solaire color: "#fdd835" # Maison SANS le chauffe-eau ni la borne (07/10) ; chacun a part. - entity: sensor.maison_hors_chauffe_eau name: Maison color: "#42a5f5" - entity: input_number.victron_water_heater_observed_power_w name: Chauffe-eau color: "#ff9800" curve: stepline - entity: sensor.victron_evcs_ac_power name: Borne color: "#43a047" - entity: sensor.victron_grid_power_l1 name: EDF color: "#ef5350" - entity: sensor.victron_battery_power name: Batterie color: "#ab47bc" # ---------- 10. AUTRES CHARGES ---------- - type: custom:mushroom-template-card card_mod: *carte primary: "Garage : {{ states('input_text.garage_clim_state') | replace('_', ' ') }}" secondary: "Clim {{ 'en marche' if is_state('switch.clim_hygro_socket_1', 'on') else 'arrêtée' }}" icon: mdi:air-conditioner icon_color: "{{ 'cyan' if is_state('switch.clim_hygro_socket_1', 'on') else 'grey' }}" tap_action: action: none