Poune a écrit:Je ne sais pas si tu connais ce site, il pourra peut-être t'apporter des solutions.
D'autre part l'option du routeur est la meilleure dès lors que tu ne revends pas ton surplus. Ainsi tu consomme toute ta production et le cumulus agit un peu comme une batterie.
https://f1atb.fr/index.php/fr/2023/05/1 ... linky-diy/
<?
//*************************************************************************
// Widget envoy Créé le 22/08/2021
// merguez07 Version 1.4 du 21/06/2022 : correction d'un bug dans le json
// merguez07 Version 1.5 du 16/09/2022 : correction d'un bug dans le json
// damien, qwench... 1.6 du 20/10/2023 : gestion du token
// ISO 8859-1
//*************************************************************************
function sdk_unit($value)
{
global $unit;
return round($value / $unit, 2);
}
$type = getArg('type', false);
//Token défini dans le code
//$token = 'eyJ...';
//Lecture du token depuis une variable eedomus
$token = getArg('token');
if ($type == "widget") {
$api_master = getArg('api_master');
$periph_list = getPeriphList();
foreach ($periph_list as $key => $value) {
if ($value["parent_device_id"] == $api_master) {
$api_child[] = $value["device_id"];
}
}
foreach ($api_child as $api) {
$a = getValue($api);
if (strpos($a["full_name"], "% de charge") !== false) $pourcent_batteries = $a["value"] . "%";
if (strpos($a["full_name"], "Etat des batteries") !== false) $State_batteries = $a["value"];
if (strpos($a["full_name"], "Energie stockée") !== false) $W_Charge_batteries = round($a["value"]) . "Wh";
if (strpos($a["full_name"], "P échangée") !== false) $P_Charge_batteries = round(abs($a["value"])) . "W";
if (strpos($a["full_name"], "Nb de batteries") !== false) $Nb_batteries = $a["value"];
if (strpos($a["full_name"], "P import/export") !== false) $P_import_mes = $a["value"];
if (strpos($a["full_name"], "P réelle de production") !== false) $P_onduleurs_mes = round($a["value"]) . "W";
if (strpos($a["full_name"], "Production journalière") !== false) $W_prod_j_mes = round($a["value"]) . "Wh";
if (strpos($a["full_name"], "Consommation journalière") !== false) $W_conso_j_mes = round($a["value"]) . "Wh";
if (strpos($a["full_name"], "P consommée") !== false) $P_conso_mes = round($a["value"]) . "W";
if (strpos($a["full_name"], "Consommation journalière") !== false) $W_consoJ = "Wj=" . round($a["value"]) . "Wh";
if (strpos($a["full_name"], "Consommation sur 7 jours") !== false) $W_conso7J = "W7j=" . round($a["value"]) . "Wh";
}
if ($P_import_mes < 0) {
$reseau_txt = "Export";
} else {
$reseau_txt = "Import";
}
$P_import_mes = round(abs($P_import_mes)) . "W";
// Widget envoy
?>
<div class="widget">
<img src="https://i.ibb.co/bF1v1JL/image-2021-08-22-T15-43-07-583-Z.png" alt="">
<?php //réseau
?>
<span class="widget-text reseau-puissance"><?= $P_import_mes; ?></span>
<span class="widget-text reseau-state"><?= $reseau_txt; ?></span>
<span class="widget-text reseau-wj"><?= $W_consoJ; ?></span>
<span class="widget-text reseau-w7j"><?= $W_conso7J; ?></span>
<?php //maison
?>
<span class="widget-text consommation-puissance"><?= $P_conso_mes; ?></span>
<span class="widget-text consommation-energieJ"> <?= $W_conso_j_mes; ?></span>
<?php //batterie
?>
<span class="widget-text batterie-puissance"> <?= $P_Charge_batteries; ?></span>
<span class="widget-text batterie-energie"> <?= $W_Charge_batteries; ?></span>
<span class="widget-text batterie-pourcent"> <?= $pourcent_batteries; ?></span>
<span class="widget-text batterie-nb"> <?= $Nb_batteries; ?></span>
<?php //panneaux solaire
?>
<span class="widget-text panneaux-solaire-puissance"><?= $P_onduleurs_mes; ?></span>
<span class="widget-text panneaux-solaire-energieJ"><?= $W_prod_j_mes; ?></span>
<?php //flèches
?>
<?php if ($reseau_txt == 'Import') : ?>
<span class="widget-arrow clignote"></span>
<?php else : ?>
<span class="widget-arrow inverse clignote"></span>
<?php endif; ?>
<?php if ($state_batterie == 'Charge') : ?>
<span class="widget-arrow batterie clignote"></span>
<?php else : ?>
<span class="widget-arrow batterie inverse clignote"></span>
<?php endif; ?>
<span class="widget-arrow panneaux"></span>
<span class="widget-arrow maison"></span>
</div>
<style media="screen">
:root {
--width-element: 1;
}
.widget {
display: inline-block;
width: calc(100% * var(--width-element));
height: auto;
position: relative;
font-family: Arial, sans-serif;
text-align: center;
}
.widget>img {
width: 100%;
height: auto;
border: none;
}
.widget-text {
position: absolute;
font-size: calc(2.7vw * var(--width-element));
font-weight: bold;
color: black;
width: 14%;
}
.reseau-puissance {
top: 56%;
left: 4%;
}
.reseau-state {
top: 42%;
left: 4%;
}
.reseau-wj {
top: 46%;
left: 21%;
}
.reseau-w7j {
top: 51%;
left: 22%;
}
.consommation-puissance {
top: 56%;
left: 83%;
color: #4285F4;
}
.consommation-energieJ {
top: 42%;
left: 83%;
color: #4285F4;
}
.batterie-puissance {
top: 93%;
left: 43%;
color: #4B8523;
}
.batterie-energie {
top: 79%;
left: 43%;
color: #4B8523;
}
.batterie-pourcent {
top: 86%;
left: 49%;
color: #4B8523;
}
.batterie-nb {
top: 86%;
left: 36%;
color: #4B8523;
}
.panneaux-solaire-puissance {
top: 18%;
left: 43%;
color: #D49806;
}
.panneaux-solaire-energieJ {
top: 3%;
left: 43%;
color: #D49806;
}
.widget-arrow {
position: absolute;
top: 48.7%;
left: 35%;
display: inline-block;
width: calc(3.4vw * var(--width-element));
height: calc(3.4vw * var(--width-element));
background-image: url('https://i.ibb.co/Z6XwJWW/image-2021-08-22-T07-07-16-112-Z.png');
background-size: cover;
background-repeat: none;
}
.widget-arrow.inverse {
transform: rotate(180deg);
}
.widget-arrow.batterie {
top: 60%;
left: 47.6%;
background-image: url('https://i.ibb.co/CPCgs9q/arrow-batterie.png');
transform: rotate(90deg);
}
.widget-arrow.panneaux {
top: 35%;
left: 47.6%;
background-image: url('https://i.ibb.co/ssGk3Rh/arrow-panneau.png');
transform: rotate(90deg);
}
.widget-arrow.maison {
top: 48.7%;
left: 62%;
background-image: url('https://i.ibb.co/yyWvW7j/arrow-house.png');
}
.clignote {
color: green;
animation: clignote 2s linear infinite;
}
@keyframes clignote {
50% {
opacity: 0;
}
}
</style>
<?
die;
}
$cache_duration = 1; // minutes
$time_last_xml = loadVariable('time_last_xml');
if ((time() - $time_last_xml) / 60 < $cache_duration) {
sdk_header('text/xml');
$cached_xml = loadVariable('cached_xml');
echo $cached_xml;
die();
}
$address_envoy = getArg('adress');
//https required
$url = 'https://' . $address_envoy . '/production.json';
//$oauth_token = NULL required
$request = httpQuery($url, $action = 'GET', $post = NULL, $oauth_token = NULL, $headers = array("Authorization: Bearer $token"), $use_cookies = false, $ignore_errors = true);
if (strpos($request, 'Connection refused')) {
echo 'Connection refused';
$xml .= "<ETAT> Envoy injoignable</ETAT>\n";
sdk_header('text/xml');
echo $xml;
return;
}
$xml .= "<ETAT> ok </ETAT>\n";
/*$request="{\"production\":
[
{\"type\":\"inverters\",
\"activeCount\":41,
\"wNow\":1346
},
{\"type\":\"eim\",
\"wNow\":1425.817,
\"whToday\":3150.953,
\"whLastSevenDays\":216872.953
}
],
\"consumption\":
[
{\"type\":\"eim\",
\"wNow\":1159.042,
\"whToday\":3186.23,
\"whLastSevenDays\":167332.23
},
{\"type\":\"eim\",
\"wNow\":11266.775
}
],
\"storage\":
[
{\"type\":\"acb\",
\"activeCount\":16,
\"wNow\":1537,
\"whNow\":5791,
\"state\":\"charging\",
\"percentFull\":29
}
]
}";*/
$Trequest = sdk_json_decode($request);
$nb_onduleurs = $Trequest['production'][0]['activeCount'];
$P_onduleurs_calc = $Trequest['production'][0]['wNow'];
$P_onduleurs_mes = $Trequest['production'][1]['wNow'];
$W_prod_j_mes = $Trequest['production'][1]['whToday'];
$W_prod_7j_mes = $Trequest['production'][1]['whLastSevenDays'];
$P_conso_mes = $Trequest['consumption'][0]['wNow'];
$W_conso_j_mes = $Trequest['consumption'][0]['whToday'];
$W_conso_7j_mes = $Trequest['consumption'][0]['whLastSevenDays'];
$P_import_mes = $Trequest['consumption'][1]['wNow'];
$Nb_batteries = $Trequest['storage'][0]['activeCount'];
$P_Charge_batteries = $Trequest['storage'][0]['wNow'];
$W_Charge_batteries = $Trequest['storage'][0]['whNow'];
$State_batteries = $Trequest['storage'][0]['state'];
$pourcent_batteries = $Trequest['storage'][0]['percentFull'];
$unit = 1;
$xml .= "<NB_ONDULEURS>" . $nb_onduleurs . "</NB_ONDULEURS>\n";
$xml .= "<P_ONDULEURS_CALCULEE>" . sdk_unit($P_onduleurs_calc) . "</P_ONDULEURS_CALCULEE> \n";
$xml .= "<P_ONDULEURS>" . sdk_unit($P_onduleurs_mes) . "</P_ONDULEURS> \n";
$xml .= "<PRODUCTION_J>" . sdk_unit($W_prod_j_mes) . "</PRODUCTION_J> \n";
$xml .= "<PRODUCTION_7J>" . sdk_unit($W_prod_7j_mes) . "</PRODUCTION_7J> \n";
$xml .= "<P_CONSOMMATION>" . sdk_unit($P_conso_mes) . "</P_CONSOMMATION> \n";
$xml .= "<CONSOMMATION_J>" . sdk_unit($W_conso_j_mes) . "</CONSOMMATION_J> \n";
$xml .= "<CONSOMMATION_7J>" . sdk_unit($W_conso_7j_mes) . "</CONSOMMATION_7J> \n";
$xml .= "<P_IMPORT_RESEAU>" . sdk_unit($P_import_mes) . "</P_IMPORT_RESEAU> \n";
$xml .= "<NB_BATTERIES>" . $Nb_batteries . "</NB_BATTERIES> \n";
$xml .= "<P_CHARGE_BATTERIES>" . sdk_unit($P_Charge_batteries) . "</P_CHARGE_BATTERIES> \n";
$xml .= "<ENERGIE_STOCKEE>" . sdk_unit($W_Charge_batteries) . "</ENERGIE_STOCKEE> \n";
$xml .= "<ETAT_BATTERIES>" . $State_batteries . "</ETAT_BATTERIES> \n";
$xml .= "<POURCENT_CHARGE>" . $pourcent_batteries . "</POURCENT_CHARGE> \n";
$cached_xml = "<ENPHASE>\n";
$cached_xml .= "<cached>0</cached>\n";
$cached_xml .= $xml;
$cached_xml .= '</ENPHASE>';
sdk_header('text/xml');
echo $cached_xml;
if ($xml != '') // non vide
{
$cached_xml = str_replace('<cached>0</cached>', '<cached>1</cached>', $cached_xml);
saveVariable('cached_xml', $cached_xml);
saveVariable('time_last_xml', time());
}
die;
?>
seblanglois78 a écrit:Et voila la solution pour avoir un token d'un an suite au retour d'Enphase
Bonjour Sebastien,
Salutations de la part d'Enphase Energy
Cet email fait suite à votre demande verbatim "Je viens vers vous car j'ai un problème avec un jeton qui n'est valable que 12 heures. Comment puis-je le faire durer 1 an ou plus ? pour le système LANGLOIS avec Site ID-3482398.
Pour obtenir le jeton d'un an, vous devez suivre les étapes suivantes
S'authentifier sur enlighten
Naviguez jusqu'à : https://enlighten.enphaseenergy.com/ent ... erial_num=<insertYourEnvoyGatewaySerial>
Le jeton généré ici a une durée de vie d'un an !
Veuillez consulter le lien ci-dessous pour en savoir plus sur l'authentification du jeton.
https://enphase.com/download/accessing- ... entication
Si vous avez besoin d'aide, n'hésitez pas à nous contacter par email, chat ou appelez-nous au +33 (0)9 70 73 10 76.
Nous sommes toujours là pour vous aider
Nous vous prions d'agréer, Madame, Monsieur, l'expression de nos salutations distinguées,
Shuja
Enphase Energy
fred54 a écrit:pour ?
Utilisateurs parcourant ce forum : Dom57 et 8 invité(s)