Niagara Webhooks

Bypass inbound firewalls by pushing station data to developers and third-party web services including Zapier and IFTTT
Niagara Webhooks Screenshot

$300

Overview

Niagara Webhooks is a module that securely transmits station data to any internet server.

Webhooks makes it easy to send your data anywhere as JSON, the most-used format on the web. Any control point in your network can be selected for inclusion in the data that is sent: provide the component with a URL, set a trigger or use the built-in timer, and your data is securely delivered.

Niagara Webhooks Removes Obstacles

Getting Niagara data to developers and third-party web services can be complex and insecure. It includes either exposing your station data publicly to the open internet or setting aberrant station security options and working with developers who understand Niagara. Systems with VPN requirements or behind inbound firewalls add additional layers of complexity and, in some cases, prevent sharing data all together.

With Niagara Webhooks your data is sent to third parties instead of them accessing it directly. This completely removes the need for login credentials on the station side and allows you to bypass any inbound firewall rules on the network.

Secure

Data is pushed out and never accessed by third parties until it hits their server. There is no need to provide access to your Niagara station to third parties.

Effortless

No need to create and manage special users and privileges in your station. Just drop in the Webhooks component, enter a URL, and select your points.

Circumvent Roadblocks

If your station is stuck behind a VPN or firewall, pushing data out may be the only way to get it to a third party.

Frequently Asked Questions

Is there a free trial offer?

Yes. Simply download and install the module on your system.

An unlicensed/trial version of Niagara Webhooks will allow you to push up to 5 points to a server at a limit of 15 minutes in between pushes. You can do this up to 10 times before the component will no longer function. You can delete the component from your station and add it again if you wish to test more than 10 times. If you need a larger or more thorough trial to test your speicifc environment get in touch with us and can discuss additional options.

Are there any point limits?

No. A fully licensed version of Niagara Webhooks puts no limits on the amount of points you can send. It should be noted that a developer or web service may limit the amount of data you are able to send to their URL.

Unlicensed/trial copies of Niagara Webhooks limit users to sending a maximum of 5 points every 15 minutes up to 10 times before the component ceases to function. You can try additional times by removing the component from your station and readding it.

Will my data be encrypted when it's pushed?
Yes. You can send encrypted data by making sure the URL you're sending data to begins with "https". This will use standard SSL encryption during communication with a third party – the same kind used for online banking and e-commerce. Unencrypted data can also be sent by using the standard "http" protocol if your third party does not support encryption.
How do I select which points are sent in the Webhooks push?
You can add points to your data by dragging the WebookExt under the point - similarly to how you would add a History or Proxy extension. See the Usage section for detailed instructions.
How do I use my data in IFTTT?
NiagaraWebhooks works out of the box with IFTTT (If This, Then That - IFTTT.com). However there are limitations imposed by this service.

IFTTT only allows three values to be sent to their Webhooks service and they must be labled value1, value2, and value3. To specify which points are sent as those values, open the Property Sheet of the WebhookExt under your point and change the ITTTValue property from None to the value you wish to send.
How do I use my data in Zapier?
If you need 3 or less values to come in to Zapier, you can follow the same instructions as you would for IFTTT. Set the ITTTValue from None to value1, value2, and value3 in the WebhooksExt of your point. Those properties available in the Zapier Webhook trigger.

If you have more than three values and/or want to have access to additional information like point name, handle, or slot path, follow the instructions below. In this method, each point will run the Zap one time.

  1. In Zapier, create a new Zap. Select Webhooks as your Trigger App.
  2. Select the Catch Hook option, then click Save + Continue.
  3. Copy the URL in the textbox and paste it in as the ServerURL property of the NiagaraModsWebhooks component in Niagara. Click the Save button.
  4. Right-click on the NiagaraModsWebhooks and go to Actions > Push Data.
  5. Expand the ConnectionHealth component and ensure that your push was successful
  6. Back on Zapier, click the Ok, I did this button and you should see your data is selected.
  7. Click the Continue button
  8. In the left Zap menu, under 1. Trigger, click Edit Options
  9. In the textbox type in values and click the Continue button
  10. Your Trigger is now setup succesfully in Zapier. You should push your data again to ensure you get access to the right properties while setting up the rest of your Zap, each value sent will run your Zap once.
Can I change the names of the points that are sent?
Yes. The WebhookExt includes a property called "Name Override" that will use the name you specify instead of the point name when data is sent.
What format is the data that is sent to the web server?
The data from Niagara Webhooks is sent to a web server in the JSON format. To view an example of the JSON data, see the JSON Example section.
Is any additional data sent to the web server?
Yes. In addition to the points you have configured, Niagara Webhooks sends a small amount of metadata including the station's version of Niagara, the station's Host ID, and the version of the Niagara Webhooks module. To view an example of the JSON data that is sent, see the JSON Example section.
Why are there security warnings in the Application Director when I start my station?

Niagara Webhooks requires a special privilege in Niagara called NETWORK_COMMUNICATION. This permission allows the module to send the point data you've setup to any web address that you provide.

Niagara Webhooks only pushes data to the server you have specified. Neither point data, nor any additional data including usage data, analytics, etc. is sent to any third party server or to NiagaraMods.

Which versions of Niagara does Niagara Webhooks support?
Niagara Webhooks supports Niagara 4.6 and above.
Is Niagara Webhooks available for Niagara AX?
No. At this time there are no plans to support Niagara AX.

Usage

Before following along, make sure that you download, install, and (optionally) license Niagara Webhooks.

  1. Open the Niagara Webhooks palette in Workbench and connect to your station.
  2. Drag the NiagaraWebhooksService from the palette to your Config > Services folder in your station nav tree
  3. Double-click on the NiagaraWebhooksService in your Config > Services folder to open the property sheet.
  4. Set the Server URL property to the URL you want to push your data to (this should be provided by a developer or the third-party service you're using).
  5. Drag the WebhooksExt from your palette to any point you wish to include in the data that is pushed. You can add the WebhooksExt to any control point or to any folder and Webhooks will automatically find all control points in that folder (but will not look in subfolders).

    In the first example above, WebhooksExt has been dragged on an individual point. This point will be included in the data that is sent on the next push.

    In the second example, a WebhooksExt has been dragged on a folder that includes many points. All four points in the root of the folder will be sent on the next push. Note that the subfolder named "Won't be pushed" and its only point "PointNotIncluded" will not be pushed because the WebhooksExt only looks for points in the root folder.

  6. You can test your Webhooks data to see if it is pushing properly by right-clicking on the NiagaraWebhooksService and going to Actions > Push Data in the menu. You can expand the Connection Health component in the properties sheet to view the details of your last push, including if it was successful and any error messages that were returned.
  7. Verify with your developer or on the third party service that they received the data as expected
  8. To push your data automatically at specific intervals, set the Push Interval property to the time value you wish to push. Then, set the Service State from "Paused" to "Active" and save your changes. You should now notice the Push Countdown property ticking down every second.
  9. If you do not want to push your data at a specific interval, leave the Service State set to "Paused" and setup your custom logic to trigger the Push Data action on the NiagaraWebhooksService when you want your data to be sent.

Example JSON

Below is an example of the JSON data pushed from Niagara Webhooks. It mirrors the point setup in Step #5 in the Usage section.

{
    "metadata": {
        "hostId": "Win-1234-5E7B-9A23-EFG1",
        "serviceVersion": "1.0.0",
        "niagaraVersion": "4.6.96.28.1"
    },
    "values": [
        {
            "name": "NumericWritable",
            "path": "/Points$20Folder/NumericWritable",
            "type": "number",
            "value": 200,
            "handle": "397d",
            "systemType": "control:NumericWritable"
        },
        {
            "name": "BooleanWritable",
            "path": "/Points$20Folder/BooleanWritable",
            "type": "boolean",
            "value": true,
            "handle": "39ee",
            "systemType": "control:BooleanWritable"
        },
        {
            "name": "EnumWritable",
            "path": "/Points$20Folder/EnumWritable",
            "type": "enum",
            "value": "anotherEnumTest",
            "handle": "39f0",
            "systemType": "control:EnumWritable"
        },
        {
            "name": "StringWritable",
            "path": "/Points$20Folder/StringWritable",
            "type": "string",
            "value": "testingStringWritable",
            "handle": "39f2",
            "systemType": "control:StringWritable"
        },
        {
            "name": "NumericFromFolder1",
            "path": "/Points$20Folder/Points$20Folder/NumericFromFolder1",
            "type": "number",
            "value": 0,
            "handle": "3a2f",
            "systemType": "control:NumericWritable"
        },
        {
            "name": "NumericFromFolder2",
            "path": "/Points$20Folder/Points$20Folder/NumericFromFolder2",
            "type": "number",
            "value": 0,
            "handle": "3a31",
            "systemType": "control:NumericWritable"
        },
        {
            "name": "NumericFromFolder3",
            "path": "/Points$20Folder/Points$20Folder/NumericFromFolder3",
            "type": "number",
            "value": 0,
            "handle": "3a71",
            "systemType": "control:NumericWritable"
        },
        {
            "name": "NumericFromFolder4",
            "path": "/Points$20Folder/Points$20Folder/NumericFromFolder4",
            "type": "number",
            "value": 0,
            "handle": "3a73",
            "systemType": "control:NumericWritable"
        }
    ]
}          
                

Have a question? Find a bug?

You can connect with us via the chat bubble below or feel free to send us a detailed description of your problem and we’ll get back to you.