• Categories
    • Recent
    • Tags
    • Popular
    • Register
    • Login

    MyController 1.0.0.Final version released

    Scheduled Pinned Locked Moved Announcements
    1.0.0.finalreleasemycontroller
    7 Posts 4 Posters 1.8k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • jkandasaJ Offline
      jkandasa
      last edited by

      Build download location

      RELEASE NOTES AND USER DOCUMENT NEEDS TO BE UPDATED. STAY TUNED!

      1 Reply Last reply Reply Quote 1
      • T Offline
        Tag MOD
        last edited by

        👍 great!!! congratulations!! switching to the final release now!!
        Really great work!!
        😃

        1 Reply Last reply Reply Quote 1
        • skywatchS Offline
          skywatch
          last edited by

          Amazing progress = well done!!!!

          So, version 2 beta, when will we see that then ? 😉

          jkandasaJ 1 Reply Last reply Reply Quote 1
          • jkandasaJ Offline
            jkandasa @skywatch
            last edited by

            @skywatch You can see version 2 beta soon 😉

            1 Reply Last reply Reply Quote 1
            • G Offline
              gouds
              last edited by

              Hi Guys,
              Good work on the new release. I have updated to the new Build and i am now experiencing issues my timers/scripts not executing. This was based off this topic (https://forum.mycontroller.org/topic/45/timers-and-scripts/15)

              Im now getting the below error:

              2017-11-06 09:05:00,430 ERROR [Quartz_Scheduler_Worker-6] [org.mycontroller.standalone.operation.model.OperationExecuteScript:133] Exception on McScript(engineName=null, mimeType=null, extension=js, name=/opt/mycontroller/conf/resources/scripts/operations/Timer-Garden-Schedule-Front.js, canonicalPath=null, type=OPERATION, size=0, lastModified=0, bindings={})
              javax.script.ScriptException: TypeError: (mcApi.uidTag().getByUid("GardenFront-Maser")).getSensorVariable is not a function in <eval> at line number 14
              	at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:467)
              	at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:451)
              	at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:403)
              	at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:399)
              	at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:150)
              	at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
              	at org.mycontroller.standalone.scripts.McScriptEngine.executeScript(McScriptEngine.java:86)
              	at org.mycontroller.standalone.operation.model.OperationExecuteScript.executeScript(OperationExecuteScript.java:130)
              	at org.mycontroller.standalone.operation.model.OperationExecuteScript.execute(OperationExecuteScript.java:112)
              	at org.mycontroller.standalone.timer.jobs.TimerJob.executeTimer(TimerJob.java:58)
              	at org.mycontroller.standalone.timer.jobs.TimerJob.doRun(TimerJob.java:94)
              	at org.knowm.sundial.Job.execute(Job.java:57)
              	at org.quartz.core.JobRunShell.run(JobRunShell.java:178)
              	at org.quartz.core.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:515)
              Caused by: jdk.nashorn.internal.runtime.ECMAException: TypeError: (mcApi.uidTag().getByUid("GardenFront-Maser")).getSensorVariable is not a function
              	at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
              	at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213)
              	at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:185)
              	at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172)
              	at jdk.nashorn.internal.runtime.Undefined.lookup(Undefined.java:102)
              	at jdk.nashorn.internal.runtime.linker.NashornLinker.getGuardedInvocation(NashornLinker.java:106)
              	at jdk.nashorn.internal.runtime.linker.NashornLinker.getGuardedInvocation(NashornLinker.java:98)
              	at jdk.internal.dynalink.support.CompositeTypeBasedGuardingDynamicLinker.getGuardedInvocation(CompositeTypeBasedGuardingDynamicLinker.java:176)
              	at jdk.internal.dynalink.support.CompositeGuardingDynamicLinker.getGuardedInvocation(CompositeGuardingDynamicLinker.java:124)
              	at jdk.internal.dynalink.support.LinkerServicesImpl.getGuardedInvocation(LinkerServicesImpl.java:154)
              	at jdk.internal.dynalink.DynamicLinker.relink(DynamicLinker.java:253)
              	at jdk.nashorn.internal.scripts.Script$132$\^eval\_.:program(<eval>:14)
              	at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
              	at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
              	at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
              	at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:446)
              

              My script is as follows:

              var myImports = new JavaImporter(java.io, java.lang, java.util);
              
              with(myImports) {
                
                var valveStatus = mcApi.variable().get("Timer-Garden-Schedule-Front-Status");
              
                //Check already running?
                if(valveStatus.value !== 'running'){
                  //Update as running
                  valveStatus.value = "running";
                  mcApi.variable().update(valveStatus);
                  mcApi.logger().debug("valve-control script triggered...");
                  
                  var masterValve = mcApi.uidTag().getByUid("GardenFront-Maser").getSensorVariable();
                  var valve01 = mcApi.uidTag().getByUid("GardenFront-Driveway-Bottom-Front").getSensorVariable();
                  var valve02 = mcApi.uidTag().getByUid("GardenFront-Driveway-Bottom-Back").getSensorVariable();
                  var valve03 = mcApi.uidTag().getByUid("GardenFront-Driveway-Top-Front").getSensorVariable();
                  var valve04 = mcApi.uidTag().getByUid("GardenFront-Driveway-Top-Back").getSensorVariable();
                  var valve05 = mcApi.uidTag().getByUid("GardenFront-FrontHouse").getSensorVariable();
                  var valve06 = mcApi.uidTag().getByUid("GardenFront-Side").getSensorVariable();
                  var valve07 = mcApi.uidTag().getByUid("GardenFront-Driveway-Trees").getSensorVariable();
                  var valve08 = mcApi.uidTag().getByUid("GardenFront-NatureStrip-Trees").getSensorVariable();
              
                    
                  var delayTime = 1000 * 60 * 15; //15 minutes
                
                  //Turn ON master valve and Valve01
                  masterValve.value = "1"; //Update master valve ON state
                  mcApi.sensor().sendPayload(masterValve); //send state
                  valve01.value = "1"; //Update valve01 ON state
                  mcApi.sensor().sendPayload(valve01); //send state
                    
                  //Update valve01 is running
                  valveStatus.value2 = "valve01";
                  mcApi.variable().update(valveStatus);
                
                
                  //Wait time
                  Thread.sleep(delayTime);
                
                  //Turn OFF valve01 and turn ON valve02
                  valve01.value = "0"; //Update valve01 OFF state
                  mcApi.sensor().sendPayload(valve01); //send state
                  valve02.value = "1"; //Update valve02 ON state
                  mcApi.sensor().sendPayload(valve02); //send state
                  
                  //Update valve02 is running
                  valveStatus.value2 = "valve02";
                  mcApi.variable().update(valveStatus);
                  
                  //Wait time
                  Thread.sleep(delayTime);
                
                  //Turn OFF valve02 and turn ON valve03
                  valve02.value = "0"; //Update valve02 OFF state
                  mcApi.sensor().sendPayload(valve02); //send state
                  valve03.value = "1"; //Update valve03 ON state
                  mcApi.sensor().sendPayload(valve03); //send state
                
                  //Update valve03 is running
                  valveStatus.value2 = "valve03";
                  mcApi.variable().update(valveStatus);
                
                  //Wait time
                  Thread.sleep(delayTime);
              
                  //Turn OFF valve03 and turn ON valve04
                  valve03.value = "0"; //Update valve03 OFF state
                  mcApi.sensor().sendPayload(valve03); //send state
                  valve04.value = "1"; //Update valve04 ON state
                  mcApi.sensor().sendPayload(valve04); //send state
                
                  //Update valve04 is running
                  valveStatus.value2 = "valve04";
                  mcApi.variable().update(valveStatus);
                
                  //Wait time
                  Thread.sleep(delayTime);
              
              
                  //Turn OFF valve04 and turn ON valve05
                  valve04.value = "0"; //Update valve04 OFF state
                  mcApi.sensor().sendPayload(valve04); //send state
                  valve05.value = "1"; //Update valve05 ON state
                  mcApi.sensor().sendPayload(valve05); //send state
                
                  //Update valve05 is running
                  valveStatus.value2 = "valve05";
                  mcApi.variable().update(valveStatus);
                
                  //Wait time
                  Thread.sleep(delayTime);
              
              
                  //Turn OFF valve05 and turn ON valve06
                  valve05.value = "0"; //Update valve05 OFF state
                  mcApi.sensor().sendPayload(valve05); //send state
                  valve06.value = "1"; //Update valve06 ON state
                  mcApi.sensor().sendPayload(valve06); //send state
                
                  //Update valve06 is running
                  valveStatus.value2 = "valve06";
                  mcApi.variable().update(valveStatus);
                
                  //Wait time
                  Thread.sleep(delayTime);
              
              
                  //Turn OFF valve06 and turn ON valve07
                  valve06.value = "0"; //Update valve06 OFF state
                  mcApi.sensor().sendPayload(valve06); //send state
                  valve07.value = "1"; //Update valve07 ON state
                  mcApi.sensor().sendPayload(valve07); //send state
                
                  //Update valve07 is running
                  valveStatus.value2 = "valve07";
                  mcApi.variable().update(valveStatus);
                
                  //Wait time
                  Thread.sleep(delayTime);
              
              
                  //Turn OFF valve07 and turn ON valve08
                  valve07.value = "0"; //Update valve07 OFF state
                  mcApi.sensor().sendPayload(valve07); //send state
                  valve08.value = "1"; //Update valve08 ON state
                  mcApi.sensor().sendPayload(valve08); //send state
                
                  //Update valve08 is running
                  valveStatus.value2 = "valve08";
                  mcApi.variable().update(valveStatus);
                
                  //Wait time
                  Thread.sleep(delayTime);
              
                  //Turn OFF valve08 and turn OFF master valve
                  valve08.value = "0"; //Update valve08 OFF state
                  mcApi.sensor().sendPayload(valve08); //send state
                  masterValve.value = "0"; //Update master valve OFF state
                  mcApi.sensor().sendPayload(masterValve); //send state
                  
                  //Update not running
                  valveStatus.value = "stopped";
                  valveStatus.value2 = "-";
                  mcApi.variable().update(valveStatus);
                  mcApi.logger().debug("valve-control script completted...");
                }else{
                  mcApi.logger().warn("valve-control script is already running...");
                }
              }
              

              Any pointers on getting this to function again? (This has been working ok for the past year or so with no problems)

              All the best and thank in advance.

              Gouds

              jkandasaJ 1 Reply Last reply Reply Quote 0
              • jkandasaJ Offline
                jkandasa @gouds
                last edited by

                @gouds The function getSensorVariable() is deprecated and removed.

                mcApi.uidTag().getByUid("GardenFront-Maser").getSensorVariable();
                

                You have to change this function as getResource().

                Your script should be looking as follows,

                var myImports = new JavaImporter(java.io, java.lang, java.util);
                
                with(myImports) {
                  
                  var valveStatus = mcApi.variable().get("Timer-Garden-Schedule-Front-Status");
                
                  //Check already running?
                  if(valveStatus.value !== 'running'){
                    //Update as running
                    valveStatus.value = "running";
                    mcApi.variable().update(valveStatus);
                    mcApi.logger().debug("valve-control script triggered...");
                    
                    var masterValve = mcApi.uidTag().getByUid("GardenFront-Maser").getResource();
                    var valve01 = mcApi.uidTag().getByUid("GardenFront-Driveway-Bottom-Front").getResource();
                    var valve02 = mcApi.uidTag().getByUid("GardenFront-Driveway-Bottom-Back").getResource();
                    var valve03 = mcApi.uidTag().getByUid("GardenFront-Driveway-Top-Front").getResource();
                    var valve04 = mcApi.uidTag().getByUid("GardenFront-Driveway-Top-Back").getResource();
                    var valve05 = mcApi.uidTag().getByUid("GardenFront-FrontHouse").getResource();
                    var valve06 = mcApi.uidTag().getByUid("GardenFront-Side").getResource();
                    var valve07 = mcApi.uidTag().getByUid("GardenFront-Driveway-Trees").getResource();
                    var valve08 = mcApi.uidTag().getByUid("GardenFront-NatureStrip-Trees").getResource();
                
                      
                    var delayTime = 1000 * 60 * 15; //15 minutes
                  
                    //Turn ON master valve and Valve01
                    masterValve.value = "1"; //Update master valve ON state
                    mcApi.sensor().sendPayload(masterValve); //send state
                    valve01.value = "1"; //Update valve01 ON state
                    mcApi.sensor().sendPayload(valve01); //send state
                      
                    //Update valve01 is running
                    valveStatus.value2 = "valve01";
                    mcApi.variable().update(valveStatus);
                  
                  
                    //Wait time
                    Thread.sleep(delayTime);
                  
                    //Turn OFF valve01 and turn ON valve02
                    valve01.value = "0"; //Update valve01 OFF state
                    mcApi.sensor().sendPayload(valve01); //send state
                    valve02.value = "1"; //Update valve02 ON state
                    mcApi.sensor().sendPayload(valve02); //send state
                    
                    //Update valve02 is running
                    valveStatus.value2 = "valve02";
                    mcApi.variable().update(valveStatus);
                    
                    //Wait time
                    Thread.sleep(delayTime);
                  
                    //Turn OFF valve02 and turn ON valve03
                    valve02.value = "0"; //Update valve02 OFF state
                    mcApi.sensor().sendPayload(valve02); //send state
                    valve03.value = "1"; //Update valve03 ON state
                    mcApi.sensor().sendPayload(valve03); //send state
                  
                    //Update valve03 is running
                    valveStatus.value2 = "valve03";
                    mcApi.variable().update(valveStatus);
                  
                    //Wait time
                    Thread.sleep(delayTime);
                
                    //Turn OFF valve03 and turn ON valve04
                    valve03.value = "0"; //Update valve03 OFF state
                    mcApi.sensor().sendPayload(valve03); //send state
                    valve04.value = "1"; //Update valve04 ON state
                    mcApi.sensor().sendPayload(valve04); //send state
                  
                    //Update valve04 is running
                    valveStatus.value2 = "valve04";
                    mcApi.variable().update(valveStatus);
                  
                    //Wait time
                    Thread.sleep(delayTime);
                
                
                    //Turn OFF valve04 and turn ON valve05
                    valve04.value = "0"; //Update valve04 OFF state
                    mcApi.sensor().sendPayload(valve04); //send state
                    valve05.value = "1"; //Update valve05 ON state
                    mcApi.sensor().sendPayload(valve05); //send state
                  
                    //Update valve05 is running
                    valveStatus.value2 = "valve05";
                    mcApi.variable().update(valveStatus);
                  
                    //Wait time
                    Thread.sleep(delayTime);
                
                
                    //Turn OFF valve05 and turn ON valve06
                    valve05.value = "0"; //Update valve05 OFF state
                    mcApi.sensor().sendPayload(valve05); //send state
                    valve06.value = "1"; //Update valve06 ON state
                    mcApi.sensor().sendPayload(valve06); //send state
                  
                    //Update valve06 is running
                    valveStatus.value2 = "valve06";
                    mcApi.variable().update(valveStatus);
                  
                    //Wait time
                    Thread.sleep(delayTime);
                
                
                    //Turn OFF valve06 and turn ON valve07
                    valve06.value = "0"; //Update valve06 OFF state
                    mcApi.sensor().sendPayload(valve06); //send state
                    valve07.value = "1"; //Update valve07 ON state
                    mcApi.sensor().sendPayload(valve07); //send state
                  
                    //Update valve07 is running
                    valveStatus.value2 = "valve07";
                    mcApi.variable().update(valveStatus);
                  
                    //Wait time
                    Thread.sleep(delayTime);
                
                
                    //Turn OFF valve07 and turn ON valve08
                    valve07.value = "0"; //Update valve07 OFF state
                    mcApi.sensor().sendPayload(valve07); //send state
                    valve08.value = "1"; //Update valve08 ON state
                    mcApi.sensor().sendPayload(valve08); //send state
                  
                    //Update valve08 is running
                    valveStatus.value2 = "valve08";
                    mcApi.variable().update(valveStatus);
                  
                    //Wait time
                    Thread.sleep(delayTime);
                
                    //Turn OFF valve08 and turn OFF master valve
                    valve08.value = "0"; //Update valve08 OFF state
                    mcApi.sensor().sendPayload(valve08); //send state
                    masterValve.value = "0"; //Update master valve OFF state
                    mcApi.sensor().sendPayload(masterValve); //send state
                    
                    //Update not running
                    valveStatus.value = "stopped";
                    valveStatus.value2 = "-";
                    mcApi.variable().update(valveStatus);
                    mcApi.logger().debug("valve-control script completted...");
                  }else{
                    mcApi.logger().warn("valve-control script is already running...");
                  }
                }
                
                G 1 Reply Last reply Reply Quote 0
                • G Offline
                  gouds @jkandasa
                  last edited by

                  @jkandasa Thanks for your prompt reply. This seems to have corrected the issue that i was experiencing.

                  Thanks once again.

                  Cheers

                  Gouds

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  0

                  Online

                  587

                  Users

                  529

                  Topics

                  3.4k

                  Posts
                  Copyright © 2015-2025 MyController.org | Contributors | Localization