Bonjour à tous,
J’ai acheté récemment un routeur solaire Ard-Tek MSunPV, et celui-ci fonctionne parfaitement en autonomie. Mais il était tentant de l’intégrer à Jeedom pour que chacun bénéficie des atouts de l’autre . Donc voici ce que ça donne, j’ai bien conscience du fait que c’est un peu alambiqué, mais une fois en place ça fonctionne parfaitement bien … Alors courage
Pour y arriver, vous aurez besoin :
- d’un Jeedom fonctionnel avec le plugin Script et le plugin Mode.
- D’un MSunPV correctement configuré, avec ici pour l’exemple deux sorties utilisées.
Pour commencer, créer un équipement script « MSunPV » et configurer son actualisation toutes les minutes.
Ensuite, nous allons procéder en deux temps : d’abord récupérer les infos du MSunPV dans Jeedom, puis faire en sorte que Jeedom puisse commander le MSunPV.
- Récupérer les infos du MSunPV
Créer une commande XML/info/autre avec la requête inAns et <l’adresse IP de votre MsunPV>/status.xml
Celle-ci récupère dans le fichier xml du MsunPV l’état des entrées
Créer une commande script/info/numérique qui va récupérer la valeur de l’entrée souhaitée.
Une fois la commande créée, cliquer sur nouveau script (bouton vert), nommer le fichier en mettant bien une extension « .php », puis y mettre le script suivant, en l’adaptant à l’entrée voulue (= le nombre après echo $val ) :
<?php
require_once '/var/www/html/core/php/core.inc.php';
// la commande info autre
$cmdinfo = "#[propriété][msunpv][entrées_msunpv]#"; // extraction sous forme valeur1;valeur2
$RetourInfo = cmd::byString($cmdinfo)->execCmd();
// scinde l'info
list($val1, $val2, $val3, $val4, $val5, $val6, $val7, $val8, $val9, $val10, $val11, $val12, $val13, $val14, $val15, $val16) = explode(';', $RetourInfo);
echo $val1;
?>
La même logique peut être suivie pour l’état des commandes (mais avec des commandes script/info/autre et non numérique) :
Et avec les compteurs :
Sauf que la petite subtilité pour ces derniers sont qu’ils sont codés en hexadécimal, donc le script pour récupérer une des infos diffère légèrement :
<?php
require_once '/var/www/html/core/php/core.inc.php';
// la commande info autre
$cmdinfo = "#[propriété][msunpv][compteurs_msunpv]#"; // extraction sous forme valeur1;valeur2
$RetourInfo = cmd::byString($cmdinfo)->execCmd();
// scinde l'info
list($val1, $val2, $val3, $val4, $val5, $val6, $val7, $val8) = explode(';', $RetourInfo);
$compteur=hexdec($val4)/10;
echo $compteur;
?>
Voilà pour la récupération des infos … Et maintenant la commande !
- Commande du MSunPV par Jeedom
La difficulté est qu’une variable de l’API code deux commandes en même temps. Voici un exemple de commande à passer :
curl -X POST -d ‹ parS=10;0;0;0;0;0;0;2; › http://192.168.x.x/index.xml
Dans celle-ci, c’est le 10 qui modifie les deux premières commandes, avec le codage suivant :
Donc l’idée est de récupérer l’info actualisée de l’état des deux commandes avant d’en modifier une, en renvoyant le code adapté.
Si par exemple les deux sorties sont en mode auto, la valeur est à 10, et que l’on souhaite passer la sortie 1 en marche forcée, il faut envoyer la valeur 9.
La première étape est d’ajouter, dans l’équipement script précédemment créé, toutes les commandes correspondant à ces différentes valeurs possibles. Par exemple :
Avec à chaque fois le code suivant :
<?php
require_once '/var/www/html/core/php/core.inc.php';
// la commande info autre
$cmdinfo = "#[propriété][msunpv][commandes_msunpv]#"; // extraction sous forme valeur1;valeur2
//$mode_chauffeau = "#[Bureau][Chauffe-eau][Mode]#";
$RetourInfo = cmd::byString($cmdinfo)->execCmd();
$place_pointvirgule = stripos($RetourInfo,';');
// scinde l'info
$RetourInfo = substr($RetourInfo,$place_pointvirgule);
$RetourInfo = 'curl -X POST -d \'parS=0'.$RetourInfo.'\' http://192.168.x.x/index.xml';
shell_exec($RetourInfo);
?>
dans lequel on n’adapte que le nombre après parS= dans la commande curl pour qu’il corresponde à la valeur de la commande souhaité, et l’adresse IP par celle de votre MSunPV.
Une fois les commandes ajoutées à l’équipement script, on va créer un équipement Mode pour chaque appareil à contrôler (chez moi, chauffe-eau bureau et chauffe-eau sde studio). Et pour chaque équipement on va créer 3 modes (on, off, auto) en ne mettant aucune action dedans.
Et ensuite il va falloir créer les deux scenarios qui synchronisent les modes des équipement créés avec l’état des commandes du MsunPV. Donc à chaque changement d’état du MsunPV il faudra que ça mette à jour l’état des modes dans Jeedom, et qu’à chaque changement de mode dans Jeedom, cela change l’état des commandes du MsunPV.
Le premier scénario se déclenche à chaque changement d’état des commandes MsunPV :
Puis il actualise toutes les commandes de l’équipement MsunPV, il désactive le scenario que l’on va créer juste après (pour ne pas qu’il y a de boucles sans fin entre les deux scénarios), puis il met à jour l’état des modes Jeedom en fonction de l’état des commandes du MsunPV. Et enfin il réactive le deuxième scénario.
Les plus attentifs auront remarqué que dans le fichier status.xml, le code pour les deux commandes en auto n’est pas ‹ 10 ›, mais ‹ a › …
A noter que comme l’équipement MsunPV s’actualise toute les minutes, il peut y avoir un délai entre le passage de la commande côté MsunPV et son actualisation dans Jeedom (faute d’avoir un push côté MSunPV).
Le deuxième scénario se charge de l’autre sens : en cas de modification du mode dans Jeedom, il modifie l’état de la commande côté MsunPV. Pour le coup, cette mise à jour est instantanée.
Il se déclenche en cas de changement de mode :
Il actualise alors les commande de l’équipement MsunPV pour être sûr de partir de la bonne base, puis désactive temporairement le premier scénario pour éviter les boucles sans fin, puis en fonction de l’état de la commande côté MsunPV et de la modification du mode effectuée côté Jeedom, il renvoie la bonne commande. C’est relativement compliqué du fait qu’il n’y a qu’une valeur qui code pour deux commandes …
Et enfin il réactive l’autre scénario à la fin.
Une fois ça mis en place, une multitude de possibilités s’offrent à vous :
-
ré-utiliser les infos des tores, sondes et compteurs du MsunPV dans Jeedom
-
contrôler les commandes du MsunPV depuis l’interface de Jeedom :
-
et aussi (et surtout ?) Intégrer le fonctionnement du MsunPV à vos scénarios Jeedom. Par exemple, vous pouvez faire en sorte de couper votre chauffe-eau quand vous passez Jeedom en mode vacances, ou alors commander une marche forcée en fonction d’un compteur d’eau en sortie de chauffe-eau intégré à Jeedom (si eau chaude consommée trop importante, passer en marche forcée …), etc …
L’idéal serait sans doute de faire un plugin, mais je n’ai pas encore les compétences pour le faire rapidement ni le temps de m’y pencher réellement. Donc si des bonnes âmes souhaitent s’y lancer à partir de cette base, ce serait top ! Et sinon je regarderai ça en 2032 quand j’aurai le temps