Facility Control

 View Only
  • 1.  Creating Router Panel for Ultricore-CC

    Posted 02-10-2018 20:42
    Just purchased and commissioned an Ultricore-CC. Very cool new system!

    The soft panel builder is a neat option -- however, I'd like to build my own router heads in dashboard. NK-ips had an easy way to add source and destination buttons via the NK tools. Does something like this exist for Ultricore?

    Also, I'd like to build a more advanced router with dropdown destinations, sources, and a take/protect button. We have 264x264 in use. Would this be possible?

    Thanks for any insight!




  • 2.  RE: Creating Router Panel for Ultricore-CC

    Posted 02-12-2018 21:23

    Hi @chipakj
    The Ultricore routing system uses the openGear protocol instead of the NK Router protocol to communicate with DashBoard. Ultimately, this is a much more powerful way to integrate into DashBoard as it exposes much more information about the device to DashBoard but it does mean the NK tool set is not available.

    I'm including a fairly simple panel to help get you started. This panel reads the list of sources and destinations from an Ultrix (you'll want to use the "Data Sources" button on the PanelBuilder tool bar to associate it with your Ultrix) and allows you to set crosspoints on each one.

    <abs contexttype="opengear" gridsize="20">
       <meta>
          <params>
             <param access="1" constrainttype="INT_CHOICE" name="Sources" oid="Sources" precision="0" stateless="true" type="INT32" value="0" widget="combo">
                <constraint key="0">Nothing</constraint>
             </param>
             <param access="1" constrainttype="INT_CHOICE" name="Destinations" oid="Destinations" precision="0" stateless="true" type="INT32" value="0" widget="combo">
                <constraint key="0">Nothing</constraint>
             </param>
          </params>
          <ogscript handles="onload">function loadUltrixTable(sources)
    {
       var uOid = sources ? 'params.sources' : 'params.dests';
       var pOid = sources ? 'Sources' : 'Destinations';
       
       var newValues = [];
       var numValuesP = params.getParam('ultrix', 'params.sources', 0);
       var numValues = 0;
       if (numValuesP != null)
       {
          numValues = numValuesP.getElementCount();
       }
    
       for (var i = 0; i &lt; numValues; i++)
       {
          newValues[i] = { "key": i, "value": params.getParam('ultrix', uOid + '.' + i + '.name', 0).getValue() };
       }
    
       if (newValues.length == 0)
       {
          newValues.push({"key": 0, "value": "Nothing Found"});
       }
    
       params.replaceConstraint(pOid, params.createIntChoiceConstraint(newValues));
    }
    
    function loadUltrixInfo()
    {
       loadUltrixTable(true);
       loadUltrixTable(false);
    }
    
    loadUltrixInfo();</ogscript>
       <api>function doUltrixSwitch(context, source, destination, level_string) {
       level_string =  level_string + "";
       level_string = level_string.replace(/\s/g, ' ');
       var levels = level_string.split(",");
       var ultrix = params.createMultiSet(context);
       
       for(i=0; i&lt;levels.length; i++) {
          ultrix.setValue("params.statusByDestination." + destination + ".inputstatus", (levels[i] - 1), source);
       }
    
      ultrix.execute();
    }</api>
       </meta>
       <param expand="true" height="60" left="80" oid="Sources" top="100" width="280"/>
       <param expand="true" height="60" left="80" oid="Destinations" showlabel="false" top="40" width="280"/>
       <button buttontype="push" height="120" left="360" name="Take" top="40" width="200">
          <task tasktype="ogscript">
    
    
    /*! block id=1010,1011,1012 !*/
    doUltrixSwitch("ultrix", params.getValue('Sources', 0), params.getValue('Destinations', 0), "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17")
    /*!!
     &lt;block id="1010" type="function_doUltrixSwitch" x="330" y="136" w="243" context="ultrix" source="ID:1011" destination="ID:1012" level_string="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17" /&gt;
    &lt;block id="1011" type="param__top&amp;amp;Sources (Sources)[0]" x="10" y="258" w="243" SET="" /&gt;
    &lt;block id="1012" type="param__top&amp;amp;Destinations (Destinations)[0]" x="10" y="350" w="243" SET="" /&gt;
    !!*/
    /*!!&lt;checksum&gt;7fd2a9099dacd2921fd333c9e3dd7e7b&lt;/checksum&gt;!!*/</task>
       </button>
       <simplegrid contexttype="opengear" height="40" id="ultrix" left="80" objectid="Ultrix-5ru-50187811002&lt;br&gt;Slot 0&lt;br&gt;Ultrix-5ru" objecttype="Ultrix-5ru" rows="1" top="180" width="480">
          <param element="0" expand="true" oid="0x105" showlabel="false" widget="1"/>
       </simplegrid>
    </abs>

    #DashBoard


  • 3.  RE: Creating Router Panel for Ultricore-CC

    Posted 02-12-2018 22:29
    James,

    Thanks for the reply! I was finally able to cut over from NK-IPS to Ultricore today. We are using two NK routers linked through Ultricore.

    I did find that the NK selector buttons on my router panels are now reflecting the Ultricore, and the NK funtions ARE actually controlling the physical routers. AWESOME!!! was this not supposed to work??

    Looking at the script you sent-- is this meant for Ultrix?



    #DashBoard


  • 4.  RE: Creating Router Panel for Ultricore-CC

    Posted 02-13-2018 13:50
    @chipakj
    Yes, the script I sent was targeted at an Ultrix. I know that Ultracore speaks NK protocol to the NK Routers/panels but I was not aware that it would take incoming NK functions from the Custom Panel libraries. I'll have to touch-base with the Router team and see what else I don't know! :)

    Thanks for sharing-back your experience.

    James
    #DashBoard


  • 5.  RE: Creating Router Panel for Ultricore-CC

    Posted 02-13-2018 17:09
    With that said, I am going to use our legacy NK soft-panels for now. Is there any documentation that could help me with the opengear protocol? I'd like to tinker around in my spare time, and hopefully create some more capable panels that talk directly to Ultricore,.

    On a side note, do you know of a way to export Ultricore destination/source labels and import them as global labels?

    Thanks for your help!
    #DashBoard


  • 6.  RE: Creating Router Panel for Ultricore-CC

    Posted 04-02-2018 20:17

    Hey James, I was able to use your script as a starting point. I changed the source and destination parameters to lists, but i cant get a scrool bar to show up. Do you know of a quick way to add this?


    #DashBoard


  • 7.  RE: Creating Router Panel for Ultricore-CC

    Posted 04-02-2018 20:18
    Hey James, I was able to use your script as a starting point. I changed the source and destination parameters to lists, but i cant get a scroll bar to show up. Do you know of a quick way to add this?
    #DashBoard


  • 8.  RE: Creating Router Panel for Ultricore-CC

    Posted 04-03-2018 15:37

    Fastest way would be to add scroll="true" to the tag for the list.

     

    <param expand="true" height="107" left="289" oid="List" scroll="true" showlabel="false" top="185" width="295"/>

    #DashBoard