[Script] Ordonnancement arrosage

Discussion et échanges de scripts pour la box eedomus

[Script] Ordonnancement arrosage

Messagepar Herbert » 07 Sep 2018 21:07

POST 1/2
Il est possible d’ordonnancer un processus d’arrosage sur eedomus avec quelques périphériques, règles, macros et scripts. Le paramétrage peut sembler un peu complexe, mais cela fonctionne très bien. Voici l’organigramme :
Organigramme Arrosage.png
Organigramme Arrosage
Organigramme Arrosage.png (82.51 Kio) Consulté 1901 fois

Remarque : sur cet organigramme apparaissent des appels à plusieurs scripts php (non fournis à ce stade) pour calculer les consommations d’eau par zone, et détecter ainsi d’éventuelles fuites.

Les ressources nécessaires sont les suivantes :

Périphériques physiques :
- Relais Zone 1 à Zone x (cinq chez moi, j’utilise des micromodules doubles Fibaro FGS221 ON/OFF). Une macro à durée variable commande le démarrage et l’arrêt de chaque zone.
macro arrosage.jpg
macro arrosage.jpg (98.3 Kio) Consulté 1901 fois

Périphériques « Etat » :
- Pilotage Arrosage type « Liste de valeurs » Activé/Inactivé pour autoriser globalement le processus.
- Arrosage Possible type « Liste de valeurs » OUI/NON pour initialiser le processus à la fréquence choisie.
- Durée Zone 1 à Durée Zone x type « nombre décimal » pour stocker la durée d’arrosage de chaque zone. Requiert un calcul spécifique par script (évapo-transpiration J-1 * surface / consommation moyenne) non fourni à ce stade, mais pourrait aussi être fixée manuellement.
- Contrôle Zone type « Liste de valeurs » Zone 1 à Zone x et une valeur Manuel ou Pause que l’on positionne manuellement pour forcer l’arrosage hors programmation (puis on modifie la durée de la macro du relais pour lancer l’arrosage de la zone désirée).
- Etape Arrosage type « Liste de valeurs » Etape 0, Etape 1, Etape 2.
- Cycle Arrosage type « Liste de valeurs » Pas de changement/Changement

Périphérique « Actionneur http » :
- Programmation Arrosage type « Liste de valeurs » appelées par les scènes ci-dessous, pour lancer les scripts php.
programmation arrosage.jpg
programmation arrosage.jpg (121.76 Kio) Consulté 1901 fois

Périphérique « Scène » :
- Ordonnancement Arrosage type « Liste de valeurs » qui détaille les étapes du processus (appelées par les règles et macros ci-dessous).
ordonnancement arrosage (1).jpg
ordonnancement arrosage (1).jpg (213.28 Kio) Consulté 1901 fois

ordonnancement arrosage (2).jpg
ordonnancement arrosage (2).jpg (204.96 Kio) Consulté 1901 fois

Règles (voir organigramme) :

- INITIALISATION :
Horaire(s) : à préciser. Autoriser re-déclenchement suivant la fréquence choisie.
Critères : SI Pilotage Arrosage = Activé ET SI Arrosage Possible = NON
Actions : Arrosage Possible = OUI et Ordonnancement Arrosage = Pas d’arrosage en cours et Etape Arrosage = Etape 0 et Contrôle Zone = Zone 1 et Cycle Arrosage = Pas de changement
Remarque : on peut rajouter des critères, par exemple « il ne pleut pas » et/ou « pas de précipitations prévues » …

- INIT ZONE x : autoriser re-déclenchement après 5 minutes
Critères : SI Arrosage Possible = OUI ET SI Durée Zone x > 0 ET SI Contrôle Zone = Zone x ET SI Etape Arrosage = Etape 0 ET SI Cycle Arrosage = Pas de changement
Actions : Etape Arrosage = Etape 1
Remarques :
1) l’organigramme montre l’appel à 2 scripts php (Mise à Jour Compteur H2O et Init Conso, non fournis à ce stade) pour calculer la consommation d’eau.
2) J’utilise des séquences d’arrosage limitées à 5 minutes (paramètre &max des scripts). Le processus permet de boucler sur une même zone en décrémentant Durée Zone x jusqu’à zéro.

A SUIVRE
Dernière édition par Herbert le 21 Déc 2018 19:34, édité 3 fois.
Herbert
 
Messages : 31
Inscription : 16 Août 2018

Re: Ordonnancement arrosage

Messagepar Herbert » 07 Sep 2018 21:18

SUITE (2/2)

- ARROSAGE Zone x : autoriser re-déclenchement après 1 minute
Critères : SI Cycle Arrosage = Pas de changement ET SI Contrôle Zone = Zone x ET SI Etape Arrosage = Etape 1 ET SI Relais Zone x = OFF
Actions : Ordonnancement Arrosage = Arrosage Zone x (appel script php par macro avec délai de 5 secondes)
Code : Tout sélectionner
<?
// Script macro_arrosage.php
$idzonex = getArg('zonex') ; // FGS221 - Zone x
$macrox = getArg('idmacrox') ; // Macro: "Arrosage [x] minutes"
$zxduration = getArg('zxduration') ; // Zone x Durée Arrosage*/

$arrayx = getValue($zxduration) ;
$resultx = round($arrayx["value"]) ; // Durée de la macro dynamique

$max = getArg('max') ; // Durée maximum de la zone

if ($resultx >= 0) {
    $choice = 3 ; // Zéro
    if ($resultx > 0) {
        $choice = 2 ;  // Pas de reliquat
        if ($resultx > $max){
            $choice = 1 ; // Reliquat
        }
    }   
}

switch ($choice) {
    case 1 :
        $json_result = setMacro($idzonex, $macrox, $max) ;
        break;
    case 2 :
        $json_result = setMacro($idzonex, $macrox, $resultx) ;
        break;
    case 3 :
        break;
}
?>

- CHANGE TO ETAPE 2 : autoriser re-déclenchement immédiat
Critères : SI Etape Arrosage = Etape 1 ET SI Relais Zone 1 = ON OU SI … Relais Zone x = ON (autant de lignes que de zones)
Action : Etape Arrosage = Etape 2 (par macro avec délai de 2 minutes)

- CHANGE ZONE x : autoriser re-déclenchement après 1 minute
Critères : SI Contrôle Zone = Zone x ET SI Etape Arrosage = Etape 2 ET SI Relais Zone x = OFF
Action : Ordonnancement Arrosage = Change Zone x (appel script php par macro avec délai de 10 secondes) puis Etape Arrosage = Etape 1 (après 30 secondes)
Code : Tout sélectionner
<?
// Script change_arrosage.php
$zxduration = getArg('zxduration') ; // Zone x Durée Arrosage

$max = getArg('max') ; // Durée maximum de la zone
$arrayx = getValue($zxduration) ;
$resultx = round($arrayx["value"]) ; // Durée d'arrosage
// Si la macro arrosage s'est DEJA exécutée pour la durée $max
// il faut retrancher $max à $resultx !
$new_resultx = $resultx - $max ;

$change = xxxxxx ; // Cycle Arrosage (Pas de changement/Changement)

if ($resultx >= 0) {
    $choice = 3 ; // Zéro
    if ($resultx > 0) {
        $choice = 2 ; // Pas de reliquat
        if ($resultx > $max) {
            $choice = 1 ; // Reliquat
        }
    }   
}

switch ($choice) {
    case 1 :
        setValue($zxduration, $new_resultx) ; // Reliquat Durée Arrosage Zone x
        setValue($change, 0) ; // Pas de changement de cycle arrosage
        break;
    case 2 :
        // C'est fini pour cette zone ...
        setValue($zxduration, 0) ; // Pas de reliquat Durée Arrosage Zone x
        setValue($change, 1) ; // Changement de cycle arrosage
        break;
    case 3 :
        break;
}
?>

- FIN ZONE x : autoriser re-déclenchement après 5 minutes
Critères : SI Cycle Arrosage = Changement (modifié par le script change_arrosage.php) ET SI Contrôle Zone = Zone x ET SI Etape Arrosage = Etape 1 ET SI Relais Zone x = OFF
Actions : (macro avec délais de 30 secondes avant chaque étape) Contrôle Zone = Manuel ou Pause puis Cycle Arrosage = Pas de changement puis Etape Arrosage = Etape 0 puis Contrôle Zone = Zone x+1
Remarques :
1) l’organigramme montre l’appel à 2 scripts php (Mise à Jour Compteur H2O et Conso Zone x, non fournis à ce stade) pour calculer la consommation d’eau.
2) Si la zone est la dernière du processus, on remplace Zone x+1 par Zone 1 et on rajoute l’action Arrosage Possible = NON après 5 minutes
Herbert
 
Messages : 31
Inscription : 16 Août 2018


Retour vers Scripts & Périphériques du store

Qui est en ligne ?

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