Bouton reset borne : echappatoire manuelle quand la borne se fige
Filet MANUEL complementaire a P11-bis : quand meme le second signal echoue (borne physiquement coincee), l'appui sur input_boolean.evcs_reset_borne force une session fraiche pour un cycle -> nettoie le collant -> retest du vehicule. Momentane : le controleur (HA_SERVICE_CALLS) le rebascule off apres avoir agi, il ne peut donc pas forcer un retest en boucle. - gabarit + INPUT_PARSE (params.resetBorneRequested) + sessionFresh (OU bouton) - helper_reset_borne_ack : turn_off si le bouton etait ON - paquet evcs_reset_borne.yaml (SANS initial:, lecon du 06/09), reload fait - golden 115 -> 116 : reset-borne-force-retest (session etablie + bouton ON -> retest + ack off). Mutation : bouton neutralise -> le scenario tombe. Gabarit rendu contre HA : 203 champs, aucun null. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
This commit is contained in:
@@ -1120,6 +1120,18 @@ return [{
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Bouton reset borne (19/09/2026) : momentane. Il a deja fait son effet
|
||||||
|
// dans WINDOWS (sessionFresh forcee ce cycle) ; on le rebascule off pour
|
||||||
|
// qu'il ne force pas un retest en boucle. N'ecrit que s'il etait ON.
|
||||||
|
helper_reset_borne_ack: {
|
||||||
|
execute: !!params.resetBorneRequested,
|
||||||
|
domain: 'input_boolean',
|
||||||
|
service: 'turn_off',
|
||||||
|
data: {
|
||||||
|
entity_id: 'input_boolean.evcs_reset_borne'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
helper_cloud_debt_started_at: {
|
helper_cloud_debt_started_at: {
|
||||||
execute: true,
|
execute: true,
|
||||||
domain: 'input_datetime',
|
domain: 'input_datetime',
|
||||||
|
|||||||
@@ -137,6 +137,7 @@
|
|||||||
"evening_stop_time": states("input_datetime.victron_evcs_evening_stop"),
|
"evening_stop_time": states("input_datetime.victron_evcs_evening_stop"),
|
||||||
|
|
||||||
"allow_grid_hc_night": states("input_boolean.victron_evcs_allow_grid_hc_night"),
|
"allow_grid_hc_night": states("input_boolean.victron_evcs_allow_grid_hc_night"),
|
||||||
|
"reset_borne": states("input_boolean.evcs_reset_borne"),
|
||||||
"night_takeover_prev": states("input_boolean.victron_evcs_night_grid_takeover_needed"),
|
"night_takeover_prev": states("input_boolean.victron_evcs_night_grid_takeover_needed"),
|
||||||
"night_grid_session_committed_prev": states("input_boolean.victron_evcs_night_grid_session_committed"),
|
"night_grid_session_committed_prev": states("input_boolean.victron_evcs_night_grid_session_committed"),
|
||||||
"prev_surplus_state": states("input_text.victron_evcs_surplus_state"),
|
"prev_surplus_state": states("input_text.victron_evcs_surplus_state"),
|
||||||
|
|||||||
@@ -471,6 +471,11 @@ const params = {
|
|||||||
parseTimeToMinutes(input.day_stop_time, 20 * 60 + 30)
|
parseTimeToMinutes(input.day_stop_time, 20 * 60 + 30)
|
||||||
),
|
),
|
||||||
|
|
||||||
|
// Bouton reset borne (19/09/2026) : echappatoire MANUELLE quand la borne
|
||||||
|
// se fige (swap trop rapide, statut coince). Force une session fraiche
|
||||||
|
// pour un cycle -> nettoie le collant -> retest. Le controleur le
|
||||||
|
// rebascule off apres avoir agi (momentane).
|
||||||
|
resetBorneRequested: low(input.reset_borne || 'off') === 'on',
|
||||||
allowGridHcNight: low(input.allow_grid_hc_night || 'off') === 'on',
|
allowGridHcNight: low(input.allow_grid_hc_night || 'off') === 'on',
|
||||||
allowGridHcMidday: low(input.allow_grid_hc_midday || 'off') === 'on',
|
allowGridHcMidday: low(input.allow_grid_hc_midday || 'off') === 'on',
|
||||||
|
|
||||||
|
|||||||
@@ -431,6 +431,7 @@ const P11_FRESH_SESSION_MAX_SEC = 90;
|
|||||||
const sessionFresh =
|
const sessionFresh =
|
||||||
parsed.evcsVehicleConnected &&
|
parsed.evcsVehicleConnected &&
|
||||||
(
|
(
|
||||||
|
params.resetBorneRequested || // echappatoire manuelle (bouton reset borne)
|
||||||
(Number.isFinite(parsed.evcsChargingTimeSec) &&
|
(Number.isFinite(parsed.evcsChargingTimeSec) &&
|
||||||
parsed.evcsChargingTimeSec <= P11_FRESH_SESSION_MAX_SEC) ||
|
parsed.evcsChargingTimeSec <= P11_FRESH_SESSION_MAX_SEC) ||
|
||||||
(Number.isFinite(parsed.evcsVehicleConnectedAgeSec) &&
|
(Number.isFinite(parsed.evcsVehicleConnectedAgeSec) &&
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ function summarize(out) {
|
|||||||
desiredCharging: d.desired_charging,
|
desiredCharging: d.desired_charging,
|
||||||
currentA: d.desired_current_a,
|
currentA: d.desired_current_a,
|
||||||
blockReason: d.block_reason || null,
|
blockReason: d.block_reason || null,
|
||||||
|
resetBorneAck: calls.helper_reset_borne_ack?.execute ? calls.helper_reset_borne_ack.service : null,
|
||||||
takeoverNeeded: !!c.night_grid_takeover_needed,
|
takeoverNeeded: !!c.night_grid_takeover_needed,
|
||||||
edfOnAction: !!calls.edf_general_ok_on?.execute,
|
edfOnAction: !!calls.edf_general_ok_on?.execute,
|
||||||
takeoverHelperService: calls.helper_night_grid_takeover_needed?.service || null,
|
takeoverHelperService: calls.helper_night_grid_takeover_needed?.service || null,
|
||||||
|
|||||||
@@ -612,6 +612,29 @@ export const scenarios = [
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
id: 'reset-borne-force-retest',
|
||||||
|
label: 'Bouton reset borne ON : session pourtant etablie (charging_time 1h25 + reconnexion vieille) → retest force + ack off',
|
||||||
|
time: MORNING,
|
||||||
|
overrides: {
|
||||||
|
evcs_vehicle_connected: 'on', evcs_device_connected: 'on',
|
||||||
|
soc_percent: '60', pv_power_w: '4500', pv_power_10m_avg_w: '4200',
|
||||||
|
pv_trend_w: '100', battery_current_a: '10',
|
||||||
|
house_ac_power_w: '900', vebus_ac_out_l1_power_w: '900',
|
||||||
|
evcs_status_raw: '1',
|
||||||
|
prev_surplus_state: 'day_vehicle_full_idle',
|
||||||
|
evcs_charging_time: '1h 25m',
|
||||||
|
evcs_vehicle_connected_ts: String(MORNING_TS - 7200),
|
||||||
|
reset_borne: 'on',
|
||||||
|
},
|
||||||
|
expect: {
|
||||||
|
state: 'start_min_current',
|
||||||
|
decision: 'start',
|
||||||
|
desiredCharging: true,
|
||||||
|
resetBorneAck: 'turn_off',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
// ================= FIN DE CHARGE NUIT (P8) =================
|
// ================= FIN DE CHARGE NUIT (P8) =================
|
||||||
{
|
{
|
||||||
id: 'night-vw-pleine-transition',
|
id: 'night-vw-pleine-transition',
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user