diff --git a/conf/mycontroller.mv.db b/conf/mycontroller.mv.db index a8b8065..e6e126d 100644 Binary files a/conf/mycontroller.mv.db and b/conf/mycontroller.mv.db differ diff --git a/conf/mycontroller.trace.db b/conf/mycontroller.trace.db index d452a68..20e4cc8 100644 --- a/conf/mycontroller.trace.db +++ b/conf/mycontroller.trace.db @@ -2066,3 +2066,171 @@ org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic c at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) +2019-11-28 09:18:32 jdbc[7]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.field.FieldType.createForeignObject(FieldType.java:1044) + at com.j256.ormlite.field.FieldType.assignField(FieldType.java:556) + at com.j256.ormlite.stmt.mapped.BaseMappedQuery.mapRow(BaseMappedQuery.java:72) + at com.j256.ormlite.stmt.StatementExecutor.queryForFirst(StatementExecutor.java:109) + at com.j256.ormlite.dao.BaseDaoImpl.queryForFirst(BaseDaoImpl.java:239) + at com.j256.ormlite.stmt.QueryBuilder.queryForFirst(QueryBuilder.java:380) + at org.mycontroller.standalone.db.dao.NodeDaoImpl.get(NodeDaoImpl.java:66) + at org.mycontroller.standalone.provider.ExecuterAbstract.getNode(ExecuterAbstract.java:480) + at org.mycontroller.standalone.provider.ExecuterAbstract.isNodeRegistered(ExecuterAbstract.java:620) + at org.mycontroller.standalone.provider.ExecuterAbstract.execute(ExecuterAbstract.java:88) + at org.mycontroller.standalone.provider.EngineAbstract.auditQueue(EngineAbstract.java:274) + at org.mycontroller.standalone.provider.EngineAbstract.run(EngineAbstract.java:133) + at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) + at java.lang.Thread.run(Unknown Source) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 27 more +2019-11-28 09:19:06 jdbc[7]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.field.FieldType.createForeignObject(FieldType.java:1044) + at com.j256.ormlite.field.FieldType.assignField(FieldType.java:556) + at com.j256.ormlite.stmt.mapped.BaseMappedQuery.mapRow(BaseMappedQuery.java:72) + at com.j256.ormlite.stmt.StatementExecutor.queryForFirst(StatementExecutor.java:109) + at com.j256.ormlite.dao.BaseDaoImpl.queryForFirst(BaseDaoImpl.java:239) + at com.j256.ormlite.stmt.QueryBuilder.queryForFirst(QueryBuilder.java:380) + at org.mycontroller.standalone.db.dao.NodeDaoImpl.get(NodeDaoImpl.java:66) + at org.mycontroller.standalone.provider.ExecuterAbstract.getNode(ExecuterAbstract.java:480) + at org.mycontroller.standalone.provider.ExecuterAbstract.isNodeRegistered(ExecuterAbstract.java:620) + at org.mycontroller.standalone.provider.ExecuterAbstract.execute(ExecuterAbstract.java:88) + at org.mycontroller.standalone.provider.EngineAbstract.auditQueue(EngineAbstract.java:274) + at org.mycontroller.standalone.provider.EngineAbstract.run(EngineAbstract.java:133) + at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) + at java.lang.Thread.run(Unknown Source) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 27 more +2019-11-28 12:07:28 jdbc[567]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1484) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1459) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:675) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForOne(JdbcDatabaseConnection.java:299) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:235) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:229) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.testConnection(JdbcPooledConnectionSource.java:352) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:131) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.queryForId(BaseDaoImpl.java:226) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.getById(BaseAbstractDaoImpl.java:339) + at org.mycontroller.standalone.gateway.config.GatewayConfig.setStatus(GatewayConfig.java:107) + at org.mycontroller.standalone.gateway.serial.SerialDriverJSerialComm.disconnect(SerialDriverJSerialComm.java:99) + at org.mycontroller.standalone.gateway.serial.GatewaySerial.disconnect(GatewaySerial.java:96) + at org.mycontroller.standalone.provider.EngineAbstract.run(EngineAbstract.java:140) + at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) + at java.lang.Thread.run(Unknown Source) +2019-11-28 12:07:28 jdbc[587]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1484) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1459) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:675) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForOne(JdbcDatabaseConnection.java:299) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:235) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:229) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.testConnection(JdbcPooledConnectionSource.java:352) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:131) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.queryForId(BaseDaoImpl.java:226) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.getById(BaseAbstractDaoImpl.java:339) + at org.mycontroller.standalone.gateway.config.GatewayConfig.setStatus(GatewayConfig.java:107) + at org.mycontroller.standalone.gateway.serial.SerialDriverJSerialComm.disconnect(SerialDriverJSerialComm.java:99) + at org.mycontroller.standalone.gateway.serial.GatewaySerial.disconnect(GatewaySerial.java:96) + at org.mycontroller.standalone.provider.EngineAbstract.run(EngineAbstract.java:140) + at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) + at java.lang.Thread.run(Unknown Source) +2019-11-28 12:07:28 jdbc[589]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1484) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1459) + at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:675) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForOne(JdbcDatabaseConnection.java:299) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:235) + at com.j256.ormlite.jdbc.JdbcDatabaseConnection.queryForLong(JdbcDatabaseConnection.java:229) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.testConnection(JdbcPooledConnectionSource.java:352) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:131) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.dao.BaseDaoImpl.queryForId(BaseDaoImpl.java:226) + at org.mycontroller.standalone.db.dao.BaseAbstractDaoImpl.getById(BaseAbstractDaoImpl.java:339) + at org.mycontroller.standalone.gateway.config.GatewayConfig.setStatus(GatewayConfig.java:107) + at org.mycontroller.standalone.gateway.serial.SerialDriverJSerialComm.disconnect(SerialDriverJSerialComm.java:99) + at org.mycontroller.standalone.gateway.serial.GatewaySerial.disconnect(GatewaySerial.java:96) + at org.mycontroller.standalone.provider.EngineAbstract.run(EngineAbstract.java:140) + at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) + at java.lang.Thread.run(Unknown Source) +2019-11-28 12:07:58 jdbc[7]: null +org.h2.message.DbException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:185) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:127) + at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:100) + at org.h2.Driver.connect(Driver.java:69) + at java.sql.DriverManager.getConnection(Unknown Source) + at java.sql.DriverManager.getConnection(Unknown Source) + at com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnectionSource.java:266) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadWriteConnection(JdbcPooledConnectionSource.java:140) + at com.j256.ormlite.jdbc.JdbcPooledConnectionSource.getReadOnlyConnection(JdbcPooledConnectionSource.java:115) + at com.j256.ormlite.field.FieldType.createForeignObject(FieldType.java:1044) + at com.j256.ormlite.field.FieldType.assignField(FieldType.java:556) + at com.j256.ormlite.stmt.mapped.BaseMappedQuery.mapRow(BaseMappedQuery.java:72) + at com.j256.ormlite.stmt.StatementExecutor.queryForFirst(StatementExecutor.java:109) + at com.j256.ormlite.dao.BaseDaoImpl.queryForFirst(BaseDaoImpl.java:239) + at com.j256.ormlite.stmt.QueryBuilder.queryForFirst(QueryBuilder.java:380) + at org.mycontroller.standalone.db.dao.NodeDaoImpl.get(NodeDaoImpl.java:66) + at org.mycontroller.standalone.provider.ExecuterAbstract.getNode(ExecuterAbstract.java:480) + at org.mycontroller.standalone.provider.ExecuterAbstract.isNodeRegistered(ExecuterAbstract.java:620) + at org.mycontroller.standalone.provider.ExecuterAbstract.execute(ExecuterAbstract.java:88) + at org.mycontroller.standalone.provider.EngineAbstract.auditQueue(EngineAbstract.java:274) + at org.mycontroller.standalone.provider.EngineAbstract.run(EngineAbstract.java:133) + at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) + at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) + at java.lang.Thread.run(Unknown Source) +Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed by the application and is garbage collected [90018-194] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) + ... 27 more diff --git a/conf/persistent_stores/mc/mc.mapdb b/conf/persistent_stores/mc/mc.mapdb index b9602f9..6879f6d 100644 Binary files a/conf/persistent_stores/mc/mc.mapdb and b/conf/persistent_stores/mc/mc.mapdb differ diff --git a/conf/persistent_stores/mc/mc.mapdb.p b/conf/persistent_stores/mc/mc.mapdb.p index 7079826..72cbab9 100644 Binary files a/conf/persistent_stores/mc/mc.mapdb.p and b/conf/persistent_stores/mc/mc.mapdb.p differ diff --git a/conf/persistent_stores/moquette/moquette_store.mapdb.p b/conf/persistent_stores/moquette/moquette_store.mapdb.p index 9b1ea49..66f3730 100644 Binary files a/conf/persistent_stores/moquette/moquette_store.mapdb.p and b/conf/persistent_stores/moquette/moquette_store.mapdb.p differ diff --git a/conf/resources/scripts/conditions/Any sensor tripped.js b/conf/resources/scripts/conditions/Any sensor tripped.js new file mode 100644 index 0000000..09bf6c0 --- /dev/null +++ b/conf/resources/scripts/conditions/Any sensor tripped.js @@ -0,0 +1,13 @@ +// gets each sensor passed in by their uid and +// then returns true if any of them are tripped +anyTripped = false; + +for (var key in uidTags) { + var uidThing = mcApi.uidTag().getByUid(uidTags[key]); + if (uidThing && uidThing.getResource().value === "1") { + anyTripped = true; + break; + } +} + +anyTripped; \ No newline at end of file diff --git a/conf/resources/scripts/conditions/If either garage door has been open for more than 15 minutes.js b/conf/resources/scripts/conditions/If either garage door has been open for more than 15 minutes.js deleted file mode 100644 index 3976761..0000000 --- a/conf/resources/scripts/conditions/If either garage door has been open for more than 15 minutes.js +++ /dev/null @@ -1,4 +0,0 @@ -northDoorOpen = mcApi.uidTag().getByUid("north-garage-door-tripped").getResource(); -southDoorOpen = mcApi.uidTag().getByUid("south-garage-door-tripped").getResource(); - -!northDoorOpen || !southDoorOpen \ No newline at end of file diff --git a/conf/resources/scripts/conditions/No sensors tripped.js b/conf/resources/scripts/conditions/No sensors tripped.js new file mode 100644 index 0000000..e0b793a --- /dev/null +++ b/conf/resources/scripts/conditions/No sensors tripped.js @@ -0,0 +1,13 @@ +// gets each sensor passed in by their uid and +// then returns true if none of them are tripped +noneTripped = true; + +for (var key in uidTags) { + var uidThing = mcApi.uidTag().getByUid(uidTags[key]); + if (uidThing && uidThing.getResource().value === "1") { + noneTripped = false; + break; + } +} + +noneTripped; \ No newline at end of file diff --git a/conf/resources/scripts/operations/Disable timer.js b/conf/resources/scripts/operations/Disable timer.js new file mode 100644 index 0000000..6c50146 --- /dev/null +++ b/conf/resources/scripts/operations/Disable timer.js @@ -0,0 +1,8 @@ +// disables a timer with the 'timeName' binding passed in +filter = new java.util.HashMap(); +filter.put('name', timerName); + +timer = mcApi.timer().get(filter); +if (timer) { + mcApi.timer().disable([timer.id]); +} \ No newline at end of file diff --git a/conf/resources/scripts/operations/Enable Timer.js b/conf/resources/scripts/operations/Enable Timer.js new file mode 100644 index 0000000..ebb2dfe --- /dev/null +++ b/conf/resources/scripts/operations/Enable Timer.js @@ -0,0 +1,8 @@ +// enables a timer with the 'timeName' binding passed in +filter = new java.util.HashMap(); +filter.put('name', timerName); + +timer = mcApi.timer().get(filter); +if (timer) { + mcApi.timer().enable([timer.id]); +} \ No newline at end of file diff --git a/www/_configurations/mycontroller-configs.json b/www/_configurations/mycontroller-configs.json index 5613357..1819600 100644 --- a/www/_configurations/mycontroller-configs.json +++ b/www/_configurations/mycontroller-configs.json @@ -3,7 +3,7 @@ "timezoneMilliseconds" : -21600000, "timezoneString" : "CST", "appVersion" : "1.4.0.Final", - "systemDate" : 1574884623419, + "systemDate" : 1574996949512, "appName" : "MyController.org", "languageId" : "en_us", "language" : "English (US)",