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; }
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; }
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; }
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); }
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'; } }
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); }
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); }