diff --git a/domo/relay.script.d/README.md b/domo/relay.script.d/README.md
index e1543fe..c96f2c7 100644
--- a/domo/relay.script.d/README.md
+++ b/domo/relay.script.d/README.md
@@ -1,207 +1,207 @@
# Construction des ordres pour les relais
Documentation pour construire des ordres pour les relais
Les scripts qui donne les ordres sont dans /opt/PvMonit/domo/relay.script.d/
-Ils sont rédigé en PHP mais peuvent être édité avec Blockly si vous ne savez pas programmé. Ensuite Blockly génère du PHP...
+Ils sont rédigé en PHP mais peuvent être édité avec Blockly si vous ne savez pas programmé. Ensuite Blockly génère du PHP... (démonstration ici : http://demo.zici.fr/PvMonit/domo-edit-script.php) Vous pouvez l'attendre avec l'adresse http://votreraspbery/domo-edit-script.php
## Les relais
### Les modes
Les relais comportes 4 niveaux de modes (mod) ils sont définies par l'utilisateur soit de façon manuel ou automatique (par les ordres/scripts)
* 0 : Éteint forcé
* Off forcé (action de l'utilisateur, ne peut être changé par les ordres/scripts)
* 1 : Éteint
* Off automatique (paramètre de base)
* 2 : Allumé
* On automatique (allumé par les scripts
* 3 : Allumé forcé
* On forcé (action de l'utilisateur, ne sera ne peut être changé par les ordres/scripts)
### Les états
Les relais on un "état" :
* 0 : Relai éteint
* 1 : Relai allumé
## Donner un ordre
Pour un changement sur le relai, fin du script doit contenir au minimum 1 variable de retour :
### $return['mod']
Cette variable est indispensable sinon le relai ne change pas d'état
Cette variable doit être à 1 ou 2
* 1 le relai sera éteint si ce n'est pas déjà le cas
* 2 le relai sera allumé si ce n'est pas déjà le cas
Un exemple en php d'un script minimum :
```php
$return['mod'] = 2; // Allume le relai sans condition...
return $return; // Indispensable en fin de script
```
### $return['log']
C'est une option, cela permet d'indiquer dans le log pourquoi le mod à changé. Cela permet une trace en cas de débug...
Un exemple en php :
```php
$return['mod'] = 2; // Allume le relai sans condition...
$return['log'] = "Allumage du relai"; // Indique dans le log (pour trace )
return $return; // Indispensable en fin de script
```
Un exemple avec une condition d'heure en PHP
```php
$return['mod'] = 1; // Par défaut le relai est éteint
$return['log'] = null
// Si il est plus de 8h
if (date('G') > 8) { // https://www.php.net/manual/fr/function.date.php
$return['mod'] = 2; // On allume le relai
$return['log'] = "Allumage du relai, il est plus de 8h du matin"; // Indique dans le log (pour trace )
}
return $return; // Indispensable en fin de script
```
## Les variables
### $thisId
Renvoi l'ID du relai. Par exemple "2" si vous êtes dans le scripts qui gère le relai "2"
Retour : 1 à X (x = nombre de relai installé)
### $thisEtat
Renvoi l'état de ce relai à l'instant (C.F. doc plus haut sur l'état des relai)
Retour : 0 ou 1
### $relayEtat[x]
Renvoi l'état du relai choisie (nommé par x ici)
Paramètre : x = id d'un relai
Retour : 0 ou 1
Exemple en PHP :
```php
// Si le relai 3 est allumé
if ($relayEtat[3] == 1) {
// action à mener...
}
```
### $thisMod
Renvoi le mode de ce relai à l'instant (C.F. doc plus haut sur les mods des relai)
Retour : 0, 1, 2 ou 3
### $data[nom] - donnée d'une sonde / d'un appareil
C'est toutes données récupéré/visible dans PvMonit. Cela peut être la valeur d'un appareil victron, d'une sonde de température, d'un capteur de courant... A configurer dans le fichier config.yaml (valeur : domo / valueUse) par exemple :
* $data['SOC'] = % de batterie (si vous avez un BMV)
* $data['P'] : puissance instantané (négatif ou positif) (si vous avez un BMV)
* $data['PPV'] : production solaire (si vous avez un régulateur)
* $data['CS'] : mode du régulateur (float, abs...) (si vous avez un régulateur)
## Fonctions
### relayUpToday(X)
Renvoi VRAI (true) si le relai X à déjà été allumé ce jour ou FAUX (false) s'il n'a pas déjà été allumé ce jour
Ce jour = dans les 12 dernières heures
### relayUpDownToday(X)
Renvoi VRAI (true) si le relai X à déjà été allumé puis éteint ce jour ou FAUX (false) s'il n'a pas déjà été allumé ce jour
Exemple en PHP :
```php
// Si le relai 3 a été allumé puis éteint dans les 12 dernières heures
if (relayUpDownToday(3) == true) {
// action à mener...
}
```
### relayLastUp(X)
Renvoi la date (en [timestamp](http://www.timestamp-tool.fr/)) du dernier allumage du relai X passé en paramètre.
### relayLastUpAuto(X)
Renvoi la date (en [timestamp](http://www.timestamp-tool.fr/)) du dernier allumage en automatique du relai X passé en paramètre.
### relayLastDown($idRelai)
Renvoi la date (en [timestamp](http://www.timestamp-tool.fr/)) de la dernière extinction du relai X passé en paramètre.
### timeUpMin(X, Y)
Paramètre :
* X : Id du relai
* Y : Temps du timer
Renvoi VRAI (true) si le temps minimum Y (en seconde) n'est pas encore écoulé depuis l'allumage.
Exemple en PHP :
```php
// Si le relai 3 n'est pas allumé depuis plus de 300 secondes
if (timeUpMin(3, 300) == true) {
// action à mener...
}
```
### timeUpMax(X, Y)
Inverse de timeUpMin
### MpptAbsOrFlo($data['CS'])
Renvoi VRAI (true) si le régulateur est en Float ou en Absorption et FAUX (false) si ce n'est pas le cas
Dépend de $data['CS']
Exemple en PHP :
```php
// Si le régulateur est en Absorption ou Float
if (MpptAbsOrFlo($data['CS']) == true) {
// action à mener...
}
```
### MpptFlo($data['CS']) : retourne true si le régulateur est en Float
Renvoi VRAI (true) si le régulateur est en Float et FAUX (false) si ce n'est pas le cas
Dépend de $data['CS']
Exemple en PHP :
```php
// Si le régulateur est en Float
if (MpptAbsOrFlo($data['CS']) == true) {
// action à mener...
}
```
###
\ No newline at end of file
diff --git a/www/data-xml.php b/www/data-xml.php
index 942adc2..8703302 100755
--- a/www/data-xml.php
+++ b/www/data-xml.php
@@ -1,192 +1,193 @@
$device_data) {
if (preg_match_all('/^Serial[0-9]$/m', $device_id)) {
$device_vedirect_data[$idDevice]=vedirect_parse_arduino($device_data);
$idDevice++;
}
}
$vedirect_data_ready = $device_vedirect_data;
}
}
foreach ($vedirect_data_ready as $device) {
if ($device['serial'] == 'Inconnu' || $device['serial'] == '') {
$device['serial'] = $device['nom'];
}
echo "\n\t".'';
echo "\n\t\t".''.$device['nom'].'';
echo "\n\t\t".''.time().'';
echo "\n\t\t".''.$device['type'].'';
echo "\n\t\t".''.$device['modele'].'';
echo "\n\t\t".''.$device['serial'].'';
echo "\n\t\t".'';
sort($device['data']);
foreach (explode(',', $device['data']) as $data) {
$dataSplit = explode(':', $data);
$veData=ve_label2($dataSplit[0], $dataSplit[1]);
echo "\n\t\t\t".'';
echo "\n\t\t\t\t".''.$veData['desc'].'';
echo "\n\t\t\t\t".''.$veData['value'].'';
echo "\n\t\t\t\t".''.$veData['units'].'';
echo "\n\t\t\t".'';
if ($dataSplit[0] == 'PPV'){
$ppv_total=$ppv_total+$dataSplit[1];
$nb_ppv_total++;
}
if ($device['type'] == "BMV" && $dataSplit[0] == 'P'){
$bmv_p=$dataSplit[1];
}
}
echo "\n\t\t".'';
echo "\n\t".'';
}
# Divers
$bin_enabled_data = scandir($config['dir']['bin_enabled']);
if(count($bin_enabled_data) > 2 || $config['data']['ppv_total'] || $config['data']['ppv_total']) {
?>
Divers
= time() ?>
Production total des panneaux
'.$ppv_total.'
W
';
}
?>
Consommation du foyer
'.abs($conso).'
W
';
}
?>
$value) {
unset($array_data[$i]);
}
+ trucAdir(3, "Lecture du script ".$bin_script_enabled);
$script_return = (include $config['dir']['bin_enabled'].'/'.$bin_script_enabled);
file_put_contents($cache_file_script, json_encode($script_return));
if (substr(sprintf('%o', fileperms($cache_file)), -3) != '777') {
chmod($cache_file, 0777);
}
}
$timerefresh=filemtime($cache_file_script);
$script_return_datas = json_decode(file_get_contents($cache_file_script), true) ;
//trucAdir(4, print_r($script_return_datas));
echo "\n\t";
echo "\n\t\t";
echo "\n\t\t".$timerefresh."";
echo "\n\t\t";
echo "\n\t\t";
echo "\n\t\t";
echo "\n\t\t";
sort($script_return_datas);
foreach ($script_return_datas as $script_return_data) {
if (isset($script_return_data['id'])) {
$id_data=$script_return_data['id'];
} else {
$id_data=$id;
}
echo "\n\t\t\t";
echo "\n\t\t\t\t".$script_return_data['desc']."";
echo "\n\t\t\t\t".$script_return_data['value']."";
echo "\n\t\t\t\t".$script_return_data['units']."";
echo "\n\t\t\t";
}
echo "\n\t\t";
echo "\n\t";
}
}
}
trucAdir(5, "Fin du data-xml.php");
?>