Example #1
0
function check_and_update_sd_card($sd_card = "", &$main_info_tab, &$main_error_tab)
{
    // Check and update path
    $logs = "{$sd_card}/logs";
    $cnf = "{$sd_card}/cnf";
    $plg = "{$cnf}/plg";
    $prg = "{$cnf}/prg";
    $bin = "{$sd_card}/bin";
    $recordfrequency = "1";
    $updatefrequency = "1";
    // If we are in cultipi mode, create file systeme structure
    if (!is_dir($sd_card)) {
        mkdir($sd_card);
    }
    if (!is_dir($sd_card . "/bulckyPi")) {
        mkdir($sd_card . "/bulckyPi");
    }
    if (!is_dir($sd_card . "/serverAcqSensorV2")) {
        mkdir($sd_card . "/serverAcqSensorV2");
    }
    if (!is_dir($sd_card . "/serverHisto")) {
        mkdir($sd_card . "/serverHisto");
    }
    if (!is_dir($sd_card . "/serverLog")) {
        mkdir($sd_card . "/serverLog");
    }
    if (!is_dir($sd_card . "/serverPlugUpdate")) {
        mkdir($sd_card . "/serverPlugUpdate");
    }
    if (!is_dir($sd_card . "/serverPlugUpdate/prg")) {
        mkdir($sd_card . "/serverPlugUpdate/prg");
    }
    if (!is_dir($sd_card . "/serverPlugUpdate/plg")) {
        mkdir($sd_card . "/serverPlugUpdate/plg");
    }
    if (!is_dir($sd_card . "/serverMail")) {
        mkdir($sd_card . "/serverMail");
    }
    if (!is_dir($sd_card . "/serverCultibox")) {
        mkdir($sd_card . "/serverCultibox");
    }
    if (!is_dir($sd_card . "/serverSupervision")) {
        mkdir($sd_card . "/serverSupervision");
    }
    if (!is_dir($sd_card . "/serverIrrigation")) {
        mkdir($sd_card . "/serverIrrigation");
    }
    // Create cultipi conf.xml file
    $paramListCultipiConf[] = array("name" => "verbose", "level" => $GLOBALS['CULTIPI']['TRACE_LEVEL']['bulckyPi']);
    create_conf_XML($sd_card . "/bulckyPi/conf.xml", $paramListCultipiConf);
    // Create cultipi start.xml file
    $paramListCultipiStart[] = array('name' => "serverLog", 'waitAfterUS' => "1000", 'pathexe' => "tclsh", 'path' => "./serverLog/serverLog.tcl", 'xmlconf' => "./serverLog/conf.xml");
    $paramListCultipiStart[] = array('name' => "serverAcqSensorV2", 'waitAfterUS' => "100", 'pathexe' => "tclsh", 'path' => "./serverAcqSensorV2/serverAcqSensorV2.tcl", 'xmlconf' => "./serverAcqSensorV2/conf.xml");
    $paramListCultipiStart[] = array('name' => "serverPlugUpdate", 'waitAfterUS' => "100", 'pathexe' => "tclsh", 'path' => "./serverPlugUpdate/serverPlugUpdate.tcl", 'xmlconf' => "./serverPlugUpdate/conf.xml");
    $paramListCultipiStart[] = array('name' => "serverCultibox", 'waitAfterUS' => "100", 'pathexe' => "tclsh", 'path' => "./serverCultibox/serverCultibox.tcl", 'xmlconf' => "./serverCultibox/conf.xml");
    $paramListCultipiStart[] = array('name' => "serverMail", 'waitAfterUS' => "100", 'pathexe' => "tclsh", 'path' => "./serverMail/serverMail.tcl", 'xmlconf' => "./serverMail/conf.xml");
    $paramListCultipiStart[] = array('name' => "serverSupervision", 'waitAfterUS' => "100", 'pathexe' => "tclsh", 'path' => "./serverSupervision/serverSupervision.tcl", 'xmlconf' => "./serverSupervision/conf.xml");
    // If there are some plugins to add in start.xml , add it
    foreach ($GLOBALS['PLUGIN'] as $plugin) {
        // Check if function exists
        if (function_exists($plugin . '\\addInStartXMLCultiCore')) {
            // Add parameters
            $paramListCultipiStart[] = call_user_func($plugin . '\\addInStartXMLCultiCore');
        }
    }
    $paramListCultipiStart[] = array('name' => "serverHisto", 'waitAfterUS' => "1000", 'pathexe' => "tclsh", 'path' => "./serverHisto/serverHisto.tcl", 'xmlconf' => "./serverHisto/conf.xml");
    create_conf_XML($sd_card . "/bulckyPi/start.xml", $paramListCultipiStart, "starts");
    // Server acq sensor
    sensors\serverAcqSensorV2_createXMLConf();
    // Server plug update
    $paramListServerPlugUpdate[] = array("name" => "verbose", "level" => $GLOBALS['CULTIPI']['TRACE_LEVEL']['serverPlugUpdate']);
    $paramListServerPlugUpdate[] = array("name" => "wireless_freq_plug_update", "value" => "{$updatefrequency}");
    $paramListServerPlugUpdate[] = array("name" => "pwm_output", "value" => $GLOBALS['PWM_OUTPUT']);
    // Add network slave
    //  <item name="module_CULTIPI,ip,0" ip="192.168.1.10" />
    if ($GLOBALS['CULTIPI']['USE_REMOTE_SLAVE'] == 1) {
        for ($index = 0; $index < $GLOBALS['CULTIPI']['REMOTE_NB_SLAVE']; $index++) {
            $paramListServerPlugUpdate[] = array("name" => "module_CULTIPI,ip," . $index, "ip" => $GLOBALS['CULTIPI']['REMOTE_SLAVE']["IP_" . $index]);
        }
    }
    create_conf_XML($sd_card . "/serverPlugUpdate/conf.xml", $paramListServerPlugUpdate);
    // Server histo
    $paramListServerHisto[] = array("name" => "verbose", "level" => $GLOBALS['CULTIPI']['TRACE_LEVEL']['serverHisto']);
    $paramListServerHisto[] = array("name" => "logPeriode", "valInSec" => $recordfrequency * 60);
    $paramListServerHisto[] = array("name" => "pathMySQL", "path" => "/usr/bin/mysql");
    create_conf_XML($sd_card . "/serverHisto/conf.xml", $paramListServerHisto);
    // Server log
    $paramListServerLog[] = array("name" => "logPath", "logfile" => "/var/log/cultipi");
    $paramListServerLog[] = array("name" => "verbose", "level" => $GLOBALS['CULTIPI']['TRACE_LEVEL']['serverLog']);
    create_conf_XML($sd_card . "/serverLog/conf.xml", $paramListServerLog);
    // Create conf for mail
    // Made when user save it conf
    // Create conf for supervision
    $paramListSupervision[] = array("name" => "verbose", "level" => $GLOBALS['CULTIPI']['TRACE_LEVEL']['serverSupervision']);
    $paramListSupervision[] = array("name" => "nbProcess", "value" => 0);
    create_conf_XML($sd_card . "/serverSupervision/conf.xml", $paramListSupervision);
    // For each process create an XML
    /*
    $paramListSupervisionProcess[] = array (
        "name" => "action",
        "level" => "checkPing"
    );    
    $paramListSupervisionProcess[] = array (
        "name" => "nbIP",
        "level" => "1"
    );
    $paramListSupervisionProcess[] = array (
        "name" => "IP,0",
        "level" => "8.8.8.8"
    );
    $paramListSupervisionProcess[] = array (
        "name" => "timeMax",
        "level" => "30"
    ); 
    $paramListSupervisionProcess[] = array (
        "name" => "error,action",
        "level" => "sendMail info@bulck.fr"
    );
    create_conf_XML($sd_card . "/serverSupervision/process_0.xml" , $paramListSupervisionProcess);
    */
    $paramListCultibox[] = array("name" => "verbose", "level" => $GLOBALS['CULTIPI']['TRACE_LEVEL']['serverCultibox']);
    $paramListCultibox[] = array("name" => "updateFreq", "level" => "6");
    create_conf_XML($sd_card . "/serverCultibox/conf.xml", $paramListCultibox);
    configuration\serverEmail_createXMLConf();
    $program = "";
    $conf_uptodate = true;
    $program_index = array();
    programs\get_program_index_info($program_index);
    $confsave_prog = true;
    foreach ($program_index as $key => $value) {
        // Read from database program
        $program = create_program_from_database($main_error, $value['program_idx']);
        $fileName = $sd_card . "/serverPlugUpdate/prg/" . "plu" . $value['plugv_filename'];
        if (!compare_program($program, $fileName)) {
            $conf_uptodate = false;
            if (!save_program_on_sd($fileName, $program)) {
                $confsave_prog = false;
            }
        }
    }
    //For plugv
    $program = create_program_from_database($main_error);
    $fileName = $sd_card . "/serverPlugUpdate/prg/" . "plugv";
    if (!save_program_on_sd($fileName, $program)) {
        $main_error_tab[] = __('ERROR_WRITE_PROGRAM');
        return ERROR_WRITE_PROGRAM;
    }
    if (!write_pluga($sd_card, $main_error)) {
        $main_error_tab[] = __('ERROR_COPY_PLUGA');
        return ERROR_COPY_PLUGA;
    }
    $plugconf = create_plugconf_from_database($GLOBALS['NB_MAX_PLUG'], $main_error);
    if (count($plugconf) > 0) {
        if (!write_plugconf($plugconf, $sd_card)) {
            $main_error_tab[] = __('ERROR_COPY_PLUG_CONF');
            return ERROR_COPY_PLUG_CONF;
        }
    }
    $data = array();
    calendar\read_event_from_db($data);
    $plgidx = create_plgidx($data);
    if (count($plgidx) > 0) {
        if (!write_plgidx($plgidx, $sd_card)) {
            $main_error_tab[] = __('ERROR_COPY_PLGIDX');
            return ERROR_COPY_PLGIDX;
        }
    } else {
        if (!check_and_copy_plgidx($sd_card)) {
            $main_error_tab[] = __('ERROR_COPY_TPL');
            return ERROR_COPY_TPL;
        }
    }
    if (!$conf_uptodate) {
        // Infor user that programms have been updated
        $main_info_tab[] = __('UPDATED_PROGRAM');
        return 0;
    }
    // Conf was up to date
    return 1;
}
Example #2
0
function createXML()
{
    // Add trace level
    $paramServerTriggerXML[] = array("name" => "verbose", "level" => $GLOBALS['PLUGIN_irrigation']['TRACE_LEVEL']);
    // Add every parameters of the database
    $triggerList = getTriggers();
    foreach ($triggerList as $k => $triggerParam) {
        $numTrigger = $triggerParam['id'];
        $triggerAction = $triggerParam['action'];
        foreach ($triggerAction as $key => $value) {
            $paramServerTriggerXML[] = array("key" => $key, "value" => $value);
        }
        $triggerCondition = $triggerParam['condition'];
        foreach ($triggerCondition as $key => $value) {
            $paramServerTriggerXML[] = array("key" => $key, "value" => $value);
        }
    }
    // Save it
    \create_conf_XML($GLOBALS['CULTIPI_CONF_TEMP_PATH'] . "/serverTrigger/conf.xml", $paramServerTriggerXML);
    return 0;
}
Example #3
0
function createXML()
{
    // Add trace level
    $paramServerIrrigationXML[] = array("name" => "verbose", "level" => $GLOBALS['PLUGIN_irrigation']['TRACE_LEVEL']);
    // Add every parameters of the database
    $ltList = getLT();
    foreach ($ltList as $k => $lt) {
        foreach ($lt as $key => $value) {
            $paramServerIrrigationXML[] = array("key" => "localtechnique," . $key, "value" => $value);
        }
    }
    $engraisList = getEngrais();
    // We add number of engrais
    $paramServerIrrigationXML[] = array("key" => "nbEngrais", "value" => count($engraisList));
    foreach ($engraisList as $k => $engrais) {
        foreach ($engrais as $key => $value) {
            $paramServerIrrigationXML[] = array("key" => "engrais," . $engrais["engraisId"] . "," . $key, "value" => $value);
        }
    }
    $plateformeList = getPlateforme();
    // We add numer of plateforme
    $paramServerIrrigationXML[] = array("key" => "nbPlateforme", "value" => count($plateformeList));
    foreach ($plateformeList as $k => $plateforme) {
        foreach ($plateforme as $key => $value) {
            $paramServerIrrigationXML[] = array("key" => "plateforme," . $plateforme["idPlateforme"] . "," . $key, "value" => $value);
        }
        // Foreach plateforme, we add zones
        $zoneList = getZone($plateforme["idPlateforme"]);
        // We add numer of zone
        $paramServerIrrigationXML[] = array("key" => "plateforme," . $plateforme["idPlateforme"] . ",nbZone", "value" => count($zoneList));
        foreach ($zoneList as $key => $zone) {
            foreach ($zone as $key => $value) {
                $paramServerIrrigationXML[] = array("key" => "plateforme," . $plateforme["idPlateforme"] . ",zone," . $zone["zoneId"] . "," . $key, "value" => $value);
            }
        }
    }
    // Save it
    \create_conf_XML($GLOBALS['CULTIPI_CONF_TEMP_PATH'] . "/serverIrrigation/conf.xml", $paramServerIrrigationXML);
    return 0;
}
Example #4
0
function serverEmail_createXMLConf()
{
    // retrieve user params
    $emailUserConf = getEmailUserConf();
    $paramListServerMail[] = array("name" => "verbose", "level" => $GLOBALS['CULTIPI']['TRACE_LEVEL']['serverMail']);
    $paramListServerMail[] = array("name" => "serverSMTP", "level" => $emailUserConf['EMAIL_SMTP']);
    $paramListServerMail[] = array("name" => "port", "level" => $emailUserConf['EMAIL_PORT']);
    $paramListServerMail[] = array("name" => "username", "level" => $emailUserConf['EMAIL_ADRESS']);
    $paramListServerMail[] = array("name" => "password", "level" => $emailUserConf['EMAIL_PASSWORD']);
    $paramListServerMail[] = array("name" => "useSSL", "level" => $emailUserConf['EMAIL_USE_SSL']);
    \create_conf_XML($GLOBALS['CULTIPI_CONF_TEMP_PATH'] . "/serverMail/conf.xml", $paramListServerMail);
    // Add it in générale conf
    \create_conf_XML($GLOBALS['CULTIPI_CONF_OUT_PATH'] . "/serverMail/conf.xml", $paramListServerMail);
}
Example #5
0
function generateConf($path, $pathTmp, $userVar)
{
    // Crée le reperoire temporaire
    $pathTemporaire = $pathTmp . "/conf_tmp";
    //$newPath = $path . "/test-cnf" ;
    if (!is_dir($pathTemporaire)) {
        mkdir($pathTemporaire);
    }
    // On change les parametres pour le lancement des modules
    $paramListCultipiStart[] = array('name' => "serverLog", 'waitAfterUS' => "1000", 'pathexe' => "tclsh", 'path' => "./serverLog/serverLog.tcl", 'xmlconf' => "./serverLog/conf.xml");
    $paramListCultipiStart[] = array('name' => "serverAcqSensorV2", 'waitAfterUS' => "100", 'pathexe' => "tclsh", 'path' => "./serverAcqSensorV2/serverAcqSensorV2.tcl", 'xmlconf' => "./serverAcqSensorV2/conf.xml");
    $paramListCultipiStart[] = array('name' => "serverPlugUpdate", 'waitAfterUS' => "100", 'pathexe' => "tclsh", 'path' => "./serverPlugUpdate/serverPlugUpdate.tcl", 'xmlconf' => "./serverPlugUpdate/conf.xml");
    $paramListCultipiStart[] = array('name' => "serverMail", 'waitAfterUS' => "100", 'pathexe' => "tclsh", 'path' => "./serverMail/serverMail.tcl", 'xmlconf' => "./serverMail/conf.xml");
    $irrigationActive = readInIni($userVar, 'PARAM', 'IRRIGATION_ACTIF', "false");
    if ($irrigationActive != "false") {
        $paramListCultipiStart[] = array('name' => "serverSupervision", 'waitAfterUS' => "100", 'pathexe' => "tclsh", 'path' => "./serverSupervision/serverSupervision.tcl", 'xmlconf' => "./serverSupervision/conf.xml");
        $paramListCultipiStart[] = array('name' => "serverSLF", 'waitAfterUS' => "100", 'pathexe' => "tclsh", 'path' => "./serverSLF/serverSLF.tcl", 'xmlconf' => "./serverSLF/conf.xml");
    }
    $paramListCultipiStart[] = array('name' => "serverHisto", 'waitAfterUS' => "1000", 'pathexe' => "tclsh", 'path' => "./serverHisto/serverHisto.tcl", 'xmlconf' => "./serverHisto/conf.xml");
    $paramListCultipiConf[] = array("key" => "verbose", "level" => "warning");
    if (!is_dir($pathTemporaire . "/bulckyPi")) {
        mkdir($pathTemporaire . "/bulckyPi");
    }
    create_conf_XML($pathTemporaire . "/bulckyPi/start.xml", $paramListCultipiStart, "starts");
    create_conf_XML($pathTemporaire . "/bulckyPi/conf.xml", $paramListCultipiConf);
    /*************************  Prise ***********************************/
    // On cherche le nombre de prise
    $prisemax = 0;
    foreach ($GLOBALS['IRRIGATION'] as $zone_nom => $zone) {
        // On ajoute les prises engrais, purge , remplissage
        foreach ($zone["prise"] as $prise_nom => $numero) {
            if ($numero > $prisemax) {
                $prisemax = $numero;
            }
        }
        foreach ($zone["plateforme"] as $plateforme_nom => $plateforme) {
            foreach ($plateforme["prise"] as $prise_nom => $numero) {
                if ($numero > $prisemax) {
                    $prisemax = $numero;
                }
            }
            foreach ($plateforme["ligne"] as $ligne_numero => $ligne) {
                if ($ligne["prise"] > $prisemax) {
                    $prisemax = $ligne["prise"];
                }
            }
        }
    }
    // Création des répertoires
    if (!is_dir($pathTemporaire . "/serverPlugUpdate")) {
        mkdir($pathTemporaire . "/serverPlugUpdate");
    }
    if (!is_dir($pathTemporaire . "/serverPlugUpdate/plg")) {
        mkdir($pathTemporaire . "/serverPlugUpdate/plg");
    }
    if (!is_dir($pathTemporaire . "/serverPlugUpdate/prg")) {
        mkdir($pathTemporaire . "/serverPlugUpdate/prg");
    }
    // Création du fichier pluga
    create_plugConf($pathTemporaire . "/serverPlugUpdate", $prisemax);
    // Création du fichier de conf
    // Add trace level
    $paramServerPlugUpdate = array(array("key" => "verbose", "level" => "info"), array("key" => "wireless_freq_plug_update", "value" => "1"), array("key" => "alarm_activ", "value" => "0000"), array("key" => "alarm_value", "value" => "6000"), array("key" => "alarm_sensor", "value" => "T"), array("key" => "alarm_sens", "value" => "+"), array("key" => "programm_activ", "value" => "off"));
    create_conf_XML($pathTemporaire . "/serverPlugUpdate/conf.xml", $paramServerPlugUpdate);
    /*************************  serverSLF ***********************************/
    // On change les parametres pour le server irrigation
    if (!is_dir($pathTemporaire . "/serverSLF")) {
        mkdir($pathTemporaire . "/serverSLF");
    }
    // Add trace level
    $paramServerSLFXML[] = array("key" => "verbose", "level" => readInIni($userVar, 'PARAM', 'VERBOSE_SLF', 'debug'));
    // Add every parameters of the database
    $paramServerSLFXML[] = array("key" => "surpresseur,ip", "value" => $GLOBALS['SURPRESSEUR']['IP']);
    $paramServerSLFXML[] = array("key" => "surpresseur,prise", "value" => $GLOBALS['SURPRESSEUR']['prise']);
    $paramServerSLFXML[] = array("key" => "surpresseur,actif", "value" => readInIni($userVar, 'PARAM', 'SURPRESSEUR_ACTIF', "false"));
    $paramServerSLFXML[] = array("key" => "nbzone", "value" => count($GLOBALS['IRRIGATION']));
    $paramServerSLFXML[] = array("key" => "nettoyage", "value" => readInIni($userVar, 'PARAM', 'NETTOYAGE_GOUTEUR', "false"));
    $paramServerSLFXML[] = array("key" => "nettoyageactif", "value" => readInIni($userVar, 'PARAM', 'NETTOYAGE_GOUTEUR_ACTIF', "false"));
    $ZoneIndex = 0;
    foreach ($GLOBALS['IRRIGATION'] as $zone_nom => $zone) {
        // Parametres des zones
        $Zone_nom_upper = str_replace(" ", "", strtoupper($zone_nom));
        $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",name", "value" => "ZONE " . $zone_nom);
        $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",ip", "value" => $zone["parametres"]["IP"]);
        $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",capteur,niveau", "value" => $zone["capteur"]["niveau_cuve"]["numero"]);
        $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",nbplateforme", "value" => count($zone["plateforme"]));
        $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",nbsensor", "value" => array_count_key($zone, 'capteur'));
        $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",prise,remplissagecuve", "value" => $zone["prise"]["remplissage"]);
        $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",prise,purge", "value" => $zone["prise"]["purge"]);
        for ($i = 1; $i < 4; $i++) {
            $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",engrais," . $i . ",temps", "value" => readInIni($userVar, 'CUVE', $Zone_nom_upper . '_ENGRAIS_' . $i, 0));
            $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",engrais," . $i . ",actif", "value" => readInIni($userVar, 'CUVE', $Zone_nom_upper . '_ENGRAIS_ACTIF_' . $i, "false"));
            $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",engrais," . $i . ",prise", "value" => $zone["prise"]["engrais" . $i]);
        }
        // On indique si le remplissage doit être fait
        $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",remplissage,actif", "value" => readInIni($userVar, 'CUVE', $Zone_nom_upper . '_REMPLISSAGE_ACTIF', "true"));
        $PFIndex = 0;
        foreach ($zone["plateforme"] as $plateforme_nom => $plateforme) {
            $PF_nom_upper = strtoupper($plateforme_nom);
            $ligneIndex = 0;
            $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",name", "value" => "PF " . $plateforme_nom);
            $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",ip", "value" => $zone["parametres"]["IP"]);
            $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",nbligne", "value" => count($plateforme["ligne"]));
            $tempsCycle = readInIni($userVar, 'LIGNE', $PF_nom_upper . '_TEMPS_CYCLE', 300);
            $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",tempscycle", "value" => $tempsCycle);
            $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",pompe,prise", "value" => $plateforme["prise"]["pompe"]);
            $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",eauclaire,prise", "value" => $plateforme["prise"]["EV_eauclaire"]);
            foreach ($plateforme["ligne"] as $ligne_numero => $ligne) {
                $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",ligne," . $ligneIndex . ",name", "value" => "Ligne " . $ligne_numero);
                $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",ligne," . $ligneIndex . ",prise", "value" => $ligne["prise"]);
                // On calcul le nombre de l/h : Gouteur 4 l/h --> 2 / membranes --> max 8 l/h (divisé par le nombre de ligne )
                // ((nb L/h/membrane) / (nb lmax/h/membrane)) * tmpsCycle
                $debitMatin = readInIni($userVar, 'LIGNE', $PF_nom_upper . '_' . $ligne_numero . '_MATIN', 1.2);
                $tmpsOnMatin = round($debitMatin / ($GLOBALS['CONFIG']['debit_gouteur'] * $GLOBALS['CONFIG']['gouteur_membrane']) * $tempsCycle);
                $debitAMidi = readInIni($userVar, 'LIGNE', $PF_nom_upper . '_' . $ligne_numero . '_APRESMIDI', 1.2);
                $tmpsOnAMidi = round($debitAMidi / ($GLOBALS['CONFIG']['debit_gouteur'] * $GLOBALS['CONFIG']['gouteur_membrane']) * $tempsCycle);
                $debitNuit = readInIni($userVar, 'LIGNE', $PF_nom_upper . '_' . $ligne_numero . '_SOIR', 1.2);
                $tmpsOnNuit = round($debitNuit / ($GLOBALS['CONFIG']['debit_gouteur'] * $GLOBALS['CONFIG']['gouteur_membrane']) * $tempsCycle);
                $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",ligne," . $ligneIndex . ",tempsOn,matin", "value" => $tmpsOnMatin);
                $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",ligne," . $ligneIndex . ",tempsOn,apresmidi", "value" => $tmpsOnAMidi);
                $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",ligne," . $ligneIndex . ",tempsOn,nuit", "value" => $tmpsOnNuit);
                $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",ligne," . $ligneIndex . ",active", "value" => readInIni($userVar, 'LIGNE', $PF_nom_upper . '_' . $ligne_numero . '_ACTIVE', "false"));
                // On sauvegarde le nombre de cycle (utilisé pour stocker le nombre d'arrosage et pour déterminer l'ordre de nettoyage)
                $paramServerSLFXML[] = array("key" => "zone," . $ZoneIndex . ",plateforme," . $PFIndex . ",ligne," . $ligneIndex . ",nbCycle", "value" => $PFIndex * 4 + $ligneIndex);
                $ligneIndex++;
            }
            $PFIndex++;
        }
        $ZoneIndex++;
    }
    // Save it
    create_conf_XML($pathTemporaire . "/serverSLF/conf.xml", $paramServerSLFXML);
    /*************************  serverAcqSensorV2 ***********************************/
    // On cré la conf pour les capteurs
    if (!is_dir($pathTemporaire . "/serverAcqSensorV2")) {
        mkdir($pathTemporaire . "/serverAcqSensorV2");
    }
    foreach ($GLOBALS['IRRIGATION'] as $zone_nom => $zone) {
        // On cré un fichier par zone
        $IP = $zone["parametres"]["IP"];
        // Add trace level
        $paramServerAcqSensor[] = array("key" => "verbose", "level" => readInIni($userVar, 'PARAM', 'VERBOSE_ACQSENSOR', "info"));
        $paramServerAcqSensor[] = array("key" => "simulator", "value" => "off");
        $paramServerAcqSensor[] = array("key" => "auto_search", "value" => "off");
        $nbSensor = 0;
        // Pour chaque zone , on enregistre les capteurs
        foreach ($zone["capteur"] as $capteur_nom => $capteur) {
            $nbSensor++;
            $numCapteur = $capteur["numero"];
            $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",nom", "value" => $capteur_nom);
            $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",type", "value" => $capteur["type"]);
            $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",index", "value" => $capteur["index"]);
            if ($capteur["type"] == "MCP230XX") {
                $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",nbinput", "value" => $capteur["nbinput"]);
                for ($i = 1; $i <= $capteur["nbinput"]; $i++) {
                    $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",input," . $i, "value" => $capteur["input," . $i]);
                    $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",value," . $i, "value" => $capteur["value," . $i]);
                }
            }
            if ($capteur["type"] == "ADS1015") {
                $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",input", "value" => $capteur["input"]);
                $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",min", "value" => $capteur["min"]);
                $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",max", "value" => $capteur["max"]);
            }
            if ($capteur["type"] == "EC") {
                $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",comPort", "value" => $capteur["comPort"]);
                $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",version", "value" => $capteur["version"]);
            }
        }
        foreach ($zone["plateforme"] as $plateforme_nom => $plateforme) {
            foreach ($plateforme["capteur"] as $capteur_nom => $capteur) {
                $nbSensor++;
                $numCapteur = $capteur["numero"];
                $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",nom", "value" => $capteur_nom);
                $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",type", "value" => $capteur["type"]);
                $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",index", "value" => $capteur["index"]);
                if ($capteur["type"] == "MCP230XX") {
                    $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",nbinput", "value" => $capteur["nbinput"]);
                    for ($i = 1; $i <= $capteur["nbinput"]; $i++) {
                        $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",input," . $i, "value" => $capteur["input," . $i]);
                        $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",value," . $i, "value" => $capteur["value," . $i]);
                    }
                }
                if ($capteur["type"] == "ADS1015") {
                    $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",input", "value" => $capteur["input"]);
                    $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",min", "value" => $capteur["min"]);
                    $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",max", "value" => $capteur["max"]);
                }
            }
            foreach ($plateforme["ligne"] as $ligne_numero => $ligne) {
                // On ajoute un détecteur de pression par ligne
                foreach ($ligne["capteur"] as $capteur_nom => $capteur) {
                    $nbSensor++;
                    $numCapteur = $capteur["numero"];
                    $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",nom", "value" => $capteur_nom);
                    $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",type", "value" => $capteur["type"]);
                    $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",index", "value" => $capteur["index"]);
                    if ($capteur["type"] == "MCP230XX") {
                        $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",nbinput", "value" => $capteur["nbinput"]);
                        for ($i = 1; $i <= $capteur["nbinput"]; $i++) {
                            $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",input," . $i, "value" => $capteur["input," . $i]);
                            $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",value," . $i, "value" => $capteur["value," . $i]);
                        }
                    }
                    if ($capteur["type"] == "ADS1015") {
                        $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",input", "value" => $capteur["input"]);
                        $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",min", "value" => $capteur["min"]);
                        $paramServerAcqSensor[] = array("key" => "sensor," . $numCapteur . ",max", "value" => $capteur["max"]);
                    }
                }
            }
        }
        $paramServerAcqSensor[] = array("key" => "nbSensor", "value" => $nbSensor);
        // On sauvegarde
        $arraToSave[$IP] = $paramServerAcqSensor;
        unset($paramServerAcqSensor);
    }
    foreach ($GLOBALS['IRRIGATION'] as $zone_nom => $zone) {
        $IP = $zone["parametres"]["IP"];
        if ($IP == "localhost") {
            $extension = "";
        } else {
            $extension = "_" . $IP;
        }
        create_conf_XML($pathTemporaire . "/serverAcqSensorV2/conf" . $extension . ".xml", $arraToSave[$IP]);
    }
    /*************************  serverHisto ***********************************/
    // On cré la conf pour les capteurs
    if (!is_dir($pathTemporaire . "/serverHisto")) {
        mkdir($pathTemporaire . "/serverHisto");
    }
    // Add trace level
    $paramServerHisto[] = array("key" => "verbose", "level" => readInIni($userVar, 'PARAM', 'VERBOSE_HISTO', "warning"));
    $paramServerHisto[] = array("key" => "logPeriode", "value" => "30");
    $paramServerHisto[] = array("key" => "pathMySQL", "value" => "/usr/bin/mysql");
    create_conf_XML($pathTemporaire . "/serverHisto/conf.xml", $paramServerHisto);
    /*************************  serverLog ***********************************/
    // On cré la conf pour les capteurs
    if (!is_dir($pathTemporaire . "/serverLog")) {
        mkdir($pathTemporaire . "/serverLog");
    }
    // Add trace level
    switch (php_uname('s')) {
        case 'Windows NT':
            $paramServerLog[] = array("key" => "logPath", "level" => "C:/cultibox/");
            break;
        default:
            $paramServerLog[] = array("key" => "logPath", "level" => "/var/log/cultipi");
            break;
    }
    $paramServerLog[] = array("key" => "verbose", "value" => "warning");
    create_conf_XML($pathTemporaire . "/serverLog/conf.xml", $paramServerLog);
    /*************************  serverMail ***********************************/
    // On cré la conf pour les capteurs
    if (!is_dir($pathTemporaire . "/serverMail")) {
        mkdir($pathTemporaire . "/serverMail");
    }
    // Add trace level
    $paramServerMail = array(array("key" => "verbose", "level" => readInIni($userVar, 'PARAM', 'VERBOSE_MAIL', "info")), array("key" => "serverSMTP", "value" => readInIni($userVar, 'PARAM', 'MAIL_SMTP', "mail.greenbox-botanic.com")), array("key" => "port", "value" => readInIni($userVar, 'PARAM', 'MAIL_PORT', "26")), array("key" => "username", "value" => readInIni($userVar, 'PARAM', 'MAIL_USERNAME', "*****@*****.**")), array("key" => "password", "value" => readInIni($userVar, 'PARAM', 'MAIL_PASSWORD', "pssord")), array("key" => "useSSL", "value" => readInIni($userVar, 'PARAM', 'MAIL_SSL', "false")));
    create_conf_XML($pathTemporaire . "/serverMail/conf.xml", $paramServerMail);
    /*************************  serverSupervision ***********************************/
    // On cré la conf pour les capteurs
    if (!is_dir($pathTemporaire . "/serverSupervision")) {
        mkdir($pathTemporaire . "/serverSupervision");
    }
    $processSupervisionId = 0;
    foreach ($GLOBALS['IRRIGATION'] as $zone_nom => $zone) {
        // On cré un process par cuve
        $paramConfSupervision = array(array("key" => "action", "level" => "checkSensor"), array("key" => "eMail", "value" => readInIni($userVar, 'PARAM', 'MAIL_USERNAME', "*****@*****.**")), array("key" => "sensorName", "value" => "Niveau cuve " . $zone_nom), array("key" => "sensor", "value" => $zone['capteur']['niveau_cuve']['numero']), array("key" => "sensorOutput", "value" => "1"), array("key" => "valueSeuil", "value" => "5"), array("key" => "timeSeuilInS", "value" => "3600"), array("key" => "alertIf", "value" => "down"));
        // On sauvegarde
        create_conf_XML($pathTemporaire . "/serverSupervision/process_" . $processSupervisionId . "_checkSensor.xml", $paramConfSupervision);
        unset($paramConfSupervision);
        $processSupervisionId++;
        foreach ($zone["plateforme"] as $plateforme_nom => $plateforme) {
            foreach ($plateforme["ligne"] as $ligne_nom => $ligne) {
                // On cré un process par ligne d'arrosage
                $paramConfSupervision = array(array("key" => "action", "level" => "checkSensor"), array("key" => "eMail", "value" => readInIni($userVar, 'PARAM', 'MAIL_USERNAME', "*****@*****.**")), array("key" => "sensorName", "value" => "Pression ligne " . $ligne_nom), array("key" => "sensor", "value" => $ligne['capteur']['pression']['numero']), array("key" => "sensorOutput", "value" => "1"), array("key" => "valueSeuil", "value" => "1"), array("key" => "timeSeuilInS", "value" => "3600"), array("key" => "alertIf", "value" => "down"), array("key" => "hostnameValue", "value" => $GLOBALS['CONFIG']['nomcomplet']));
                // On sauvegarde
                create_conf_XML($pathTemporaire . "/serverSupervision/process_" . $processSupervisionId . "_checkSensor.xml", $paramConfSupervision);
                unset($paramConfSupervision);
                $processSupervisionId++;
            }
        }
    }
    // On ajoute une vérification de la température ( inférieur à 1°C pendant 2H)
    $paramConfSupervision = array(array("key" => "action", "level" => "checkSensor"), array("key" => "eMail", "value" => readInIni($userVar, 'PARAM', 'MAIL_USERNAME', "*****@*****.**")), array("key" => "sensorName", "value" => "Temperature"), array("key" => "sensor", "value" => $zone['capteur']['temperature']['numero']), array("key" => "sensorOutput", "value" => "1"), array("key" => "valueSeuil", "value" => "1"), array("key" => "timeSeuilInS", "value" => "7200"), array("key" => "alertIf", "value" => "down"));
    // On sauvegarde
    create_conf_XML($pathTemporaire . "/serverSupervision/process_" . $processSupervisionId . "_checkSensor.xml", $paramConfSupervision);
    unset($paramConfSupervision);
    $processSupervisionId++;
    // Add trace level
    $paramServerSupervision = array(array("key" => "verbose", "level" => readInIni($userVar, 'PARAM', 'VERBOSE_SUPERVISION', "info")), array("key" => "nbProcess", "value" => "0"));
    create_conf_XML($pathTemporaire . "/serverSupervision/conf.xml", $paramServerSupervision);
    switch (php_uname('s')) {
        case 'Windows NT':
            // On repositionne cette conf comme celle par défaut
            xcopy($pathTemporaire, $path . "/00_defaultConf_Win");
            // On la sauvegarde
            xcopy($pathTemporaire, $path . "/" . date("YmdH"));
            break;
        default:
            // On supprime l'ancienne conf
            // sudo mv /etc/bulckypi/01_defaultConf_RPi/* /tmp/ --backup=numbered
            exec("sudo mv {$path}/01_defaultConf_RPi/* /tmp/ --backup=numbered", $ret, $err);
            if ($err != 0) {
                echo 'Erreur suppression ancienne conf';
            }
            // On repositionne cette conf comme celle par défaut
            // sudo cp -R /tmp/conf_tmp* /etc/bulckypi/01_defaultConf_RPi/
            exec("sudo cp -R {$pathTemporaire}/* {$path}/01_defaultConf_RPi/", $ret, $err);
            if ($err != 0) {
                echo 'Erreur copie dans 01_defaultConf_RPi';
            }
            // On crée le répertoire de sauvegarde
            // sudo mkdir /etc/bulckypi/2016041414
            $err = 0;
            if (!is_dir($path . "/" . date("YmdH"))) {
                exec("sudo mkdir {$path}/" . date("YmdH"), $ret, $err);
            }
            if ($err != 0) {
                echo "Erreur création {$path}/" . date("YmdH");
            }
            // On copie la conf dedans
            // sudo cp -R /tmp/conf_tmp/* /etc/bulckypi/2016041414/
            exec("sudo cp -R {$pathTemporaire}/* {$path}/" . date("YmdH") . "/", $ret, $err);
            if ($err != 0) {
                echo "Erreur copie dans le rep {$path}/" . date("YmdH");
            }
            // On ajoute l'ancien param.ini
            exec("sudo mv /tmp/param.ini {$path}/" . date("YmdH") . "/param.ini", $ret, $err);
            if ($err != 0) {
                echo 'Erreur sauvegarde ancien param.ini';
            }
            break;
    }
    // On relance l'acquisition
    exec("sudo /etc/init.d/bulckypi force-reload >/dev/null 2>&1", $ret, $err);
    if ($err != 0) {
        echo 'Erreur de rechargement du service';
    }
}
Example #6
0
function serverAcqSensorV2_createXMLConf()
{
    $paramListServerAcqSensor[] = array("name" => "verbose", "level" => $GLOBALS['CULTIPI']['TRACE_LEVEL']['serverAcqSensor']);
    $paramListServerAcqSensor[] = array("name" => "simulator", "value" => "off");
    $paramListServerAcqSensor[] = array("name" => "auto_search", "value" => "off");
    // Retriev sensor infos
    $sensorList = getDB();
    // foreach sensor,add every informations
    $nbSensor = 0;
    foreach ($sensorList as $index => $sensorInfos) {
        if ($sensorInfos["type"] != 0) {
            $paramListServerAcqSensor[] = array("name" => "sensor," . $sensorInfos["id"] . ",nom", "value" => $sensorInfos["name"]);
            // Si c'est un capteur I2C, on rempa le nom
            if ($sensorInfos["source"] == "rj12") {
                $sensorInfos["source"] = "I2C";
            }
            $paramListServerAcqSensor[] = array("name" => "sensor," . $sensorInfos["id"] . ",type", "value" => $sensorInfos["source"]);
            $paramListServerAcqSensor[] = array("name" => "sensor," . $sensorInfos["id"] . ",index", "value" => $sensorInfos["sensorIndex"]);
            // If the sensor is a direct read, add it
            if ($sensorInfos["source"] == "directread") {
                $paramListServerAcqSensor[] = array("name" => "direct_read," . $sensorInfos["id"] . ",input", "value" => $sensorInfos["input"]);
                $paramListServerAcqSensor[] = array("name" => "direct_read," . $sensorInfos["id"] . ",value", "value" => $sensorInfos["value"]);
                $paramListServerAcqSensor[] = array("name" => "direct_read," . $sensorInfos["id"] . ",input2", "value" => $sensorInfos["input2"]);
                $paramListServerAcqSensor[] = array("name" => "direct_read," . $sensorInfos["id"] . ",value2", "value" => $sensorInfos["value2"]);
                $paramListServerAcqSensor[] = array("name" => "direct_read," . $sensorInfos["id"] . ",type", "value" => $sensorInfos["type"]);
                $paramListServerAcqSensor[] = array("name" => "direct_read," . $sensorInfos["id"] . ",statusOK", "value" => $sensorInfos["statusOK"]);
                $paramListServerAcqSensor[] = array("name" => "direct_read," . $sensorInfos["id"] . ",statusOK2", "value" => $sensorInfos["statusOK2"]);
            }
            $nbSensor++;
        }
    }
    $paramListServerAcqSensor[] = array("name" => "nbSensor", "value" => $nbSensor);
    if ($GLOBALS['CULTIPI']['USE_REMOTE_SENSOR'] == 1) {
        foreach ($GLOBALS['CULTIPI']['REMOTE_SENSOR'] as $elemOfArray) {
            $paramListserverAcqSensor[] = array("name" => "network_read," . $elemOfArray["SENSOR_INDEX_IN_MASTER"] . ",ip", "ip" => $GLOBALS['CULTIPI']['REMOTE_SLAVE']["IP_" . $elemOfArray["REMOTE_SLAVE"]]);
            $paramListserverAcqSensor[] = array("name" => "network_read," . $elemOfArray["SENSOR_INDEX_IN_MASTER"] . ",sensor", "sensor" => $elemOfArray["SENSOR_INDEX_IN_SLAVE"]);
        }
    }
    \create_conf_XML($GLOBALS['CULTIPI_CONF_TEMP_PATH'] . "/serverAcqSensorV2/conf.xml", $paramListServerAcqSensor);
}
Example #7
0
function serverSupervision_createXMLConf()
{
    // retrieve user params
    $supervisionUserConf = getSupervisionUserConf();
    $mailUserConf = \configuration\getEmailUserConf();
    $processIndex = 0;
    if (strcmp($supervisionUserConf["checkPing_en"], "on") == 0) {
        $tempProcess = array();
        $tempProcess[] = array("name" => "action", "value" => "checkPing");
        $tempProcess[] = array("name" => "nbIP", "value" => "1");
        $tempProcess[] = array("name" => "IP,0", "value" => $supervisionUserConf['checkPing_adress']);
        $tempProcess[] = array("name" => "timeMax", "value" => "60");
        $tempProcess[] = array("name" => "error,action", "value" => $supervisionUserConf['checkPing_action'] . " " . $mailUserConf["EMAIL_ADRESS"]);
        \create_conf_XML($GLOBALS['CULTIPI_CONF_TEMP_PATH'] . "/serverSupervision/process_" . $processIndex . ".xml", $tempProcess);
        $processIndex++;
    }
    if (strcmp($supervisionUserConf["dailyReport_en"], "on") == 0) {
        $tempProcess = array();
        $tempProcess[] = array("name" => "action", "value" => "dailyReport");
        \create_conf_XML($GLOBALS['CULTIPI_CONF_TEMP_PATH'] . "/serverSupervision/process_" . $processIndex . ".xml", $tempProcess);
        $processIndex++;
    }
    if (strcmp($supervisionUserConf["monthlyReport_en"], "on") == 0) {
        $tempProcess = array();
        $tempProcess[] = array("name" => "action", "value" => "monthlyReport");
        \create_conf_XML($GLOBALS['CULTIPI_CONF_TEMP_PATH'] . "/serverSupervision/process_" . $processIndex . ".xml", $tempProcess);
        $processIndex++;
    }
    $supervisionConf[] = array("name" => "verbose", "level" => $GLOBALS['CULTIPI']['TRACE_LEVEL']['serverSupervision']);
    $supervisionConf[] = array("name" => "nbProcess", "level" => $processIndex);
    \create_conf_XML($GLOBALS['CULTIPI_CONF_TEMP_PATH'] . "/serverSupervision/conf.xml", $supervisionConf);
}