Merci pour le "nettoyage".
J'ai finalisé le script, j'utilise 4 capteurs (conso jour, conso veille, cout jour, cout veille) et je transmets une variable dans le script qui est le cout du kWh (ce qui facilite la mise à jour en cas de changement de tarif).
Script php
- Code : Tout sélectionner
<?
$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_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=[CLIENTID]&client_secret=[client_secret]&username=[USERNAME]&password=[MDP]";
$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);
$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_veille_id, $veille, false);
setValue($cout_veille_id, $coutalways, false);
$i++;
}
Vue du capteur Smappee

- Capteur_Smappee.png (49.09 Kio) Consulté 27654 fois
Les valeurs [API] sont à remplacer par les codes API des différents capteurs
Dans VAR1 mettre le prix du kWh
Ce qui donne en final

- eedomus_smappee_4.png (94.54 Kio) Consulté 27654 fois
Les 4 histogrammes sont sur un mois avec finesse histogramme sur "un jour" et mode de calcul "max", ce qui permet de consulter la consommation ou le coût au jour le jour en faisant passer la souris sur l'histogramme.
En résumé, 2 scripts réalisés à partir des judicieux conseils de Floman321 (sans qui, je serais encore entrain de "pleurer" devant mon Smappee

)
Le 1er script (actualisation toutes les minutes) permet l'affichage des 1ere et 3eme rangée de valeurs (valeurs instantanées)
Le 2eme script (actualisation toutes les 10 minutes) permet l'affichage de la 2eme rangée de valeurs (valeurs de comptages)