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; }
require_once '../../libs/config.php'; require_once '../../libs/db_get_common.php'; require_once '../../libs/db_set_common.php'; require_once '../../libs/utilfunc.php'; require_once '../../libs/utilfunc_sd_card.php'; // Retrieve start and end param (Unix time format (s)) $sd_card = $_GET['sd_card']; // Create all plugXX programm // Read program index $program_index = array(); programs\get_program_index_info($program_index); // Foreach programm, create the programm foreach ($program_index as $key => $value) { // Read from database program $program = create_program_from_database($main_error, $value['program_idx']); // Save programm on SD $file = "{$sd_card}/cnf/prg/" . "plu" . $value['plugv_filename']; save_program_on_sd($file, $program); } $data = array(); calendar\read_event_from_db($data); // Read event from XML foreach (calendar\get_external_calendar_file() as $fileArray) { if ($fileArray['activ'] == 1) { calendar\read_event_from_XML($fileArray['filename'], $data); } } if (!check_sd_card($sd_card)) { $main_error[] = __('ERROR_WRITE_CALENDAR'); } else {
$regul_program = "on"; } $sd_card = $GLOBALS['CULTIPI_CONF_TEMP_PATH']; if (!isset($sd_card) || empty($sd_card)) { setcookie("CHECK_SD", "False", time() + 1800, "/", false, false); } // Retrieve plug's informations from the database $plugs_infos = get_plugs_infos($nb_plugs, $main_error); // Check if user has not removed the limit of 1000 change $limit = false; $last_action = 0; if ($remove_1000_change_limit == "False") { //Pour vérifier que l'on ne dépasse pas la limite de changement d'état des prises: //On génère le fichier plugv depuis la base de données et on compte le nombre de ligne, //Si cela dépasse la limite, on affiche une erreur/warning après calcul de l'heure de la dernière action $tmp_prog = create_program_from_database($main_error, $program_index); if (count($tmp_prog) > $GLOBALS['PLUGV_MAX_CHANGEMENT'] - 1) { $last_action = substr($tmp_prog[$GLOBALS['PLUGV_MAX_CHANGEMENT'] - 1], 0, 5); $main_error[] = __('ERROR_MAX_PROGRAM') . " " . date('H:i:s', $last_action); $limit = true; } } // For each plug gets pogramm for ($i = 0; $i < $nb_plugs; $i++) { $data_plug = get_data_plug($i + 1, $main_error, $program_index); $plugs_infos[$i]["data"] = format_program_highchart_data($data_plug, ""); // Translate $plugs_infos[$i]['translate'] = translate_PlugType($plugs_infos[$i]['PLUG_TYPE']); } // Create summary for tooltip $resume = format_data_sumary($plugs_infos);