Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Mise à jour V.17.17
#1
salut tout l'monde !
je viens de faire la mise à jour vers
Version firmware RMS:
17.17
Version firmware Borne VE:
2.7
Carte de gestion:
Esp32 H3rv3

Date de la version: 02/04/26



tout marche bien, à priori...

dans le menu "parametres"-> Borne V.E, je viens de voir 3 nouveaux paramètres relatives au "2° courant de charge." (mini maxi manuel).

j'ai cherché un peu à quoi ça pouvait correspondre mais je n'ai rien trouvé....
Répondre

#2
Salut,

le 2ème jeu de paramètres est pris en compte (à la place du 1er jeu de paramètres) quand le gpio14 est actif.
Cela permet, par exemple, de limiter l'intensité de charge sur une action extérieure (et donc de faire un partage des excédents entre plusieurs charges).

La documentation est en mise à jour mais il est possible de tester avant :-)
Répondre

#3
La documentation a été (succinctement) mise à jour... voir doc 05A-utilisation
3 kWc - Enphase iq8hc
Enphase envoy metered
RMS triac - 2,2kW appoint ECS
RMS Station de charge VE-RMS
Merci André !
Répondre

#4
(22-04-2026, 12:08 AM)Rakibou a écrit : La documentation a été (succinctement) mise à jour... voir doc 05A-utilisation

Bonjour à vous tous,

Je ne sais pas trop où poster mon problème.
Je tourne depuis peu sur les versions 17.17 pour le RMS et 2.7 pour le VE.
Tout va bien sauf quand j'essaye de consulter ma page d'accueil sous Firefox.
Les données changent mais la partie grise  Station de charge VE- Info - Paramètres reste complètement figée (depuis plusieurs jours).
J'ai fait un restart, vidé le cache ... rien n'y fait
Sur mon téléphone, je ne rencontre pas ce problème.
J'avoue ne plus avoir d'idée pour "rafraichir" cette partie !

Merci pour vos retours et bonne fin de journée
Répondre

#5
Bonjour,
Il y a peut-être un problème javascript spécifique à Firefox. Il y a des chances que cela fonctionne avec Chrome par exemple.
Sinon, dans Firefox, sur la page qui pose problème, vous pouvez ouvrir le developer tools en appuyant sur F12, aller ensuite dans le tab Console pour voir si il n'y a pas une erreur.
Répondre

#6
Shocked 
(Il y a 9 heures)Mike a écrit : Bonjour,
Il y a peut-être un problème javascript spécifique à Firefox. Il y a des chances que cela fonctionne avec Chrome par exemple.
Sinon, dans Firefox, sur la page qui pose problème, vous pouvez ouvrir le developer tools en appuyant sur F12, aller ensuite dans le tab Console pour voir si il n'y a pas une erreur.

Merci pour cette aide.
Je n'avais pas pensé à tester sous Chrome ; cela fonctionne (donc cela vient surement de Firefox).
Cela m'embête car je ne suis pas vraiment un fan de Chrome et j'aimerais garder mon accès par Firefox.
Je sais afficher le code source avec F12 par contre quand je vais dans la Console je ne sais pas ce que je dois chercher/trouver   Undecided
Répondre

#7
(Il y a 8 heures)Ker49 a écrit : Je sais afficher le code source avec F12 par contre quand je vais dans la Console je ne sais pas ce que je dois chercher/trouver   Undecided

Il n'y a pas une erreur (écriture en rouge) de visible ?
Répondre

#8
Je n'utilise que FF, et je ne reproduis pas le problème (qui est peut être du à une extension ?).
Il y a parfois un léger retard pour l'affichage du contenu de la partie sur fond gris mais ça passe.
Essaie de lancer FF sans extensions pour voir...
3 kWc - Enphase iq8hc
Enphase envoy metered
RMS triac - 2,2kW appoint ECS
RMS Station de charge VE-RMS
Merci André !
Répondre

#9
Jai aussi FF sous ouinedose et je n'ai pas de problème
Répondre

#10
(Il y a 7 heures)H3rv3 a écrit : Jai aussi FF sous ouinedose et je n'ai pas de problème

J'ai désactivé les 2 extensions mais rien ne change (cela fonctionnait bien avant avec ces mêmes extensions).
Dans la console, je ne vois rien en rouge.

C'est la partie grise qui est figée depuis plusieurs jours ; les graphiques en dessous sont bien actualisés "en temps réel".
Vraiment bizarre ce problème ...

(Il y a 6 heures)Ker49 a écrit :
(Il y a 7 heures)H3rv3 a écrit : Jai aussi FF sous ouinedose et je n'ai pas de problème

J'ai désactivé les 2 extensions mais rien ne change (cela fonctionnait bien avant avec ces mêmes extensions).
Dans la console, je ne vois rien en rouge.

C'est la partie grise qui est figée depuis plusieurs jours ; les graphiques en dessous sont bien actualisés "en temps réel".
Vraiment bizarre ce problème ...

Si cela peut aider à comprendre ce qui pose problème.
Le code source de la partie grise :
<td id="EnergieCharge_Wh" style="border-color: rgb(136, 136, 136);">1219 Wh</td> 

Code :
<!doctype html><html lang=fr><meta charset=UTF-8><link rel=stylesheet href=/commun.css><title>RMS F1ATB</title><style>.grid-container2,.grid-container2M{display:grid;grid-template-columns:repeat(6,auto);gap:2px;background-color:rgba(30,30,30,.3);padding:10px;border:2px inset grey;border-radius:10px;text-align:right;color:#000}.grid-container1{display:grid;grid-template-columns:repeat(4,auto);gap:2px;background-color:rgba(30,30,30,.3);padding:10px;border:2px inset grey;border-radius:10px;text-align:right;color:#000}.grid-container1>div,.grid-container2>div,.grid-container2M>div{padding:10px}.item1{grid-column:2/span 2;background-color:rgba(62,194,247,.5);font-weight:700}.item2{grid-column:4/span 2;background-color:rgba(62,194,247,.5);font-weight:700}.item3{grid-column-start:6;background-color:rgba(62,194,247,.5)}.item31{grid-column-start:4;background-color:rgba(62,194,247,.5)}.item4{grid-column-start:2;background-color:rgba(62,194,247,.5);font-weight:700}.item5,.item6,.item7,.item14{background-color:rgba(62,194,247,.5);font-weight:700}.item8{grid-column-start:1;text-align:left}.item_Act{grid-column:1/span 2;background-color:rgba(62,194,247,.5);font-weight:700}.item_H{background-color:rgba(62,194,247,.5);font-weight:700}.item_val{background-color:rgba(200,200,200,.5)}.item_F{background-color:rgba(250,250,200,.5)}.item_Force{grid-column:4/span 3;background-color:rgba(62,194,247,.5);font-weight:700}.item_temp_nom{grid-column:1/span 2;background-color:#8f8}.item_temp_val{grid-column:3/span 4;background-color:#8f8}.le{text-align:left}.ce{text-align:center}.Wh{background-color:#ff8}.W{background-color:#f88}.VA{background-color:#0ff}.deg{background-color:#fdf}#foot{font-size:16px;display:none}svg{border:2px inset grey;border-radius:10px}#LED{position:absolute;top:4px;left:4px;width:0;height:0;border:5px solid red;border-radius:5px}.Baccueil{border:inset 8px azure}.jauge{background-color:#ff8;height:28px;position:absolute;top:4px;left:4px;text-align:left;overflow:visible}.jaugeBack{background-color:#00c3ff;width:208px;height:36px;position:relative;padding:4px}.w100{width:100%;position:absolute;top:4px;left:4px}#TabMesures,#SVG_PW48hT,#SVG_PW2sT,.SVG_Temp48h,#SVG_Ouvertures,#SVG_Ouvertures_2s{display:none}#donneeDistante{font-size:50%;color:#fff;text-align:center;display:none;margin-bottom:10px}#info{position:absolute;border-left:1px solid #000;display:none}#info_txt{position:absolute;background:rgba(120,120,120,.7);padding:4px;right:10px;border:1px solid #000;text-align:right}#couleurTarif_jour,#couleurTarif_J1{font-size:10px}#etatActions{display:none}.choixG{text-align:left;width:100%;height:0;position:relative}.choix{position:absolute;left:120px;top:-80px;font-size:16px;display:none}iframe{width:100%;min-height:900px}.autreRMS{width:100%;height:36px;background-color:grey;color:#fff;font-size:30px;display:flex;justify-content:space-between;margin-top:4px}.autreRif{width:100%}#B_graph{display:none;justify-content:space-between;position:relative;margin-top:10px;margin-bottom:-20px}#B_Graph{border:6px inset azure;border-radius:10px;font-size:20px;padding:8px;position:absolute;top:-30px;right:30px;display:none}#B_Graph_in{display:grid;text-align:left;grid-template-columns:auto auto auto auto}#date{display:none}#fenetreCharge{width:auto;max-width:95%;margin:auto;background:rgba(0,0,0,.35);backdrop-filter:blur(6px);padding:15px;border-radius:15px;box-shadow:0 0 15px rgba(255,255,255,.1);border:5px solid rgba(255,255,255,.15)}#fenetreCharge table{width:auto;table-layout:auto;border-collapse:collapse}#fenetreCharge td,#fenetreCharge th{white-space:nowrap;padding:5px 2px}#fenetreCharge th{text-align:center;padding:3px 0;font-size:1.1em;border-bottom:5px solid rgba(255,255,255,.3);font-family:"exo 2",sans-serif}#fenetreCharge td{padding:5px 2px;vertical-align:middle}#fenetreCharge td:first-child{border-right:2px solid rgba(255,255,200,.5)}#fenetreCharge tr:nth-child(even):not(:first-child){background:rgba(255,255,255,.2)}#fenetreCharge tr:nth-child(odd):not(:first-child){background:rgba(255,255,255,2%)}#fenetreCharge td:first-child{white-space:nowrap;text-align:left;color:#000;font-family:"exo 2",sans-serif}#fenetreCharge td:last-child{white-space:nowrap;text-align:center;font-weight:700;color:#000;font-family:"exo 2",sans-serif;text-shadow:0 0 2px rgba(255,255,255,.6),0 0 4px rgba(255,255,255,.4)}.manual-label{white-space:nowrap;font-size:1.1em;color:#ddd}.manual-label span{font-weight:700;color:#00e0ff}.manual-cell{min-width:320px;padding-left:10px}.manual-input{display:flex;align-items:center;gap:10px}.manual-input input[type=range]{flex:1;height:6px;border-radius:6px;background:linear-gradient(90deg,#00e0ff,#0077ff);outline:none}.btn-circle{width:30px;height:30px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;font-size:1.2em;font-weight:700;cursor:pointer;background:#222;color:#00e0ff;box-shadow:0 0 3px rgba(0,224,255,.5)}.btn-circle:active{transform:scale(.9);box-shadow:0 0 6px rgba(0,224,255,.8)}.titre-cliquable{cursor:pointer;user-select:none}.titre-cliquable:hover{color:#0078d7}.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000}.modal-content{background:#fff;color:#000;max-width:580px;margin:10% auto;padding:12px 16px;border-radius:10px;box-shadow:0 10px 25px rgba(0,0,0,.3);font-size:.85em}.modal .modal-content h3{margin:0 0 12px;padding-bottom:6px;font-size:1.15em;font-weight:700;color:#005fa3;border-bottom:2px solid #005fa3}.close{float:right;font-size:22px;cursor:pointer}.info-table{width:100%;border-collapse:collapse}.info-table{font-family:segoe ui,roboto,Arial,sans-serif;font-size:.95em;border-collapse:collapse}.info-table td:first-child{color:#555;text-align:left;white-space:nowrap}.info-table td{line-height:1.1;padding:3px 6px}.info-table .separator td{border-top:2px solid #999;padding:4px 0}.info-table tr.credits td{font-size:.85em;font-family:segoe ui,Arial,sans-serif;color:#555}.clignote{animation:blinkAnim 1s infinite}@keyframes blinkAnim{0%,50%,100%{opacity:1}25%,75%{opacity:0}}#boxI_charge,#boxI_chargeReel{font-weight:700}#boxP_charge,#boxP_chargeReel{font-weight:600}#boxI_charge,#boxP_charge{color:#004080}#boxI_chargeReel,#boxP_chargeReel{color:#006400}#TensionMaison{font-weight:700}.temps-normal{color:#004080}.temps-warning{color:gold}.temps-danger{color:red}.temps-expire{color:#888;font-style:italic}#TempsInline{display:inline-block;vertical-align:middle;margin-left:6px}#TempsContainer{position:relative;display:inline-block;width:200px;height:26px;background:#dcdcdc;border-radius:6px;overflow:hidden;vertical-align:middle}#TempsProgress{position:absolute;top:0;left:0;height:100%;width:100%;background:#00a0ff;transition:width .8s linear,background-color .5s ease}#TempsInfo{position:relative;z-index:2;display:block;text-align:center;line-height:26px;font-size:16px;font-weight:700;color:#000}.temps-danger #TempsInfo{text-shadow:0 0 2px rgba(0,0,0,.6)}.wh-ok{color:#000}.wh-expired{color:red;font-weight:700}.depass-soft{color:#1e90ff;font-weight:700}.depass-hard{color:#e53935;font-weight:700}.depass-zero{color:#999;font-weight:400}.btn-icon{cursor:pointer;padding:4px 8px}.disabled{opacity:.5}.info-table td:nth-child(2){width:auto;min-width:220px;text-align:right;white-space:nowrap}.input-config{width:180px;box-sizing:border-box}.ligne-fin{display:flex;justify-content:flex-end;align-items:center;gap:8px}.ligne-fin input{flex:0 0 180px}</style><body onload=Init()><div id=LED title="Réception des données"></div><div id=lesOnglets></div><div id=date>DATE</div><h2 id=routeur>Routeur - RMS - F1ATB</h2><div id=TabMesures></div><br><div id=donneeDistante>Données distantes</div><div id=etatActions class=grid-container2></div><div id=fenetreCharge class=tableau><table><tr><th colspan=2 style=text-align:center>Station de charge VE : <span id=infoIcon class=titre-cliquable>ⓘ Info</span> <span class=separator>|</span> <span id=configIcon class=titre-cliquable onclick=openConfig()>⚙ Paramètres</span><tr><td style=text-align:left>⚡ Courant de charge<td id=I_charge><tr><td style=text-align:left>☀️? Production-Consommation<td id=PuissanceI_M><tr><td style=text-align:left>? Recharge Cumulée d'énergie<td id=EnergieCharge_Wh><tr><td>⏱ Temps de charge <span id=TempsInline><div id=TempsContainer><div id=TempsProgress></div><span id=TempsInfo></span></div></span><td id=TempsCharge_ms>00:00:00<tr><td style=text-align:left>? PWM<td id=cp_pwm_charging><tr><td style=text-align:left>? État de la liaison VE<td id=state><tr><td>✅ Mode de fonctionnement <span id=whInfo style=font-size:.7em></span><td><select id=modeSelect onchange=setMode(this.value) style=min-width:140px;font-size:.7em><option value=0>Auto<option value=1>Semi-auto<option value=2>Manuel<option value=3>Arrêt</select> <span id=etatHPHC style=font-size:smaller;padding-left:8px></span><tr id=manualRow style=display:none><td class=manual-label>⚡ I charge manuel : <span id=manualValue style=color:#004080>6.0</span> A<td class=manual-cell><div class=manual-input><button class=btn-circle onclick=changeManual(-.1)>−</button> <input type=range id=manualSlider step=0.1 oninput="manualEditing=!0,setManualCurrent(this.value)" onmouseup="manualEditing=!1" ontouchend="manualEditing=!1"> <button class=btn-circle onclick=changeManual(+.1)>+</button></div></table></div><div id=B_graph><div>&nbsp;</div><div>Graphiques</div><div style=cursor:pointer><span onclick=ListeGraph()>?</span><div id=B_Graph></div></div></div><div id=LesGraphes></div><div id=info><div id=info_txt></div></div><br><br><div id=foot>Données RMS<div id=source></div></div><div id=autresRMS></div><div id=pied></div><script src=/ParaCommunJS></script><script src=MainJS1></script><script src=MainJS2></script><script src=MainJS3></script><script src=/CommunCouleurJS></script><div id=infoBox class=modal><div class=modal-content><span class=close onclick=closeInfo()>×</span><h3>ℹ️ Informations borne VE</h3><table class=info-table><tr><td>Version firmware RMS:<td id=fwVersionRMS>v1.2.3<tr><td>Version firmware Borne VE:<td id=fwVersionBorne>v1.2.3<tr><td>Carte de gestion:<td id=CarteBorne>Esp32<tr><td>Date de la version:<td id=fwDate>16/12/2025<tr class=separator><td colspan=2><tr><td>Etat liaison VE, CP:<td id=boxState>A<tr><td>I charge programmée:<td id=boxI_charge>0.0 A<tr><td>P charge programmée:<td id=boxP_charge>0.0 W<tr><td>I charge effective:<td id=boxI_chargeReel>0.0 A<tr><td>P charge effective:<td id=boxP_chargeReel>0.0 W<tr><td id=TensionLabel><td id=TensionMaison>0.0 V<tr><td>Dépassement puissance:<td id=DepassPuiss>0<tr class=separator><td colspan=2><tr class=credits><td>L'équipe des concepteurs:<td id=Concepteurs>CMichel</table></div></div><div id=configBox class=modal><div class=modal-content><span class=close onclick=closeConfig()>×</span><h3>⚙️ Configuration recharge VE</h3><table class=info-table><tr><td>Énergie maximale à recharger (Wh):<td><input type=number id=inputMaxWh class=input-config><tr><td>Date et heure de fin recharge :<td><div class=ligne-fin><button type=button id=btnFinRecharge class="btn-icon disabled" onclick=toggleFinRecharge()> ⏱ </button> <input type=datetime-local id=inputFinRecharge class="dt-input disabled input-config" onchange=updateFinRecharge()></div><tr><td colspan=2 style=text-align:center;padding-top:10px><button onclick=applyConfig()>? Appliquer</button> <button onclick=resetConfig()>♻️ Remettre à zéro</button></table></div></div><script>let progressTimer=null,manualEditing=!1,manualTimer=null,IdxMessage=0,TensionFiltree=NaN,lastSentTension=0,maxWhInput=0,DateHoraireDeFin=0,varEnergieCharge_Wh=0,enabIntHC=0;function formatHHMMSS(e){let t=Math.floor(e/1e3),n=Math.floor(t/3600),s=Math.floor(t%3600/60),o=t%60;return String(n).padStart(2,"0")+":"+String(s).padStart(2,"0")+":"+String(o).padStart(2,"0")}function updateData(){fetch("/data").then(e=>e.json()).then(e=>{document.getElementById("I_charge").innerText=Number(e.I_charge).toFixed(2)+" A",document.getElementById("I_charge").style.color=e.enab==0?"red":"black";let t="";switch(e.state){case"A":t="A - Pas de véhicule";break;case"B":t="B - Véhicule connecté";break;case"C":t="C - Charge en cours";break;case"D":t="D - Défaut";break;case"F":t="F - Erreur CP";break;default:t="Défaut sur état.."}const r=document.getElementById("state");r.innerText=t,t.includes("Charge en cours")?r.classList.add("clignote"):r.classList.remove("clignote"),document.getElementById("cp_pwm_charging").innerText=Number(e.cp_pwm_charging).toFixed(2)+" %";const s=document.getElementById("PuissanceI_M"),o=Number(e.PuissanceI_M)-Number(e.PuissanceS_M);s.innerText=o.toFixed(0)+" W";const x=1200,i=100,a=Math.min((o<0?-o:o)/x,1);if(o<0){const e=255,t=Math.round(220-a*i),n=Math.round(220-a*i);s.style.backgroundColor=`rgb(${e},${t},${n})`}else if(o>0){const e=255,t=Math.round(220-a*i),n=Math.round(220-a*i);s.style.backgroundColor=`rgb(${t},${e},${n})`}else s.style.backgroundColor="";document.getElementById("EnergieCharge_Wh").innerText=e.EnergieCharge_Wh+" Wh",varEnergieCharge_Wh=e.EnergieCharge_Wh,document.getElementById("TempsCharge_ms").innerText=formatHHMMSS(e.TempsCharge_ms),updateProgressBar(),document.getElementById("modeSelect").value=String(e.mode),e.mode==1||e.mode==2||e.enabIntHC>0?document.getElementById("manualRow").style.display="table-row":document.getElementById("manualRow").style.display="none";const l=document.getElementById("manualSlider"),O=document.getElementById("manualValue"),v=e.I_min_c||6,b=e.I_max||32,f=e.I_charge_manual||e.I_min_c;l.min=v,l.max=b,manualEditing||(l.value=f,O.textContent=f);const _=document.getElementById("fwVersionRMS"),p=document.getElementById("fwVersionBorne"),w=document.getElementById("DepassPuiss");document.getElementById("fwVersionRMS").textContent="--",p.textContent="--";let n=e.Version;_.textContent=n.substring(0,n.indexOf("_")),p.textContent=n.substring(n.lastIndexOf("_")+1),document.getElementById("fwDate").textContent=e.DateVersion;let h=e.nb_depassement_soft||0,u=e.nb_depassement_hard||0;const j=h>0?"depass-soft":"depass-zero",y=u>0?"depass-hard":"depass-zero";w.innerHTML=`Soft: <span class="${j}">${h}</span>`+` / Hard: <span class="${y}">${u}</span>`+` <span class="depass-total">sur ${h+u}</span>`,document.getElementById("CarteBorne").textContent=e.CarteVersion,document.getElementById("boxState").textContent=t;const g=document.getElementById("boxI_charge"),m=document.getElementById("boxP_charge"),d=document.getElementById("boxI_chargeReel"),c=document.getElementById("boxP_chargeReel");t.includes("Charge en cours")?(g.textContent=Number(e.I_charge).toFixed(2)+" A",m.textContent=Number(e.I_charge*e.U_reseau).toFixed(0)+" W",Number(e.I_charge)>0?(d.textContent=Number(e.cp_pwm_charging*.6).toFixed(2)+" A",c.textContent=Number(e.cp_pwm_charging*.6*e.U_reseau).toFixed(0)+" W"):(d.textContent="0.0 A",c.textContent="0 W")):(g.textContent="0.0 A",m.textContent="0 W",d.textContent="0.0 A",c.textContent="0 W"),document.getElementById("Concepteurs").textContent="F1ATB-Rakibou-CMichel-H3rv3",maxWhInput=e.maxWhInput,DateHoraireDeFin=e.DateHoraireDeFin,updateProgressBar();const E=document.getElementById("TempsInline"),C=document.getElementById("TempsContainer"),k=document.getElementById("TempsProgress"),A=document.getElementById("TempsInfo");let S=null;C.className="",enabIntHC=e.enabIntHC,updateWhInfo(),update_etatHPHC(e.mode),LoadDataAccueil()})}setInterval(updateData,2e3);function setMode(e){fetch("/setMode?mode="+e).then(()=>{e==1||e==2?document.getElementById("manualRow").style.display="table-row":document.getElementById("manualRow").style.display="none"})}function changeManual(e){const t=document.getElementById("manualSlider");let n=parseFloat(t.value)+e;n=Math.max(parseFloat(t.min),Math.min(parseFloat(t.max),n)),setManualCurrent(n)}function setManualCurrent(e){manualEditing=!0,e=parseFloat(e).toFixed(1);const t=document.getElementById("manualSlider"),n=document.getElementById("manualValue");t.value=e,n.textContent=e,manualTimer&&clearTimeout(manualTimer),manualTimer=setTimeout(()=>{fetch("/setCurrent?amp="+e).finally(()=>manualEditing=!1)},400)}function formatFin(e){const n=new Date,t=new Date(e),i=new Date(n.getFullYear(),n.getMonth(),n.getDate()),a=new Date(t.getFullYear(),t.getMonth(),t.getDate()),s=Math.round((a-i)/864e5),r=String(t.getHours()).padStart(2,"0"),c=String(t.getMinutes()).padStart(2,"0"),o=`${r}:${c}`;return s<0?"expiré":s===0?o:`J+${s} ${o}`}function updateWhInfo(){const t=document.getElementById("whInfo");let e=[];if(maxWhInput>0){const t=isWhExpired()?"wh-expired":"wh-ok";e.push(`<span class="${t}">${maxWhInput} Wh</span>`)}if(DateHoraireDeFin>0){const t=isDateExpired()?"wh-expired":"wh-ok";e.push(`<span class="${t}">fin : ${formatFin(DateHoraireDeFin)}</span>`)}t.innerHTML=e.length?`(${e.join(" • ")})`:""}function formatRemaining(e){if(e<=0)return"expiré";let t=Math.floor(e/1e3),n=Math.floor(t/3600),s=Math.floor(t%3600/60),o=t%60;return n>99?"> 99h":String(n).padStart(2,"0")+":"+String(s).padStart(2,"0")+":"+String(o).padStart(2,"0")}function updateProgressBar(){const e=document.getElementById("TempsContainer"),o=document.getElementById("TempsProgress"),s=document.getElementById("TempsInfo");if(DateHoraireDeFin<=0){e.style.display="none";return}let t=DateHoraireDeFin-Date.now();if(e.style.display="inline-block",e.className="",t<=0){e.classList.add("temps-expire"),s.textContent="expiré",o.style.width="0%";return}let n;t>36e5?n=36e5:t>6e4?n=6e4:n=6e4;let a=t%n/n,i=a*100;o.style.width=i.toFixed(1)+"%",s.textContent="Reste: "+formatRemaining(t),i>50?s.style.color="#ffffff":s.style.color="#000000",t<5*60*1e3?e.classList.add("temps-danger"):t<15*60*1e3?e.classList.add("temps-warning"):e.classList.add("temps-normal")}function isWhExpired(){return maxWhInput>0&&varEnergieCharge_Wh>=maxWhInput}function isDateExpired(){return DateHoraireDeFin>0&&Date.now()>=DateHoraireDeFin}function update_etatHPHC(e){const t=document.getElementById("etatHPHC"),n=isWhExpired(),s=isDateExpired();if(n||s){n&&s?t.textContent="⛔ Fin":n?t.textContent="⛔ Fin (Energie)":t.textContent="⛔ Fin (Horaire)",t.style.color="red",t.classList.add("clignote");return}t.classList.remove("clignote"),t.style.color="",e==0?enabIntHC==1?(t.textContent="Attente horaire",t.classList.remove("clignote")):enabIntHC==2?(t.textContent="Horaire actif",t.classList.remove("clignote")):(t.textContent=" ",t.classList.remove("clignote")):(t.textContent=" ",t.classList.remove("clignote"))}document.getElementById("infoIcon").onclick=function(){document.getElementById("infoBox").style.display="block"};function closeInfo(){document.getElementById("infoBox").style.display="none"}function toLocalInputValue(e){const t=e=>String(e).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}T${t(e.getHours())}:${t(e.getMinutes())}`}function openConfig(){fetch("/getEnergie").then(e=>e.json()).then(e=>{if(maxWhInput=e.maxWh||0,DateHoraireDeFin=e.dateFin||0,document.getElementById("inputMaxWh").value=maxWhInput,DateHoraireDeFin>0){const e=new Date(DateHoraireDeFin);document.getElementById("btnFinRecharge").classList.remove("disabled"),document.getElementById("inputFinRecharge").classList.remove("disabled"),document.getElementById("inputFinRecharge").disabled=!1,document.getElementById("inputFinRecharge").value=toLocalInputValue(e)}else document.getElementById("inputFinRecharge").value="",document.getElementById("btnFinRecharge").classList.add("disabled"),document.getElementById("inputFinRecharge").classList.add("disabled"),document.getElementById("inputFinRecharge").disabled=!0,document.getElementById("inputFinRecharge").value="";document.getElementById("configBox").style.display="block"})}function closeConfig(){document.getElementById("configBox").style.display="none"}function applyConfig(){const e=parseInt(document.getElementById("inputMaxWh").value)||0,t=document.getElementById("inputFinRecharge").value,n=t?new Date(t).getTime():0;fetch(`/setEnergie?maxWh=${e}&dateFin=${n}`).then(()=>{maxWhInput=e,DateHoraireDeFin=n,updateWhInfo(),closeConfig()})}function resetConfig(){fetch(`/setEnergie?maxWh=0&dateFin=0`).then(()=>{maxWhInput=0,DateHoraireDeFin=0,document.getElementById("inputMaxWh").value=0,document.getElementById("inputFinRecharge").value="",updateWhInfo(),closeConfig()})}function toggleFinRecharge(){const t=document.getElementById("btnFinRecharge"),e=document.getElementById("inputFinRecharge"),n=t.classList.contains("disabled");if(n){if(t.classList.remove("disabled"),e.classList.remove("disabled"),e.disabled=!1,DateHoraireDeFin>0){const t=new Date(DateHoraireDeFin);e.value=toLocalInputValue(t)}}else t.classList.add("disabled"),e.classList.add("disabled"),e.disabled=!0,e.value="",DateHoraireDeFin=0}function updateFinRecharge(){const e=document.getElementById("inputFinRecharge");e.value?DateHoraireDeFin=new Date(e.value).getTime():DateHoraireDeFin=0}window.onclick=function(e){let t=document.getElementById("infoBox"),n=document.getElementById("configBox");e.target===t&&(t.style.display="none"),e.target===n&&(n.style.display="none")};function envoyerTensionMaison(e){if(isNaN(e)||e<210||e>260)return;if(Math.abs(e-lastSentTension)<1)return;lastSentTension=e,fetch("/setTensionMaison?u="+e.toFixed(1)).catch(e=>console.log("Erreur envoi tension:",e))}function afficherTensionM(e){const t=document.getElementById("TensionMaison");if(!t)return;!isNaN(e)&&e>0?(t.textContent=e.toFixed(1)+" V",envoyerTensionMaison(e),t.style.color="blue"):t.style.color="black"}function extraireTension(e){if(!e||e.length<2)return NaN;const i=e[1]||"",n=i.split(GS),o=(n[0]||"").trim(),t=document.getElementById("TensionLabel");t&&(t.textContent="Tension paramètre BorneVE:");let s=NaN;if(o==="Enphase"){if(t&&(t.textContent="Tension extraite Enphase:"),n.length>=2){const e=parseFloat(n[1]);isNaN(e)||(e>=300&&e<900&&(s=e/3),e>210&&e<300&&(s=e))}}else if(o==="UxIx2"){t&&(t.textContent="Tension mesurée UxIx2:");const o=n.length>=2?n[1]:"",e=o.replace(/"/g,"").split(",");if(e.length>0){const t=parseFloat(e[0]);isNaN(t)||(s=t)}}return s}function LoadDataAccueil(){const e=new XMLHttpRequest;e.onreadystatechange=function(){if(this.readyState===4&&this.status===200){const e=this.responseText.split(RS),t=extraireTension(e);afficherTensionM(t)}},e.open("GET","/ajax_dataRMS?idx="+IdxMessage,!0),e.send()}document.addEventListener("DOMContentLoaded",function(){updateProgressBar(),progressTimer=setInterval(updateProgressBar,1e3)})</script><br>


Pièces jointes Miniature(s)
   
Répondre



Atteindre :


Utilisateur(s) parcourant ce sujet :
1 visiteur(s)

Moteur MyBB, © 2002-2026 Melroy van den Berg.