diff --git a/.gitignore b/.gitignore index c8663d7..7a770bf 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,5 @@ xmlrpc.php .project* .settings* +# ignore mkdocs files +site/* diff --git a/README.md b/README.md index 600dcc6..f2621e7 100644 --- a/README.md +++ b/README.md @@ -4,22 +4,18 @@ Automated importing of National Weather Service (NWS) data into FarmOS. ## Purpose The purpose of this project is to allow FarmOS to use data from the National Weather Service to allow it to make better decisions as well as to log -data from a trusted weather source. +data from a trusted weather source. -Bit Second noticed that some small farmers and gardeners do not have the -financial resources to deploy many sensors for their FarmOS installation. -However, by combining the data provide from the local NWS weather station and -using additional Drupal modules, FarmOS can be better automated with a lower -investment. +Using data from the National Weather Service reduces the cost to get a FarmOS +installation going as temperature, rain, humidity and other sensors do not +have to be purchased. Furthermore, it reduces the maintenance costs by +reducing the amount of infrastructure required to maintain the farm or garden. ## System Requirements * Drupal 7 * FarmOS -* Ubuntu Linux (May run on other Linux versions, but has only be tested with Ubuntu Linux 14.04) -* PHP -* Crontab or other task scheduler capable of running shell scripts -## Setup +## Installation ### Clone the Repository To get the latest release, clone this repository by running the command below @@ -27,83 +23,52 @@ To get the latest release, clone this repository by running the command below git clone https://github.com/bitsecondal/farmosnws.git ``` -### Create Configuration File -Make a copy of the get_weather_config_ex.sh file. Update the variables located in the configuration -script file. - -```shell -get_weather.sh genconfig -``` - -The *feedsdir* location will need to be updated to the file system location that -Drupal is checking to see if data files are available. - -The *location* variable will need to be updated to the location code for the location -that you want data for. -* Go to the [XML data feeds](http://w1.weather.gov/xml/current_obs/) page on the NWS website. -* Select the state and click Find -* Find the location that is cloest to the area that you want to pull data for. -* In the parenthesis next to the location, you will see a 4-character code. Copy this code. -* Place the 4-character code in the configuration file inside quotes. -* Save the configuration file. - -If you have multiple locations that you want to pull data for, you'll need to create a configuration -file for each location and set up a scheduled task for each configuration file. - -### Schedule Script -To set up a cron job to run to automatically pull the latest weather data, you use the details and -steps below. The National Weather Service updates the data hourly. - -#### Linux/Ubuntu with Crontab -Update the paths mentioned to the location of your script and the location of your configuration -file respectively. If you want to log the output of the script, also update the log location. -```shell -24 * * * * (/path/to/drupal/sites/all/modules/farmosnws/get_weather.sh /path/to/drupal/sites/all/modules/farmosnws/config.sh) >> /var/log/get_weather.log 2>&1 -``` -If you don't want to log the output of the command, then use the command below. -```shell -24 * * * * (/path/to/drupal/sites/all/modules/farmosnws/get_weather.sh /path/to/drupal/sites/all/modules/farmosnws/config.sh) >> /dev/null 2>&1 -``` - -#### Windows with Task Scheduler -This script is not designed to work on Windows. - -## Rules -Rules for automating some tasks, such as cutting grass based on frequency are included in this module. -To import the rules, do the following: -1) Install the Rules and Rules UI modules. -2) Copy and paste the text of the rule that you wish to import. The text for each of the rules are located in the rules_import directory of this module. -3) Go to Adminstration > Configuration > Workflow > Rules > Import Rule. -4) Paste the text of the rule that you copied into the box and then click Import. +### Configure FarmOS NWS +Within your Drupal site, enable the FarmOS NWS and FarmOS NWS Feeds Importer modules +from the Modules page. +After enabling the modules, go to the FarmOS NWS configuration page (Admin > +Configuration > Web Services > FarmOS NWS Settings). Enter the file system location, +weather locations that you would like weather imported for, measurement units, and +whether you want to keep files after they have been loaded. When done, click Save. + +### Configure Feed Importer +Within your Drupal site, go to the feed importer page (Structure > Feeds Importers > +Log: NWS Observation). In the Fetcher section, set the upload directory to the same +directory that you defined in the Configure FarmOS NWS section. When done, +click Save. + +## Uninstallation +Within your Drupal site, go to the Modules page and disable FarmOS NWS and FarmOS NWS +Importer modules and click Save Configuration. Then go to the Uninstall page (Modules > +Uninstall), select each module, and click Uninstall. + +If you uninstall the modules, the data that was imported by the modules WILL NOT be +removed. If you wish to remove the data that was imported remove, you will have to +manually remove each entry. ## Code Updates To get the latest version of this code, pull the latest release from the [FarmOS NWS GitHub Page](https://github.com/bitsecondal/farmosnws). -Alternatively you can get the latest code by going to the directory that contains the code and running the commands below: +Alternatively you can get the latest code by going to the directory that contains +the code and running the commands below: ```shell git checkout master git pull origin master ``` ## Author -Kenny Robinson, [Bit Second Tech](www.bitsecondtech.com) +Kenny Robinson, [@almostengr](https://twitter.com/almostengr) -## Bug Reports and Feature Enhancements +## Additional Information Bugs and enhancements will be tracked using the Issue tracker on the [project repo](https://github.com/bitsecondal/farmosnws/issues). -If you need to report a bug, please open a new issue on this repo. Include -as much detail as possible including error messages or screenshots so that the issue can be replicated. - -## License Project is available under the MIT License. See LICENSE for more information. -## Additional Information -For more information about Bit Second Tech, please visit the [Bit Second Tech](http://www.bitsecondtech.com) website. - For more information about FarmOS, please visit the [FarmOS](http://www.farmos.org) website. -For more information about the National Weather Service (NWS), please visit the [NWS](http://www.weather.gov) website. +For more information about the National Weather Service (NWS), please visit the +[NWS](http://www.weather.gov) website. diff --git a/farmosnws.admin.inc b/farmosnws.admin.inc new file mode 100644 index 0000000..0256b2d --- /dev/null +++ b/farmosnws.admin.inc @@ -0,0 +1,68 @@ + 'textfield', + '#title' => t('Feeds Directory'), + '#required' => TRUE, + '#description' => t('The full directory path to where weather feeds should be saved to.'), + '#default_value' => variable_get('farmosnws_weather_feeds_dir'), + ); + + $form['farmosnws_locations'] = array( + '#type' => 'textfield', + '#title' => t('Locations'), + '#description' => t('Enter the locations that you would like weather data pulled for. Each location must be entered must be separated by commas. Feeds can be found on the ' . l('NWS XML feeds page', 'http://w1.weather.gov/xml/current_obs/') . '.'), + '#required' => TRUE, + '#default_value' => variable_get('farmosnws_locations'), + ); + + $form['farmosnws_temp_units'] = array( + '#type' => 'select', + '#title' => t('Measurement Units'), + '#required' => TRUE, + '#options' => array( + 'us' => t('Fahrenheit'), + 'metric' => t('Celsius'), + ), + '#description' => t('Select the system of measurement that you would like to use.'), + '#default_value' => variable_get('farmosnws_temp_units'), + ); + + $form['farmosnws_delete_xml'] = array( + '#type' => 'select', + '#title' => t('Delete Processed XML'), + '#required' => TRUE, + '#options' => array( + 'yes' => 'Yes', + 'no' => 'No', + ), + '#description' => t('Delete the National Weather Service XML feed after it has been processed.'), + '#default_value' => variable_get('farmosnws_delete_xml', 'yes'), + ); + + return system_settings_form($form); +} + +/** + * + * Validate the module settings + */ +function farmosnws_admin_form_validate($form, &$form_state) { + // validate that the work directory exists and can be created + $weatherfeedsdir = $form_state['values']['farmosnws_weather_feeds_dir']; + + $direxist = farmosnws_create_feed_dir($weatherfeedsdir); + if ( $direxist == FALSE ){ + form_set_error('farmosnws_weather_feeds_dir', 'The weather feed directory cannot be created. Please verify that Drupal as write permissions and try again.'); + } +} // end if + diff --git a/farmosnws.info b/farmosnws.info new file mode 100644 index 0000000..b6691de --- /dev/null +++ b/farmosnws.info @@ -0,0 +1,13 @@ +name = FarmOS NWS +description = Imports data from the National Weather Service into Drupal for use by FarmOS. +core = 7.x +package = farmOS +version = 7.x-2.0 +dependencies[] = farm +dependencies[] = farm_quantity +dependencies[] = farm_log_observation + +files[] = farmosnws.module +files[] = farmosnws.admin.inc + +configure = admin/config/services/farmosnws diff --git a/farmosnws.install b/farmosnws.install new file mode 100644 index 0000000..84bc84a --- /dev/null +++ b/farmosnws.install @@ -0,0 +1,66 @@ +name = $term_qty_item; + $tax_qty_term->vid = $vocab_qty_units->vid; + taxonomy_term_save($tax_qty_term); + + watchdog('farmosnws', 'Created ' . $term_qty_item . ' taxonomy term.', array(), WATCHDOG_INFO, NULL); + } + else { + watchdog('farmosnws', 'Matched taxonomy term ' . $term_qty_item, array(), WATCHDOG_INFO, NULL); + } + } + + // set default variable values + variable_set('farmosnws_temp_units', 'us'); + variable_set('farmosnws_delete_xml', 'yes'); +} + +/** + * + * implements hook_enable() + */ +function farmosnws_enable() { + // notice to visit configuration page to set initial values for variables + drupal_set_message(t("Visit the module " . l("configuration page", 'admin/config/services/farmosnws') . " to complete module setup."), 'warning', FALSE); + watchdog('farmosnws', 'Visit the module configuration page to complete module setup', array(), WATCHDOG_INFO, NULL); +} + +/** + * + * implements hook_uninstall() + */ +function farmosnws_uninstall() { + // delete all the variables created by the module + $query = "select name from {variable} where name like :varname"; + $result = db_query($query, array(':varname' => db_like('farmosnws') . '%')); + + foreach($result as $row) { + variable_del($row->name); + } // end foreach + + menu_rebuild(); + + watchdog('farmosnws', 'FarmOS NWS module has been uninstalled', array(), WATCHDOG_INFO, NULL); +} // end function + diff --git a/farmosnws.module b/farmosnws.module new file mode 100644 index 0000000..f7c72d1 --- /dev/null +++ b/farmosnws.module @@ -0,0 +1,275 @@ + t('FarmOS NWS Settings'), + 'description' => 'Add and remove additional feeds to be pulled by FarmOS NWS', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('farmosnws_admin_form'), + 'access arguments' => array('access administration pages'), + 'file' => 'farmosnws.admin.inc', + ); + + // TO DO: Have URL that will allow for non-cron processing of data + return $items; +} + +/** + * + * Implements hook_cron() + */ +function farmosnws_cron() { + farmosnws_get_xml(); +} + +/** + * + * Check and create if necessary the path where the weather feeds will be stored. + * + * @param string feedpath + * String to the path that contains the feeds + * + * @return Returns whether the directory exists or not. + */ +function farmosnws_create_feed_dir($feedpath) { + $mkdirsuccess = NULL; + + // check to see if the feeds directory exists. If not attempt to create it. + if ( is_dir($feedpath) == FALSE ) { + $mkdirsuccess = mkdir($feedpath, 755); + + // verify directory exists + if ( $feedpath == FALSE ){ + watchdog('farmosnws', 'Unable to create the weather feed directory.', array(), WATCHDOG_ERROR, NULL); + } + else { + watchdog('farmosnws', 'Created weather feed directory.', array(), WATCHDOG_INFO, NULL); + } // end if + } + else { + // skipping actions + $mkdirsuccess = TRUE; + } // end if + + return $mkdirsuccess; +} + +/** + * + * Get the weather data from the NWS + */ +function farmosnws_get_xml() { + $weatherfeedsdir = variable_get('farmosnws_weather_feeds_dir'); + + // TO DO: Add converter for schema to actual path + // $weatherfeedsdir = file_create_url($weatherfeedsdir); + + $locations = variable_get('farmosnws_locations', ''); + $location_array = explode(",", $locations); + + foreach ($location_array as $loc) { + // remove carriage returns and new lines + $loc = str_replace(" ", "", str_replace("\r", "", str_replace("\n", "", $loc))); + + // build URL to connect to NWS + $weather_feed_name = $weatherfeedsdir . '/' . uniqid($loc, FALSE) . '.xml'; + $url = "http://w1.weather.gov/xml/current_obs/" . $loc . ".xml"; + + watchdog('farmosnws', $url, array(), WATCHDOG_DEBUG, NULL); + watchdog('farmosnws', 'Getting weather data for ' . $loc, array(), WATCHDOG_INFO, NULL); + + $response = drupal_http_request($url, array()); + + // if error occurs when performing the request + if ( $response->error ) { + watchdog('farmosnws', 'Response code: ' . $response->code . '. ' . $response->error, array(), WATCHDOG_ERROR, NULL); + drupal_set_message($response->error, 'error', FALSE); + } + else{ + // if no errors occur when performing the request + watchdog('farmosnws', 'Response code: ' . $response->code, array(), WATCHDOG_INFO, NULL); + + // if the directory doesnt exist, then create it with 755 permissions + $direxist = farmosnws_create_feed_dir($weatherfeedsdir); + + if ( $direxist == TRUE ) { + // save the contents retrieved + file_put_contents($weather_feed_name, $response->data); + watchdog('farmosnws', 'Weather data saved to ' . $weather_feed_name, array(), WATCHDOG_INFO, NULL); + + farmosnws_convert_xml_2_csv($weather_feed_name); + } + else { + drupal_set_message("Feed could not be downloaded because the directory does not exist. Please verify that Drupal has write access and try again.", 'error', FALSE); + watchdog('farmosnws', 'Feed could not be downloaded because the directory does not exist.', array(), WATCHDOG_ERROR, NULL); + } + } // end else + } // end foreach +} // end function + +/** + * + * @feedfilename string File name that will be split into smaller feeds + */ +function farmosnws_convert_xml_2_csv($feedfilename) { + // read the files in the unprocessed directory + $csvfilename = $feedfilename . '.csv'; + + try{ + $csvfile = fopen($csvfilename, "w"); + + if ($csvfile === FALSE) { + throw new Exception("Could open CSV file writing"); + } + + // get taxonomy term ids + $term_celsius = taxonomy_get_term_by_name("Celsius"); + $term_millibars = taxonomy_get_term_by_name("Millibars"); + $term_fahrenheit = taxonomy_get_term_by_name("Fahrenheit"); + $term_inches = taxonomy_get_term_by_name("Inches"); + $term_inches = taxonomy_get_term_by_name("Humidity"); + + // write header + fputcsv($csvfile, array("Done", "Date", "Name", "Notes", "Value", "Unit")); + + // load the xml file + $xml = simplexml_load_file($feedfilename); + + // load the units configuration + $measure_units = variable_get('farmosnws_temp_units', 'us'); + + // log the metric units + if ( $measure_units == 'metric' || $measure_units == 'both' ){ + // temperature in C + fputcsv($csvfile, + array(1, // done + $xml->observation_time_rfc822, // date + $xml->location . ' Temperature', // name + $xml->location, // location + // "Temperature", // category + $xml->temp_c, // value + "Celsius", // unit + ), ','); + + // log the barametric pressure + fputcsv($csvfile, + array(1, // done + $xml->observation_time_rfc822, // date + $xml->location . ' Barometric Pressure', // name + $notes, // notes + // "Pressure", + $xml->pressure_mb, + "Millibars", + ), ','); + } + + // log the US, standard units + if ( $measure_units == 'us' || $measure_units == 'both' ){ + // temperature in F + fputcsv($csvfile, + array(1, + $xml->observation_time_rfc822, + $xml->location . ' Temperature', // name + $xml->location, + // "Temperature", + $xml->temp_f, + "Fahrenheit", + ), ','); + + // log the barametric pressure + fputcsv($csvfile, + array(1, + $xml->observation_time_rfc822, + $xml->location . ' Barometric Pressure', // name + $xml->location, + // "Pressure", + $xml->pressure_in, + "Inches", + ), ','); + } + + // log the relative humidity + fputcsv($csvfile, + array("1", + $xml->observation_time_rfc822, + $xml->location . ' Humidity', // name + $xml->location, + // "Humidity", + $xml->relative_humidity, + "Percent Humidity", + ), ','); + + // log the wind speed + fputcsv($csvfile, + array("1", + $xml->observation_time_rfc822, + $xml->location . ' Wind Speed', // name + $xml->location, + // "Wind", + $xml->wind_mph, + "MPH", + ), ','); + + // log the wind direction + fputcsv($csvfile, + array("1", + $xml->observation_time_rfc822, + $xml->location . ' Wind Direction', // name + $xml->location, + // "Wind", + $xml->wind_degrees, + "Direction", + ), ','); + + // log the weather string + fputcsv($csvfile, + array("1", + $xml->observation_time_rfc822, + $xml->location . ' Weather', // name + $xml->weather, // $xml->location . ' ' . $xml->observation_time_rfc822, + // "Weather", + "", // $xml->weather, + "", + ), ','); + + // log the visibility + fputcsv($csvfile, + array("1", + $xml->observation_time_rfc822, + $xml->location . ' Visibility', // name + $xml->location, + // "Visibility", + $xml->visibility_mi, + "Miles", + ), ','); + + // close the file + fclose($csvfile); + + // remove feed file + if ( variable_get('farmosnws_del_process_feed', "no") == "yes" ) { + $removefeed = unlink($feedfilename); + if ($removefeed == FALSE){ + throw new Exception("Unable to remove XML feed file " . $feedfilename); + } + } + } + catch(Exception $e) { + watchdog('farmosnws', $e->getMessage(), array(), WATCHDOG_ERROR, NULL); + drupal_set_message($e->getMessage(), 'error'); + } +} + + diff --git a/farmosnws_importer/farmosnws_importer.features.inc b/farmosnws_importer/farmosnws_importer.features.inc new file mode 100644 index 0000000..1685b53 --- /dev/null +++ b/farmosnws_importer/farmosnws_importer.features.inc @@ -0,0 +1,14 @@ + "1"); + } +} diff --git a/farmosnws_importer/farmosnws_importer.feeds_importer_default.inc b/farmosnws_importer/farmosnws_importer.feeds_importer_default.inc new file mode 100644 index 0000000..65754b8 --- /dev/null +++ b/farmosnws_importer/farmosnws_importer.feeds_importer_default.inc @@ -0,0 +1,118 @@ +disabled = FALSE; /* Edit this to true to make a default feeds_importer disabled initially */ + $feeds_importer->api_version = 1; + $feeds_importer->id = 'log_nws_observation'; + $feeds_importer->config = array( + 'name' => 'Log: NWS Observation', + 'description' => 'Weather observation from the National Weather Service.', + 'fetcher' => array( + 'plugin_key' => 'feeds_fetcher_directory_fetcher', + 'config' => array( + 'recursive' => 1, + 'directory' => 'public://nwsfeeds', + 'filemask' => '/\\.csv$/', + 'updated_files' => 0, + 'after_processed' => '0', + 'move_to_folder' => '', + ), + ), + 'parser' => array( + 'plugin_key' => 'FeedsCSVParser', + 'config' => array( + 'delimiter' => ',', + 'encoding' => 'ASCII', + 'no_headers' => 0, + ), + ), + 'processor' => array( + 'plugin_key' => 'LogProcessor', + 'config' => array( + 'author' => '0', + 'authorize' => 0, + 'mappings' => array( + 0 => array( + 'source' => 'Done', + 'target' => 'done', + 'unique' => FALSE, + 'language' => 'und', + ), + 1 => array( + 'source' => 'Name', + 'target' => 'name', + 'unique' => FALSE, + 'language' => 'und', + ), + 2 => array( + 'source' => 'Notes', + 'target' => 'field_farm_notes', + 'unique' => FALSE, + 'language' => 'und', + ), + 3 => array( + 'source' => 'Value', + 'target' => 'field_farm_quantity:field_farm_quantity_value', + 'unique' => FALSE, + 'language' => 'und', + ), + 4 => array( + 'source' => 'Unit', + 'target' => 'field_farm_quantity:field_farm_quantity_units', + 'unique' => FALSE, + 'language' => 'und', + ), + 5 => array( + 'source' => 'Date', + 'target' => 'changed', + 'unique' => FALSE, + 'language' => 'und', + ), + 6 => array( + 'source' => 'Date', + 'target' => 'created', + 'unique' => FALSE, + 'language' => 'und', + ), + 7 => array( + 'source' => 'Latitude', + 'target' => 'field_farm_geofield:lat', + 'unique' => FALSE, + 'language' => 'und', + ), + 8 => array( + 'source' => 'Longitude', + 'target' => 'field_farm_geofield:lon', + 'unique' => FALSE, + ), + ), + 'insert_new' => '1', + 'update_existing' => '0', + 'update_non_existent' => 'skip', + 'input_format' => 'plain_text', + 'skip_hash_check' => 0, + 'bundle' => 'farm_observation', + 'language' => 'und', + ), + ), + 'content_type' => '', + 'update' => 0, + 'import_period' => '0', + 'expire_period' => 3600, + 'import_on_create' => 1, + 'process_in_background' => 0, + ); + $export['log_nws_observation'] = $feeds_importer; + + return $export; +} diff --git a/farmosnws_importer/farmosnws_importer.info b/farmosnws_importer/farmosnws_importer.info new file mode 100644 index 0000000..07d2dbe --- /dev/null +++ b/farmosnws_importer/farmosnws_importer.info @@ -0,0 +1,16 @@ +name = FarmOS NWS Feeds Importer +description = Import National Weather Service (NWS) data into FarmOS. +core = 7.x +package = farmOS +version = 7.x-2.0 +dependencies[] = ctools +dependencies[] = farm_log +dependencies[] = farm_log_observation +dependencies[] = feeds +dependencies[] = feeds_fetcher_directory +dependencies[] = feeds_xpathparser +dependencies[] = log +features[ctools][] = feeds:feeds_importer_default:1 +features[features_api][] = api:2 +features[feeds_importer][] = log_nws_observation +project path = sites/all/modules/custom/farmosnws diff --git a/farmosnws_importer/farmosnws_importer.module b/farmosnws_importer/farmosnws_importer.module new file mode 100644 index 0000000..942f466 --- /dev/null +++ b/farmosnws_importer/farmosnws_importer.module @@ -0,0 +1,7 @@ + -# "" is to be replaced with the full path of the configuration file. -# -# Author: Kenny Robinson, Bit Second Tech -################################################################################ - -# log all of the status and error messages -function log_message() { - # echo $(date)" | "$* - echo $* -} - -function show_help() { -# Show the help documentation -# accepts no arguments - - log_message "" - log_message "Usage:" - log_message "get_weather.sh " - log_message "" - log_message "Param can be replaced with one of the following:" - log_message "configfile - The full path of the configuration file." - log_message "help - Show the help information about this script." - log_message "" - log_message "For more information, visit https://github.com/bitsecondal/farmosnws" -} - -function generate_config_file() { -# generates the configuration file by answering questions. Resolves Issue #6. -# accepts no arguments - - echo "Please answer the questions below to have a configuration file generated." - echo -n "Full path to save configuration file:" - read CONFIGFILENAME - echo -n "Path of the feeds directory:" - read FEEDSPATH - echo -n "Location Code: " - read LOCATIONCODE - - log_message "Generating configuration file." - - touch ${CONFIGFILENAME} - - echo "feedsdir=${FEEDSPATH}" >> ${CONFIGFILENAME} - echo "location=${LOCATIONCODE}" >> ${CONFIGFILENAME} - echo "export feedsdir" >> ${CONFIGFILENAME} - echo "export location" >> ${CONFIGFILENAME} - echo "" >> ${CONFIGFILENAME} - echo "# Config file generated on $(date)" >> ${CONFIGFILENAME} - echo "" >> ${CONFIGFILENAME} - - log_message "Done generating configuration file." -} - -## SCRIPT MAIN ## SCRIPT MAIN ## SCRIPT MAIN ## -## SCRIPT MAIN ## SCRIPT MAIN ## SCRIPT MAIN ## - -# check the argument passed -if [[ "${1}" == "genconfig" ]]; then - generate_config_file - -# verify that the configuration file exists -elif [[ -f ${1} ]]; then - - log_message "Loading the configuration" - - # load the configuration file - source ${1} - - log_message "Done loading the configuration" - - log_message "Getting the weather data" - - # get and save the weather data - /usr/bin/wget -O ${feedsdir}/${location}_$(/bin/date +%Y%m%d%H%M%S).xml http://w1.weather.gov/xml/current_obs/${location}.xml - - log_message "Done getting the weather data" - -# no value or invalid value passed, then show help -else - log_message "Configuration file does not exist." - show_help -fi - - diff --git a/get_weather_config_ex.sh b/get_weather_config_ex.sh deleted file mode 100644 index f9b3384..0000000 --- a/get_weather_config_ex.sh +++ /dev/null @@ -1,9 +0,0 @@ -# Enter the file system path to the location that Drupal will pull feeds from -feedsdir=/path/to/drupal/feeds/location - -# Enter the NWS location code that you want to be queried -# Location code can be found by going to http://w1.weather.gov/xml/current_obs/ and searching for your location. -location=ABCD - -export feedsdir -export location