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.

  • This topic is deleted!

    1
    0 Votes
    1 Posts
    11 Views
    No one has replied
  • ma-point-query is not updating

    2
    0 Votes
    2 Posts
    2k Views
    Jared WiltshireJ
    @sstuhlmann check your Chrome dev tools betwork tab to see what REST API requests for data points are actually issued. If it is like you say you can stop the query running until you retrieve your device name by using a ng-if e.g. <ma-point-query ng-if="$ctrl.devName"> Alternatively do something like this, so that if devName is undefined it queries for the deviceName being null instead (which should return 0 results) <ma-point-query query="{deviceName:$ctrl.devName || null}"> Although what I suspect is actually happening is that the query is not exact, I think that type of query is actually a fuzzy query, it will search for deviceName LIKE %devName% in the SQL database. Try this - <ma-point-query query="{deviceName:$ctrl.devName, $exact: true}">
  • Question about point query performance and filtering

    10
    0 Votes
    10 Posts
    5k Views
    MattFoxM
    Glad I could be of help, feel free to ask if you hit any snags with any RQL strings.
  • Custom modules in deshboard designer menu

    7
    0 Votes
    7 Posts
    4k Views
    S
    Yes, I am writing completely independent modules with definition java files. I'm currently just running development and testing locally. Once I build my new module (which lists module-parent as its parent), I just drop the zip onto my MangoES. I'm currently working on two modules. One is a better and more standardized deviceConfig/templating module. And the second is a graphical gauges one which wraps ma-gauge and uses the DP tags to dynamically load different layouts. Like so: [image: LjNky6V.png] The injector will be great. Should work out for me nicely. At some point I will look at publishing my modules to the store. But they aren't quite ready for prime time.
  • Custom dashboard failed to load adminTemplate.

    5
    0 Votes
    5 Posts
    3k Views
    G
    @jared-wiltshire said in Custom dashboard failed to load adminTemplate.: /user-ui/adminTemplate/ Okay, Thanks @Jared-Wiltshire
  • Optimizing semi-contiguous reads for modbus

    7
    0 Votes
    7 Posts
    6k Views
    N
    My first post was a link with no description, so it was censored.
  • DeadBanding data streams, ideas / thoughts / comments?

    3
    0 Votes
    3 Posts
    2k Views
    phildunlapP
    Some more information: https://help.infiniteautomation.com/data-point-and-logging-settings/ but dated so far as not having the ON_CHANGE_INTERVAL setting at that time.
  • Import EnergyData from XML

    19
    0 Votes
    19 Posts
    9k Views
    mircsiczM
    Yeap Phil, I'm aware of that. But with a working basic example like this one I can abstract the rest... THX a ton Philip I reran the import on al 50k XML files and I now have the expected data point's.... I'll now start to adopt for other value type's!!!
  • 0 Votes
    8 Posts
    4k Views
    Jared WiltshireJ
    @phillip-weeks said in Point Details page- how to export and import the extreme sets and rollup with CSV: Thanks Phil, I will get it on the update and test it out. While I got your attention... Is there a way to pass serialchart options into a <ma-watch-list-chart> and affect the serialchart .. like options="{valueAxes:[{minimum:0, strictMinMax: true, axisColor:'black', color:'black', title: 'Liters', titleColor: 'blue', stackType: 'none'}]}" Will this work if I put it inside the <ma-watch-list-chart> tag ? Please post separate issues in separate threads in the correct forum.
  • History Generation Still Running or Finished??

    73
    0 Votes
    73 Posts
    104k Views
    P
    thanks however in 2.8.8 deletePointValuesBetween is coming back as unknown method?? I assume it exits in this version? I would like to replicate the history recalc on our 2.8.8 cloud server. Unless you can suggest an easy method to transfer the regeneration data just completed over the weekend to another mango instance.
  • Removing point values with millisecs >0 in timestamp?

    2
    0 Votes
    2 Posts
    2k Views
    phildunlapP
    Hi Phillip, Hmm. I doubt that's what the original data set looks like. The ones at .000 are the real values? Pretty small set of ways that can happen. Either You are publishing two points to the same receiver with the same XID and so the values are being stored together. You are publishing / saving real time data, while you are logging interval data. The interval logging maybe got off by 5ms due to some unknown delay while calculating its first delay. Then your receiver saved all the real time data and the publisher saved values at the interval log fire time. When a history sync happened, you had the minimum window size of some size, and the mismatch in some period got lots of values sent over with .005 because that's when the interval log task saved them. We could have more information, like, what're the timestamps of the origin point? What is the publish event for the publisher, Update? What sort of logging is done on the source point? I would sooner resync the series than delete every other value. You could purge the point, and then use a second publisher to perform the resync so that you didn't mess with the sync times for the real publisher.
  • Custom data point properties, built into property template

    3
    0 Votes
    3 Posts
    2k Views
    Jared WiltshireJ
    I would agree that the JSON store is probably your best bet at the moment. Store an object where each property is the XID of the data point for easy retrieval. We have also discussed adding some generic JSON data to each data point so that might be an option in the future.
  • connect to Ethernet relay board

    7
    0 Votes
    7 Posts
    4k Views
    phildunlapP
    Thanks for the effort though, CraigWeb! Welcome to the ecosystem! Hi Joe, Interesting use of the TCP/IP data source! What have you gotten working so far? I hadn't used it as an HTTP GET'er before, but it works! I think you're going to need more HTTP in your read command. I would open the developer tools when you request the page in your browser and see the GET request that loads the page. You may need to have some of those headers in your HTTP GET, and you may need the double newline at the end of HTTP messages. For instance, to get the /help.htm page in my data source, I had to supply a Host header in my read command, like, GET /help.htm HTTP/1.1\nHost: localhost\n\n I think you'll also want to adjust your write commands. I didn't seek how write commands are specified in the manual (if you can post the relevant section I can look), but if you send a constant like 1 that will be the only thing sent when the value is set, regardless of what the value is. But, I may be misreading, that may be an l which should turn relay 8 on. The main issue I think you're going to have is setting the values, since that requires particular ASCII characters for turning on or off a relay. I think the easiest way to handle that will be either hard code the logic for what character means on/off for what relay into your interface. Have every toggle on the interface set out the appropriate character to the same point, which is only settable and has the settable command VALUE. If you are comfortable with old Mango pages not having these points be settable, and only opening/closing the relay through an appropriate point, this is a good option. Have a level of indirection for points. This would be a scripting data source or some arrangement of point links that enabled virtual points to receive sets, which can then be translated into the appropriate character and sent to the device, or which the device's response to polling is set into. Similar to 1, create a point link that maps a human input to the appropriate character, then set that out to the device. For instance, set values to a virtual point like "1-ON" and the point link convert that into e and set that out the command point. Then use this virtual point when you need to open or close a relay, and the other point for current relay status. Edit: point link on this one, not meta Given solution 3, you may consider using the HTTP retriever for getting values and only use the TCP/IP data source to send the relay set open/closed character.
  • Map dashboard from MySQl data geofenced

    2
    0 Votes
    2 Posts
    2k Views
    phildunlapP
    Hi mrcardenasp, There is not a way through the API to do a constructed query in the MySQL data source and then return the result set. That's probably a good idea, but for now you'd have to load your data into Mango through the SQL data source on an ongoing basis, then use something like our RQL to restrict the set of points that are making it to the map. I recently helped this person get many values for the same point from their MySQL table into Mango. Maybe it is useful: https://forum.infiniteautomation.com/topic/3115/sql-data-source-query/2
  • Issues Setting up Mango 2.7.x in Eclipse

    5
    0 Votes
    5 Posts
    3k Views
    R
    Actually I have found out that I can use up to version 3.1 - but I can't seem to find any instructions for the later versions?
  • Cannot show Data Point change by configuring Data Source with DNP3

    5
    0 Votes
    5 Posts
    3k Views
    phildunlapP
    Glad you've got it working!
  • V3 Dashboard Designer

    6
    0 Votes
    6 Posts
    4k Views
    Jared WiltshireJ
    @arvand-owji I'm going to recommend a hybrid approach. Use a userModule.js file like this, you can add it from the UI settings page. We are going to add a parent state which you can then nest custom pages inside of. The myApp.home state etc will be nested inside the <div ui-view> element of the myApp state. The "page" that is linked to from the myApp state is the menu, define(['angular', 'require'], function(angular, require) { 'use strict'; var userModule = angular.module('userModule', ['maUiApp']); userModule.config(['maUiMenuProvider', (maUiMenuProvider) => { maUiMenuProvider.registerMenuItems([{ name: 'myApp', url: '/my-app', template: '<ma-ui-page-view xid="d012dd15-0b4e-4539-8e8a-e0235c08411d"></ma-ui-page-view><div ui-view></div>', menuText: 'My app base', //menuHidden: true, abstract: true }]); }]); return userModule; }); // define Menu "page": <div class="ma-designer-root" id="cd40a324-2725-42fa-9778-12255ebb5a62" style="width: 1024px; height: 48px; position: relative;"> <ma-button id="54f9db80-3064-4c61-8db4-59380f86df6e" style="position: absolute; left: 104px; top: 0px;" icon="android" label="Page 1" raised="true" palette="accent" ui-sref="myApp.page1"></ma-button> <ma-button id="7bd73a7c-6923-4e3d-93e2-85c2d4cf3f25" style="position: absolute; left: 0px; top: 0px;" icon="home" label="Home" raised="true" palette="primary" ui-sref="myApp.home"></ma-button> </div> Home page, page 1 etc.. Create pages as desired then add menu icons for them, making sure to choose "My app base" as their parent.
  • MangoEs V3 Ip address Change

    8
    0 Votes
    8 Posts
    5k Views
    JoelHaggarJ
    The easiest way is to click on Data Sources under Adminitration. This will open up the legacy UI and then you can select System Settings from the top menu.
  • Data Source DataFile

    5
    0 Votes
    5 Posts
    3k Views
    phildunlapP
    Something like.... import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; import com.infiniteautomation.datafilesource.contexts.AbstractCSVDataSource; import com.infiniteautomation.datafilesource.dataimage.NumericImportPoint; public class JergForumCsvQuestion extends AbstractCSVDataSource { private boolean headersConsumed = false; private SimpleDateFormat dtf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); @Override public void importRow(String[] data, int rowNum) { if(data.length == 0) return; Map<String, String> extraParams = new HashMap<>(); String[] rowData = data[0].split(";"); if(rowData.length < 7) //avoid index out of bounds return; try { //subtract the timezone, or you could put it into the date formatter (or add the timezone, //it's not always easy to know if they're saying those times are in UTC-5 or those times are UTC) long time = dtf.parse(rowData[3]).getTime() - 5*60*60*1000; this.parsedPoints.add(new NumericImportPoint("PV Solar kWh", Double.valueOf(rowData[5]), time, extraParams)); this.parsedPoints.add(new NumericImportPoint("PV Solar W/m^2", Double.valueOf(rowData[6]), time, extraParams)); } catch(Exception e) { System.out.println("Exception: " + e.getMessage()); } } }
  • Working with Intellij IDEA.

    3
    0 Votes
    3 Posts
    2k Views
    cbyrneC
    Ah amazing, I'd done exactly that but never switched templates to get it to reload. Wonderful! Thanks Phil.