# SkywarnPlus v0.4.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 SkywarnPlus operation entirely.
  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

  # Optional silence to be added to the beginning of any audio files generated by SkywarnPlus.
  # This is useful for radio systems that require additional time to key up, such as RF links.
  # Silence is specified in milliseconds.
  AudioDelay: 0

################################################################################################################################

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:
  #   - ARC125
  #   - ARC119
  #
  # SkywarnPlus allows adding county-specific audio indicators to each alert in the message.
  # To enable this feature, specify an audio file containing a recording of the county name in the
  # ROOT of the SOUNDS/ directory as shown in the below example. You must create these files yourself.
  # You can use the same VoiceRSS API used for SkyDescribe (see below) to generate these files with a synthetic voice:
  # http://api.voicerss.org/?key=[YOUR_API_KEY_HERE]&hl=en-us&f=8khz_16bit_mono&v=John&src=[YOUR COUNTY NAME HERE]
  # http://api.voicerss.org/?key=1234567890QWERTY&hl=en-us&f=8khz_16bit_mono&v=John&src=Saline County
  # Example:
  # CountyCodes:
  #   - ARC125: "Saline.wav"
  #   - ARC119: "Pulaski.wav"
  CountyCodes:
    - YOUR_COUNTY_CODE

  # Enable instant voice announcement when new weather alerts are issued.
  SayAlert: true

  # When a change is detected, make SayAlert say ALL of the currently active alerts, not just newly detected one(s)
  SayAlertAll: false

  # Specify the WAV file in the SOUNDS/ALERTS directory to use as the alert sound effect
  AlertSound: Duncecap.wav

  # Specify a WAV file in the root of the SOUNDS directory to be appended to the end of the alert message.
  SayAlertSuffix:

  # Enable instant voice announcement when weather alerts are cleared.
  SayAllClear: true

  # Specify the WAV file in the SOUNDS/ALERTS directory to use as the all clear sound effect.
  AllClearSound: Triangles.wav

  # Specify a WAV file in the root of the SOUNDS directory to be appended to the end of the all clear message.
  SayAllClearSuffix:
  
  # Specify the WAV file in the SOUNDS/ALERTS directory to use as the alert seperator sound effect
  AlertSeperator: Woodblock.wav

  # 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: 99

  # Specify an alternative path to the directory where sound files are located.
  # Default is SkywarnPlus/SOUNDS.
  SoundsPath: /usr/local/bin/SkywarnPlus/SOUNDS

  # 'TimeType' Configuration
  #
  # This setting determines the timing reference for issuing weather alerts.
  # You can choose between "onset" and "effective" time.
  #
  # 'onset': Alerts are issued based on the predicted start time of the event.
  # This means the system will only send out alerts when the events are imminent.
  # For example, even though a "Heat Advisory" can be forecasted accurately a day or two in advance,
  # the alert will only be sent close to the actual occurrence of the event.
  #
  # 'effective': Alerts are sent as soon as they are received, based on the effective time of the alert message.
  # The "effective" time is when the alert message is considered to be in effect,
  # which could be significantly earlier than the actual onset of the event.
  #
  # By using 'onset', you can ensure that alerts are relevant and timely for the recipients.
  TimeType: onset

################################################################################################################################

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.

  # Enable/disable automatic tail message.
  Enable: true

  # Specify a WAV file in the root of the SOUNDS directory to be appended to the end of the tail message.
  TailmessageSuffix:

  # Enable to add county indicators to the tail message
  # County indicators must FIRST be configured in the Alerting section where county codes are defined.
  # NOTE: This can make your tail message quite long depending on how many counties you have configured.
  TailmessageCounties: false

  # Specify an alternative path and filename for saving the tail message.
  # Default is /tmp/SkywarnPlus/wx-tail.wav.
  TailmessagePath: /tmp/SkywarnPlus/wx-tail.wav

################################################################################################################################

CourtesyTones:
  # Configuration for automatic CT changing. Requires initial setup in RPT.CONF.

  # Enable/disable automatic courtesy tones.
  Enable: false

  # Specify an alternative directory where tone files are located.
  # Default is SkywarnPlus/SOUNDS/TONES.
  ToneDir: /usr/local/bin/SkywarnPlus/SOUNDS/TONES

  # Define the sound files for 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 "wx" courtesy tone.
  # Use a case-sensitive list. One alert per line.
  CTAlerts:
    - Ashfall Warning
    - Avalanche Warning
    - Blizzard Warning
    - Blowing Dust Warning
    - Civil Danger Warning
    - Civil Emergency Message
    - Coastal Flood Warning
    - Dust Storm Warning
    - Earthquake Warning
    - Evacuation - Immediate
    - Extreme Wind Warning
    - Fire Warning
    - Hazardous Materials Warning
    - Hurricane Force Wind Warning
    - Hurricane Warning
    - Ice Storm Warning
    - Law Enforcement Warning
    - Local Area Emergency
    - Nuclear Power Plant Warning
    - Radiological Hazard Warning
    - Severe Thunderstorm Warning
    - Shelter In Place Warning
    - Storm Surge Warning
    - Tornado Warning
    - Tornado Watch
    - Tropical Storm Warning
    - Tsunami Warning
    - Typhoon Warning
    - Volcano Warning
    - Winter Storm Warning

################################################################################################################################

IDChange:
  # Configuration for Automatic ID Changing. Requires initial setup in RPT.CONF and manual creation of audio files.

  # Enable/disable automatic ID changing.
  Enable: false

  # Specify an alternative directory where ID files are located.
  # Default is SkywarnPlus/SOUNDS/ID.
  IDDir: /usr/local/bin/SkywarnPlus/SOUNDS/ID

  # Define the sound files for IDs.
  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:
    - Ashfall Warning
    - Avalanche Warning
    - Blizzard Warning
    - Blowing Dust Warning
    - Civil Danger Warning
    - Civil Emergency Message
    - Coastal Flood Warning
    - Dust Storm Warning
    - Earthquake Warning
    - Evacuation - Immediate
    - Extreme Wind Warning
    - Fire Warning
    - Hazardous Materials Warning
    - Hurricane Force Wind Warning
    - Hurricane Warning
    - Ice Storm Warning
    - Law Enforcement Warning
    - Local Area Emergency
    - Nuclear Power Plant Warning
    - Radiological Hazard Warning
    - Severe Thunderstorm Warning
    - Shelter In Place Warning
    - Storm Surge Warning
    - Tornado Warning
    - Tornado Watch
    - Tropical Storm Warning
    - Tsunami Warning
    - Typhoon Warning
    - Volcano Warning
    - Winter Storm Warning

################################################################################################################################

SkyDescribe:
  # SkyDescribe is a feature that allows you to request a detailed description of a weather alert.
  # VoiceRSS is a free service that SkyDescribe requires to function. You must obtain an API key from VoiceRSS.org.
  # MAKE SURE YOU VERIFY YOUR EMAIL ADDRESS WITH VOICERSS.ORG OR YOUR API KEY WILL NOT WORK.

  # API Key for VoiceRSS.org
  APIKey: YOUR_API_KEY_HERE

  # VoiceRSS language code
  Language: en-us

  # VoiceRSS speech rate. -10 is slowest, 10 is fastest.
  Speed: 1

  # VoiceRSS voice profile. See VoiceRSS.org/api/ for more information.
  Voice: John

  # Maximum number of words to be spoken by SkyDescribe.
  # CAUTION: Setting this value too high may cause SkyDescribe to exceed the timeout timer of your node.
  # ~130 words is around 60 seconds at Speed: 0.
  MaxWords: 150

################################################################################################################################

AlertScript:
  # AlertScript allows you to map BASH or DTMF commands to be executed when a weather alert is detected.

  # Completely enable/disable AlertScript
  Enable: false

  Mappings:
    # Define the mapping of alerts to either DTMF commands or bash scripts here.
    # Examples:
    #
    #Example 1:
    # 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
    #
    # Example 2:
    # 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"
    #
    # Example 3:
    # 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
    #
    # Example 4:
    # 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
    #
    # Example 5:
    # This is an example entry that will automatically execute SkyDescribe and
    # announce the full details of a Tornado Warning when it is detected.
    # The placeholder '{alert_title}' will be replaced with the title of the alert
    # when AlertScript executes the command.
    - Type: BASH
      Commands:
        - '/usr/local/bin/SkywarnPlus/SkyDescribe.py "{alert_title}"'
      Triggers:
        - Tornado Warning

################################################################################################################################

Pushover:
  # Configuration for Pushover integration. Pushover is a free notification service. Register at https://pushover.net/.

  # Enable/disable Pushover integration.
  Enable: false

  # Provide your user key obtained from Pushover.
  UserKey: YOUR_USER_KEY_HERE

  # Provide the API token obtained from Pushover.
  APIToken: YOUR_API_KEY_HERE

  # Enable verbose messaging
  Debug: false

################################################################################################################################

Logging:
  # Configuration for logging.

  # Enable verbose logging
  Debug: false

  # Specify an alternative log file path.
  LogPath: /tmp/SkywarnPlus/SkywarnPlus.log

################################################################################################################################

DEV:
  # Configuration for development and testing.

  # Delete cached data on startup
  CLEANSLATE: false

  # Specify the TMP directory.
  TmpDir: /tmp/SkywarnPlus

  # Write alert titles to /tmp/AUTOSKY/warnings.txt for Supermon backwards compatibility.
  SupermonCompat: true

  # 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