Connection à distance d'un IPX800 ok, mais local rien !

Bonjour , j’avance dans la programmation de mon site pour gérer mon IPX800
Mais je n’arrive pas à récupérer les données en local.
Quelqu’un à un idée ?
J’ai parcouru le forum mais je n’arrive pas à trouver une solution

Merci

Il vas falloir nous en dire plus. Comment est configuré votre réseau par exemple ?

Merci, en fait mon IPX est connecté au réseau par l’intermediaire d’une liveBox avec une IP local fixe , redirigée en externe par un NAT
J’accède à mon IPX par une adr IP x.x.x.x:port , avec ça ca marche
Mais quand je suis connecté avec mon PC sous window en local , je n’arrive pas à récupérer les données.

Vous utilisez bien l’adresse IP locale (192.168.X.Y) de votre IPX lorsque vous êtes chez vous ?

Oui biensur, quand je l’utilise dans mon navigateur directement dans la barre d’acces ca marche je tombe sur l’IPX , mais quand j’ouvre mon site perso qui est lui hébergé ailleurs sur un autre hébergeur, et que je demande d’accéder à mon IPX ca na marche pas !
dans la console du navigateur , on voit bien que la requete abouti (http 200 OK) mais je n’ai pas de données dans responseText.

Quelle requête faites vous ? Sur quel IPX ? (V3, V4 ?)

La requete je la fait en javascript:

function cpt_bruleur(c)
{
var it = document.getElementById("adr_ip");
var url = "http://" + it.value;
var sr = document.getElementById("server");
if (sr.value == "local") {
	url += "/api/xdevices.json?key=apikey&Get=C";
} else {
	url += ":50000/api/xdevices.json?key=apikey&Get=C";
}
//alert(url);
var conso = c;
var http = createRequestObject();
http.open('GET', url, true);
http.onreadystatechange = function ()
{
	if (this.readyState == 4 && this.status == 200)
	{
		var data = JSON.parse(http.responseText);
		document.forms["cmd"].elements["valeur"].value = data["C3"];
		conso = 1500 - (Number(data["C3"])*2.27/60).toFixed(0);
		aff_jauge(conso);
	}else
	{
		document.forms["cmd"].elements["valeur"].value = c;
		aff_jauge(c);
	}	
};
http.send(null);

voila un extrait de ma requete

avec un IPX V4, adr_ip adr de l’ipx en externe ou en local selon si je suis chez moi ou en deplacement , et dans server juste variable pour précision ma connection locale ou en exterieure

Est-ce que vous utilisez la bonne api key?
Est-ce que cette même requête dans votre navigateur fonctionne ?
Est-ce que l’URL est la bonne ?

PS : Voici comment j’aurais écrit votre fonction :wink:

function cpt_bruleur(c) {
  const ip = document.getElementById("adr_ip").value;
  const port = document.getElementById("server").value == "local" ? "" : ":50000";

  fetch(`http://${ip + port}/api/xdevices.json?key=apikey&Get=C`)
    .then(r => r.json())
    .then(data => {
      document.forms["cmd"].elements["valeur"].value = data["C3"];
      aff_jauge((1500 - data["C3"] * 2.27 / 60).toFixed(0));
    })
    .catch(() => {
      document.forms["cmd"].elements["valeur"].value = c;
      aff_jauge(c);
    });
}

Ouah !!! je vois que j’ai bcq de progrès en programmation
sinon , l’api est la bonne , elle fonctionne en accè externe
pour l’url c pareil ,
Merci pour la simplification de la fonction

Là, je bloque du coup… :thinking:

Pourriez-vous coller le détail de la requête que vous voyez dans la console de votre navigateur ?

OK, entre tps j’ai essayé la fonction que vous avez écrite mais ca plante le script !
sinon requete du genre http://ip:port/api/xdevices.json?key=apikey&Get=C’ que cela fonctionne en distant ou local

1 « J'aime »

C’est quoi l’erreur ?

je travaille avec edge , et je crois que fetch ca marche pas

a premier vue c’est ça !
fetch(‹ http://${ip + port}/api/xdevices.json?key=apikey&Get=C ›)

Seul IE11 ne supporte pas fetch

Attention, ce ne sont pas les bonnes « quotes » :wink:

j’ai l’impression que c ${ip + port} qui va pas

Oui, il faut faire attention aux quotes, il faut utiliser le backtick :arrow_right: ` et pas l’apostrophe :arrow_right:

1 « J'aime »

Ok j’ai trouvé l’erreur , il manquait une parenthèse dans cette expression
aff_jauge( ici (1500 - data[« C3 »] * 2.27 / 60).toFixed(0));

1 « J'aime »

si non ca plante plus mais ca donne pas plus de résultats , quand je regarde le reseau sur le navigateur il me montre une entete de demande vide et de reponse aussi est ce normal ?