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
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.
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
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…
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
C’est quoi l’erreur ?
je travaille avec edge , et je crois que fetch ca marche pas
Seul IE11 ne supporte pas fetch
Attention, ce ne sont pas les bonnes « quotes »
j’ai l’impression que c ${ip + port} qui va pas
Oui, il faut faire attention aux quotes, il faut utiliser le backtick ` et pas l’apostrophe
’
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));
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 ?