To use a specific Timezone:
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm").withZone(DateTimeZone.UTC);
To use a specific Timezone:
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm").withZone(DateTimeZone.UTC);
Hi All,
Just wanted to let you know we have updated our developers documentation. We have separated it into 2 parts, Angular for the UI and Java for the backend. As of Mango 3.7 there is a new 'development' mode that can save time developing. Check them out here:
xbastek,
You say:
But i don't know how to update this files in my mango installation...
It will be far easier for you to upgrade to Mango 2.6.0 that has all the work done for you. It will be pre-released very soon.
Thanks,
Terry
@nachum37 thanks for making us aware of this, I will take the information you provided here and have our team replicate what is happening so we can fix any problems we find.
I wrote this help article not too long ago which may provide some insight into configuring the Apache proxy.
Sorry, our maven repository only holds the latest snapshot versions and lets the older ones roll off. The latest version is 3.6.1-SNAPSHOT
for the api module. Since that version will also eventually drop off of the repository I would suggest you use the release version of the api module as that will always be available. So change the dependency from 3.6.0-SNAPSHOT
to 3.6.0
and you should be good to go.
@vanjr something isn't quite right with the image you posted. First try to understand what function code 02 is doing, Read an Input Status at an offset starting from 10001.
https://www.simplymodbus.ca/FC02.htm
Maybe I'm missing something but it doesn't seem possible that there is an input register at location 100001 as that offset from 10001 is larger than the 2 bytes that are allowed for the offset in the protocol message of function code 02. My guess is that there is a display error in the software you are using and the address is really 10001 in which case the offset is 0.
@MattFox the problem isn't specifically with our repo. The way maven works is that it checks all the repositories you have listed in the module's POM or its parent POMs in some order.
That plugin isn't owned by us and thus isn't hosted in our maven repository. What your goal should be is to figure out why your build isn't finding it on the public maven repositories such as this one:
https://mvnrepository.com/artifact/org.codehaus.mojo/build-helper-maven-plugin/1.9.1
or this one:
https://central.sonatype.com/artifact/org.codehaus.mojo/build-helper-maven-plugin/1.9.1
I'm pretty sure the problem is that your computer can't reach Maven central because of a proxy or some other problem. I would start by looking there, perhaps delete your
~/.m2
directory and rebuild. Let me know if that solves it or you have a different problem.
@MattFox just letting you know I've tried in the past to fix this but didn't have much luck. But I tried again today and managed to make an improvement. There are likely other models that will suffer from this problem so when Mango 3.7.0 is released if you see any more of these types of problems please let us know.
Here is the git issue if you are interested in following:
https://github.com/infiniteautomation/ma-modules-public/issues/72
@Nurr
There is the possibility to use the Email Event handler to do this. If you return "CANCEL" from the script on an email event handler it won't actually send an email. Leveraging this one could write a script to make an SQL query for the numbers and then call your global script. You can call Java code directly from the script but it will require some knowledge of Java and how to use it within the Nashorn Javascript Engine. There should be some examples of this on our forum. Basically the script needs superadmin permission and you must use the full package and class name when you reference a Java class.
If you are game to give it a try, here is some documentation on the SQL api for Java:
https://docs.oracle.com/javase/tutorial/jdbc/basics/processingsqlstatements.html
As a side note Mango 4.0 will have a Message event handler that will allow using Twilio and in the future other platforms to send messages.
The settings introduced in mango 5.2.0
## Settings for event handlers
# Enable the process event handler
event-handlers.process.enabled=false
# Enable interpolation for the process event handler command
event-handlers.process.interpolation-enabled=false
Also @paulolando91 I see the REST URL you are using is wrong, there is no v4 API. The REST api is versioned differently to the Mango version. So its best to use the alias latest
so that your URL would be something like:
<img src="/rest/latest/file-stores/default-filestores/Generator01.png">
@ryanlo In addition to what @MattFox is saying you should also see an Event / Alarm in the UI to correspond to the event being detected. The handler should be linked to that event and as Matt said, if you setup logging correctly you will also see it in the logs.
@ryanlo the other thing you could do, if you think its the SMS relay then add another reliable email address to the handler so it send the message to multiple addresses. If the SMS address is delayed but the other one (gmail or something) gets it almost immediately you will know its the relay and not Mango.
@tomatopi there is going to be 2 major parts to your solution:
A. Setting up the HTTP Retriever data source and points into a single request that gets the data into the desired points.
B. Retaining the history on the existing points so that new history is appended to it.
I'll focus on B here:
seriesId
in the database doesn't change. So use the XIDs to move the points and not create new ones.All of this information hinges on the fact that you are on at least Mango 4. It can probably be done in Mango 3 but we didn't have the seriesId
concept so the solution would be different. In Mango 3 the time series data is directly linked to the data point's id
column in the database. In Mango 4 we added a column called seriesId
to the dataPoints
table to allows us to move the time series data between points if we needed to.
The caveat here is that you can only move data between points that have the same data type. For example Numeric time series can only be assigned to other Numeric points, not a Binary point.
@hayden_AUS we added permissions like this in Mango 4+, but there are only 2 levels for Event Handlers. View and Edit. If you wanted a user to be able to disable the event handler they would need to have the edit permission for that handler. Which would allow them to change any setting on it.
In Mango 3 Event Handlers are a superadmin thing only.
What @MattFox is suggesting is a common pattern that we use also, put your alarming logic inside Meta points and then set a basic event detector (State Detector) on the Meta point which can raise the event and handle it.
@tungthanh500 there are ways around this. In Mango 5 the default is to have HTTPS enabled on first start. This also enables HSTS which redirects from the HTTP port to HTTPS. You can change these settings by injecting mango properties into the container or modifying the mango.properties file you are loading.
Take a look at these properties:
# Note: Enabling SSL/TLS also turns on HSTS by default, see the ssl.hsts.enabled setting below
ssl.on=true
ssl.port=8443
...
# Configure HSTS (HTTP Strict Transport Security)
# Enabled by default when ssl.on=true
# Sets the Strict-Transport-Security header, web browsers will always connect using HTTPS when they
# see this header and they will cache the result for max-age seconds
ssl.hsts.enabled=true
ssl.hsts.maxAge=31536000
ssl.hsts.includeSubDomains=false
And how to inject them into the container as env variables: https://docs-v5.radixiot.com/configure-mango-properties
Just note that if you change the HSTS settings you will need to clear your browser cache since it will have cached the entry to always use HTTPS already.
We are looking for examples of how our Rate of Change event detector is being used. We have a list of features and changes for upcoming releases of Mango so I am investigating the use of this detector because it is on our list.
Please let us know the configuration you are using and why please.
Thanks!
@Ruan-0 I think you might be confused. A Mango BACnet publisher makes Mango into a BACnet device that can be read. If you want to write to a BACnet device you probably want to be using a BACnet data source and then setting the data point value in Mango which will then write the value to the remote device.
@Jdiaz-co that endpoint only accepts a single point value (as you have discovered). Referring back to my first post I think you are looking for this new v3 endpoint:
POST rest/v3/point-value-modification/import
using a JSON model as the body. (See swagger UI for this)
I don't think this is exposed in the UI so you will need to use Swagger. However the POST body will need to look like this:
[
{
"xid": "MY_POINT_1_XID",
"value": 1.0,
"timestamp": "ISO Formatted Date String",
"annotation": "can be null or any string"
}, {
....
]
The idea being that you supply the xid
for the point you want to set the value for.