Box domotique Eedomus et MsunPV
- flc85
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
04 Fév 2023 08:25 - 12 Fév 2023 08:57 #1
par flc85
Box domotique Eedomus et MsunPV a été créé par flc85
Bonjour,
Pour ceux qui on un box eedomus et qui souhaite consulter les valeurs du routeur et (envoyer des commandes V1.2) via l'appli mobile, op95 du forum eedomus à réaliser un script.
lien vers le forum
Sauver le script sous le nom MSUNPV.php
Créer les devices selon le modèle suivant (capteurs HTTP)
Url de la requête: http://localhost/script/?exec=MSUNPV.php&url=[VAR1]
Mettre en VAR1 l'adresse du routeur
Le XPATH est variable suivant vos besoins.
Pour ceux qui on un box eedomus et qui souhaite consulter les valeurs du routeur et (envoyer des commandes V1.2) via l'appli mobile, op95 du forum eedomus à réaliser un script.
lien vers le forum
<?php
// optimisateur de production solaire MSUNPV.php
// V1.0 : opa95 2023-02-03 niveaux instantanes
// V1.1 : opa95 2023-02-05 généralisation
//ligne decommande http://localhost/script/?exec=MSUNPV.php&adresse=192.168.1.247
//Récupération des valeurs par //champ/@vi
function sdk_set_command($cmd1,$cmd2) {//$command off ou 0, manuel ou 1, auto ou 2)
$commande = $cmd[$cmd1] + 4*$cmd[$cmd2];
return $command;//nombre entre 0 et 10
}
function sdk_get_command($command) {//$command entre 0 et 10, select 0 ou 1
if (strtolower($command) == 'a') $command = 10;
$arrCmd[1] = $command%4;
$arrCmd[2] = round(($command - $arrCmd[1])/4);
return $arrCmd;
}
$hexa = array('cmdPos','cptVals','chOutVal');//Champ hexa
$inAns = array('conso','production','routage_1','routage_2','tension');
$cptVals = array('enConso','enProd','enPV_J','enPV_P');
$paramSys = array('heure','date','etat','intervalle','','nom','version','sn');
$cmdPos = array('cmd0');
$cmdArr = array('off','manuel','auto');
$max_int_pos = 0X100000000;
$max_int = ($max_int_pos+1)*2;
$url = getArg('url');
$url = $url.'/status.xml';
$response = httpQuery($url, 'GET', '','', $header);
$response = xpath($response,"concat('rtcc=',//rtcc,'@paramSys=',//paramSys,'@inAns=',//inAns,'@survMm=',//survMm,'@cmdPos=',//cmdPos,'@outStat=',//outStat,'@cptVals=',//cptVals,'@chOutVal=',//chOutVal)");
$response = trim(str_replace(';@','@',$response));
$response = str_replace(',','.',$response);
$arr_response = explode('@',$response);
foreach ($arr_response as $field) {
list($key,$values) = explode('=',$field);
$arrValue = array();
$arr_values = explode(';',$values);
if (in_array($key,$hexa)) {
foreach ($arr_values as $value){
$value = trim($value);
if ($value != '') {$result[$key][] = hexdec($value);}
}
}
else {
foreach ($arr_values as $value){
$value = trim($value);
if ($value != '') $result[$key][] = $value;
}
}
}
//var_dump($result);
$cmds = sdk_get_command($result['cmdPos'][0]);
$heure = $result['paramSys'][0];
list($day,$month,$year) = explode('/',$result['paramSys'][1]);
$date = $year.'-'.$month.'-'.$day;
$timestamp = strtotime($date.' '.$heure);
$time = date('Y-m-d H:i:s',$timestamp);
@sdk_header('text/xml');
$xml = '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL;
$xml .= ' <root>'.PHP_EOL;
$xml .= ' <time>'.$time.'</time> '.PHP_EOL;;
$xml .= ' <timestamp>'.$timestamp.'</timestamp>'.PHP_EOL;;
$xml .= ' <current>'.PHP_EOL.' ';
$key = 'inAns';
$ind = 0;
foreach ($inAns as $item){
if ($item != '') $xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> ';
$ind++;
}
$key = 'cptVals';
$ind = 0;
foreach ($cptVals as $item){
if ($item != '') {
if ($result[$key][$ind]<=$max_int_pos) {
$xml .= '<'.$item.'>'.($result[$key][$ind]/10).'</'.$item.'> ';
}
else {
$result[$key][$ind] = ($result[$key][$ind]-$max_int)/10;
$xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> ';
}
$ind++;}
}
$key = 'paramSys';
$ind = 0;
foreach ($paramSys as $item){
if ($item != '') $xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> ';
$ind++;
}
$xml .= '<cmd1>'.$cmdArr[$cmds[1]].'</cmd1> '.'<cmd2>'.$cmdArr[$cmds[2]].'</cmd2> ';
$xml .= PHP_EOL.' </current>'.PHP_EOL;
foreach ($result as $key => $value){
$xml .= ' <'.$key.' ';
foreach ($result[$key] as $key1 => $value1){
$xml .= 'v'.$key1.'="'.$value1.'" ';
}
$xml .= '/>'.PHP_EOL;
}
$xml .= ' </root>'.PHP_EOL;
echo $xml;
?>
Sauver le script sous le nom MSUNPV.php
Créer les devices selon le modèle suivant (capteurs HTTP)
Url de la requête: http://localhost/script/?exec=MSUNPV.php&url=[VAR1]
Mettre en VAR1 l'adresse du routeur
Le XPATH est variable suivant vos besoins.
Pièces jointes :
Dernière édition: 12 Fév 2023 08:57 par flc85. Raison: Mise à jour du script
Connexion ou Créer un compte pour participer à la conversation.
- patrick
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 3058
- Remerciements reçus 470
04 Fév 2023 09:11 #2
par patrick
Réponse de patrick sur le sujet Box domotique Eedomus et MsunPV
Bonjour Florent et merci à toi et à op95 du forum Eedomus, costaud le script !
Bon ben ça fait une brique de plus à l'écosystème MSunPV.
Bon ben ça fait une brique de plus à l'écosystème MSunPV.
Connexion ou Créer un compte pour participer à la conversation.
- flc85
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
06 Fév 2023 07:36 #3
par flc85
Réponse de flc85 sur le sujet Box domotique Eedomus et MsunPV
Bonjour,
le script évolue mais je ne sais pas à quoi correspondent toutes les données du fichier xml.
Ci dessous le fichier que génère le script:Serait il possible d'avoir pour chaque ligne une "définition" de la donnée, par exemple je sais que inAns V0=Conso mais inAnsV11=?? ?
La liste des commandes avec leurs valeurs?
Merci
@patrick je t'ai envoyé un message l'as tu reçu?
le script évolue mais je ne sais pas à quoi correspondent toutes les données du fichier xml.
Ci dessous le fichier que génère le script:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<time>2023-02-06 08:18:42</time>
<timestamp>1675667922</timestamp>
<current>
<conso>412.5</conso> <production>-3.3</production> <routage_1>0</routage_1> <routage_2>0</routage_2> <tension>220.2</tension> <enConso>3512.8</enConso> <enProd>0</enProd> <enPV_J>-19.6</enPV_J> <enPV_P>-1239606.4</enPV_P> <heure>08:18:42</heure> <date>06/02/2023</date> <etat>On</etat> <intervalle>01:00</intervalle> <nom>MS_PV2_2</nom> <version>5.0.1</version> <sn>0000220</sn> <cmd1>off</cmd1> <cmd2>off</cmd2>
</current>
<rtcc v0="08:18:41 LU" />
<paramSys v0="08:18:42" v1="06/02/2023" v2="On" v3="01:00" v4="0.0" v5="MS_PV2_2" v6="5.0.1" v7="0000220" v8="102e" v9="102c" v10="00:00" v11="00:00" />
<inAns v0="412.5" v1="-3.3" v2="0" v3="0" v4="220.2" v5="0.0" v6="0.0" v7="0.0" v8="0" v9="0" v10="0" v11="0" v12="0" v13="0" v14="0" v15="0" />
<survMm v0="0" v1="0" v2="0" v3="0" v4="0" v5="0" v6="0" v7="0" v8="0" v9="0" v10="0" v11="0" v12="0" v13="0" v14="0" v15="0" />
<cmdPos v0="0" v1="0" v2="0" v3="0" v4="0" v5="0" v6="0" v7="0" />
<outStat v0="0" v1="0" v2="0" v3="0" v4="0" v5="0" v6="0" v7="0" v8="0" v9="0" v10="0" v11="0" v12="0" v13="0" v14="0" v15="0" />
<cptVals v0="35128" v1="0" v2="-19.6" v3="-1239606.4" v4="0" v5="0" v6="0" v7="0" />
<chOutVal v0="0" v1="0" v2="0" v3="255" v4="0" v5="0" v6="0" v7="0" />
</root>
La liste des commandes avec leurs valeurs?
Merci
@patrick je t'ai envoyé un message l'as tu reçu?
Connexion ou Créer un compte pour participer à la conversation.
- flc85
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
06 Fév 2023 07:42 #4
par flc85
Réponse de flc85 sur le sujet Box domotique Eedomus et MsunPV
Le script a été mis à jour:
Un certains nombre de données ont été "nommé"
<conso>
<production>
<routage_1>
<routage_2>
<tension>
<enConso>
<enProd>
<enPV_J>
<enPV_P>
<heure>
<date>
<etat>
<intervalle>
<nom>
<version>5.0.1
<sn>
<cmd1>
<cmd2>
Un certains nombre de données ont été "nommé"
<conso>
<production>
<routage_1>
<routage_2>
<tension>
<enConso>
<enProd>
<enPV_J>
<enPV_P>
<heure>
<date>
<etat>
<intervalle>
<nom>
<version>5.0.1
<sn>
<cmd1>
<cmd2>
Connexion ou Créer un compte pour participer à la conversation.
- flc85
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
06 Fév 2023 12:32 #5
par flc85
Réponse de flc85 sur le sujet Box domotique Eedomus et MsunPV
Mise à jour du script pour pouvoir commander les sorties
Il faut créer un actionneur http
VAR1=adresse IP du routeur
URL:http://localhost/script/?exec=MSUNPV.php&url=xxx.xxx.x.xxx&cmd1=0
comme argument cmd1 pour la sortie 1 et cmd2 pour la 2
avec comme valeur:
OFF=1
MANU=2
AUTO=3
Un grand merci op95 du forum Eedomus
<?php
/****************************************************************************
* optimisateur de production solaire MSUNPV.php
* V1.0 : opa95 2023-02-03 niveaux instantanes
* V1.1 : opa95 2023-02-05 généralisation tests par flc85 et Scalaire
* V1.2 : opa95 2023-02-06 modification des commandes
* ligne decommande http://localhost/script/?exec=MSUNPV.php&url=[VAR1]
* ligne decommande http://localhost/script/?exec=MSUNPV&php&url=[VAR1]&cmd1=a
* ligne decommande http://localhost/script/?exec=MSUNPV&php&url=[VAR1]&cmd2=b
* ligne decommande http://localhost/script/?exec=MSUNPV&php&url=[VAR1]&cmd1=a&cmd2=b
* avec VAR1 : adresse ip du MSUNPV
* avec a et b = 0 ou off, 1 ou manuel, 2 ou auto
*Récupération des valeurs dans XPATHpar //champ/@vi (i de 0 à 15)
* //rtcc/@v0
* //paramSys/@v0 à //paramSys/@v11
* //<inAns/@v0 à //<inAns/@v15
* //<survMm/@v0 à //<survMm/@v15
* //<cmdPos/@v0 à //<cmdPos/@v7
* //<outStat/@v0 à //<outStat/@v15
* //<cptVals/@v0 à //<cptVals/@v7
* //<chOutVal/@v0 à //<chOutVal/@v7
*Récuperations ciblées
* //time //timestamp //conso //production> //routage_1 //routage_2 //tension
* //powbal1 //powbal2 //enConso //enProd //enPV_J //enPV_P
* //heure //date //etat //intervalle //nom //version //sn //cmd1 //cmd2 //test_routeur
*Contenu du xml renvoyé (exemple)
<?xml version="1.0" encoding="UTF-8"?>
<root>
<time>2023-02-05 14:16:45</time>
<timestamp>1675603005</timestamp>
<current>
<conso>-1957.3</conso> <production>-5953.5</production> <routage_1>400</routage_1>
<routage_2>400</routage_2> <tension>227.5</tension> <powbal1>1.1</powbal1>
<powbal2>2917.7</powbal2> <enConso>9042.6</enConso> <enProd>-118.1</enProd>
<enPV_J>-7772.8</enPV_J> <enPV_P>-1416199.2</enPV_P> <heure>14:16:45</heure>
<date>05/02/2023</date> <etat>On</etat> <intervalle>01:00</intervalle>
<nom>MS_PV4_2</nom> <version>5.0.1</version> <sn>dl0420a</sn>
<cmd1>auto</cmd1> <cmd2>auto</cmd2> <test_routeur>2</test_routeur>
</current>
<rtcc v0="14:16:44 DI" />
<paramSys v0="14:16:45" v1="05/02/2023" v2="On" v3="01:00" v4="0.0" v5="MS_PV4_2" v6="5.0.1"
v7="dl0420a" v8="102e" v9="102c" v10="00:00" v11="00:00" />
<inAns v0="-1957.3" v1="-5953.5" v2="400" v3="400" v4="227.5" v5="1.1" v6="2917.7" v7="0.0"
v8="0.0" v9="0.0" v10="0.0" v11="0.0" v12="0.0" v13="0.0" v14="0.0" v15="0.0" />
<survMm v0="0" v1="0" v2="0" v3="0" v4="0" v5="0" v6="0" v7="0" v8="0" v9="0"
v10="0" v11="0" v12="0" v13="0" v14="0" v15="0" />
<cmdPos v0="10" v1="0" v2="0" v3="0" v4="0" v5="0" v6="0" v7="2" />
<outStat v0="100" v1="100" v2="0" v3="0" v4="0" v5="0" v6="0" v7="0"
v8="0" v9="0" v10="0" v11="0" v12="0" v13="0" v14="0" v15="0" />
<cptVals v0="90426" v1="-118.1" v2="-7772.8" v3="-1416199.2" v4="0" v5="0" v6="0" v7="0" />
<chOutVal v0="0" v1="0" v2="0" v3="255" v4="0" v5="0" v6="0" v7="0" />
</root>
**************************************************************************/
function sdk_set_command($cmd1,$cmd2) {//$command 0,1,2)
$cmd1 = min($cmd1%4,2);
$cmd2 = min($cmd2%4,2);
$command = $cmd1 + 4*$cmd2;
if ($command == 10) $command = 'a';
return $command;//nombre entre 0 et 10
}
function sdk_get_command($command) {//$command entre 0 et 10, select 0 ou 1
if (strtolower($command) == 'a') $command = 10;
$command = min($command,10);
$arrCmd[1] = $command%4;
$arrCmd[2] = round(($command - $arrCmd[1])/4);
return $arrCmd;
}
function sdk_num_command($cmd) {//$cmd off, manuel, auto
$cmd = trim(strtolower($cmd));
switch ($cmd) {
case '0' :
case 'off' : $cmd = 0;
break;
case '1' :
case 'manuel' : $cmd = 1;
break;
case '2' :
case 'auto' : $cmd = 2;
break;
default : $cmd = '*';
}
return $cmd;
}
$hexa = array('cmdPos','cptVals','chOutVal');//Champ hexa
$inAns = array('conso','production','routage_1','routage_2','tension','powbal1','powbal2');
$cptVals = array('enConso','enProd','enPV_J','enPV_P');
$paramSys = array('heure','date','etat','intervalle','','nom','version','sn');
$cmdPos = array('cmd0','','','','','','','test_routeur');
$cmdArr = array('off','manuel','auto');
$max_int_pos = 0X100000000;
$max_int = ($max_int_pos+1)*2;
$url_ = getArg('url');
$url = $url_.'/status.xml';
$url_cmd = $url_.'/index.xml';
$cmd1_ = sdk_num_command(getArg('cmd1',false,''));
$cmd2_ = sdk_num_command(getArg('cmd2',false,''));
$response = httpQuery($url, 'GET', '','', $header);
$response1 = xpath($response,'cmdPos');
$old_command = explode(';',$response1);
$old_cmds = sdk_get_command($old_command[0]);
if ($cmd1_ === '*') $new_cmds[1] = $old_cmds[1];
else {$new_cmds[1] = $cmd1_; }
if ($cmd2_ === '*') $new_cmds[2] = $old_cmds[2];
else {$new_cmds[2] = $cmd2_;}
$is_new_command = ($new_cmds[1] != $old_cmds[1]) || ($new_cmds[2] != $old_cmds[2]) ;
$cmd = sdk_set_command($new_cmds[1],$new_cmds[2]);
if ($is_new_command){
$parS=$cmd.';';
foreach ($old_command as $key => $item){
if ($key == 0) continue;
$parS .= $item.';';
}
$parS = str_replace(';;',';',$parS);
$url1 = $url_cmd.'?parS='.$parS;
$response = httpQuery($url1, 'POST', '','', $header);
}
$response = xpath($response,"concat('rtcc=',//rtcc,'@paramSys=',//paramSys,'@inAns=',//inAns,'@survMm=',//survMm,'@cmdPos=',//cmdPos,'@outStat=',//outStat,'@cptVals=',//cptVals,'@chOutVal=',//chOutVal)");
$response = trim(str_replace(';@','@',$response));
$response = str_replace(',','.',$response);
$arr_response = explode('@',$response);
foreach ($arr_response as $field) {
list($key,$values) = explode('=',$field);
$arrValue = array();
$arr_values = explode(';',$values);
if (in_array($key,$hexa)) {
foreach ($arr_values as $value){
$value = trim($value);
if ($value != '') {$result[$key][] = hexdec($value);}
}
}
else {
foreach ($arr_values as $value){
$value = trim($value);
if ($value != '') $result[$key][] = $value;
}
}
}
$cmds = sdk_get_command($result['cmdPos'][0]);
$heure = $result['paramSys'][0];
list($day,$month,$year) = explode('/',$result['paramSys'][1]);
$date = $year.'-'.$month.'-'.$day;
$timestamp = strtotime($date.' '.$heure);
$time = date('Y-m-d H:i:s',$timestamp);
@sdk_header('text/xml');
$xml = '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL;
$xml .= ' <root>'.PHP_EOL;
$xml .= ' <time>'.$time.'</time> '.PHP_EOL;;
$xml .= ' <timestamp>'.$timestamp.'</timestamp>'.PHP_EOL;;
$xml .= ' <current>'.PHP_EOL.' ';
$key = 'inAns';
$ind = 0;
foreach ($inAns as $item){
if ($item != '') $xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> ';
$ind++;
}
$key = 'cptVals';
$ind = 0;
foreach ($cptVals as $item){
if ($item != '') {
if ($result[$key][$ind]<=$max_int_pos) {
$xml .= '<'.$item.'>'.($result[$key][$ind]/10).'</'.$item.'> ';
}
else {
$result[$key][$ind] = ($result[$key][$ind]-$max_int)/10;
$xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> ';
}
$ind++;}
}
$key = 'paramSys';
$ind = 0;
foreach ($paramSys as $item){
if ($item != '') $xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> ';
$ind++;
}
$xml .= '<cmd1>'.$cmdArr[$cmds[1]].'</cmd1> '.'<cmd2>'.$cmdArr[$cmds[2]].'</cmd2> ';
$key = 'cmdPos';$ind = 7;
$xml .= '<'.$cmdPos[$ind].'>'.$result[$key][$ind].'</'.$cmdPos[$ind].'>';
$xml .= PHP_EOL.' </current>'.PHP_EOL;
foreach ($result as $key => $value){
$xml .= ' <'.$key.' ';
foreach ($result[$key] as $key1 => $value1){
$xml .= 'v'.$key1.'="'.$value1.'" ';
}
$xml .= '/>'.PHP_EOL;
}
$xml .= ' </root>'.PHP_EOL;
echo $xml;
?>
Il faut créer un actionneur http
VAR1=adresse IP du routeur
URL:http://localhost/script/?exec=MSUNPV.php&url=xxx.xxx.x.xxx&cmd1=0
comme argument cmd1 pour la sortie 1 et cmd2 pour la 2
avec comme valeur:
OFF=1
MANU=2
AUTO=3
Un grand merci op95 du forum Eedomus
Connexion ou Créer un compte pour participer à la conversation.
- flc85
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
12 Fév 2023 08:48 - 12 Fév 2023 08:54 #6
par flc85
Réponse de flc85 sur le sujet Box domotique Eedomus et MsunPV
Voici la dernière version (V1.2) qui affiche l'état du MSUNPV et permet d'envoyer des commandes.
Pour cmd1 et cmd2 ont a les valeurs AUTO/ MANU /OFF
Pour cmdtest INJECTION /ZERO INJECTION/ MOYEN /FORT
Les informations nécessaires sont en tête de script.
Sauver le script MSUNPV.php et le transférer sur l'eedomus.
Créer des capteurs HTTP pour récupérer les informations : Mettre l'adresse IP du MSUNPV dans VAR1
Faire les appels avec http://localhost/script/?exec=MSUNPV.php&url=[VAR1]
Faire les lectures avec //conso.... ou //inAns/@v0...
Créer des actionneurs HTTP pour envoyer des commandes : cmd1 (routeur1), cmd2 (routeur2) ou cmdtest
Créer les valeurs 3 valeurs pour les cmd, 4 valeurs pour cmdtest (cf. script) en remplissant Valeur brute, description et URL
exemple : 2, manuel et http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmd1=2
Pour cmd1 et cmd2 ont a les valeurs AUTO/ MANU /OFF
Pour cmdtest INJECTION /ZERO INJECTION/ MOYEN /FORT
Les informations nécessaires sont en tête de script.
Sauver le script MSUNPV.php et le transférer sur l'eedomus.
Créer des capteurs HTTP pour récupérer les informations : Mettre l'adresse IP du MSUNPV dans VAR1
Faire les appels avec http://localhost/script/?exec=MSUNPV.php&url=[VAR1]
Faire les lectures avec //conso.... ou //inAns/@v0...
Créer des actionneurs HTTP pour envoyer des commandes : cmd1 (routeur1), cmd2 (routeur2) ou cmdtest
Créer les valeurs 3 valeurs pour les cmd, 4 valeurs pour cmdtest (cf. script) en remplissant Valeur brute, description et URL
exemple : 2, manuel et http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmd1=2
<?php
/****************************************************************************
* optimisateur de production solaire MSUNPV.php por eedomus
* V1.0 : opa95 2023-02-03 niveaux instantanes
* V1.1 : opa95 2023-02-05 généralisation tests par flc85 et Scalaire
* V1.2 : opa95 2023-02-07 modification des commandes tests par flc85
* ligne decommande http://localhost/script/?exec=MSUNPV.php&url=[VAR1]
* ligne decommande http://localhost/script/?exec=MSUNPV&php&url=[VAR1]&cmd1=a
* ligne decommande http://localhost/script/?exec=MSUNPV&php&url=[VAR1]&cmd2=b
* avec VAR1 : adresse ip du MSUNPV
* avec a et b = 0 ou off, 1 ou manuel, 2 ou auto
* ligne decommande http://localhost/script/?exec=MSUNPV&php&url=[VAR1]&cmdtest=c
* avec c = 1 ou injection, 2 ou zero_injection, 4 ou moyen, 8 ou fort
* récupération avec un capteur HTTP
*Récupération des valeurs dans XPATH par //champ/@vi (i de 0 à 15)
* //rtcc/@v0
* //paramSys/@v0 à //paramSys/@v11
* //inAns/@v0 à //inAns/@v15
* //survMm/@v0 à //survMm/@v15
* //cmdPos/@v0 à //cmdPos/@v7
* //outStat/@v0 à //outStat/@v15
* //cptVals/@v0 à //cptVals/@v7
* //chOutVal/@v0 à //chOutVal/@v7
*Récuperations ciblées
* //time //timestamp //conso //production> //routage_1 //routage_2 //tension
* //powbal1 //powbal2 //enConso //enProd //enPV_J //enPV_P
* //heure //date //etat //intervalle //nom //version //sn //cmd1 //cmd2 //test_routeur
*Envoi de commande avec un actionneur HTTP
* pour cmd1, mettre les valeurs [Valeur Brute, Description,URL] et l'équivalent pour cmd2
* 0 off http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmd1=0
* 1 manuel http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmd1=1
* 2 manuel http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmd1=2
* pour cmdtest, mettre les valeurs
* 1 injection http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmdtest=1
* 2 zero_injection http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmdtest=2
* 4 moyen http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmdtest=4
* 8 fort http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmdtest=8
*Contenu du xml renvoyé (exemple)
<?xml version="1.0" encoding="UTF-8"?>
<root>
<time>2023-02-05 14:16:45</time>
<timestamp>1675603005</timestamp>
<current>
<conso>-1957.3</conso> <production>-5953.5</production> <routage_1>400</routage_1>
<routage_2>400</routage_2> <tension>227.5</tension> <powbal1>1.1</powbal1>
<powbal2>2917.7</powbal2> <enConso>9042.6</enConso> <enProd>-118.1</enProd>
<enPV_J>-7772.8</enPV_J> <enPV_P>-1416199.2</enPV_P> <heure>14:16:45</heure>
<date>05/02/2023</date> <etat>On</etat> <intervalle>01:00</intervalle>
<nom>MS_PV4_2</nom> <version>5.0.1</version> <sn>dl0420a</sn>
<cmd1>auto</cmd1> <cmd2>auto</cmd2> <test_routeur>zero_injection</test_routeur>
</current>
<rtcc v0="14:16:44 DI" />
<paramSys v0="14:16:45" v1="05/02/2023" v2="On" v3="01:00" v4="0.0" v5="MS_PV4_2" v6="5.0.1"
v7="dl0420a" v8="102e" v9="102c" v10="00:00" v11="00:00" />
<inAns v0="-1957.3" v1="-5953.5" v2="400" v3="400" v4="227.5" v5="1.1" v6="2917.7" v7="0.0"
v8="0.0" v9="0.0" v10="0.0" v11="0.0" v12="0.0" v13="0.0" v14="0.0" v15="0.0" />
<survMm v0="0" v1="0" v2="0" v3="0" v4="0" v5="0" v6="0" v7="0" v8="0" v9="0"
v10="0" v11="0" v12="0" v13="0" v14="0" v15="0" />
<cmdPos v0="10" v1="0" v2="0" v3="0" v4="0" v5="0" v6="0" v7="2" />
<outStat v0="100" v1="100" v2="0" v3="0" v4="0" v5="0" v6="0" v7="0"
v8="0" v9="0" v10="0" v11="0" v12="0" v13="0" v14="0" v15="0" />
<cptVals v0="90426" v1="-118.1" v2="-7772.8" v3="-1416199.2" v4="0" v5="0" v6="0" v7="0" />
<chOutVal v0="0" v1="0" v2="0" v3="255" v4="0" v5="0" v6="0" v7="0" />
</root>
**************************************************************************/
function sdk_set_command($cmd1,$cmd2) {//$command 0,1,2)
$cmd1 = min($cmd1%4,2);
$cmd2 = min($cmd2%4,2);
$command = $cmd1 + 4*$cmd2;
if ($command == 10) $command = 'a';
return $command;//nombre entre 0 et 10
}
function sdk_get_command($command) {//$command entre 0 et 10, select 0 ou 1
if (strtolower($command) == 'a') $command = 10;
$command = min($command,10);
$arr_cmd[1] = $command%4;
$arr_cmd[2] = round(($command - $arr_cmd[1])/4);
return $arr_cmd;
}
function sdk_num_command($cmd) {//$cmd off, manuel, auto
$cmd = trim(strtolower($cmd));
switch ($cmd) {
case '0' :
case 'off' : $cmd = 0;
break;
case '1' :
case 'manuel' : $cmd = 1;
break;
case '2' :
case 'auto' : $cmd = 2;
break;
default : $cmd = '*';
}
return $cmd;
}
$hexa = array('cmdPos','cptVals','chOutVal');//Champ hexa
$inAns = array('conso','production','routage_1','routage_2','tension','powbal1','powbal2');
$cptVals = array('enConso','enProd','enPV_J','enPV_P');
$paramSys = array('heure','date','etat','intervalle','','nom','version','sn');
$cmdPos = array('cmd0','','','','','','','test_routeur');
$arr_cmds = array('off','manuel','auto');
$arr_tests = array(1 => 'injection',2 => 'zero_injection',4 => 'moyen',8 => 'fort');
$max_int_pos = 0X100000000;
$max_int = ($max_int_pos+1)*2;
$url_ = getArg('url');
$url = $url_.'/status.xml';
$url_cmd = $url_.'/index.xml';
$cmd1_ = sdk_num_command(getArg('cmd1',false,''));
$cmd2_ = sdk_num_command(getArg('cmd2',false,''));
$cmd_test_ = getArg('cmdtest',false,'0');
if (in_array($cmd_test_, array(1,2,4,8))) { $cmd_test = $cmd_test_;}
else {
$cmd_test = 0;
foreach($arr_tests as $key => $item) {
if ($cmd_test_ == $item) {
$cmd_test = $key;
break;
}
}
}
$response = httpQuery($url, 'GET', '','', $header);
$response1 = xpath($response,'cmdPos');
$old_command = explode(';',$response1);
$old_cmds = sdk_get_command($old_command[0]);
if ($cmd1_ === '*') $new_cmds[1] = $old_cmds[1];
else {$new_cmds[1] = $cmd1_; }
if ($cmd2_ === '*') $new_cmds[2] = $old_cmds[2];
else {$new_cmds[2] = $cmd2_;}
if ($cmd_test == 0 ) $cmd_test = $old_command[7];
$is_new_command = ($new_cmds[1] != $old_cmds[1]) || ($new_cmds[2] != $old_cmds[2]) || ($cmd_test != $old_command[7]);
$cmd = sdk_set_command($new_cmds[1],$new_cmds[2]);
if ($is_new_command){
$parS=$cmd.';';
foreach ($old_command as $key => $item){
if ($key == 0) continue;
if ($key == 7) break;
$parS .= $item.';';
}
$parS = str_replace(';;',';',$parS.$cmd_test);
$url1 = $url_cmd.'?parS='.$parS;
$response = httpQuery($url1, 'POST', '','', $header);
}
$response = xpath($response,"concat('rtcc=',//rtcc,'@paramSys=',//paramSys,'@inAns=',//inAns,'@survMm=',//survMm,'@cmdPos=',//cmdPos,'@outStat=',//outStat,'@cptVals=',//cptVals,'@chOutVal=',//chOutVal)");
$response = trim(str_replace(';@','@',$response));
$response = str_replace(',','.',$response);
$arr_response = explode('@',$response);
foreach ($arr_response as $field) {
list($key,$values) = explode('=',$field);
$arrValue = array();
$arr_values = explode(';',$values);
if (in_array($key,$hexa)) {
foreach ($arr_values as $value){
$value = trim($value);
if ($value != '') {$result[$key][] = hexdec($value);}
}
}
else {
foreach ($arr_values as $value){
$value = trim($value);
if ($value != '') $result[$key][] = $value;
}
}
}
//var_dump($result);
$cmds = sdk_get_command($result['cmdPos'][0]);
$heure = $result['paramSys'][0];
list($day,$month,$year) = explode('/',$result['paramSys'][1]);
$date = $year.'-'.$month.'-'.$day;
$timestamp = strtotime($date.' '.$heure);
$time = date('Y-m-d H:i:s',$timestamp);
@sdk_header('text/xml');
$xml = '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL;
$xml .= ' <root>'.PHP_EOL;
$xml .= ' <time>'.$time.'</time> '.PHP_EOL;;
$xml .= ' <timestamp>'.$timestamp.'</timestamp>'.PHP_EOL;;
$xml .= ' <current>'.PHP_EOL.' ';
$key = 'inAns';
$ind = 0;
foreach ($inAns as $item){
if ($item != '') $xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> ';
$ind++;
}
$key = 'cptVals';
$ind = 0;
foreach ($cptVals as $item){
if ($item != '') {
if ($result[$key][$ind]<=$max_int_pos) {
$xml .= '<'.$item.'>'.($result[$key][$ind]/10).'</'.$item.'> ';
}
else {
$result[$key][$ind] = ($result[$key][$ind]-$max_int)/10;
$xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> ';
}
$ind++;}
}
$key = 'paramSys';
$ind = 0;
foreach ($paramSys as $item){
if ($item != '') $xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> ';
$ind++;
}
$xml .= '<cmd1>'.$arr_cmds[$cmds[1]].'</cmd1> '.'<cmd2>'.$arr_cmds[$cmds[2]].'</cmd2> ';
$key = 'cmdPos';$ind = 7;
$xml .= '<'.$cmdPos[$ind].'>'.$arr_tests[$result[$key][$ind]].'</'.$cmdPos[$ind].'>';
$xml .= PHP_EOL.' </current>'.PHP_EOL;
foreach ($result as $key => $value){
$xml .= ' <'.$key.' ';
foreach ($result[$key] as $key1 => $value1){
$xml .= 'v'.$key1.'="'.$value1.'" ';
}
$xml .= '/>'.PHP_EOL;
}
$xml .= ' </root>'.PHP_EOL;
echo $xml;
?>
Dernière édition: 12 Fév 2023 08:54 par flc85.
Connexion ou Créer un compte pour participer à la conversation.
- nicoMB
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
26 Avr 2023 11:58 #7
par nicoMB
Réponse de nicoMB sur le sujet Box domotique Eedomus et MsunPV
Bonjour flc85,
Ce script est-il disponible sur le store eedomus ? Je ne l’ai pas trouvé.
Faut-il donc le télécharger ? C’est une opération que je n’ai jamais appliqué depuis 6 ans que j’ai cette box.
Ce script est-il disponible sur le store eedomus ? Je ne l’ai pas trouvé.
Faut-il donc le télécharger ? C’est une opération que je n’ai jamais appliqué depuis 6 ans que j’ai cette box.
Connexion ou Créer un compte pour participer à la conversation.
- nicoMB
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
06 Mai 2023 08:27 #8
par nicoMB
Bonjour flc85,
Ce script est-il disponible sur le store eedomus ? Je ne l’ai pas trouvé.
Faut-il donc le télécharger ?
C’est une opération que je n’ai jamais appliqué depuis 6 ans que j’ai cette box.
Réponse de nicoMB sur le sujet Box domotique Eedomus et MsunPV
Voici la dernière version (V1.2) qui affiche l'état du MSUNPV et permet d'envoyer des commandes.
Pour cmd1 et cmd2 ont a les valeurs AUTO/ MANU /OFF
Pour cmdtest INJECTION /ZERO INJECTION/ MOYEN /FORT
Les informations nécessaires sont en tête de script.
Sauver le script MSUNPV.php et le transférer sur l'eedomus.
Créer des capteurs HTTP pour récupérer les informations : Mettre l'adresse IP du MSUNPV dans VAR1
Faire les appels avec http://localhost/script/?exec=MSUNPV.php&url=[VAR1]
Faire les lectures avec //conso.... ou //inAns/@v0...
Créer des actionneurs HTTP pour envoyer des commandes : cmd1 (routeur1), cmd2 (routeur2) ou cmdtest
Créer les valeurs 3 valeurs pour les cmd, 4 valeurs pour cmdtest (cf. script) en remplissant Valeur brute, description et URL
exemple : 2, manuel et http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmd1=2
<?php /**************************************************************************** * optimisateur de production solaire MSUNPV.php por eedomus * V1.0 : opa95 2023-02-03 niveaux instantanes * V1.1 : opa95 2023-02-05 généralisation tests par flc85 et Scalaire * V1.2 : opa95 2023-02-07 modification des commandes tests par flc85 * ligne decommande http://localhost/script/?exec=MSUNPV.php&url=[VAR1] * ligne decommande http://localhost/script/?exec=MSUNPV&php&url=[VAR1]&cmd1=a * ligne decommande http://localhost/script/?exec=MSUNPV&php&url=[VAR1]&cmd2=b * avec VAR1 : adresse ip du MSUNPV * avec a et b = 0 ou off, 1 ou manuel, 2 ou auto * ligne decommande http://localhost/script/?exec=MSUNPV&php&url=[VAR1]&cmdtest=c * avec c = 1 ou injection, 2 ou zero_injection, 4 ou moyen, 8 ou fort * récupération avec un capteur HTTP *Récupération des valeurs dans XPATH par //champ/@vi (i de 0 à 15) * //rtcc/@v0 * //paramSys/@v0 à //paramSys/@v11 * //inAns/@v0 à //inAns/@v15 * //survMm/@v0 à //survMm/@v15 * //cmdPos/@v0 à //cmdPos/@v7 * //outStat/@v0 à //outStat/@v15 * //cptVals/@v0 à //cptVals/@v7 * //chOutVal/@v0 à //chOutVal/@v7 *Récuperations ciblées * //time //timestamp //conso //production> //routage_1 //routage_2 //tension * //powbal1 //powbal2 //enConso //enProd //enPV_J //enPV_P * //heure //date //etat //intervalle //nom //version //sn //cmd1 //cmd2 //test_routeur *Envoi de commande avec un actionneur HTTP * pour cmd1, mettre les valeurs [Valeur Brute, Description,URL] et l'équivalent pour cmd2 * 0 off http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmd1=0 * 1 manuel http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmd1=1 * 2 manuel http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmd1=2 * pour cmdtest, mettre les valeurs * 1 injection http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmdtest=1 * 2 zero_injection http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmdtest=2 * 4 moyen http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmdtest=4 * 8 fort http://localhost/script/?exec=MSUNPV.php&url=[VAR1]&cmdtest=8 *Contenu du xml renvoyé (exemple) <?xml version="1.0" encoding="UTF-8"?> <root> <time>2023-02-05 14:16:45</time> <timestamp>1675603005</timestamp> <current> <conso>-1957.3</conso> <production>-5953.5</production> <routage_1>400</routage_1> <routage_2>400</routage_2> <tension>227.5</tension> <powbal1>1.1</powbal1> <powbal2>2917.7</powbal2> <enConso>9042.6</enConso> <enProd>-118.1</enProd> <enPV_J>-7772.8</enPV_J> <enPV_P>-1416199.2</enPV_P> <heure>14:16:45</heure> <date>05/02/2023</date> <etat>On</etat> <intervalle>01:00</intervalle> <nom>MS_PV4_2</nom> <version>5.0.1</version> <sn>dl0420a</sn> <cmd1>auto</cmd1> <cmd2>auto</cmd2> <test_routeur>zero_injection</test_routeur> </current> <rtcc v0="14:16:44 DI" /> <paramSys v0="14:16:45" v1="05/02/2023" v2="On" v3="01:00" v4="0.0" v5="MS_PV4_2" v6="5.0.1" v7="dl0420a" v8="102e" v9="102c" v10="00:00" v11="00:00" /> <inAns v0="-1957.3" v1="-5953.5" v2="400" v3="400" v4="227.5" v5="1.1" v6="2917.7" v7="0.0" v8="0.0" v9="0.0" v10="0.0" v11="0.0" v12="0.0" v13="0.0" v14="0.0" v15="0.0" /> <survMm v0="0" v1="0" v2="0" v3="0" v4="0" v5="0" v6="0" v7="0" v8="0" v9="0" v10="0" v11="0" v12="0" v13="0" v14="0" v15="0" /> <cmdPos v0="10" v1="0" v2="0" v3="0" v4="0" v5="0" v6="0" v7="2" /> <outStat v0="100" v1="100" v2="0" v3="0" v4="0" v5="0" v6="0" v7="0" v8="0" v9="0" v10="0" v11="0" v12="0" v13="0" v14="0" v15="0" /> <cptVals v0="90426" v1="-118.1" v2="-7772.8" v3="-1416199.2" v4="0" v5="0" v6="0" v7="0" /> <chOutVal v0="0" v1="0" v2="0" v3="255" v4="0" v5="0" v6="0" v7="0" /> </root> **************************************************************************/ function sdk_set_command($cmd1,$cmd2) {//$command 0,1,2) $cmd1 = min($cmd1%4,2); $cmd2 = min($cmd2%4,2); $command = $cmd1 + 4*$cmd2; if ($command == 10) $command = 'a'; return $command;//nombre entre 0 et 10 } function sdk_get_command($command) {//$command entre 0 et 10, select 0 ou 1 if (strtolower($command) == 'a') $command = 10; $command = min($command,10); $arr_cmd[1] = $command%4; $arr_cmd[2] = round(($command - $arr_cmd[1])/4); return $arr_cmd; } function sdk_num_command($cmd) {//$cmd off, manuel, auto $cmd = trim(strtolower($cmd)); switch ($cmd) { case '0' : case 'off' : $cmd = 0; break; case '1' : case 'manuel' : $cmd = 1; break; case '2' : case 'auto' : $cmd = 2; break; default : $cmd = '*'; } return $cmd; } $hexa = array('cmdPos','cptVals','chOutVal');//Champ hexa $inAns = array('conso','production','routage_1','routage_2','tension','powbal1','powbal2'); $cptVals = array('enConso','enProd','enPV_J','enPV_P'); $paramSys = array('heure','date','etat','intervalle','','nom','version','sn'); $cmdPos = array('cmd0','','','','','','','test_routeur'); $arr_cmds = array('off','manuel','auto'); $arr_tests = array(1 => 'injection',2 => 'zero_injection',4 => 'moyen',8 => 'fort'); $max_int_pos = 0X100000000; $max_int = ($max_int_pos+1)*2; $url_ = getArg('url'); $url = $url_.'/status.xml'; $url_cmd = $url_.'/index.xml'; $cmd1_ = sdk_num_command(getArg('cmd1',false,'')); $cmd2_ = sdk_num_command(getArg('cmd2',false,'')); $cmd_test_ = getArg('cmdtest',false,'0'); if (in_array($cmd_test_, array(1,2,4,8))) { $cmd_test = $cmd_test_;} else { $cmd_test = 0; foreach($arr_tests as $key => $item) { if ($cmd_test_ == $item) { $cmd_test = $key; break; } } } $response = httpQuery($url, 'GET', '','', $header); $response1 = xpath($response,'cmdPos'); $old_command = explode(';',$response1); $old_cmds = sdk_get_command($old_command[0]); if ($cmd1_ === '*') $new_cmds[1] = $old_cmds[1]; else {$new_cmds[1] = $cmd1_; } if ($cmd2_ === '*') $new_cmds[2] = $old_cmds[2]; else {$new_cmds[2] = $cmd2_;} if ($cmd_test == 0 ) $cmd_test = $old_command[7]; $is_new_command = ($new_cmds[1] != $old_cmds[1]) || ($new_cmds[2] != $old_cmds[2]) || ($cmd_test != $old_command[7]); $cmd = sdk_set_command($new_cmds[1],$new_cmds[2]); if ($is_new_command){ $parS=$cmd.';'; foreach ($old_command as $key => $item){ if ($key == 0) continue; if ($key == 7) break; $parS .= $item.';'; } $parS = str_replace(';;',';',$parS.$cmd_test); $url1 = $url_cmd.'?parS='.$parS; $response = httpQuery($url1, 'POST', '','', $header); } $response = xpath($response,"concat('rtcc=',//rtcc,'@paramSys=',//paramSys,'@inAns=',//inAns,'@survMm=',//survMm,'@cmdPos=',//cmdPos,'@outStat=',//outStat,'@cptVals=',//cptVals,'@chOutVal=',//chOutVal)"); $response = trim(str_replace(';@','@',$response)); $response = str_replace(',','.',$response); $arr_response = explode('@',$response); foreach ($arr_response as $field) { list($key,$values) = explode('=',$field); $arrValue = array(); $arr_values = explode(';',$values); if (in_array($key,$hexa)) { foreach ($arr_values as $value){ $value = trim($value); if ($value != '') {$result[$key][] = hexdec($value);} } } else { foreach ($arr_values as $value){ $value = trim($value); if ($value != '') $result[$key][] = $value; } } } //var_dump($result); $cmds = sdk_get_command($result['cmdPos'][0]); $heure = $result['paramSys'][0]; list($day,$month,$year) = explode('/',$result['paramSys'][1]); $date = $year.'-'.$month.'-'.$day; $timestamp = strtotime($date.' '.$heure); $time = date('Y-m-d H:i:s',$timestamp); @sdk_header('text/xml'); $xml = '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL; $xml .= ' <root>'.PHP_EOL; $xml .= ' <time>'.$time.'</time> '.PHP_EOL;; $xml .= ' <timestamp>'.$timestamp.'</timestamp>'.PHP_EOL;; $xml .= ' <current>'.PHP_EOL.' '; $key = 'inAns'; $ind = 0; foreach ($inAns as $item){ if ($item != '') $xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> '; $ind++; } $key = 'cptVals'; $ind = 0; foreach ($cptVals as $item){ if ($item != '') { if ($result[$key][$ind]<=$max_int_pos) { $xml .= '<'.$item.'>'.($result[$key][$ind]/10).'</'.$item.'> '; } else { $result[$key][$ind] = ($result[$key][$ind]-$max_int)/10; $xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> '; } $ind++;} } $key = 'paramSys'; $ind = 0; foreach ($paramSys as $item){ if ($item != '') $xml .= '<'.$item.'>'.$result[$key][$ind].'</'.$item.'> '; $ind++; } $xml .= '<cmd1>'.$arr_cmds[$cmds[1]].'</cmd1> '.'<cmd2>'.$arr_cmds[$cmds[2]].'</cmd2> '; $key = 'cmdPos';$ind = 7; $xml .= '<'.$cmdPos[$ind].'>'.$arr_tests[$result[$key][$ind]].'</'.$cmdPos[$ind].'>'; $xml .= PHP_EOL.' </current>'.PHP_EOL; foreach ($result as $key => $value){ $xml .= ' <'.$key.' '; foreach ($result[$key] as $key1 => $value1){ $xml .= 'v'.$key1.'="'.$value1.'" '; } $xml .= '/>'.PHP_EOL; } $xml .= ' </root>'.PHP_EOL; echo $xml; ?>
Bonjour flc85,
Ce script est-il disponible sur le store eedomus ? Je ne l’ai pas trouvé.
Faut-il donc le télécharger ?
C’est une opération que je n’ai jamais appliqué depuis 6 ans que j’ai cette box.
Connexion ou Créer un compte pour participer à la conversation.
- flc85
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
22 Jui 2023 08:22 #9
par flc85
Réponse de flc85 sur le sujet Box domotique Eedomus et MsunPV
Non, il n'est pas sur le store il faut l'installer manuellement.
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- MSun-PV
- Support technique
- Box domotique Eedomus et MsunPV