smappee analyseur de consommation EDF

Discutez ici de vos souhaits d'évolutions et de vos idées pour eedomus

Re: smappee analyseur de consommation EDF

Messagepar ericpey » 29 Juil 2017 20:29

Et comment obtient-on les codes API des capteurs ?
Merci
Eric
ericpey
 
Messages : 32
Inscription : 06 Mai 2017

Re: smappee analyseur de consommation EDF

Messagepar Patskins » 30 Juil 2017 08:01

Bonjour,

Je n'avais pas vu le message précédent.En ce qui concerne les codes API des capteurs, le code est accessible dans les paramètres "expert" du capteur.

API.png
Code API d'un capteur
API.png (49.07 Kio) Consulté 14732 fois
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: smappee analyseur de consommation EDF

Messagepar ericpey » 30 Juil 2017 11:07

Merci pour votre réponse rapide.

Alors, j'essaye de résumer où j'en suis (comme nouveau venu dans ce monde passionnant d'eedomus :) )

Pour installer Smappee sur eedomus:
- Je customise le script PHP de votre post du 11 Déc 2015 15:35 avec les identifiants secrets que j'ai reçu de Smappee
- Je charge sur eedomus le script PHP mis à jour
- J'ajoute un nouveau périphérique dans eedomus, un 'HTTP capteur'.
- Je l'appelle 'Smappee', usage 'Compteur d'électricité'
- Je passe le type de données en Texte
- Et c'est là où je ne le sens pas. Je rentre dans l'url de la requète le texte suivant avec l'API qui est identifiée dans la partie Expert. http://localhost/script/?exec=smappee_o ... 1589&cout=[VAR1]
- Dans le Xpath, je mets '\'
- Quand je teste, il me dis qu'il n'arrive pas à lire de valeur.

Que dois-je faire?
J'ai l'impression que vous créez un périphérique et après des capteurs par donnée mesurée mais je ne vois pas comment faire.
Merci pour votre aide.
Eric
Pièces jointes
Capture.JPG
Capture.JPG (122.86 Kio) Consulté 14730 fois
ericpey
 
Messages : 32
Inscription : 06 Mai 2017

Re: smappee analyseur de consommation EDF

Messagepar Patskins » 30 Juil 2017 21:13

Il faut créer des capteurs, un par valeur, et c'est le code API de ces différents capteurs qui doit être mis dans le script.
Exemple dans l'image suivante avec un capteur (consommation totale jour) et vue de l'ensemble des capteurs créés (dans canaux liés)
Pièces jointes
API-2.png
Exemple de capteur
API-2.png (60.18 Kio) Consulté 14725 fois
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: smappee analyseur de consommation EDF

Messagepar ericpey » 31 Juil 2017 07:41

Un très grand merci !!
Ca marche
Eric
ericpey
 
Messages : 32
Inscription : 06 Mai 2017

Re: smappee analyseur de consommation EDF

Messagepar ericpey » 01 Août 2017 22:11

Comme j'ai des panneaux solaires, j'essaye de récupérer la production.

J'ai créé deux capteurs (un pour la production, l'autre pour le prix)
J'ai modifié le php (voir ci joint)
J'ai modifié le lien de Smappe:
http://localhost/script/?exec=smappee_o ... 1800&cout=[VAR1]

Mais rien ne s'affiche dans mes capteurs alors que Smapee calcule bien ces valeurs.

Où est-ce que j'ai un bug ?



<?

$regroupement = 3 ;
// Regroupement de la conso par :
//5 = quarter (4 mois ?)
//4 = mois
//3 = jours
//2 = heure déconseillé
//1 = 5 minutes déconseillé

$commence = date('Y-m-d', strtotime('-1 day'));
$timeto = strtotime("now"); // Current time
$timefrom = strtotime($commence);
$val_jour_id = getArg('valjour','-1');
$cout_jour_id = getArg('coutjour','-1');
$val_solar_id = getArg('valsolar','-1');
$cout_solar_id = getArg('coutsolar','-1');
$val_veille_id = getArg('valveille','-1');
$cout_veille_id = getArg('coutveille','-1');
$cout =$_GET['cout'];



$CACHE_DURATION = 60 * 24; // 24h

$last_xml_success = loadVariable('last_xml_success');
$cle = loadVariable('access_token');
if ((time() - $last_xml_success) / 60 > $CACHE_DURATION)
{
$post = "grant_type=password&client_id=xxxxx&client_secret=xxxxx&username=xxxxx&password=xxxxx";
$response = httpQuery("https://app1pub.smappee.net/dev/v1/oauth2/token", 'POST', $post);
$json = sdk_json_decode($response);
$cle = $json['access_token'];

if ( isset($cle) ){
saveVariable('access_token', $cle);
saveVariable('last_xml_success', time() );
echo 'nouvelle clé '.$cle.'<br>';
}
}




$headers = array("Authorization: Bearer ".$cle);

// Liste des Smappees (normalement 1)
$response = httpQuery("http://app1pub.smappee.net/dev/v1/servicelocation", 'GET', NULL, NULL , $headers, true);
$json = sdk_json_decode($response);
$serviceLocationId = $json['serviceLocations'][0]['serviceLocationId']; //$serviceLocationId = "8831";

// REcuperation de la conso
$resconsumption = httpQuery('https://app1pub.smappee.net/dev/v1/servicelocation/'.$serviceLocationId.'/consumption?aggregation='.$regroupement.'&from='.$timefrom.'000&to='.$timeto.'000', 'GET', NULL, NULL , $headers, true);
$objconsumption = sdk_json_decode($resconsumption);
$consumptions = $objconsumption['consumptions'];

foreach ( $consumptions as $item ) {

$consumption = round($consumptions[$i]['consumption']/1000,2);
$coutconso = round(($consumption)*$cout,2);
$solar = round($consumptions[$i]['solar']/1000,2);
$coutsolar = round(($solar)*$cout,2);
$veille = round($consumptions[$i]['alwaysOn']/12000,2);
$coutalways = round(($veille)*$cout,2);

if ($veille == 0){
$i++;
continue;
}

setValue($val_jour_id, $consumption, false);
setValue($cout_jour_id, $coutconso, false);
setValue($val_solar_id, $solar, false);
setValue($cout_solar_id, $coutsolar, false);
setValue($val_veille_id, $veille, false);
setValue($cout_veille_id, $coutalways, false);

$i++;
}
ericpey
 
Messages : 32
Inscription : 06 Mai 2017

Re: smappee analyseur de consommation EDF

Messagepar Patskins » 02 Août 2017 07:02

Bonjour,

A première vue, dans le lien est transmis la valeur "solar" (&solar=682373) alors que dans le script est attendue la valeur "valsolar" ($val_solar_id = getArg('valsolar','-1')), ça ne peut pas fonctioner ;)
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: smappee analyseur de consommation EDF

Messagepar rover820i » 02 Août 2017 09:15

Salut,

Je ne connais pas l'API de smappee alors il me sera difficile de t'aiguiller mais on va corriger quelques erreurs de ton script :

Code : Tout sélectionner
$cout =$_GET['cout'];

sur eedomus doit devenir :
Code : Tout sélectionner
$cout =getArg('cout');


Code : Tout sélectionner
$CACHE_DURATION = 60 * 24; // 24h

Cette ligne n'est pas bonne car il manque les secondes. Il faut :
Code : Tout sélectionner
$CACHE_DURATION = 60 * 60 * 24; // 24h


Erreur de variable aussi soulevée par Patskins.

En outre tu as possibilité de tester le script lorsque tu l'implémentes dans un capteur HTTP afin de récupérer les erreurs. L'as-tu fait ?
rover820i
 
Messages : 3363
Inscription : 23 Juil 2016

Re: smappee analyseur de consommation EDF

Messagepar ericpey » 02 Août 2017 21:10

Merci à tous. C'est bon, j'ai maintenant les Energies journalière, solaire, et en veille avec leur coût associé.

J'ai maintenant essayé d'intégrer dans mon script la récupération de l'ActivePower en m'inspirant du script de Floman321, mais ca ne marche pas (voir la fin du script.

Un idée ?
Merci

<?

$regroupement = 3 ;
// Regroupement de la conso par :
//5 = quarter (4 mois ?)
//4 = mois
//3 = jours
//2 = heure déconseillé
//1 = 5 minutes déconseillé

$commence = date('Y-m-d', strtotime('-1 day'));
$timeto = strtotime("now"); // Current time
$timefrom = strtotime($commence);
$val_jour_id = getArg('valjour','-1');
$cout_jour_id = getArg('coutjour','-1');
$val_solar_id = getArg('valsolar','-1');
$cout_solar_id = getArg('coutsolar','-1');
$val_veille_id = getArg('valveille','-1');
$cout_veille_id = getArg('coutveille','-1');
$val_activepower_id = getArg('activepower','-1');
$cout = getArg('cout');



$CACHE_DURATION = 60 * 60 * 24; // 24h

$last_xml_success = loadVariable('last_xml_success');
$cle = loadVariable('access_token');
if ((time() - $last_xml_success) / 60 > $CACHE_DURATION)
{
$post = "grant_type=password&client_id=xxxxx&client_secret=xxxxxx&username=xxxxx&password=xxxx";
$response = httpQuery("https://app1pub.smappee.net/dev/v1/oauth2/token", 'POST', $post);
$json = sdk_json_decode($response);
$cle = $json['access_token'];

if ( isset($cle) ){
saveVariable('access_token', $cle);
saveVariable('last_xml_success', time() );
echo 'nouvelle clé '.$cle.'<br>';
}
}


$headers = array("Authorization: Bearer ".$cle);

// Liste des Smappees (normalement 1)
$response = httpQuery("http://app1pub.smappee.net/dev/v1/servicelocation", 'GET', NULL, NULL , $headers, true);
$json = sdk_json_decode($response);
$serviceLocationId = $json['serviceLocations'][0]['serviceLocationId']; //$serviceLocationId = "8831";

// REcuperation de la conso
$resconsumption = httpQuery('https://app1pub.smappee.net/dev/v1/servicelocation/'.$serviceLocationId.'/consumption?aggregation='.$regroupement.'&from='.$timefrom.'000&to='.$timeto.'000', 'GET', NULL, NULL , $headers, true);
$objconsumption = sdk_json_decode($resconsumption);
$consumptions = $objconsumption['consumptions'];

foreach ( $consumptions as $item ) {

$consumption = round($consumptions[$i]['consumption']/1000,2);
$coutconso = round(($consumption)*$cout,2);
$valsolar = round($consumptions[$i]['solar']/1000,2);
$coutsolar = round(($valsolar)*$cout,2);
$veille = round($consumptions[$i]['alwaysOn']/12000,2);
$coutalways = round(($veille)*$cout,2);

if ($veille == 0){
$i++;
continue;
}

setValue($val_jour_id, $consumption, false);
setValue($cout_jour_id, $coutconso, false);
setValue($val_solar_id, $valsolar, false);
setValue($cout_solar_id, $coutsolar, false);
setValue($val_veille_id, $veille, false);
setValue($cout_veille_id, $coutalways, false);

$i++;
}

// REcuperation de la puissance instantannée
$respower = httpQuery('https://app1pub.smappee.net/dev/v1/servicelocation/'.$serviceLocationId.'/events?applianceID=1&from='.$timefrom.'000&to='.$timeto.'000', 'GET');

$myXML = jsonToXML($respower);

if ($val_activepower_id != '-1'){

$activepower = xpath($myXML, "substring-before(substring-after(//root/report , 'activePower='),' ')" );
setValue($val_activepower_id, $activepower, false);

}


?>
ericpey
 
Messages : 32
Inscription : 06 Mai 2017

Re: smappee analyseur de consommation EDF

Messagepar Patskins » 03 Août 2017 08:34

Bonjour,

Les valeurs tension, intensité, cos phi et puissance active ne se récupèrent pas à la même adresse que les consommations et il faut donc mieux créer un script différent ou modifier le script existant en allant chercher ces valeurs à la bonne adresse (cf. les messages précédents)
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: smappee analyseur de consommation EDF

Messagepar ericpey » 03 Août 2017 22:18

Effectivement, j'avais bien vu cette requète à une adresse différente:

$data = httpQuery("http://192.168.1.30/gateway/apipublic/reportInstantaneousValues", 'GET');

Mais quand j'essaye avec l'IP de mon Smappe, il me dit qu'il faut m'identifier d'abord.
Et en plus, je ne reconnais pas la structure de la requète de l'API publiée par eedomus.

Vous pourriez repartager votre script car je n'arrive pas à faire fonctionner le script d'activepower.

Merci d'avance
Eric
ericpey
 
Messages : 32
Inscription : 06 Mai 2017

Re: smappee analyseur de consommation EDF

Messagepar Patskins » 04 Août 2017 07:06

Bonjour,

Pour ces valeurs, ce n'est pas une requête utilisant une API mais une lecture directe dans le Smappee.
Pour que cela fonctionne, il faut d'abord s'identifier sur le "Smappee monitor" accessible depuis l'adresse "http://adresse_IP_Smappee/smappee.html", identification à refaire régulièrement (lorsque les valeurs ne sont plus accessibles). Les identifiants sont ceux de l'application.

Le script créé par Floman321 que j'ai adapté à mes besoins en créant sur la box les différents capteurs

Code : Tout sélectionner
<?

$activepower_id = getArg('activepower','-1');
$tension_id = getArg('tension','-1');
$intensite_id = getArg('intensite','-1');
$cosphi_id = getArg('cosphi','-1');
$coutjour_id = getArg('coutjour','-1');
$couthor_id = getArg('couthor','-1');
$coutmens_id = getArg('coutmens','-1');
$cout = $_GET['cout'];


$data = httpQuery("http://adresse_IP_Smappee/gateway/apipublic/reportInstantaneousValues", 'GET');

$myXML = jsonToXML($data);

if ($activepower_id != '-1'){
                                   
    $activepower = xpath($myXML, "(substring-before(substring-after(//root/report , 'activePower='),' ')) div 1000");
    setValue($activepower_id, $activepower, false);
   
}

if ($tension_id != '-1'){
                                 
    $tension = xpath($myXML, "substring-before(substring-after(//root/report , 'voltage='),' ')") ;
    setValue($tension_id, $tension, false);
}

if ($intensite_id != '-1'){
                                 
    $intensite = xpath($myXML, "round(substring-before(substring-after(//root/report , 'current='),' ')* 100) div 100");
    setValue($intensite_id, $intensite, false);
                                 
}

if ($cosphi_id != '-1'){
                                 
    $cosphi = xpath($myXML, "substring-before(substring-after(//root/report , 'cosfi='),',')");
    setValue($cosphi_id, $cosphi, false);
                                 
}

if ($couthor_id != '-1'){
                                 
    $couthor = round($activepower*$cout,2);
    setValue($couthor_id, $couthor, false);
                                 
}

if ($coutjour_id != '-1'){
                                 
    $coutjour = round($couthor*24,2);
    setValue($coutjour_id, $coutjour, false);
                                 
}

if ($coutmens_id != '-1'){
                                 
    $coutmens = round($couthor*720,2);
    setValue($coutmens_id, $coutmens, false);
                                 
}

?>


Le capteur html utilisé pour les valeurs lues dans le Smappee

smappee_2.png
Capteur html Smappee
smappee_2.png (114.11 Kio) Consulté 14660 fois

Avec comme requête "http://localhost/script/?exec=smappee.php&activepower=codeAPI&tension=codeAPI&intensite=codeAPI&cosphi=codeAPI&couthor=codeAPI&coutjour=codeAPI&coutmens=codeAPI&cout=[VAR1]


La fréquence des relevés est de 1 minute pour les valeurs dans le Smappee et de 3 minutes pour les valeurs de l'API.

Et voilà ce que cela donne sur ma box depuis plusieurs mois

smappee.png
Smappee sur box Eedomus
smappee.png (256.27 Kio) Consulté 14660 fois


Les valeurs "Pointe puissance active journalière", "Consommation totale journalière" et "Consommation en veille journalière" sont les valeurs max de la journée précédente (stockées et réinitialisées toutes les nuits à 0h00 à l'aide de simples règles dans la box).
La valeur "Pointe puissance active jour" est la valeur max du jour en cours (mémorisée et remise à 0 toutes les nuits à 0h00 à l'aide de simples règles dans la box).
Les valeurs "Coût total jour" et "Coût veille jour" sont les valeurs max de la journée en utilisant simplement les propriétés de l'affichage du widget (histogramme avec finesse de 1 jour et mode de calcul max".
Les autres valeurs sont les valeurs instantanées.
Eedomus+
DI-O / Zwave / Zwave + / Thermostat et station Netamo / Smappee / Sondes Oregon
Tablette dédiée avec Impérihome pro pour la gestion, un dashboard à l'aide d'un Raspberry
Patskins
 
Messages : 260
Inscription : 26 Oct 2015
Localisation : Bretagne (35), France

Re: smappee analyseur de consommation EDF

Messagepar ericpey » 05 Août 2017 22:00

YES !!!! Ca marche.
Un grand merci pour ta patience !
J'avais loupé le login sur Smapeee
Encore merci
Eric
ericpey
 
Messages : 32
Inscription : 06 Mai 2017

Re: smappee analyseur de consommation EDF

Messagepar sigmund173 » 26 Sep 2018 13:24

Bonjour,

très intéressant ce post et puis l'interface graphique c'est chouette, comme je suis a la recherche d'un module pour faire la mesure energétique je me dis que celui ci est pas mal du tout.
Je vais me pencher là dessus
Eedomus+ - Zibase - Modules Fibaro - Modules 433Mhz - Broadlink RM Pro - Google Home - Alexa
sigmund173
 
Messages : 83
Inscription : 11 Oct 2017
Localisation : Alsace

Re: smappee analyseur de consommation EDF

Messagepar Eric Massenet » 27 Fév 2020 03:37

Bonjour à tous,
Je suis débutant dans l'utilisation Eedomus.
Je voudrais intégrer mon smappee Energy à ma centrale EEdomus.
J'ai lu tous les échanges mais je vous avoue que ça part un peu dans tous les sens et je ne sais pas par ou commencer.
Est-ce que quelqu'un aurait la gentillesse de nous faire un post décrivant simplement pour un néofite comme moi, toutes les étapes unes par unes pour configurer son smappee et ramener toutes les info dans ma centrale EEdomus ?
Un grand merci pour votre aide
Eric Massenet
 
Messages : 2
Inscription : 03 Fév 2020

Précédent

Retour vers Suggestions

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 12 invité(s)