ARDUINO PCDUINO HTML JAVASCRIPT AJAX IO

Bonjour à tous,
Encore une fois, je viens vous demander votre aide pour poursuivre le développement de mon système de domotique basé sur une carte arduino MEGA 2560 et un pcduino pour la partie web + graphisme...

Je rencontre un problème concernant des requêtes AJAX entre le Pc duino et mon client...

J'utilise des requêtes du type suivant pour activer des prises radio commandées et des lumieres des pieces de la maison:

	reponseAjax=(  # debut page reponse AJAX
	"<P>"+str(Var_Reponse_Ajax_Pc_Octus)+"</P>"+"<P>"+str(Var_Reponse_Ajax_Pc_Sapin)+"</P>"+"<P>"+str(Var_Reponse_Ajax_Pc_Neon)+"</P>"+"<P>"+str(Var_Reponse_Ajax_Pc_Arbre)+"</P>"+
	"<P>"+str(Var_Reponse_Ajax_Pc_Divers1)+"</P>"+"<P>"+str(Var_Reponse_Ajax_Pc_Divers2)+"</P>"+"<P>"+str(Var_Reponse_Ajax_Pc_Divers3)+"</P>"+"<P>"+str(Var_Reponse_Ajax_Pc_Divers4)+"</P>"+
	"<P>"+str(Var_Reponse_Ajax_Pc_Divers5)+"</P>"+"<P>"+str(Var_Reponse_Ajax_Pc_Divers6)+"</P>"+"<L>"+str(Var_Reponse_Ajax_Lum_Entree)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_Couloir)+"</L>"+
	"<L>"+str(Var_Reponse_Ajax_Lum_Sejour)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_Cuisine)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_Salon)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_CH1)+"</L>"+
	"<L>"+str(Var_Reponse_Ajax_Lum_CH2)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_Bureau)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_SdB)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_Cave)+"</L>"+
	"<L>"+str(Var_Reponse_Ajax_Lum_Garage)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_Atelier1)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_Atelier2)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_Dispo1)+"</L>"+
	"<L>"+str(Var_Reponse_Ajax_Lum_Dispo2)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_Tout_Allumer)+"</L>"+"<L>"+str(Var_Reponse_Ajax_Lum_Tout_Eteindre)+"</L>" +
	"<V>"+str(Var_Reponse_Ajax_Hydro_Local_Technique)+"</V>"+"<V>"+str(Var_Reponse_Ajax_Temp_Local_Technique)+"</V>"+"<V>"+str(Var_Reponse_Ajax_Lum_Local_Technique)+"</V>"
	)	# fin page reponse AJAX

Je parviens bien à récupérer les informations tout ou rien de type ON / OFF en utilisant ce code suivant

		function GetArduinoIO()
		{
		Lumieres(); // Affiches les lumieres allumees dans la maison	
		
			nocache = "&nocache=" + Math.random() * 1000000;

	//-- Definition d'un objet XHR
			var request = new XMLHttpRequest();

	//-- Fonction de callback pour gerer la reponse du serveur
			request.onreadystatechange = function()
			{
				if (this.readyState == 4) {
					if (this.status == 200) {
						if (this.responseXML != null) {
	// XML file received - contains analog values, switch values and LED states
							
						
						// Modifications sur le retour d'information sur l'etat des Prises Commandees
							// Prise Commandee Octus         
							if (this.responseXML.getElementsByTagName('P')[0].childNodes[0].nodeValue === "on") {
								document.getElementById("Pc_Octus").innerHTML = "Pc Octus ON";
								Pc_Octus_Etat = 1;
							}
							else {
								document.getElementById("Pc_Octus").innerHTML = "Pc Octus OFF";
								Pc_Octus_Etat = 0;
							}



						// Lumiere Entree   
							if (this.responseXML.getElementsByTagName('L')[0].childNodes[0].nodeValue === "on") {
						//		document.getElementById("Lum_Bureau").innerHTML = "Lum Bureau ON";
								//document.getElementById("Bouton_Allumer").innerHTML = "Eteindre";
								//document.getElementById("Bouton_Eteindre").innerHTML = "Allumer";
								Lum_Entree_Etat = 1;
								//delay(100);
							}
							else {
						//		document.getElementById("Lum_Bureau").innerHTML = "Lum Bureau OFF";
								//document.getElementById("Bouton_Allumer").innerHTML = "Allumer";
								//document.getElementById("Bouton_Eteindre").innerHTML = "Eteindre";
								Lum_Entree_Etat = 0;
								//delay(100);
							}

mais je ne parviens pas a récupérer des valeurs en provenance de capteurs d'environnement.

j'utilise ce code la mais sans succès:

							Valeurs_Local_Technique_Temp = (this.responseXML.getElementsByTagName('V')[0].childNodes[0].nodeValue);
							
							Valeurs_Local_Technique_Hydro = (this.responseXML.getElementsByTagName('V')[1].childNodes[0].nodeValue);
	
							Valeurs_Local_Technique_Lum = (this.responseXML.getElementsByTagName('V')[2].childNodes[0].nodeValue);

pouvez vous me conseiller, m'aider ou m'indiquer ou je fais une erreur, se serait top de votre part.

Merci d'avance

Bonjour,

Il manque beaucoup d'infos et même avec, sans le vrai système sous le nez ça va être difficile de t'aider.
Je ne peux que te conseiller d'utiliser la bonne vieille méthode: ajoute des "points de test" (des console.log dans ta partie javascript par exemple) à tous les endroits critiques pour pister là où se perd l'info.
Ca prend du temps, mais la résolution de tes problèmes est garantie.

je ne suis pas sur du tout sur la maniere de recuperer la variable depuis la requete ajax.
J'utilise cela mais je ne sais pas si c'est bon

Valeurs_Local_Technique_Temp = (this.responseXML.getElementsByTagName('V')[0].childNodes[0].nodeValue);
							
							Valeurs_Local_Technique_Hydro = (this.responseXML.getElementsByTagName('V')[1].childNodes[0].nodeValue);
	
							Valeurs_Local_Technique_Lum = (this.responseXML.getElementsByTagName('V')[2].childNodes[0].nodeValue);

peux tu me donner ton avis ?

la requete ajax est bien envoyé, j'ai ajouter un print pour la voir et mes valeurs sont bien affichées. seul probleme comment les recuperer coté client pour les integrer a mon code html javascript ???

Merci d'avance pour tes reponses...

Personnellement j'utilise jQuery pour faire de l'Ajax. C'est beaucoup moins verbeux et tu trouveras plein d'exemples fonctionnels à partir desquels t'inspirer.

arnaudf09:
la requete ajax est bien envoyé, j'ai ajouter un print pour la voir et mes valeurs sont bien affichées. seul probleme comment les recuperer coté client pour les integrer a mon code html javascript ???

Un truc m'échappe: Ajax, c'est côté client que tu le fait fonctionner. A priori, dans ton appli, tu as ta Mega qui gère les capteurs et qui envoie les données en i2c à la pcDuino. Sur la pcDuino, tu fais tourner un serveur Web, mais tu ne fais pas d'Ajax et a priori pas de Javascript, sauf si ton serveur est en Node.js
Et côté client (le navigateur qui est connecté à la pcDuino), c'est là que tu fais de l'Ajax.