Skip to content

Commit 6fd3edf

Browse files
authored
Merge pull request #117 from cddu33/beta
Batteries 3t
2 parents f04b1ed + 976012a commit 6fd3edf

File tree

9 files changed

+173
-328
lines changed

9 files changed

+173
-328
lines changed

README.md

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,71 @@ Le plugin permet de récupérer les données:
1717
* Semaine
1818
* Mise en service
1919
* Cumul Journalier Export réseau
20+
* Puissance Réactive
21+
* Puissance Apaprente
22+
* Facteur de puissance
23+
* Courant
24+
* Energie Réactive inductive jour
25+
* Energie Réactive inductive Mes
26+
* Energie Réactive capacitive jour
27+
* Energie Réactive capacitive Mes
28+
* Energie Apparente jour
29+
* Energie Apparente Mes
2030
* de consommation totale mono ou tri (avec la production):
2131
* Instantanné
2232
* Jour
2333
* Semaine
2434
* Mise en service
35+
* Puissance Réactive
36+
* Puissance Apparente
37+
* Facteur de puissance
38+
* Courant
39+
* Energie Réactive inductive jour
40+
* Energie Réactive inductive Mes
41+
* Energie Réactive capacitive jour
42+
* Energie Réactive capacitive Mes
43+
* Energie Apparente jour
44+
* Energie Apparente Mes
2545
* de consommation net mono ou tri (importée du réseau):
2646
* Instantanné
2747
* Jour
2848
* Semaine
2949
* Mise en service
30-
* Cumul journalier Import réseau
50+
* Cumul journalier Import réseau (non fonctionnel avec le dernier firmware, bug enphase)
51+
* Puissance Réactive
52+
* Puissance Apaprente
53+
* Facteur de puissance
54+
* Courant
55+
* Energie Réactive inductive jour
56+
* Energie Réactive inductive Mes
57+
* Energie Réactive capacitive jour
58+
* Energie Réactive capacitive Mes
59+
* Energie Apparente jour
60+
* Energie Apparente Mes
3161
* la balance import et export instantanée réseau mono ou tri
3262
* le stockage
33-
* La puissance délivrée
34-
* Le pourcentage de charge restant
63+
* La puissance délivrée (ancienne batteries)
64+
* Le pourcentage de charge restant (anciennes batteries)
65+
* La capacité
66+
* La puissance restante
3567
* les onduleurs
3668
* La puissance délivrée par onduleur
3769
* Le puissance délivrée max par onduleur
38-
* La production cumulée sur la journée
70+
* La production cumulée sur la journée (estimation)
71+
* Le groupe d'appartenance (orientation ou puissance du panneau) pour la surveillance de production
72+
* Groupe d'onduleurs (si configuré)
73+
* La puissance délivrée dans le groupe
74+
* Le puissance délivrée max dans le groupe
75+
* La production cumulée sur la journée (estimation) dans le groupe
76+
* La surveillance de production
3977

4078

4179
Pour maximiser l'autoconsommation, posssibilité de régler un seuil haut et un seuil bas pour déclencher une commande
4280

4381
L'actualisation des données est réglable avec un minimum de 1s sauf pour les onduleurs qui eux s'actualise toutes les 15min environ (non modifiable)
4482

83+
La production des panneaux est surveillé une fois par jour. La formule de calcul est: l'addition des panneaux d'un groupe diviser par le nombre de panneau . Ce calcul est minoré de 10/100. Si la production journalière d'un panneau est inférieur à ce calcul, il est listé dans un rapport journalier dans le centre de message.
84+
4585
L'accé se fait soit avec les identifiants enphase soit avec un token généré manuellement.
4686

4787
# Configuration
@@ -81,8 +121,7 @@ Il faudra rentrer les informations suivante dans la page de configuration du pl
81121
* Utilisateur Enphase
82122
* Mot de passe Enphase
83123
* Adresse IP locale de la passerelle
84-
* ID du site (dispponible sur l'application)
85-
* Numéro de série de la passerelle (disponnible sur l'application)
124+
* Numéro de série de la passerelle (disponible sur l'application)
86125
* Mode Token Manuel:
87126
* Adresse IP locale de la passerelle
88127
* Token généré précédement depuis le site Enphase
@@ -91,6 +130,15 @@ Il faudra rentrer les informations suivante dans la page de configuration du pl
91130
* Mode Monophasé
92131
* Mode triphasé
93132

133+
* Equipement par Groupement:
134+
Si coché, cré un équipement par groupement pour centraliser les informations
135+
136+
Les groupements sont à renseigner dans chaque équipement onduleur
137+
>Attention, pensez à relancer le démon si vous changez ce paramètre.
138+
139+
* Commandes par équipements:
140+
Cocher les commandes ( sur la page configuration du plugin) que vous voulez que le plugin rajoute
141+
94142
* Autoconsommation:
95143
* Mode de fonctionnement: active ou non l'autoconsommation
96144
* Surplus déclenchement seuil 1: valeur en Watt au dessus de laquelle on déclenche l'autoconsommation

core/class/enphasesecur.class.php

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ public static function creationmaj() {
151151

152152
}
153153

154+
155+
154156
if (config::byKey('G1', __CLASS__) == true) { self::CreaEquip('enphasesecur_G1', 'Groupe 1', 'type', 'groupe', '1', 1);}
155157
if (config::byKey('G2', __CLASS__) == true) { self::CreaEquip('enphasesecur_G2', 'Groupe 2', 'type', 'groupe', '1', 1);}
156158
if (config::byKey('G3', __CLASS__) == true) { self::CreaEquip('enphasesecur_G3', 'Groupe 3', 'type', 'groupe', '1', 1);}
@@ -167,6 +169,8 @@ public static function creationmaj() {
167169

168170
self::CreaEquip('enphasesecur_bat', 'Enphase Stockage', 'type', 'bat', '1', 1);
169171
}
172+
//batteries
173+
if (config::byKey('batt', __CLASS__) == true) { self::CreaEquip('enphasesecur_batt', 'Batteries 3T IQ', 'type', 'batt', '1', 1);}
170174
}
171175
// Fonction exécutée automatiquement avant la création de l'équipement
172176
public function preInsert() {}
@@ -352,19 +356,27 @@ public function enphasesecurCron1drapport(){
352356
$rapport = "Pas d'anomalie de production détectée, seuil ligne 1: ". $cumul1 . ", seuil ligne 2: ". $cumul2 . ", seuil ligne 3: ". $cumul3 . ", seuil ligne 4: ". $cumul4;
353357
log::add('enphasesecur', 'info', $rapport);
354358
}
355-
else {
356-
$rapport = $rapport . ". seuil ligne 1: ". $cumul1 . ", seuil ligne 2: ". $cumul2 . ", seuil ligne 3: ". $cumul3 . ", seuil ligne 4: ". $cumul4;
357-
log::add('enphasesecur', 'error', $rapport);
358-
}
359359

360360
foreach (eqLogic::byType('enphasesecur', true) as $eqLogic) {
361361
if ($eqLogic->getConfiguration('type') == 'groupe') {
362-
if ($eqLogic->getLogicalId() == 'enphasesecur_G1') { $eqLogic->checkAndUpdateCmd('alarme', $g1);}
363-
elseif ($eqLogic->getLogicalId() == 'enphasesecur_G2') { $eqLogic->checkAndUpdateCmd('alarme', $g2);}
364-
elseif ($eqLogic->getLogicalId() == 'enphasesecur_G3') { $eqLogic->checkAndUpdateCmd('alarme', $g3);}
365-
elseif ($eqLogic->getLogicalId() == 'enphasesecur_G4') { $eqLogic->checkAndUpdateCmd('alarme', $g4);}
366-
}
362+
if ($eqLogic->getLogicalId() == 'enphasesecur_G1') {
363+
$eqLogic->checkAndUpdateCmd('alarme', $g1);
364+
log::add('enphasesecur', 'error', $rapport . ". seuil ligne 1: ". $cumul1);
365+
}
366+
elseif ($eqLogic->getLogicalId() == 'enphasesecur_G2') {
367+
$eqLogic->checkAndUpdateCmd('alarme', $g2);
368+
log::add('enphasesecur', 'error', $rapport . ". seuil ligne 2: ". $cumul2);
369+
}
370+
elseif ($eqLogic->getLogicalId() == 'enphasesecur_G3') {
371+
$eqLogic->checkAndUpdateCmd('alarme', $g3);
372+
log::add('enphasesecur', 'error', $rapport . ". seuil ligne 3: ". $cumul3);
373+
}
374+
elseif ($eqLogic->getLogicalId() == 'enphasesecur_G4') {
375+
$eqLogic->checkAndUpdateCmd('alarme', $g4);
376+
log::add('enphasesecur', 'error', $rapport . ". seuil ligne 4: ". $cumul4);
377+
}
367378

379+
}
368380
}
369381
}
370382

@@ -874,12 +886,6 @@ public function postSave() {
874886

875887
$this->CreaCmd('cumulimport3', 'Import Jour Réseau3', 'core::badge', '1', '3', 'CONSUMPTION','info', 'numeric', 'Wh', '1');
876888

877-
// $this->CreaCmd('calculjour1', 'Calcul Jour, ne pas toucher1', 'core::badge', '1', '', 'CONSUMPTION','info', 'numeric', 'Wh', '0');
878-
879-
// $this->CreaCmd('calculjour2', 'Calcul Jour, ne pas toucher2', 'core::badge', '1', '', 'CONSUMPTION','info', 'numeric', 'Wh', '0');
880-
881-
// $this->CreaCmd('calculjour3', 'Calcul Jour, ne pas toucher3', 'core::badge', '1', '', 'CONSUMPTION','info', 'numeric', 'Wh', '0');
882-
883889
$this->CreaCmd('autoconso11', 'Autoconso 1 phase 1', '', '1', '', '','info', 'binary', '', '1');
884890

885891
$this->CreaCmd('autoconso12', 'Autoconso 1 phase 2', '', '1', '', '','info', 'binary', '', '1');
@@ -993,6 +999,14 @@ public function postSave() {
993999
self::removecron();
9941000
self::creacron();
9951001
}
1002+
if ($this->getConfiguration('type') == 'batt')
1003+
{
1004+
$this->CreaCmd('Enc_max_available_capacity', 'Capacité maximum disponnible', 'core::badge', '1', '', 'CONSUMPTION','info', 'numeric', 'Wh', '1');
1005+
1006+
$this->CreaCmd('ENC_agg_avail_energy', 'Energie Restante', 'core::badge', '1', '', 'CONSUMPTION','info', 'numeric', 'Wh', '1');
1007+
1008+
$this->CreaCmd('ENC_pourcent', 'Pourcentage restante', 'core::badge', '1', '', 'CONSUMPTION','info', 'numeric', '%', '1');
1009+
}
9961010
}
9971011
// Fonction exécutée automatiquement avant la suppression de l'équipement
9981012
public function preRemove() {
@@ -1057,6 +1071,11 @@ public static function deamon_start() {
10571071
if (config::byKey('delais', __CLASS__) == ''){
10581072
config::save('delais','60','enphasesecur');
10591073
}
1074+
1075+
//batterie hs par defaut
1076+
if (config::byKey('batt', __CLASS__) == ''){
1077+
config::save('batt','non','enphasesecur');
1078+
}
10601079

10611080
$deamon_info = self::deamon_info();
10621081
if ($deamon_info['launchable'] != 'ok') {
@@ -1086,6 +1105,7 @@ public static function deamon_start() {
10861105
$cmd .= ' --apikey ' . jeedom::getApiKey(__CLASS__); // l'apikey pour authentifier les échanges suivants
10871106
$cmd .= ' --pid ' . jeedom::getTmpFolder(__CLASS__) . '/deamon.pid'; // et on précise le chemin vers le pid file (ne pas modifier)
10881107
$cmd .= ' --delais ' . config::byKey('delais', __CLASS__); // delais actualisation
1108+
$cmd .= ' --batt ' . config::byKey('batt', __CLASS__); // batteries
10891109
log::add(__CLASS__, 'info', $cmd);
10901110
log::add(__CLASS__, 'info', 'Lancement démon');
10911111
$result = exec($cmd . ' >> ' . log::getPathToLog('enphasesecur_daemon') . ' 2>&1 &'); // 'template_daemon' est le nom du log pour votre démon, vous devez nommer votre log en commençant par le pluginid pour que le fichier apparaisse dans la page de config

0 commit comments

Comments
 (0)