SVSI Native NetLinx Device Monitor Module

HARMAN_icraigieHARMAN_icraigie Technical Trainer II, Harman Professional UniversityPosts: 494

Because "sharing is caring" and currently you can't directly register a native Netlinx SVSi device ...

Should support any encoder or decoder - set up to support more device types if needed

Fully populates info page from device_info. Note that a dynamic virtual device is being referenced as the registering device.
Option to set custom name and description through the proxy command ( eg. send_command vdvRMS,'@-RMS-Asset-Name,')

Metadata:
1. IP Address as hyperlink
2. NetLinx D:P:S

Parameters:
1. Stream #
2. Audio Stream # (Decoders)
3. Host Play
4. Power Consumption
5. Online

Methods:
1. Reboot
2. Stream #
3. Audio Follow Video or Audio Stream # (Decoders)
4. Passthru

https://dropbox.com/s/in4ht8g9ykqak0r/RMS%20SVSi%20NetLinx%20Device%20Monitor.zip?dl=0

Comments

  • AntAnt Junior Member Posts: 54

    Hey Ian,

    Thanks for that - is there a way to query Power Consumption of an SVSi unit?

    Or Fan Speed, Temperature?

    Cheers,
    Anthony

  • HARMAN_icraigieHARMAN_icraigie Technical Trainer II, Harman Professional University Posts: 494

    Power consumption is set as per the endpoint series

    select
    {
        active(find_string(upper_string(iDevInfo.DEVICE_ID_STRING),'-N24',1)): // POE+ devices
        {
        keyAdd(uKeys, KEY_MAX_POWER, '30'); 
        }
        active(TRUE):                               // POE devices
        {
        keyAdd(uKeys, KEY_MAX_POWER, '12.5'); 
        }
    }
    

    Don't think fan or temperature is in the status query response but there maybe a way through an asynchronous N-act message to get that info - something to look into.

  • HARMAN_icraigieHARMAN_icraigie Technical Trainer II, Harman Professional University Posts: 494

    @Ant said:
    Hey Ian,

    Thanks for that - is there a way to query Power Consumption of an SVSi unit?

    Or Fan Speed, Temperature?

    Cheers,
    Anthony

    Asynchronous updates for both fan speed and temperature can be enabled through the generic events tab on the N-Act programming page of the endpoints.

    The data strings are formatted as shown here:
    temperature = {{temperature}}\r
    fanPercentage = {{fanPercentage}}\r

    I'm sending to a multicast address from the SVSI device with a subscription enabled at NetLinx through the ip_mc_server_open() system function

    At NetLinx data received look something like this (source IP is being prepended onto the amx_log() message)
    (07:43:32.925):: dvIP_NACT_MC -> 169.254.244.47:fanPercentage = 1$0D
    (07:43:35.844):: dvIP_NACT_MC -> 169.254.244.47:temperature = 60.245418$0D

    So yes it is possible to monitor fan speed and temperature in the RMS monitor - just need to add in a data receiver and parse according to the source IP matching the IP address of the device being monitored in that instance of the module.

  • HARMAN_icraigieHARMAN_icraigie Technical Trainer II, Harman Professional University Posts: 494

    @Ant said:
    Hey Ian,

    Thanks for that - is there a way to query Power Consumption of an SVSi unit?

    Or Fan Speed, Temperature?

    Cheers,
    Anthony

    Sidecar module attached here that adds parameters to the above device monitor module.
    Supports temperature, fan speed and bandwidth (encoders).
    Added a custom bargraph for the CPU temperature type with yellow segment 75-95 and red segment 95-100.
    Temperature threshold of 75 is just a W.A.G.
    I do not have exact confirmation for the fan speed units and have not seen any values greater than 5 so again just a W.A.G.
    N-Act file included with module.
    Screenshot of encoder at server attached.

    Multicast Subscriber enabled at NetLinx to receive asynch updates - matches IP and port settings in the N-Act file

    (***********************************************************)
    (*          DEVICE NUMBER DEFINITIONS GO BELOW             *)
    (***********************************************************)
    DEFINE_DEVICE
    dvIP_NACT       = 0:2:0;
    
    (***********************************************************)
    (*               VARIABLE DEFINITIONS GO BELOW             *)
    (***********************************************************)
    DEFINE_VARIABLE
    volatile char sIpAddressNact[] = '239.254.0.1';
    volatile long nIpPortNact = 51004;
    
    (***********************************************************)
    (*                 STARTUP CODE GOES BELOW                 *)
    (***********************************************************)
    DEFINE_START
    ip_mc_server_open(dvIP_NACT.PORT, sIpAddressNact, nIpPortNact);
    

    Mulicast device passed into module as 3rd parameter - this could be tcp server or udp server too as long as N-Act strings maintain formatting.

    (***********************************************************)
    (*                MODULE DEFINITIONS GO BELOW              *)
    (***********************************************************)
    DEFINE_MODULE 
    'RmsSVSiDeviceMonitor' RmsSVSiDeviceMonitor_1(vdvRMS, dvSVSI_DECODER);
    'RmsSVSiNActMonitor' RmsSVSiNActMonitor_1(vdvRMS, dvSVSI_DECODER, dvIP_NACT);
    

    Registered parameters can be overwritten through the RMS @ Proxy command

    (***********************************************************)
    (*                  THE EVENTS GO BELOW                    *)
    (***********************************************************)
    DEFINE_EVENT
    
    data_event[vdvRMS]
    {
      online:
      { 
        // DEFAULT KEYLIST = 'temperature|fanPercentage|bandWidthMbs'
        send_command data.device,"'@',RmsDevToString(dvSVSI_DECODER),'-SVSI-NACT-KEYLIST,temperature|fanPercentage'"; // Ignore bandwidth at this decoder - not applicable
      }
    }
    
Sign In or Register to comment.