Monitoring Proxy
Use the Monitoring Proxy component to allow a third-party device to report its status to the Status > Inventory list, which is viewable not only in Q-SYS Core Manager, but remotely in Q-SYS Reflect Enterprise Manager. In addition, you can use the component to trigger custom log events – for example, from a scripting component.
Note: Each instance of Monitoring Proxy consumes a Q-SYS Reflect Enterprise Manager Peripheral license. To check the remaining number of peripherals allowed by your Enterprise Manager subscription, go to the Organizations section within Enterprise Manager. For more information, see the Enterprise Manager Help.
- Monitoring Proxy allows a third-party device to become an Inventory item in your design. When you connect Monitoring Proxy to an upstream Status control pin, that status is then viewable locally in Core Manager and remotely in Enterprise Manager.
- Monitoring Proxy also allows you to submit log entries for the third-party device to the Core's Event Log. Events from Monitoring Proxy are then viewable in the Enterprise Manager Event Log.
Tip: Log output from scripting components (for example, Block Controller) and entries submitted to the Event Log from the Event Logger component do not appear in Enterprise Manager Event Log. Use Monitoring Proxy to allow logging from these components in Enterprise Manager.
Input Pins
Status Input
By default, Monitoring Proxy includes a single input control pin. Wire this pin to an upstream component's Status control pin. The Status Input pin receives the complete, extended status from the upstream component and passes it to Status > Inventory list in Core Manager and Enterprise Manager. For more information, see Controls.
Output Pins
This component does not have standard output pins.
To configure Monitoring Proxy to send the status of a third-party device to the Status > Inventory list in Core Manager and Enterprise Manager:
- From the Inventory > Peripherals menu, select Monitoring Proxy.
- Define your third-party device's Name (for example, "Conf-Room-TV"), Manufacturer (required), Model (required), and Type. See Properties.
- Drag the Monitoring Proxy's Status/Control component into the schematic.
- Wire the Status Input pin to the Status pin of an upstream component. For example, this could be an upstream Monitor category component (Ping, SNMP Query) or a script you have written for this third-party device.
- Press F5 to save your design to the Core and run it.
- Double-click the Monitoring Proxy component to open its control panel. The Status field indicates your third-party device status, which is now being sent to the Status > Inventory list in Core Manager and, with a subscription, Enterprise Manager.
Tip: You can also submit custom log entries to the Core's Event Log. To learn how, see Schematic Examples.
Monitor a Third-Party Device's Network Connectivity
In this example, Monitoring Proxy is used to check the status of a network-connected TV. A Ping component is configured to check the TV's network connectivity every second. If the ping is successful, the status is reported as OK. If the ping fails, a Fault is generated, indicating that the device may be having an issue. The device status is sent to the Core's Status > Inventory list, which is easily viewed locally in Core Manager and remotely in Enterprise Manager.
Monitor Device Status and Send Log Entries
In this example, a Ping component monitors the TV's network connectivity (as with the previous example), and a Block Controller component is configured to control the TV and write log entries to the Event Log. The following Monitoring Proxy control pins are used:
- Log Entry (Input): Receives the log entry text from the script output.
- Severity (Input): Receives the severity text from the script output. See Controls for valid severity strings.
- Trigger (Input): Receives the trigger signal from the script to submit the log entry to the Event Log.
- Ready (Output): The Ready LED determines if the Monitoring Proxy can receive a log entry. This is fed back into the script as a condition of triggering a log event only when the LED's value is '1' (string is 'true'). See Controls to understand what determines the Ready state.
Tip: See the Scripting Example for details of using a scripting component to monitor and send log event entries for a third-party device.
This example shows the details of how a scripting component communicates with Monitoring Proxy for status monitoring and event logging.
Control Elements
A Text Controller ("Status and Events") includes the following control elements:
Text Boxes
- Monitoring Proxy Component Name: Required custom name given to the Monitoring Proxy component to allow for scripted control.
- Device Name: Text applied to the beginning of each Event Log entry statement.
- Status: Selects the Status condition to report in Core Manager and Enterprise Manager.
- Status Message: Optional message to report with a Status condition.
- Event Severity: Selects the Severity associated with the Event Log entry.
- Event Log Entry: Message to follow the Device Name for an Event Log entry.
Input Controls and Pins (Trigger Buttons)
These pins connect to control components as needed to trigger updates in Core Manager and Enterprise Manager.
- Update Status: Updates the device status to the set parameters.
- Send Event: Sends an event to the Event Log with the set parameters.
Output Controls and Pins (Status Indicator)
- Monitor Status: This pin connects to the Status Input pin of the Monitoring Proxy component.
Note: The device status displayed in Core Manager or Enterprise Manager defaults to OK when rebooting the Core or after deploying a design to the Core.
Status and Events (Text Controller) Script
This is the example script from the Text Controller component's script editor window.
--Initialize Named Component control--------------------------------------------------- Monitor = Component.New(Controls["Monitoring Proxy Component Name"].String) --Intialize Status table--------------------------------------------------------------- StatusState = { OK = 0, COMPROMISED = 1, FAULT = 2, NOTPRESENT = 3, MISSING = 4, INITIALIZING = 5 } --Initialize Combo Box selection options----------------------------------------------- for i = 1,16 do Controls["Status"][i].Choices = { "OK","COMPROMISED", "FAULT", "NOTPRESENT", "MISSING", "INITIALIZING"} Controls["Event Severity"][i].Choices = { "normal","warning", "error"} end --Update the reported status in Core Manager----------------------------------------------- function ReportStatus(State, Message) if StatusState[State] == nil and message == nil then Monitor.status.Value = StatusState[CurrentState] Monitor.status.String = CurrentMessage elseif StatusState[State] then CurrentState = State CurrentMessage = Message Monitor.status.Value = StatusState[State] Monitor.status.String = Message end end --Update Monitoring Proxy when the Ready state changes--------------------------------------- function CheckProxy(bool) print("CheckProxy() has been called") if bool then ReportStatus("OK","") else ReportStatus("INITIALIZING","Proxy not ready") end end --Send Event to Event Log in Core Manager----------------------------------------------- function SendEvent(Severity, Entry) if Severity ~= "" and Entry ~= "" then Monitor["severity"].String = Severity Monitor["log.entry"].String = Controls["Device Name"].String.." : "..Entry Monitor.trigger:Trigger() Timer.CallAfter(ReportStatus,0.1) end end --Set the inital state after a reboot/redeploy if Monitor.ready.Boolean == true then ReportStatus("OK","") end --Update Status when Update Status pressed--------------------------------------------------- for i = 1,16 do Controls["Update Status"][i].EventHandler = function () ReportStatus(Controls["Status"][i].String, Controls["Status Message"][i].String) end end --Send Event to Event Log when pressed------------------------------------------------------- for i = 1,16 do Controls["Send Event"][i].EventHandler = function () SendEvent(Controls["Event Severity"][i].String, Controls["Event Log Entry"][i].String) end end --Check the status of the Monitoring Proxy---------------------------------------------------- Monitor.ready.EventHandler = function () CheckProxy(Monitor.ready.Boolean) end
Name
When you trigger an event, this is the text string that appears in the Core's Event Log under the Source column. This name also appears in the Inventory list on the Status page. The Name may contain ASCII letters 'a' through 'z' (case-insensitive), the digits '0' through '9', and the hyphen. Names cannot begin or end with a hyphen. No other symbols, punctuation characters, or blank spaces are permitted.
Location
User-defined name that groups the component with other components in the same physical location, or in the same organizational scheme.
Is Required
When set to 'Yes' (default), and the device is not found on the network, the device is reported as 'Missing', which is an error condition. When set to 'No', and the device is not found on the network, the device is reported as 'Not Present', which is not an error condition.
Manufacturer
This is a required field. Specify the third-party device manufacturer. (This will become visible in the Status > Inventory list in a future release.)
Model
This is a required field. Specify the model of the third-party device, which is then shown in the Status > Inventory list for identification purposes.
Type
From the drop-down menu, select a hardware category that best fits the third-party device. If none of the categories is suitable, select 'Other', and then specify your own category. The Type you choose is shown in the Status > Inventory list for identification. For more information, see Status.
Other
This property only appears when you have selected "Other" for the Type. Specify your own text to describe the third-party device's category.
Status
This is the complete text string status of the wired, upstream component. It includes at least one of the seven basic statuses, plus any extended details, if applicable.
Component status is conveyed with the Status LED and Status box, which uses both color and text to indicate the current condition:
- OK: The device is functioning normally.
- Initializing: The device is in the process of a firmware or configuration update, or the design is starting.
- Compromised: The device is functioning, but a non-fatal problem exists.
- Missing: The device cannot be discovered.
- Fault: The device is malfunctioning or is not properly configured.
- Unknown: This status appears during a Core reboot (for example, during a firmware update), or when a design is being pushed to the Core and before it has started running.
- Not Present: If applicable to the device, this status appears when the device is not connected to the network and its Is Required component property is set to 'No'. This status also appears if the device component's Dynamically Paired property is set to 'Yes', pairing has not been assigned in Core Manager, and the device component's Is Required property is set to 'Yes'. See Dynamic Pairing.
Log Entry
When you press the Trigger button, this is the text string that is placed in the Core's event log under the Message column.
Severity
When you press the Trigger button, this is the severity level that is placed in the Core's event log for the event – normal, error, or warning. Note that "default" equates to "Normal" severity. For more information on statuses, see Status.
Trigger
Click to submit the Log Entry, including its defined Severity.
Ready
The LED glows green when the Monitoring Proxy is ready to receive a log entry. No more than four log entries per second per component are allowed. When this limit is reached, the Ready LED turns off until the next one-second period.
Tip: If you are using a script to trigger log events, expose the Ready control pin and wire it to your script to validate that the Monitoring Proxy can accept additional log entries.
Pin Name |
Value |
String |
Position |
Pins Available |
---|---|---|---|---|
Log Entry |
(text) |
Input / Output |
||
Ready |
0 1 |
false true |
0 1 |
Input / Output |
Severity |
- |
default error warning |
- |
Input / Output |
Status |
0 1 2 3 4 5 |
OK (Green) Compromised (Orange) Fault (Red) Not Present (Gray) Missing (Red) Initializing (Blue) |
- |
Output |
Trigger |
(trigger) |
Input / Output |