Hello,
There is OPC UA support in mango or will be supported in future realeses?
Thanks in advance,
Hello,
There is OPC UA support in mango or will be supported in future realeses?
Thanks in advance,
Hello everybody,
I have configured Modbus IP type data source with "Use multiple write commands only" check active, I can use the function FC15 Write Multiple Coils and FC16 Write Multiple Register, but I cannot write several outputs/ registers at the same time in the same request. According to the Modbus protocol it should be possible to do it.
I use a meta data and change at the same time the outputs/registers but then the communication driver separates FC15 / FC16 in several requests.
Is there a way using these types of functions in which several outputs or registers are written in a single Modbus request in mango? I am doing something wrong?
Thanks in advance!
I´m using mango v3.7.4 , and I confugure a http json receiver data source. I set HTTP JSON receiver point with "/" to receive all json document in alphanumeric format, but when I receive the post with the json document, the point fill with null data and no the whole document.
This is the datasource configuration:
{
"dataSources":[
{
"xid":"DS_DAI_JSON_receiver",
"name":"DAI_JSON_receiver",
"enabled":true,
"type":"HTTP_JSON_RECEIVER",
"alarmLevels":{
"SET_POINT_FAILURE":"URGENT",
"JSON_READ_FAILURE":"URGENT"
},
"purgeType":"YEARS",
"setType":"PUBLISHER",
"dateFormat":"DATE_FORMAT_BASIC",
"receiveType":"JSON",
"deviceIdWhiteList":[
""
],
"ipWhiteList":[
"...*"
],
"setPointUrl":"http://localhost:8080/httpds",
"editPermission":"",
"purgeOverride":false,
"purgePeriod":1
}
],
"dataPoints":[
{
"xid":"DP_json",
"name":"json",
"enabled":true,
"loggingType":"ON_CHANGE",
"intervalLoggingPeriodType":"MINUTES",
"intervalLoggingType":"INSTANT",
"purgeType":"YEARS",
"pointLocator":{
"dataType":"ALPHANUMERIC",
"deviceIdentifier":"",
"deviceIdentifierKey":"",
"timestampIdentifier":null,
"binary0Value":"",
"includeTimestamp":true,
"parameterName":"/",
"setPointName":"",
"settable":false
},
"eventDetectors":[
],
"plotType":"STEP",
"rollup":"NONE",
"unit":"",
"simplifyType":"NONE",
"chartColour":"",
"chartRenderer":{
"type":"TABLE",
"limit":10
},
"dataSourceXid":"DS_DAI_JSON_receiver",
"defaultCacheSize":1,
"deviceName":"DAI_JSON_receiver",
"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":"PLAIN",
"useUnitAsSuffix":false,
"suffix":""
},
"tolerance":0.0
}
]
}
The json receive whith the HTTP receiver listener is like this:
[
{
"type": "1",
"data": {
"image": null,
"video": null,
"idDetector": "CAS-97",
"idIncident": "CAS202010053",
"status": 1,
"place": null,
"typeIncident": 1
}
},
{
"type": "1",
"data": {
"image": null,
"video": null,
"idDetector": "CAS-96",
"idIncident": 0,
"status": 0,
"place": null,
"typeIncident": 0
}
}
]
I thing it could be a bug, other json pointer notation like /0/data/idDetector works fine.
Thanks !
I'm working around this problem @Nurr commented.
There is an alternative in mango to this issue? If the index is changing in every Http post?
Thanks for your reply I configure the URL with login time Out and now it work correctly.
OK, I generate an easy generic topic for the problem....
Hello,
I have some trouble with the SQL data source due the DB connection:
For example, if a configure first the SQL data source and the DB is not up, when I import a DB json configuration or I save the data source manually it takes so much time ( > 100 sec) . I try with MSSQL database type.
My question : I want to know if there is an issue of all DB connection or only MSSQL?
An other issue: if you restart mango and you dont have connection with the data base each data source took so much time to start , 100 to 300 seconds per data source in the initi proccess. Is this normal?
I don´t know if I´m doing something bad or threre is a way to avoid this behaivour.
Some help or advice are welcome.
Thanks!
An other note if you restart mango and you dont have connection with the data base each data source took so much time to start (100 to 300 seconds) , it took so much time to start mango (some hours) if you have quite DB data sources...
If a configure first the SQL data source and the DB is not up for example, when I import a DB json configuration freeze the mango source edition and the import procces too, then I have to restart mango by console. It seems that when the data source is saved, first it check the DB connection with a very high timeout that you cannot configure and the proccess of the data source edition is running but freeze in the check connection DB. It could be MSSQL driver fault maybe I don´t know...
Hello,
The problem I found is when you connect with a MSSQL data base and there is not connection with it. Then you cannot disable all the data sources and you cannot import a json configuration of data sources. When there is connection with the data base the behaivour is correct.
I´m working whit Mango v3.6.4.
The configuration of mi data source is an SQL data source :
{
"dataSources":[
{
"xid":"DS_SQL_KINEO_status",
"name":"SQL_status",
"enabled":true,
"type":"SQL",
"alarmLevels":{
"POLL_ABORTED":"URGENT",
"STATEMENT_EXCEPTION":"URGENT",
"DATA_SOURCE_EXCEPTION":"URGENT"
},
"purgeType":"YEARS",
"updatePeriods":1,
"updatePeriodType":"MINUTES",
"connectionUrl":"jdbc:sqlserver://10.120.50.24:1433;databaseName=master;",
"driverClassname":"com.microsoft.sqlserver.jdbc.SQLServerDriver",
"password":"password",
"rowBasedQuery":false,
"selectStatement":"",
"useMangoDatabase":false,
"username":"username",
"quantize":false,
"useCron":false,
"editPermission":"",
"purgeOverride":false,
"purgePeriod":1
}
],
"dataPoints":[
]
}
The driver I use is in this link: https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15
I´m using mssql-jdbc-8.4.1.jre8.jar
I paste part of the ma.log:
INFO 2020-10-19T00:05:00,022 (com.serotonin.m2m2.rt.maint.work.BackupWorkItem.execute:101) - Starting backup WorkItem.
INFO 2020-10-19T00:05:00,022 (com.serotonin.m2m2.rt.maint.work.DatabaseBackupWorkItem.execute:108) - Starting database backup WorkItem.
INFO 2020-10-19T00:05:00,025 (com.serotonin.m2m2.rt.maint.work.DatabaseBackupWorkItem.createLogOutputStream:224) - Writing backup log to /opt/mango/logs/com.serotonin.m2m2.rt.maint.work.DatabaseBackupWorkItem.log
INFO 2020-10-19T00:05:11,623 (com.serotonin.m2m2.rt.maint.work.BackupWorkItem.execute:181) - Finished backup WorkItem.
INFO 2020-10-19T00:24:02,086 (com.serotonin.m2m2.sql.SqlDataSourceRT.initialize:512) - Error while initializing data source
com.microsoft.sqlserver.jdbc.SQLServerException: No se pudo realizar la conexi�n TCP/IP al host 10.120.50.24, puerto 1433. Error: "connect timed out. Verifique las propiedades de conexi�n, compruebe que hay una instancia de SQL Server ejecut�ndose en el host y aceptando las conexiones TCP/IP en el puerto y compruebe que no hay ning�n firewall bloqueando las conexiones TCP en el puerto.".
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:285) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2462) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:668) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2695) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2362) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2213) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1276) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:861) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at java.sql.DriverManager.getConnection(DriverManager.java:677) ~[java.sql:?]
at java.sql.DriverManager.getConnection(DriverManager.java:228) ~[java.sql:?]
at com.serotonin.m2m2.sql.SqlDataSourceRT.initialize(SqlDataSourceRT.java:501) ~[?:?]
at com.serotonin.m2m2.sql.SqlDataSourceRT.manageConnection(SqlDataSourceRT.java:280) ~[?:?]
at com.serotonin.m2m2.sql.SqlDataSourceRT.doPoll(SqlDataSourceRT.java:297) ~[?:?]
at com.serotonin.m2m2.rt.dataSource.PollingDataSource.doPollNoSync(PollingDataSource.java:228) ~[mango-3.6.4.jar:?]
at com.serotonin.m2m2.rt.dataSource.PollingDataSource.scheduleTimeoutImpl(PollingDataSource.java:183) ~[mango-3.6.4.jar:?]
at com.serotonin.m2m2.rt.dataSource.PollingDataSource$1.scheduleTimeout(PollingDataSource.java:85) ~[mango-3.6.4.jar:?]
at com.serotonin.m2m2.util.timeout.TimeoutTask.run(TimeoutTask.java:59) ~[mango-3.6.4.jar:?]
at com.serotonin.timer.Task.runTask(Task.java:179) ~[mango-3.6.4.jar:?]
at com.serotonin.timer.TaskWrapper.run(TaskWrapper.java:23) ~[mango-3.6.4.jar:?]
at com.serotonin.timer.OrderedThreadPoolExecutor$OrderedTaskCollection.run(OrderedThreadPoolExecutor.java:336) ~[mango-3.6.4.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
WARN 2020-10-19T00:32:01,135 (com.serotonin.m2m2.rt.dataSource.PollingDataSource.incrementUnsuccessfulPolls:150) - Data Source SQL_KINEO_status aborted 3154 polls since it started.
INFO 2020-10-19T01:05:17,052 (com.serotonin.m2m2.sql.SqlDataSourceRT.initialize:512) - Error while initializing data source
com.microsoft.sqlserver.jdbc.SQLServerException: No se pudo realizar la conexi�n TCP/IP al host 10.120.50.24, puerto 1433. Error: "connect timed out. Verifique las propiedades de conexi�n, compruebe que hay una instancia de SQL Server ejecut�ndose en el host y aceptando las conexiones TCP/IP en el puerto y compruebe que no hay ning�n firewall bloqueando las conexiones TCP en el puerto.".
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:285) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2462) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:668) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2695) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2362) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2213) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1276) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:861) ~[mssql-jdbc-8.4.1.jre8.jar:?]
at java.sql.DriverManager.getConnection(DriverManager.java:677) ~[java.sql:?]
at java.sql.DriverManager.getConnection(DriverManager.java:228) ~[java.sql:?]
at com.serotonin.m2m2.sql.SqlDataSourceRT.initialize(SqlDataSourceRT.java:501) ~[?:?]
at com.serotonin.m2m2.sql.SqlDataSourceRT.manageConnection(SqlDataSourceRT.java:280) ~[?:?]
at com.serotonin.m2m2.sql.SqlDataSourceRT.doPoll(SqlDataSourceRT.java:297) ~[?:?]
at com.serotonin.m2m2.rt.dataSource.PollingDataSource.doPollNoSync(PollingDataSource.java:228) ~[mango-3.6.4.jar:?]
at com.serotonin.m2m2.rt.dataSource.PollingDataSource.scheduleTimeoutImpl(PollingDataSource.java:183) ~[mango-3.6.4.jar:?]
at com.serotonin.m2m2.rt.dataSource.PollingDataSource$1.scheduleTimeout(PollingDataSource.java:85) ~[mango-3.6.4.jar:?]
at com.serotonin.m2m2.util.timeout.TimeoutTask.run(TimeoutTask.java:59) ~[mango-3.6.4.jar:?]
at com.serotonin.timer.Task.runTask(Task.java:179) ~[mango-3.6.4.jar:?]
at com.serotonin.timer.TaskWrapper.run(TaskWrapper.java:23) ~[mango-3.6.4.jar:?]
at com.serotonin.timer.OrderedThreadPoolExecutor$OrderedTaskCollection.run(OrderedThreadPoolExecutor.java:336) ~[mango-3.6.4.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
Thanks in advance!!
Hello, Thanks for your replies, I tried @Ralf suggestion and I think is all right. Thanks!
Hello everyone,
I want to known the connectivity of the devices connected to Mango, for example if one device is connected by http retrieve ,SNMP or Modbus data source.
I explain how I am doing this:
I configure a virtual data source call "status" and I add numeric value data points to trace connectivity of each device. Then in the event handler I set status set point to zero when a communication expection is active (for example, data source exception or data retrieval failure), then when the exception is inactive I set the status to one.
This solution is all right but when I start Mango only for the first time I don´t know the connectivity of the devices and I have to put with a Script this status to one , then wait to set the real status of the devices if there is a exception communication. Or if a add a data source to Mango I manually set this status to one.
But there is a trouble in some cases. For example If there is no communication with the device and I restart Mango and meanwhile in the restart proccess the device start to communicate. When the startup process is finish the exception communication is not active and then the status is zero and mistmach with the real communication status.
I think I can fix this running the script that set all the status point to one in the start-up system event but I don´t know if this is the best solution.
After this extensive explanation... My question is: There is another way to know the connected devices to Mango or I am doing good this way?
Comments or suggestions are welcome.
Thanks!