Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

  • Joining datasources

    8
    0 Votes
    8 Posts
    2k Views
    P
    Thanks Phil.
  • "SNMP Host Testing"

    9
    0 Votes
    9 Posts
    2k Views
    phildunlapP
    Hi Jorge, You are right with alphanumeric type i got the values... now i need to check why with another type as octetct string didnt work. Octet String would only be a set type (for writing data out), and that point. The MIB you posted said it's read-only, so I'm not sure any set type would be able to set a value to it. I would have expected Numeric to work as a data type for the OID you posted in the original image, too.
  • Weather Data Source

    5
    0 Votes
    5 Posts
    2k Views
    P
    Thanks all, This has been very helpful.
  • Modbus Publishers

    2
    0 Votes
    2 Posts
    949 Views
    phildunlapP
    Hi Pikey4, This seems like something trying would give the best answer for! But, Yes you can enable more than one on the same port if the slave IDs are distinct. Yes there is a limit. Modbus has a slave ID space of something like 1-243 but the validation in Mango and Modbus4J should accept any integer 0 <= slaveId <= 255 so potentially there's a limit of 256, but in practice some of those slave IDs may not work.
  • 0 Votes
    4 Posts
    1k Views
    phildunlapP
    You could use that function, but it returns a ProcessResult which would require figuring out how to work with that object. Also you would have to use the package path to the DWR and have an instance of the DWR. Instead, you should get the rt I was referring to the way I did, function getMaintenanceEvent(xid) { var id = com.serotonin.m2m2.maintenanceEvents.MaintenanceEventDao.instance.getIdByXid(xid); if(id === null) throw "Maintenance Event with XID:" + xid + " not found" var rt = com.serotonin.m2m2.maintenanceEvents.RTMDefinition.instance.getRunningMaintenanceEvent(id); if(rt === null) return { "isEventActive": function() { return false }}; //disabled events considered inactive? else return rt; } and then your code could look like, var maintEvt = getMaintenanceEvent("MNT_123"); if (maintEvt.isEventActive()) maintEvt.toggle(); Also the timing of the original question was inopportune as we added a script utility for Maintenance Events shortly after. It can be used like, MaintenanceEventsUtility.isEventActive(xid); //requires maintenance events 3.5.1 MaintenanceEventsUtility.toggle(xid); MaintenanceEventsUtility.setState(xid, boolean); //in 3.5.0 this happens even during validation //in 3.5.0 the context name is maintenanceEventsUtility It also has some CRUD functions exposed, which I would direct you to the code for: https://github.com/infiniteautomation/ma-modules-public/blob/main/Maintenance Events/src/com/infiniteautomation/mango/maintenanceEvents/MaintenanceEventsJavascriptUtility.java
  • Dashboard designer won't load after 3.5 upgrade

    4
    0 Votes
    4 Posts
    1k Views
    Jared WiltshireJ
    @psysak it may have been a caching issue, I have some idea how it might have happened. Anyone who experiences this should try clearing their cache.
  • Browser / Flex compatibility

    10
    0 Votes
    10 Posts
    2k Views
    CraigWebC
    Hi mrlucretius I got lucky and the first thing I tried was to remove the first div: <div class="ma-designer-root" id="jhodges" style="max-width: 1024px;"> . I actually always remove the default div that the designer creates when I do responsive pages.
  • Sunrise/Sunset

    7
    0 Votes
    7 Posts
    2k Views
    F
    I figured it out. There was a typo in my URL. Thanks for this.
  • Virtual Data Point Decimal Places

    3
    0 Votes
    3 Posts
    1k Views
    phildunlapP
    Hi fishfacs, Odd that it would have required any restarting, but glad you got it figured out!
  • Mango 3.5 API session token change

    4
    0 Votes
    4 Posts
    2k Views
    D
    @phildunlap Makes sense. Thanks for the clarification.
  • Bookend point-values for time range

    Unsolved api
    2
    0 Votes
    2 Posts
    1k Views
    phildunlapP
    Hi dstoryQuest, welcome to the forum! Have you checked the bookend option on the existing /rest/v2/point-values endpoints? Most include a "bookend" boolean request parameter that will add one, possibly two data values to the data returned which are, Bookend start value - the value the point had at the start millisecond of the period. If there was a sample exactly at that time it is a real value, otherwise it is marked as a bookend and presented as having the same timestamp as the requested period start time. Bookend end value - the last value in the period or the start value, presented with the period end timestamp. Because all Mango time queries have an inclusive start time but an exclusive end time, the value presented as the closing bookend is always flagged as a bookend value (as opposed to being a real value at that time, since even if there were one it would be excluded by the end time being exclusive) So that's slightly different than what you're requesting since the timestamps match the times for the period requested, but I suspect that is nicer behavior for a user requesting a specific time period. There is not a way through the API to query for one additional value on either side of a period, but there is support for that in the NoSQL database (which is what we're using, just possibly fibbing on the timestamps), so it would be easy to add. We chose what we did to not affect the time period covered in the result.
  • Implement Hour Meter function from Modbus Inputs

    4
    0 Votes
    4 Posts
    1k Views
    phildunlapP
    We resolved after some discussion to bring back the .get() function as used on the help page linked to in my last post. Thanks again for bringing this to the fore! This will be the case in the production 3.5 release.
  • Stuff data from cloud back to remote? + Backups

    20
    0 Votes
    20 Posts
    4k Views
    phildunlapP
    Hi Greg, thanks for sharing what resolved it!
  • Sleeping script alternative

    3
    0 Votes
    3 Posts
    1k Views
    P
    thanks Phil I should have realized this of course aagh
  • Manage user profile permission

    5
    0 Votes
    5 Posts
    2k Views
    MattFoxM
    Thanks Phil, I use it on my site so I can assure you it works or i'd have serious problems with user permissions all over the place. Indeed it is a bandaid but with the way everything's packed with webpack now. Dev customising becomes a little more... awkward.
  • Fix Cursor-Point position on ma-serial-chart

    20
    0 Votes
    20 Posts
    3k Views
    MattFoxM
    My advice is to just keep it simple. If you know what you want to achieve, work back from that and break it down. All else fails, you know we're all here to assist. Fox
  • Make default datebar rollup type Simplify?

    8
    0 Votes
    8 Posts
    2k Views
    phildunlapP
    I think simplify is safe to apply to all numeric datapoints? I can't think of a reason why not. As CraigWeb noted it does not affect logging. It is likely more overhead than the other rollup types, but I wouldn't expect that to be too big a deal. You can use the internal data source to watch if you see significant changes over time.
  • Fix Interfering Footer on Big Page?

    6
    0 Votes
    6 Posts
    2k Views
    CraigWebC
    Hi As Thomas said the issue is probably still caused by the fact that u have absolute positioning. If you use the drag and drop designer, your elements will have an absolute position. This will always cause issues on different size screens. If you want your page to dynamically adjust to the screen size. You will need to use angularjs flex. Flex uses percentages of the available screen size instead of pixels.
  • How To Duplicate Modbus Devices

    6
    0 Votes
    6 Posts
    1k Views
    phildunlapP
    The only real requirement with XID's is that they are unique to any other XID on the system While true, there may be issues with certain characters in certain situations. It is best to avoid symbols in xids, for that reason: https://github.com/infiniteautomation/ma-core-public/issues/918
  • Insert Time and Date into a Tag

    4
    0 Votes
    4 Posts
    1k Views
    phildunlapP
    Ah, I would actually use a script then. Something like, var dt = new Date(); year.set(dt.getYear()); month.set(dt.getMonth()); date.set(dt.getDate()); hour.set(dt.getHours()); minute.set(dt.getMinutes()); { "dataSources":[ { "xid":"DS_d8821015-0a1e-4944-ba5b-73e7beaeb344", "name":"TimePoints", "enabled":false, "type":"SCRIPTING", "alarmLevels":{ "SCRIPT_ERROR":"URGENT", "DATA_TYPE_ERROR":"URGENT", "POLL_ABORTED":"URGENT", "LOG_ERROR":"URGENT" }, "purgeType":"YEARS", "updateEvent":"CONTEXT_UPDATE", "context":[ ], "logLevel":"NONE", "cronPattern":"0 * * * * ?", "executionDelaySeconds":0, "historicalSetting":false, "script":"var dt = new Date();\nyear.set(dt.getYear());\nmonth.set(dt.getMonth());\ndate.set(dt.getDate());\nhour.set(dt.getHours());\nminute.set(dt.getMinutes());", "scriptPermissions":{ "customPermissions":"", "dataPointReadPermissions":"superadmin", "dataPointSetPermissions":"superadmin", "dataSourcePermissions":"superadmin" }, "editPermission":"", "purgeOverride":false, "purgePeriod":1 } ], "dataPoints":[ { "xid":"DP_861812d3-3375-472b-90d3-1f631aa7526a", "name":"Year", "enabled":true, "loggingType":"NONE", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"AVERAGE", "purgeType":"YEARS", "pointLocator":{ "dataType":"NUMERIC", "contextUpdate":false, "settable":true, "varName":"year" }, "eventDetectors":[ ], "plotType":"SPLINE", "rollup":"NONE", "unit":"", "simplifyType":"NONE", "chartColour":"", "chartRenderer":{ "type":"IMAGE", "timePeriodType":"DAYS", "numberOfPeriods":1 }, "dataSourceXid":"DS_d8821015-0a1e-4944-ba5b-73e7beaeb344", "defaultCacheSize":1, "deviceName":"TimePoints", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":1, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "tags":{ }, "textRenderer":{ "type":"ANALOG", "useUnitAsSuffix":true, "unit":"", "renderedUnit":"", "format":"0" }, "tolerance":0.0 }, { "xid":"DP_f6d89968-0b5d-4f6a-b266-060015953d04", "name":"Month", "enabled":true, "loggingType":"NONE", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"AVERAGE", "purgeType":"YEARS", "pointLocator":{ "dataType":"NUMERIC", "contextUpdate":false, "settable":true, "varName":"month" }, "eventDetectors":[ ], "plotType":"SPLINE", "rollup":"NONE", "unit":"", "simplifyType":"NONE", "chartColour":"", "chartRenderer":{ "type":"IMAGE", "timePeriodType":"DAYS", "numberOfPeriods":1 }, "dataSourceXid":"DS_d8821015-0a1e-4944-ba5b-73e7beaeb344", "defaultCacheSize":1, "deviceName":"TimePoints", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":1, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "tags":{ }, "textRenderer":{ "type":"ANALOG", "useUnitAsSuffix":true, "unit":"", "renderedUnit":"", "format":"0" }, "tolerance":0.0 }, { "xid":"DP_52ae55ae-058f-41aa-9739-14f1bce971e3", "name":"Date", "enabled":true, "loggingType":"NONE", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"AVERAGE", "purgeType":"YEARS", "pointLocator":{ "dataType":"NUMERIC", "contextUpdate":false, "settable":true, "varName":"date" }, "eventDetectors":[ ], "plotType":"SPLINE", "rollup":"NONE", "unit":"", "simplifyType":"NONE", "chartColour":"", "chartRenderer":{ "type":"IMAGE", "timePeriodType":"DAYS", "numberOfPeriods":1 }, "dataSourceXid":"DS_d8821015-0a1e-4944-ba5b-73e7beaeb344", "defaultCacheSize":1, "deviceName":"TimePoints", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":1, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "tags":{ }, "textRenderer":{ "type":"ANALOG", "useUnitAsSuffix":true, "unit":"", "renderedUnit":"", "format":"0" }, "tolerance":0.0 }, { "xid":"DP_caed7349-9f12-4786-a5ae-4c88d55d5f7d", "name":"Hour", "enabled":true, "loggingType":"NONE", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"AVERAGE", "purgeType":"YEARS", "pointLocator":{ "dataType":"NUMERIC", "contextUpdate":false, "settable":true, "varName":"hour" }, "eventDetectors":[ ], "plotType":"SPLINE", "rollup":"NONE", "unit":"", "simplifyType":"NONE", "chartColour":"", "chartRenderer":{ "type":"IMAGE", "timePeriodType":"DAYS", "numberOfPeriods":1 }, "dataSourceXid":"DS_d8821015-0a1e-4944-ba5b-73e7beaeb344", "defaultCacheSize":1, "deviceName":"TimePoints", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":1, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "tags":{ }, "textRenderer":{ "type":"ANALOG", "useUnitAsSuffix":true, "unit":"", "renderedUnit":"", "format":"0" }, "tolerance":0.0 }, { "xid":"DP_16f26342-362b-4840-ad91-0918de13b1af", "name":"Minute", "enabled":true, "loggingType":"NONE", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"AVERAGE", "purgeType":"YEARS", "pointLocator":{ "dataType":"NUMERIC", "contextUpdate":false, "settable":true, "varName":"minute" }, "eventDetectors":[ ], "plotType":"SPLINE", "rollup":"NONE", "unit":"", "simplifyType":"NONE", "chartColour":"", "chartRenderer":{ "type":"IMAGE", "timePeriodType":"DAYS", "numberOfPeriods":1 }, "dataSourceXid":"DS_d8821015-0a1e-4944-ba5b-73e7beaeb344", "defaultCacheSize":1, "deviceName":"TimePoints", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":1, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "tags":{ }, "textRenderer":{ "type":"ANALOG", "useUnitAsSuffix":true, "unit":"", "renderedUnit":"", "format":"0" }, "tolerance":0.0 } ], "publishers": [ { "xid":"PUB_51603f56-35d6-43e4-af34-6b0e0c7b65f2", "name":"Publish Time", "enabled":false, "type":"MODBUS_IP", "points":[ { "dataPointId":"DP_861812d3-3375-472b-90d3-1f631aa7526a", "registerType":"HOLDING_REGISTER", "modbusDataType":"TWO_BYTE_INT_UNSIGNED", "decimalPlaces":0, "offset":0, "readOnly":true, "registerCount":1 }, { "dataPointId":"DP_f6d89968-0b5d-4f6a-b266-060015953d04", "registerType":"HOLDING_REGISTER", "modbusDataType":"TWO_BYTE_INT_UNSIGNED", "decimalPlaces":0, "offset":1, "readOnly":true, "registerCount":1 }, { "dataPointId":"DP_52ae55ae-058f-41aa-9739-14f1bce971e3", "registerType":"HOLDING_REGISTER", "modbusDataType":"TWO_BYTE_INT_UNSIGNED", "decimalPlaces":0, "offset":2, "readOnly":true, "registerCount":1 }, { "dataPointId":"DP_caed7349-9f12-4786-a5ae-4c88d55d5f7d", "registerType":"HOLDING_REGISTER", "modbusDataType":"TWO_BYTE_INT_UNSIGNED", "decimalPlaces":0, "offset":3, "readOnly":true, "registerCount":1 }, { "dataPointId":"DP_16f26342-362b-4840-ad91-0918de13b1af", "registerType":"HOLDING_REGISTER", "modbusDataType":"TWO_BYTE_INT_UNSIGNED", "decimalPlaces":0, "offset":4, "readOnly":true, "registerCount":1 } ], "snapshotSendPeriodType":"MINUTES", "publishType":"ALL", "alarmLevels":{ "RECURSION_FAILURE":"URGENT", "PORT_IN_USE_EVENT":"URGENT", "POINT_DISABLED_EVENT":"URGENT", "DATA_TYPE_MISMATCH":"URGENT", "MODBUS_INIT_ERROR_EVENT":"URGENT", "ENCAPSULATION_MISMATCH":"URGENT", "DATA_POINT_NOT_SETTABLE":"URGENT", "QUEUE_SIZE_WARNING_EVENT":"URGENT" }, "encapsulated":false, "port":502, "logCount":1, "logIO":false, "logSize":1.0, "slaveId":123, "strictAddressing":true, "cacheDiscardSize":1000, "cacheWarningSize":100, "sendSnapshot":false, "snapshotSendPeriods":5 } ] } (JSON for scripting data source, five points for those values, and a modbus publisher. I didn't confirm the default JavaScript ranges were your requested ranges (0-31?! :D))