Je trouve que vous vous compliquez énormément la vie côté Arduino où on a peu de mémoire et peu de puissance de calcul...
Laissez le navigateur faire les modifications. Par exemple sauvez ce code HTML dans un fichier demo.htm
sur votre PC et ouvrez le dans un navigateur web
<!DOCTYPE HTML>
<html lang='fr'>
<head>
<meta charset='utf-8' />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Démo JSON</title>
</head>
<script>
const myData = {
ID1:'COUCOU ID1',
ID2:'COUCOU ID2',
ID3:'COUCOU ID3'
};
function updateData() {Object.keys(myData).forEach(keyID => {document.getElementById(keyID).value = myData[keyID];});}
</script>
<body onload='updateData()'>
<input id='ID1' type="button" value=''>
<input id='ID2' type="button" value=''>
<input id='ID3' type="button" value=''>
</body>
</html>
Vous verrez que les 3 boutons ont leur texte qui aura été rempli dynamiquement.

Pour bâtir votre réponse vous avez 3 String.
La première est statique
[code]<!DOCTYPE HTML>
<html lang='fr'>
<head>
<meta charset='utf-8' />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Démo JSON</title>
</head>
<script>
const myData = {
la deuxième est dynamique, ce que vous avez à générer dynamiquement c'est
ID1:'COUCOU ID1', ID2:'COUCOU ID2', ID3:'COUCOU ID3'
ce qui peut se faire très simplement.
la troisième est statique
};
function updateData() {Object.keys(myData).forEach(keyID => {document.getElementById(keyID).value = myData[keyID];});}
</script>
<body onload='updateData()'>
<input id='ID1' type="button" value=''>
<input id='ID2' type="button" value=''>
<input id='ID3' type="button" value=''>
</body>
</html>
En gros la page HTML aurait 3 parties, et la seule chose à générer ce sont les IDs à remplacer.
Ensuite à l'ouverture de la page par le navigateur, il se charge d'aller remplacer les valeurs aux bons endroits grace au petit script qui parcourt le tableau et va trouver les IDs dans la page pour remplacer leur valeur.
ça simplifierait bcp votre code...
en gros c'est comme on ferait en AJAX, sauf que vous embarquez les données sous forme de tableau dans la page web directement à la génération.
