NWS Emergency Alerts

I have three TV monitors running Windows 10 with Windows Xibo Player (R404.1) on our shop floor. I recently updated CMS to version 4.2.0 (Docker [Windows 10]) because of the emergency alerts feature. I love this option because we are in a metal building and don’t have cell service for emergency alerts.

I have configured the National Weather Service Connector using the following:
https://api.weather.gov/alerts/active (followed by lat, long coordinates)

Everything seems to be updating in CMS with the correct information, however; to update the players I have to manually:

  1. open the layout for the appropriate alert. “Checkout” then “Publish”
  2. refresh the schedule
  3. “Collect Now” on each display TV
    It doesn’t seem to want to update automatically

My current setup:
-One full time layout that shows a vacation calendar, logo, announcements and a playlist that cycles through a few pictures.
-An overlay layout showing National Weather Service emergency alerts filter by “Moderate” (to display a small popup window with yellow background). I have a schedule that overlays this when Criteria=“Emergency Alerts>Status>Equal to> Actual Event”
-Another set severity to “Severe” (to display a small popup window with a red background)
-Another set severity to “Extreme” (take over screen, display event information, display text “take cover etc…”

-NWS alert update interval: 1 min.
-Collect interval for displays: 5 min.

All computers are connected to fast/reliable internet (for the most part) and are on the same network

Any advice would be greatly appreciated.

I believe I fixed my issue by updating the XMR Public Address. Changed from the example address to tcp://(my ip address):9505. Seems to be updating fine now.

1 Like

Thanks for following up with the answer - you’re right that the Emergency Alerts connector uses XMR to PUSH the alert triggers down to the player, so it won’t work if (XMR) push messaging isn’t working.

Hi Dan,
I thought I had this worked out, but I am still having issues (hard to test without actual alerts). Yesterday afternoon we had a tornado watch that turned into a severe thunderstorm warning (with watch still activiated). The tornado watch appeared fine under the schedule “non-critical” but when the severe thunderstorm warning was activated, the non-critical schedule disappeared, and the “Severe” schedule never appeared. I believe I have this setup to prioritize severe events over non severe events. Could someone take a look at my schedules below to see if this is how Xibo emergency alerts are set up, or if the three overlays are fighting each other? Unfortunately, this feature is so new, I can’t find any documentation. Thanks!

@Nadz please can you have a look?

Hi @jkissel, If you’re using Xibo’s Windows Player, unfortunately, it doesn’t support the Schedule Criteria feature.

Your emergency alert setup is correct, but due to this limitation, even if the CMS pushes a new criteria via XMR, the Windows players won’t be able to evaluate and trigger layouts based on the updated criteria. This means the layouts won’t switch dynamically as expected.

Currently, the players that support Schedule Criteria are Android, Tizen, and WebOS.

Thanks for the update @Nadz. I appreciate the help.

1 Like

@Nadz do you think this could be implemented in the next release? Or is this a Windows related issue?

Hi @jkissel, just to clarify, the NWS Emergency Alerts is already implemented in the CMS. But since it relies on the Schedule Criteria feature, and that’s not yet supported by the Windows Player, the layouts won’t switch dynamically on that platform.

This is not really an issue or a bug. It’s just a current limitation specific to the Windows Player. Support for this is expected to be included in a future update as the player continues to receive improvements.

Hi @Nadz , I just noticed that V4 R405 for Windows had been released with schedule criteria features. Do you think this will fix my problem? Can you think of a way I could test this without waiting for the next storm?

Hi @jkissel, you can try using a static .xml file to simulate CAP alerts.

Just save the example below as nws.xml and put it to your CMS’s /web/userscripts/ directory. Then access it via yourCmsUrl/userscripts/nws.xml to test.

You can edit the values in the XML (e.g., <cap:status>, <cap:event>, etc.) to suit your testing requirements.

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:cap="urn:oasis:names:tc:emergency:cap:1.2">
    <id>https://example.com/alerts</id>
    <title>Sample Weather Alerts Feed</title>
    <updated>2025-01-01T00:00:00-00:00</updated>
    <author>
        <name>Sample Weather Service</name>
    </author>
    <entry>
        <id>urn:oid:1.23.4.5.6.7.2025.1.1.0.0.0</id>
        <title>Test Alert for Sample Region</title>
        <updated>2025-01-01T00:00:00-00:00</updated>
        <published>2025-01-01T00:00:00-00:00</published>
        <author>
            <name>Sample Weather Service</name>
        </author>
        <summary type="text">This is a test alert for a sample region to demonstrate CAP XML formatting.</summary>
        <link href="https://example.com" />
        <cap:alert>
            <cap:identifier>urn:oid:1.23.4.5.6.7.2025.1.1.0.0.0</cap:identifier>
            <cap:sender>alerts@example.com</cap:sender>
            <cap:sent>2025-01-01T00:00:00-00:00</cap:sent>
            <cap:status>Test</cap:status>
            <cap:msgType>Alert</cap:msgType>
            <cap:scope>Public</cap:scope>
            <cap:info>
                <cap:language>en</cap:language>
                <cap:category>Met</cap:category>
                <cap:event>Sample Weather Event</cap:event>
                <cap:urgency>Expected</cap:urgency>
                <cap:severity>Minor</cap:severity>
                <cap:certainty>Likely</cap:certainty>
                <cap:senderName>Sample Weather Service</cap:senderName>
                <cap:headline>Test Alert for Sample Region</cap:headline>
                <cap:description>This is a sample description for a simulated weather alert. No real-world action is required.</cap:description>
                <cap:instruction>This is only a test. No action is needed. For questions, contact your test admin.</cap:instruction>
                <cap:web>https://example.com</cap:web>
                <cap:contact>alerts@example.com</cap:contact>
                <cap:resource>
                    <cap:resourceDesc>Sample image</cap:resourceDesc>
                    <cap:mimeType>jpeg</cap:mimeType>
                    <cap:uri>https://example.com/images/sample.jpg</cap:uri>
                </cap:resource>
                <cap:area>
                    <cap:areaDesc>Sample Region</cap:areaDesc>
                    <cap:polygon>0.0,0.0 0.0,1.0 1.0,1.0 1.0,0.0 0.0,0.0</cap:polygon>
                </cap:area>
            </cap:info>
        </cap:alert>
    </entry>
</feed>

After confirming it works:

  • Go to Applications
  • Locate the National Weather Service Connector
  • Click Configure
  • Set the NWS Atom Feed URL to yourCmsUrl/userscripts/nws-test.xml
  • Save your changes
  • Now test the NWS widget in a layout and schedule it accordingly.

Note: Once you’re done testing, don’t forget to revert the NWS Atom Feed URL back to the original value:
https://api.weather.gov/alerts/active.atom

@Nadz I’m having trouble with “access it via yourCmsUrl/userscripts.nws.xml to test”. I’ve created a text file with the example you provided, then renamed .xml within the web/userscripts folder as shown in the picture below.

image

When I try to access it with “http://localhost:8081/userscripts/nws.xml” I get a return “sorry we could not find that page” (picture below). I’m not sure what I am missing. Is this folder specific? Am I typing in that url correctly?

I really appreciate all your help with this!

Hi @Nadz, I’ll answer my own question. I ended up creating a repository from GitHub and pull a Raw link to the NWS connector. This is great, thank you!

The only other issue I’m seeing is that it takes about 4-1/2 minutes from the time I edit the file to it appearing on the screens. The player also doesn’t want to remove it from the screen after I change the CAP file. It’s been 35 minutes now…

I have update interval within the widgets set to 1 minute and the NWS module default duration set to 5 minutes. Do you know of anything else I can do to speed things up? Or is this about normal?

Again, thank you for all the help!

Hi @jkissel,

I’m glad you could work it out. Just a quick note, the files in the /web directory is not folder specific. the reason for the userscripts directory is to organize the custom files. You could place it in the root of the /web directory if you want and you should be able to load it with localhost:8081/nws.xml.

The delay between editing the file and seeing it on screen is due to the Widget Sync Task, which runs every 5 minutes. Among other things, this task retrieves alerts from the endpoint configured in the connector. If it finds an alert that matches your schedule criteria, the CMS sends it to the player, which then triggers the layout to play. So even if you change the file, you’ll need to wait for the next 5-minute cycle for the CMS to fetch the updated alert and push it to the player.

As for when it ends, the layout should automatically be removed from the screen after its duration is finished. The layout duration is based on the widget with the highest duration which you can configure in the Advance tab.