parent
b1bf759faf
commit
8aae2f9c1f
@ -1,113 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# CONTROL.sh
|
||||
# A Control Script for SkywarnPlus v0.1.0
|
||||
# by Mason Nelson (N5LSN/WRKF394)
|
||||
#
|
||||
#
|
||||
# This script allows you to change the value of specific keys in the SkywarnPlus config.ini file.
|
||||
# It's designed to enable or disable certain features of SkywarnPlus from the command line.
|
||||
# It is case-insensitive, accepting both upper and lower case parameters.
|
||||
#
|
||||
# Usage: ./CONTROL.sh <key> <value>
|
||||
# Example: ./CONTROL.sh sayalert false
|
||||
# This will set 'SayAlert' to 'False' in the config.ini file.
|
||||
#
|
||||
# Supported keys:
|
||||
# - enable: Enable or disable SkywarnPlus entirely. (Section: SKYWARNPLUS)
|
||||
# - sayalert: Enable or disable instant alerting when weather alerts change. (Section: Alerting)
|
||||
# - sayallclear: Enable or disable instant alerting when weather alerts are cleared. (Section: Alerting)
|
||||
# - tailmessage: Enable or disable building of tail message. (Section: Tailmessage)
|
||||
# - courtesytone: Enable or disable automatic courtesy tones. (Section: CourtesyTones)
|
||||
#
|
||||
# Supported values:
|
||||
# - true: Enable the feature.
|
||||
# - false: Disable the feature.
|
||||
# - toggle: Toggle the feature.
|
||||
#
|
||||
# All changes will be made in the config.ini file located in the same directory as the script.
|
||||
|
||||
# First, we need to check if the correct number of arguments are passed
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "Incorrect number of arguments. Please provide the key and the new value."
|
||||
echo "Usage: $0 <key> <value>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the directory of the script
|
||||
SCRIPT_DIR=$(dirname $(readlink -f $0))
|
||||
CONFIG_FILE="${SCRIPT_DIR}/config.ini"
|
||||
|
||||
# Convert the input key into lowercase
|
||||
KEY=$(echo "$1" | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
# Convert the first character of the value to uppercase
|
||||
VALUE=$(echo "$2" | awk '{for(i=1;i<=NF;i++)sub(/./,toupper(substr($i,1,1)),$i)}1')
|
||||
|
||||
# Make sure the provided value is either 'True' or 'False' or 'Toggle'
|
||||
if [[ "${VALUE^^}" != "TRUE" && "${VALUE^^}" != "FALSE" && "${VALUE^^}" != "TOGGLE" ]]; then
|
||||
echo "Invalid value. Please provide either 'true' or 'false' or 'toggle'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Define the command-line arguments and their corresponding keys in the configuration file
|
||||
declare -A ARGUMENTS=( ["enable"]="Enable" ["sayalert"]="SayAlert" ["sayallclear"]="SayAllClear" ["tailmessage"]="Enable" ["courtesytone"]="Enable")
|
||||
|
||||
# Define the sections in the configuration file that each key belongs to
|
||||
declare -A SECTIONS=( ["enable"]="SKYWARNPLUS" ["sayalert"]="Alerting" ["sayallclear"]="Alerting" ["tailmessage"]="Tailmessage" ["courtesytone"]="CourtesyTones")
|
||||
|
||||
# Define the audio files associated with each key
|
||||
declare -A AUDIO_FILES_ENABLED=( ["enable"]="SWP85.wav" ["sayalert"]="SWP87.wav" ["sayallclear"]="SWP89.wav" ["tailmessage"]="SWP91.wav" ["courtesytone"]="SWP93.wav")
|
||||
|
||||
declare -A AUDIO_FILES_DISABLED=( ["enable"]="SWP86.wav" ["sayalert"]="SWP88.wav" ["sayallclear"]="SWP90.wav" ["tailmessage"]="SWP92.wav" ["courtesytone"]="SWP94.wav")
|
||||
|
||||
# Read the node number and path to SOUNDS directory from the config.ini
|
||||
NODES=$(awk -F " = " '/^Nodes/ {print $2}' "${SCRIPT_DIR}/config.ini" | tr -d ' ' | tr ',' '\n')
|
||||
|
||||
# Check if the input key is valid
|
||||
if [[ ${ARGUMENTS[$KEY]+_} ]]; then
|
||||
# Get the corresponding key in the configuration file
|
||||
CONFIG_KEY=${ARGUMENTS[$KEY]}
|
||||
|
||||
# Get the section that the key belongs to
|
||||
SECTION=${SECTIONS[$KEY]}
|
||||
|
||||
if [[ "${VALUE^^}" = "TOGGLE" ]]; then
|
||||
CONFIG_VALUE=$(awk -F "=" -v section="$SECTION" -v key="$KEY" '
|
||||
BEGIN {RS=";"; FS="="}
|
||||
$0 ~ "\\[" section "\\]" {flag=1}
|
||||
flag && $1 ~ key {gsub(/ /, "", $2); print toupper($2); exit}
|
||||
$0 ~ "\\[" && $0 !~ "\\[" section "\\]" {flag=0}' "$CONFIG_FILE")
|
||||
|
||||
# Remove leading and trailing whitespace
|
||||
CURRENT_VALUE=$(echo $CONFIG_VALUE | xargs)
|
||||
|
||||
if [ "$CURRENT_VALUE" == "TRUE" ]; then
|
||||
NEW_VALUE="False"
|
||||
elif [ "$CURRENT_VALUE" == "FALSE" ]; then
|
||||
NEW_VALUE="True"
|
||||
else
|
||||
echo "Could not determine current value. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
VALUE=$NEW_VALUE
|
||||
fi
|
||||
|
||||
# Update the value of the key in the configuration file
|
||||
sed -i "/^\[${SECTION}\]/,/^\[/{s/^${CONFIG_KEY} = .*/${CONFIG_KEY} = ${VALUE}/}" "${SCRIPT_DIR}/config.ini"
|
||||
|
||||
# Get the correct audio file based on the new value
|
||||
if [ "$VALUE" = "True" ]; then
|
||||
AUDIO_FILE=${AUDIO_FILES_ENABLED[$KEY]}
|
||||
else
|
||||
AUDIO_FILE=${AUDIO_FILES_DISABLED[$KEY]}
|
||||
fi
|
||||
|
||||
# Play the corresponding audio message on all nodes
|
||||
for NODE in $NODES; do
|
||||
/usr/sbin/asterisk -rx "rpt localplay ${NODE} ${SCRIPT_DIR}/SOUNDS/ALERTS/${AUDIO_FILE%.*}"
|
||||
done
|
||||
else
|
||||
echo "The provided key does not match any configurable item."
|
||||
exit 1
|
||||
fi
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,146 @@
|
||||
#!/usr/bin/python3
|
||||
# SkyControl.py
|
||||
# A Control Script for SkywarnPlus v0.2.0
|
||||
# by Mason Nelson (N5LSN/WRKF394)
|
||||
#
|
||||
# This script allows you to change the value of specific keys in the SkywarnPlus config.yaml file.
|
||||
# It's designed to enable or disable certain features of SkywarnPlus from the command line.
|
||||
# It is case-insensitive, accepting both upper and lower case parameters.
|
||||
#
|
||||
# Usage: SkyControl.py <key> <value>
|
||||
# Example: SkyControl.py sayalert false
|
||||
# This will set 'SayAlert' to 'False' in the config.yaml file.
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import yaml
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
# Define a function to change the CT
|
||||
def changeCT(ct):
|
||||
tone_dir = config["CourtesyTones"].get("ToneDir", os.path.join(str(SCRIPT_DIR), "SOUNDS/TONES"))
|
||||
ct1 = config["CourtesyTones"]["Tones"]["CT1"]
|
||||
ct2 = config["CourtesyTones"]["Tones"]["CT2"]
|
||||
wx_ct = config["CourtesyTones"]["Tones"]["WXCT"]
|
||||
rpt_ct1 = config["CourtesyTones"]["Tones"]["RptCT1"]
|
||||
rpt_ct2 = config["CourtesyTones"]["Tones"]["RptCT2"]
|
||||
|
||||
if ct == "normal":
|
||||
src_file = os.path.join(tone_dir, ct1)
|
||||
dest_file = os.path.join(tone_dir, rpt_ct1)
|
||||
shutil.copyfile(src_file, dest_file)
|
||||
|
||||
src_file = os.path.join(tone_dir, ct2)
|
||||
dest_file = os.path.join(tone_dir, rpt_ct2)
|
||||
shutil.copyfile(src_file, dest_file)
|
||||
return True # Indicate that CT was changed to normal
|
||||
elif ct == "wx":
|
||||
src_file = os.path.join(tone_dir, wx_ct)
|
||||
dest_file = os.path.join(tone_dir, rpt_ct1)
|
||||
shutil.copyfile(src_file, dest_file)
|
||||
|
||||
src_file = os.path.join(tone_dir, wx_ct)
|
||||
dest_file = os.path.join(tone_dir, rpt_ct2)
|
||||
shutil.copyfile(src_file, dest_file)
|
||||
return False # Indicate that CT was changed to wx
|
||||
else:
|
||||
print("Invalid CT value. Please provide either 'wx' or 'normal'.")
|
||||
sys.exit(1)
|
||||
|
||||
# Define a function to change the ID
|
||||
def changeID(id):
|
||||
id_dir = config["IDChange"].get("IDDir", os.path.join(SCRIPT_DIR, "ID"))
|
||||
normal_id = config["IDChange"]["IDs"]["NormalID"]
|
||||
wx_id = config["IDChange"]["IDs"]["WXID"]
|
||||
rpt_id = config["IDChange"]["IDs"]["RptID"]
|
||||
|
||||
if id == "normal":
|
||||
src_file = os.path.join(id_dir, normal_id)
|
||||
dest_file = os.path.join(id_dir, rpt_id)
|
||||
shutil.copyfile(src_file, dest_file)
|
||||
return True # Indicate that ID was changed to normal
|
||||
elif id == "wx":
|
||||
src_file = os.path.join(id_dir, wx_id)
|
||||
dest_file = os.path.join(id_dir, rpt_id)
|
||||
shutil.copyfile(src_file, dest_file)
|
||||
return False # Indicate that ID was changed to wx
|
||||
else:
|
||||
print("Invalid ID value. Please provide either 'wx' or 'normal'.")
|
||||
sys.exit(1)
|
||||
|
||||
# Define valid keys and corresponding audio files
|
||||
VALID_KEYS = {
|
||||
"enable": {"key": "Enable", "section": "SKYWARNPLUS", "true_file": "SWP85.wav", "false_file": "SWP86.wav"},
|
||||
"sayalert": {"key": "SayAlert", "section": "Alerting", "true_file": "SWP87.wav", "false_file": "SWP88.wav"},
|
||||
"sayallclear": {"key": "SayAllClear", "section": "Alerting", "true_file": "SWP89.wav", "false_file": "SWP90.wav"},
|
||||
"tailmessage": {"key": "Enable", "section": "Tailmessage", "true_file": "SWP91.wav", "false_file": "SWP92.wav"},
|
||||
"courtesytone": {"key": "Enable", "section": "CourtesyTones", "true_file": "SWP93.wav", "false_file": "SWP94.wav"},
|
||||
"alertscript": {"key": "Enable", "section": "AlertScript", "true_file": "SWP81.wav", "false_file": "SWP82.wav"},
|
||||
"changect": {"key": "", "section": "", "true_file": "SWP79.wav", "false_file": "SWP80.wav", "available_values": ['wx', 'normal']},
|
||||
"changeid": {"key": "", "section": "", "true_file": "SWP77.wav", "false_file": "SWP78.wav", "available_values": ['WX', 'NORMAL']},
|
||||
}
|
||||
|
||||
# Get the directory of the script
|
||||
SCRIPT_DIR = Path(__file__).parent.absolute()
|
||||
|
||||
# Get the configuration file
|
||||
CONFIG_FILE = SCRIPT_DIR / "config.yaml"
|
||||
|
||||
# Check if the correct number of arguments are passed
|
||||
if len(sys.argv) != 3:
|
||||
print("Incorrect number of arguments. Please provide the key and the new value.")
|
||||
print("Usage: python3 {} <key> <value>".format(sys.argv[0]))
|
||||
sys.exit(1)
|
||||
|
||||
# The input key and value
|
||||
key, value = sys.argv[1:3]
|
||||
|
||||
# Make sure the provided key is valid
|
||||
if key not in VALID_KEYS:
|
||||
print("The provided key does not match any configurable item.")
|
||||
sys.exit(1)
|
||||
|
||||
# Validate the provided value
|
||||
if key in ["changect", "changeid"]:
|
||||
if value not in VALID_KEYS[key]["available_values"]:
|
||||
print("Invalid value for {}. Please provide either {} or {}".format(key, VALID_KEYS[key]['available_values'][0], VALID_KEYS[key]['available_values'][1]))
|
||||
sys.exit(1)
|
||||
else:
|
||||
if value not in ['true', 'false', 'toggle']:
|
||||
print("Invalid value. Please provide either 'true' or 'false' or 'toggle'.")
|
||||
sys.exit(1)
|
||||
|
||||
# Load the config file
|
||||
with open(str(CONFIG_FILE), 'r') as f:
|
||||
config = yaml.safe_load(f)
|
||||
|
||||
if key == 'changect':
|
||||
value = changeCT(value)
|
||||
elif key == 'changeid':
|
||||
value = changeID(value)
|
||||
else:
|
||||
# Convert the input value to boolean if not 'toggle'
|
||||
if value != 'toggle':
|
||||
value = value.lower() == 'true'
|
||||
|
||||
# Check if toggle is required
|
||||
if value == 'toggle':
|
||||
current_value = config[VALID_KEYS[key]['section']][VALID_KEYS[key]['key']]
|
||||
value = not current_value
|
||||
|
||||
# Update the key in the config
|
||||
config[VALID_KEYS[key]['section']][VALID_KEYS[key]['key']] = value
|
||||
|
||||
# Save the updated config back to the file
|
||||
with open(str(CONFIG_FILE), 'w') as f:
|
||||
yaml.dump(config, f)
|
||||
|
||||
# Get the correct audio file based on the new value
|
||||
audio_file = VALID_KEYS[key]['true_file'] if value else VALID_KEYS[key]['false_file']
|
||||
|
||||
# Play the corresponding audio message on all nodes
|
||||
nodes = config['Asterisk']['Nodes']
|
||||
for node in nodes:
|
||||
subprocess.run(['/usr/sbin/asterisk', '-rx', 'rpt localplay {} {}/SOUNDS/ALERTS/{}'.format(node, SCRIPT_DIR, audio_file.rsplit(".", 1)[0])])
|
||||
@ -1,176 +0,0 @@
|
||||
; SkywarnPlus v0.1.0 Configuration File
|
||||
; by Mason Nelson (N5LSN/WRKF394)
|
||||
; Please update this file according to your setup and preferences
|
||||
[SKYWARNPLUS]
|
||||
; Completely enable/disable SkywarnPlus
|
||||
Enable = True
|
||||
|
||||
; Asterisk Settings
|
||||
[Asterisk]
|
||||
; Comma separated list of node numbers to broadcast alerts on
|
||||
; Example: Nodes = 1998, 1999
|
||||
Nodes =
|
||||
|
||||
; Alerting settings
|
||||
[Alerting]
|
||||
; List of county codes to pull data for.
|
||||
; FIND YOUR COUNTY CODE(S) at https://alerts.weather.gov/
|
||||
; DO NOT USE ZONE CODES OR YOU WILL MISS ALERTS
|
||||
; See README.md for more information
|
||||
; Example: CountyCodes = ARC121,ARC021,ARC139,ARC027
|
||||
CountyCodes =
|
||||
|
||||
; Enable instant alerting when weather alerts change
|
||||
; Either True or False
|
||||
SayAlert = True
|
||||
|
||||
; Enable instant alerting when weather alerts are cleared
|
||||
; Either True or False
|
||||
SayAllClear = True
|
||||
|
||||
; Specify an optional maximum number of alerts to be processed.
|
||||
; SkywarnPlus will retrieve all local alerts from the NWS API
|
||||
; and order them by level of severity. This setting will cause
|
||||
; SkywarnPlus to only process the N most severe alerts.
|
||||
; e.g. If the alerts in your area are...
|
||||
; [Tornado Warning, Severe Thunderstorm Warning, Flood Watch, Special Weather Statement],
|
||||
; and MaxAlerts = 2, then SkywarnPlus will only process the Tornado Warning and Severe Thunderstorm Warning.
|
||||
; Example: MaxAlerts = 3
|
||||
;MaxAlerts =
|
||||
|
||||
; Optional alternate path to the directory where sound files are stored
|
||||
; Default is SkywarnPlus/SOUNDS
|
||||
; Example: SoundsPath = /home/repeater/
|
||||
;SoundsPath =
|
||||
|
||||
; Blocking settings
|
||||
[Blocking]
|
||||
; GLOBAL BLOCKING - These alerts will be completely ignored and filtered out of the entire SkywarnPlus workflow
|
||||
; CASE SENSITIVE list of events to ignore, comma separated. Wildcards can be used, e.g. *Statement, *Advisory
|
||||
; Example: GlobalBlockedEvents = *Statement, *Advisory
|
||||
GlobalBlockedEvents =
|
||||
|
||||
; SayAlert Blocking
|
||||
; These alerts will be blocked from being spoken when they are received
|
||||
; These alerts will still be added to the tailmessage
|
||||
; CASE SENSITIVE list of events to ignore, comma separated.
|
||||
; Example: SayAlertBlockedEvents = *Statement, *Advisory
|
||||
SayAlertBlockedEvents =
|
||||
|
||||
; Tailmessage Blocking
|
||||
; These alerts will be blocked from being added to the tailmessage
|
||||
; These alerts will still be spoken when they are received
|
||||
; CASE SENSITIVE list of events to ignore, comma separated.
|
||||
; Example: TailmessageBlockedEvents = *Statement, *Advisory
|
||||
TailmessageBlockedEvents =
|
||||
|
||||
; Tail message settings
|
||||
[Tailmessage]
|
||||
; REQUIRES SETUP IN RPT.CONF FIRST
|
||||
; REFER TO README.MD FOR MORE INFO
|
||||
; Enable building of tail message
|
||||
; Either True or False
|
||||
Enable = False
|
||||
|
||||
; Optional alternate path & filename where tail message should be saved
|
||||
; Default is SkywarnPlus/SOUNDS/wx-tail.wav
|
||||
; Example: TailmessagePath = /home/repeater/wx-tail.wav
|
||||
;TailmessagePath =
|
||||
|
||||
; Courtesy tone settings
|
||||
[CourtesyTones]
|
||||
; REQUIRES SETUP IN RPT.CONF FIRST
|
||||
; REFER TO README.MD FOR MORE INFO
|
||||
; Enable Automatic Courtesy Tone changing
|
||||
; Either True or False
|
||||
Enable = False
|
||||
|
||||
; Optional alternate directory where tone files are located
|
||||
; Default is SkywarnPlus/SOUNDS/TONES
|
||||
; Example: ToneDir = /home/repeater/TONES
|
||||
;ToneDir =
|
||||
|
||||
; Sound file to use for normal local courtesy tone
|
||||
; Example: LocalCT = BOOP.ulaw
|
||||
LocalCT = BOOP.ulaw
|
||||
|
||||
; Sound file to use for normal link courtesy tone
|
||||
; Example: LinkCT = BEEP.ulaw
|
||||
LinkCT = BEEP.ulaw
|
||||
|
||||
; Sound file to use for weather courtesy tone (local and link)
|
||||
; Example: WXCT = WX-CT.ulaw
|
||||
WXCT = WX-CT.ulaw
|
||||
|
||||
; Sound file rpt.conf is looking for as local courtesy tone
|
||||
; Example: RptLocalCT = CT-LOCAL.ulaw
|
||||
RptLocalCT = CT-LOCAL.ulaw
|
||||
|
||||
; Sound file rpt.conf is looking for as link courtesy tone
|
||||
; Example: RptLinkCT = CT-LINK.ulaw
|
||||
RptLinkCT = CT-LINK.ulaw
|
||||
|
||||
; CASE SENSITIVE, comma & newline separated list of alerts that trigger the WX courtesy tone
|
||||
CTAlerts = Hurricane Force Wind Warning,
|
||||
Severe Thunderstorm Warning,
|
||||
Tropical Storm Warning,
|
||||
Coastal Flood Warning,
|
||||
Winter Storm Warning,
|
||||
Thunderstorm Warning,
|
||||
Extreme Wind Warning,
|
||||
Storm Surge Warning,
|
||||
Dust Storm Warning,
|
||||
Avalanche Warning,
|
||||
Ice Storm Warning,
|
||||
Hurricane Warning,
|
||||
Blizzard Warning,
|
||||
Tornado Warning,
|
||||
Tornado Watch
|
||||
|
||||
; Pushover settings
|
||||
; Pushover is a free notification service that SkywarnPlus can use to send alerts
|
||||
; to your phone or other devices. Visit https://pushover.net/ to sign up for free
|
||||
[Pushover]
|
||||
; Enable Pushover integration
|
||||
; Either True or False
|
||||
Enable = False
|
||||
|
||||
; Your Pushover User Key
|
||||
UserKey =
|
||||
|
||||
; Your Pushover API Token
|
||||
APIToken =
|
||||
|
||||
; Enable more verbose Pushover messaging
|
||||
; Either True or False
|
||||
Debug = False
|
||||
|
||||
; Logging Options
|
||||
[Logging]
|
||||
; Enable more verbose logging
|
||||
; Either True or False
|
||||
Debug = False
|
||||
|
||||
; Optional alternate log file path
|
||||
; Default is /tmp/Skywarnplus/SkywarnPlus.log
|
||||
; Example: LogPath = /path/to/log/file
|
||||
;LogPath =
|
||||
|
||||
; Developer options
|
||||
[DEV]
|
||||
; Delete cached data on startup
|
||||
; Either True or False
|
||||
CLEANSLATE = False
|
||||
|
||||
; Optional alternate TMP directory
|
||||
; Default is /tmp/SkywarnPlus
|
||||
; Example: TmpDir = /home/repeater/tmp/SkywarnPlus
|
||||
;TmpDir = /tmp/SkywarnPlus
|
||||
|
||||
; Enable to inject the below list of test alerts instead of calling the NWS API
|
||||
INJECT = False
|
||||
|
||||
; CASE SENSITIVE, comma & newline separated list of alerts to inject
|
||||
INJECTALERTS = Tornado Warning,
|
||||
Tornado Watch,
|
||||
Severe Thunderstorm Warning
|
||||
@ -0,0 +1,259 @@
|
||||
# SkywarnPlus v0.2.0 Configuration File
|
||||
# Author: Mason Nelson (N5LSN/WRKF394)
|
||||
# Please edit this file according to your specific requirements.
|
||||
#
|
||||
# This config file is structured YAML. Please be sure to maintain the structure when editing.
|
||||
# YAML is very picky about indentation. Use spaces, not tabs.
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
SKYWARNPLUS:
|
||||
# Toggle the entire SkywarnPlus operation.
|
||||
# Set to 'True' to activate or 'False' to disable.
|
||||
# Example: Enable: true
|
||||
Enable: true
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
Asterisk:
|
||||
# List of node numbers for broadcasting alerts. Multiple nodes are specified as a list.
|
||||
# Example:
|
||||
# Nodes:
|
||||
# - 1998
|
||||
# - 1999
|
||||
Nodes:
|
||||
- YOUR_NODE_NUMBER_HERE
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
Alerting:
|
||||
# Specify the county codes for which you want to pull weather data.
|
||||
# Find your county codes at https://alerts.weather.gov/.
|
||||
# Make sure to use county codes ONLY, NOT zone codes, otherwise you might miss out on alerts.
|
||||
# Example:
|
||||
# CountyCodes:
|
||||
# - ARC121
|
||||
# - ARC021
|
||||
CountyCodes:
|
||||
- YOUR_COUNTY_CODE_HERE
|
||||
# Enable instant voice announcement when new weather alerts are issued.
|
||||
# Set to 'True' for enabling or 'False' for disabling.
|
||||
# Example: SayAlert: true
|
||||
SayAlert: true
|
||||
# Enable instant voice announcement when weather alerts are cleared.
|
||||
# Set to 'True' for enabling or 'False' for disabling.
|
||||
# Example: SayAllClear: true
|
||||
SayAllClear: true
|
||||
# Limit the maximum number of alerts to process in case of multiple alerts.
|
||||
# SkywarnPlus fetches all alerts, orders them by severity, and processes only the 'n' most severe alerts, where 'n' is the MaxAlerts value.
|
||||
# MaxAlerts:
|
||||
# Specify an alternative path to the directory where sound files are located.
|
||||
# Default is SkywarnPlus/SOUNDS.
|
||||
# SoundsPath:
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
Blocking:
|
||||
# List of globally blocked events. These alerts are ignored across the entire SkywarnPlus operation.
|
||||
# Use a case-sensitive list. Wildcards can be used.
|
||||
# Example:
|
||||
# GlobalBlockedEvents:
|
||||
# - Flood Watch
|
||||
# - *Statement
|
||||
# - *Advisory
|
||||
GlobalBlockedEvents:
|
||||
# List of events blocked from being announced when received. These alerts will still be added to the tail message.
|
||||
# Use a case-sensitive list.
|
||||
SayAlertBlockedEvents:
|
||||
# List of events blocked from being added to the tail message. These alerts will still be announced when received.
|
||||
# Use a case-sensitive list.
|
||||
TailmessageBlockedEvents:
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
Tailmessage:
|
||||
# Configuration for the tail message functionality. Requires initial setup in RPT.CONF.
|
||||
# Set 'Enable' to 'True' for enabling or 'False' for disabling.
|
||||
Enable: false
|
||||
# Specify an alternative path and filename for saving the tail message.
|
||||
# Default is SkywarnPlus/SOUNDS/wx-tail.wav.
|
||||
# TailmessagePath:
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
CourtesyTones:
|
||||
# Configuration for the Courtesy Tones. Requires initial setup in RPT.CONF.
|
||||
# Set 'Enable' to 'True' for enabling or 'False' for disabling.
|
||||
Enable: false
|
||||
# Specify an alternative directory where tone files are located.
|
||||
# Default is SkywarnPlus/SOUNDS/TONES.
|
||||
# ToneDir:
|
||||
# Define the sound files for various types of courtesy tones.
|
||||
Tones:
|
||||
# Audio file to feed Asterisk as ct1 in "normal" mode
|
||||
CT1: Boop.ulaw
|
||||
# Audio file to feed Asterisk as ct2 in "normal" mode
|
||||
CT2: Beep.ulaw
|
||||
# Audio file to feed Asterisk as ct1 AND ct2 in "wx" mode
|
||||
WXCT: Stardust.ulaw
|
||||
# The file rpt.conf is looking for as ct1
|
||||
RptCT1: CT1.ulaw
|
||||
# The file rpt.conf is looking for as ct2
|
||||
RptCT2: CT2.ulaw
|
||||
# Define the alerts that trigger the weather courtesy tone.
|
||||
# Use a case-sensitive list. One alert per line.
|
||||
CTAlerts:
|
||||
- Hurricane Force Wind Warning
|
||||
- Severe Thunderstorm Warning
|
||||
- Tropical Storm Warning
|
||||
- Coastal Flood Warning
|
||||
- Winter Storm Warning
|
||||
- Thunderstorm Warning
|
||||
- Extreme Wind Warning
|
||||
- Storm Surge Warning
|
||||
- Dust Storm Warning
|
||||
- Avalanche Warning
|
||||
- Ice Storm Warning
|
||||
- Hurricane Warning
|
||||
- Blizzard Warning
|
||||
- Tornado Warning
|
||||
- Tornado Watch
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
IDChange:
|
||||
# Configuration for Automatic ID Changing. Requires initial setup in RPT.CONF and manual creation of audio files.
|
||||
Enable: false
|
||||
# Specify an alternative directory where ID files are located.
|
||||
# Default is SkywarnPlus/SOUNDS/ID.
|
||||
# IDDir:
|
||||
# Define the sound files for normal ID and weather ID.
|
||||
IDs:
|
||||
# Audio file to feed Asterisk as ID in "normal" mode
|
||||
NormalID: NORMALID.ulaw
|
||||
# Audio file to feed Asterisk as ID in "wx" mode
|
||||
WXID: WXID.ulaw
|
||||
# Audio file rpt.conf is looking for as ID
|
||||
RptID: RPTID.ulaw
|
||||
# Define the alerts that trigger the weather ID.
|
||||
# Use a case-sensitive list. One alert per line.
|
||||
IDAlerts:
|
||||
- Hurricane Force Wind Warning
|
||||
- Severe Thunderstorm Warning
|
||||
- Tropical Storm Warning
|
||||
- Coastal Flood Warning
|
||||
- Winter Storm Warning
|
||||
- Thunderstorm Warning
|
||||
- Extreme Wind Warning
|
||||
- Storm Surge Warning
|
||||
- Dust Storm Warning
|
||||
- Avalanche Warning
|
||||
- Ice Storm Warning
|
||||
- Hurricane Warning
|
||||
- Blizzard Warning
|
||||
- Tornado Warning
|
||||
- Tornado Watch
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
AlertScript:
|
||||
# Completely enable/disable AlertScript
|
||||
Enable: false
|
||||
Mappings:
|
||||
# Define the mapping of alerts to either DTMF commands or bash scripts here.
|
||||
# Wildcards (*) can be used in the ALERTS for broader matches.
|
||||
# Examples:
|
||||
#
|
||||
# This entry will execute the bash command 'asterisk -rx "rpt fun 1999 *123*456*789"'
|
||||
# when the alerts "Tornado Warning" AND "Tornado Watch" are detected.
|
||||
#
|
||||
# - Type: DTMF
|
||||
# Nodes:
|
||||
# - 1999
|
||||
# Commands:
|
||||
# - '*123*456*789'
|
||||
# Triggers:
|
||||
# - Tornado Warning
|
||||
# - Tornado Watch
|
||||
# Match: ALL
|
||||
#
|
||||
# This entry will execute the bash command '/home/repeater/testscript.sh'
|
||||
# and the bash command '/home/repeater/saytime.sh' when an alert whose
|
||||
# title ends with "Statement" is detected.
|
||||
#
|
||||
# - Type: BASH
|
||||
# Commands:
|
||||
# - '/home/repeater/testscript.sh'
|
||||
# - '/home/repeater/saytime.sh'
|
||||
# Triggers:
|
||||
# - *Statement
|
||||
#
|
||||
# This entry will execute the bash command 'asterisk -rx "rpt fun 1998 *123*456*789"'
|
||||
# and the bash command 'asterisk -rx "rpt fun 1999 *123*456*789"' when an alert
|
||||
# titled "Tornado Warning" OR "Tornado Watch" is detected.
|
||||
#
|
||||
# - Type: DTMF
|
||||
# Nodes:
|
||||
# - 1998
|
||||
# - 1999
|
||||
# Commands:
|
||||
# - '*123*456*789'
|
||||
# Triggers:
|
||||
# - Tornado Warning
|
||||
# - Tornado Watch
|
||||
#
|
||||
# This entry will execute the bash command 'asterisk -rx "rpt fun 1999 *123*456*789"'
|
||||
# and the bash command 'asterisk -rx "rpt fun 1999 *987*654*321"'
|
||||
# when an alert titled "Tornado Warning" OR "Tornado Watch" is detected.
|
||||
#
|
||||
# - Type: DTMF
|
||||
# Nodes:
|
||||
# - 1999
|
||||
# Commands:
|
||||
# - '*123*456*789'
|
||||
# - '*987*654*321'
|
||||
# Triggers:
|
||||
# - Tornado Warning
|
||||
# - Tornado Watch
|
||||
# Match: ANY
|
||||
#
|
||||
- Type: BASH
|
||||
Commands:
|
||||
- 'echo "Tornado Warning detected!"'
|
||||
Triggers:
|
||||
- Tornado Warning
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
Pushover:
|
||||
# Configuration for Pushover integration. Pushover is a free notification service. Register at https://pushover.net/.
|
||||
Enable: false
|
||||
# Provide your user key obtained from Pushover.
|
||||
UserKey:
|
||||
# Provide the API token obtained from Pushover.
|
||||
APIToken:
|
||||
# Enable verbose messaging
|
||||
Debug: false
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
Logging:
|
||||
# Enable verbose logging
|
||||
Debug: false
|
||||
# Specify an alternative log file path.
|
||||
# LogPath:
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
DEV:
|
||||
# Delete cached data on startup
|
||||
CLEANSLATE: false
|
||||
# Specify the TMP directory.
|
||||
TmpDir: /tmp/SkywarnPlus
|
||||
# Enable test alert injection instead of calling the NWS API by setting 'INJECT' to 'True'.
|
||||
INJECT: false
|
||||
# List the test alerts to inject. Use a case-sensitive list. One alert per line.
|
||||
INJECTALERTS:
|
||||
- Tornado Warning
|
||||
- Tornado Watch
|
||||
- Severe Thunderstorm Warning
|
||||
Loading…
Reference in new issue