Jeedom ?

Plus d'informations
14 Déc 2019 22:09 #1 par Forhorse
Jeedom ? a été créé par Forhorse
Bonjour à tous,
Je fais un discret retour ici, bien heureux que le site existe encore (parce que ces derniers temps à cette adresse je tombais sur un site chinois...) Mon Maxisun tourne encore parfaitement, j\'ai juste eu un petit soucis au printemps avec une carte SD qui contenait trop de fichiers (elle était pas pleine mais il y avait trop de fichiers pour que le Maxisun en donne la liste) et une sonde de température ballon hs, mais rien de grave.
Là je suis en train de jouer un peu avec Jeedom, une petite envie de faire un peu de domotique à la maison, sans doute un projet qui restera sur un coin du bureau sans aboutir mais on sait jamais. Je me disais que ça serait sympa d\'avoir les valeurs du Maxisun qui remontent dans Jeedom et que sans doute je trouverais ici quelqu\'un qui l\'a déjà fait, mais visiblement non ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
20 Déc 2019 11:18 #2 par patrick
Réponse de patrick sur le sujet Jeedom ?
Bonjour Adrien,

Je ne pourrais pas t'aider sur ce sujet parce que je n'ai pas réussi à installer Jeedom sur mon PC, et donc pas moyen de faire des tests. Normalement ça devrait fonctionner si tu remplis les champs nécessaires dans le cadre Réseau/client de MSApp:



Tu as un bouton "Test envoi requête" pour envoyer directement de MSApp vers Jeedom, sans passer par le MS.
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
20 Déc 2019 21:04 #3 par Forhorse
Réponse de Forhorse sur le sujet Jeedom ?
Merci pour ta réponse. Ok pour le côté Maxisun, tu as visiblement tout prévu. Par contre pour le côté Jeedom je vois pas encore comment faire. Mais bon c'est pas la priorité pour le moment. Je commence juste à m'y mettre et beaucoup de choses m’échappent (sans parler de ce qui beug...)

Etrange que tu n'ais pas réussit à installer Jeedom, moi qui suis pourtant totalement nul avec Linux j'ai réussit en suivant les différents tutos que l'on trouve sur le net. Par contre j'ai remarqué que Jeedom est du genre très exclusif... il ne faut pas qu'une autre application utilisant apache2/mysql tourne sur le même pc sinon c'est mort (ou alors il faut être un pro de linux)
J'ai essayé de faire cohabiter jeedom et zoneminder sur la même machine mais tout ce que j'ai obtenu c'est que ni l'un ni l'autre ne fonctionne... c'est bien au dela de mes compétences.
Donc pour essayer jeedom il faut soit une install vierge, soit le faire sur une machine virtuelle dédiée, en tout cas quand on est null comme moi c'est la seule solution que je vois.

Si j'arrive un jour à faire remonter les infos du Maxisun dans Jeedom je ferrais un retour ici, a moins que quelqu'un d'autre le fasse avant moi.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
10 Déc 2020 17:17 #4 par Forhorse
Réponse de Forhorse sur le sujet Jeedom ?
Hello,

Personne ne s'est penché sur le problème depuis mon dernier message ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
05 Jan 2021 20:34 #5 par Forhorse
Réponse de Forhorse sur le sujet Jeedom ?
A force de bricoler j'ai fini par trouver une piste... il y a encore beaucoup de travail mais pour l'instant j'arrive à faire remonter la valeur de la sonde N°1, c'est encourageant.
En fait, en jouant avec la console de firefox j'ai remarqué que l'interface web du Maxisun allait régulièrement récupérer le fichier "status.xml" et que ce fichier contient toutes les valeurs que je voudrais faire remonter vers Jeedom.
Malheureusement comme ce n'est pas du "vrai" XML mais un mix entre XML et CSV les outils disponibles dans Jeedom ne me permettent de retrouver que la première valeur de chaque balise.
Je vais sans doute devoir développer un script PHP pour les valeurs suivantes, mais comme j'ai une petite allergie au PHP ça risque de me prendre du temps.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
06 Jan 2021 10:37 #6 par patrick
Réponse de patrick sur le sujet Jeedom ?
Bonjour,

Le fichier status.xml ressemble à ça:

<?xml version="1.0" encoding="ISO-8859-1"?><xml>
<rtcc>10:51:19 ME</rtcc>
<paramSys>10:51:19;06/01/2021;On;01:00;-1,0;MSunPV161;5.0.1;0000161;5.1.0;</paramSys>
<inAns>17,6;27,6;22,7;0,0;0,0;0,0;0,0;0,0;16008;59576;4002;1097,7;25,3;17,8;43,6;1014;</inAns>
<survMm>0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;</survMm>
<cmdPos>2;1;0;0;0;0;0;0;</cmdPos>
<outStat>87;13;87;13;0;0;0;0;0;0;0;0;0;0;0;0;</outStat>
<cptVals>0;0;0;0;0;0;0;54dd5;</cptVals>
<chOutVal>8001;0;8001;ffff;:43,5; 20,5; 21,6; 35,6;</chOutVal>
</xml>


Les valeurs des 16 entrées sont à la ligne "inAns". Chaque valeur est séparée par un point virgule ";".
Il te suffit de "déserialiser" ces valeurs et les placer dans un "array".

La page index.htm fait ça en html, très simplement:

// Update the analog inputs value

var inAnVals = getXMLValue(xmlData, 'inAns').split(';');


Tu retrouves les 16 valeurs dans la variable/tableau inAnVals.

Qu'envoies-tu comme requête au Maxisun et comment traites-tu la réponse ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
06 Jan 2021 22:08 #7 par Forhorse
Réponse de Forhorse sur le sujet Jeedom ?
Salut,
Je suis resté en firmware 4.2.4a alors le status.xml de mon Maxisun a un petit peu moins de balises, mais y a celles qui m’intéressent : inAns et outStat (les autres servent à quoi ?)
On peut pas dire que le fort de Jeedom soit sa documentation, c'est peut être un système ouvert mais il reste bien obscur pour un non initié comme moi... Bref à force de fouiller j'ai réussit à sortir un truc fonctionnel.
Donc l'idée de base est de partir sur 2 plug-in officiel de la catégorie programmation : virtuels et scripts
La partie visible est un objet virtuel qui contient les 4 informations que j'ai besoin d'afficher/utiliser (dans un scenario par exemple) ces 4 infos ne pointent sur rien, c'est un script php qui va se charger de rafraichir les valeurs.
La partie script prend place dans un objet de script du plug-in du même nom, de type script.
Voilà la première version de mon script
<?php
  require_once dirname(__FILE__) . '/../../../core/php/core.inc.php';
  //script pour récupérer les infos d'un Maxisun
  $url = 'http://192.168.0.9/status.xml';
	log::add('script','debug',$url );
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

	$datas = curl_exec($curl);
	curl_close($curl);
	
	$sondes = new SimpleXMLElement($datas);
$array = explode(';', $sondes->inAns);//decomposition des données en tableau
$x=1;
foreach ($array as $values)
{
	$capteur[$x] = $values;
	$x	= $x + 1;
}
$id = "#[Maison][CESI][T_Capteur]#";
if(isset($id))
	{
		cmd::byString($id)->event($capteur[1]);
	}
$id = "#[Maison][CESI][T_Exterieur]#";
if(isset($id))
	{
		cmd::byString($id)->event($capteur[2]);
	}
$id = "#[Maison][CESI][T_Ballon_Haut]#";
if(isset($id))
	{
		cmd::byString($id)->event($capteur[3]);
	}
$id = "#[Maison][CESI][T_Ballon_Bas]#";
if(isset($id))
	{
		cmd::byString($id)->event($capteur[4]);
	}
echo true;
?>

J'ai bien conscience que c'est pas du super code, qu'il y a des étapes intermédiaires inutiles, etc... mais ça fonctionne, coder reste pour moi un loisir que je ne pratique que trop rarement, et le php c'est pas franchement ce que je préfère. ça pose les bases et ceux qui sont plus doué que moi feront certainement mieux.

Vu que je dois être le seul à (essayer) d'utiliser Jeedom ici, je ne rentre pas inutilement dans les détails, mais ça aidera peut être quelqu'un un jour et je reste dispo en cas d'éventuelles questions.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
07 Jan 2021 18:21 - 07 Jan 2021 18:26 #8 par Forhorse
Réponse de Forhorse sur le sujet Jeedom ?
Le script présenté hier fonctionnait... jusqu’à ce que la température passe sous 0°C...
L'espace entre le signe "-" et la valeur dans le fichier XML faisait buguer l'affichage qui restait à 0
Suite a un échange sur le forum Jeedom, c'est en fait plus simple de passer par un scénario et d'y inclure un bout de script php par le bloc correspondant. Le fonctionnement est au global identique mais l'affectation des valeurs ainsi récupérées au virtuel chargé de les afficher et les utiliser est plus simple et plus "visuel" surtout s'il y a besoin de les modifier.

$tags = $scenario->getTags(); // récuperation des tag
$ip = $tags['#ip_maxisun#'];

$url = 'http://'.$ip.'/status.xml';
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

	$datas = curl_exec($curl); //appel du fichier XML du Maxisun
	curl_close($curl);
	
	$sondes = new SimpleXMLElement($datas); //parser XML pour récuperation des valeurs des balises


$array = explode(';', $sondes->inAns);//decomposition des données des sondes (balise <inAns>) en tableau
$x=1;

foreach ($array as $values)
{
  	$values = str_replace(' ','',$values);
	$tags["#S".$x."#"] = floatval(str_replace (',','.',$values));// creation des tag
	$x++;
}
$scenario->setTags($tags); // affectation des tags

Si on veut recuperer autre chose que les sondes, c'est pas plus compliqué, il suffit d'appliquer le même principe a une autre balise du fichier XML (ça peut être fait à la suite dans le même script)
EDIT : Petite détail qui a son importance mais qui n'est pas forcement évidente, le scénario doit être configuré pour s’exécuter sur une programmation (cron) régulière (1mn, 5mn,...)
Pièces jointes :
Dernière édition: 07 Jan 2021 18:26 par Forhorse.

Connexion ou Créer un compte pour participer à la conversation.

Propulsé par Kunena