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

    Frustrated Newbie - Help with Nodes and Sensors

    Scheduled Pinned Locked Moved Troubleshooting
    46 Posts 4 Posters 5.4k Views 2 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 @Emenike
      last edited by

      @emenike

      To receive time in your node, you have to call requestTime(); from your node, then you will receive time on the following function(add this in your node code),

      void receiveTime(unsigned long _timestamp){
         // do actions with received time
      }
      
      • Regards Wunderground: I have added details in https://forum.mycontroller.org/topic/215/weatherdata-structure-question/3 looks like they will give some access for personal use.
      • Regards Open weather, we do not have any direct support, however, you may use a script to collect data.

      I need to create Actions (or triggers that target all 8 objects from my node and set them all "on".

      You need to create 8 Operations for each object. Send payload operation with 1(ON), Add all of them in a rule. define your condition in the rule.

      I need to create another action trigger that targets all 8 objects and sets them to "off"

      You need to create 8 Operations for each object. Send payload operation with 0(OFF), Add all of them in a rule. define your condition in the rule.

      I need to create an action trigger cycles through each value on the node and turn them on for a duration I have a variable in the Controller on each value to determine how long each one will run. Its a whole lot, and it appears I may have bitten off more than I can chew.

      Seems this is complex, we may not easy by simple rule definition/timer. A script will be a good solution for this.

      Some of the discussions,
      https://forum.mycontroller.org/topic/45/timers-and-scripts
      https://forum.mycontroller.org/topic/262/how-to-automatically-turn-off-relay-after-defined-time

      EmenikeE 1 Reply Last reply Reply Quote 0
      • EmenikeE Offline
        Emenike @jkandasa
        last edited by Emenike

        Thanks @jkandasa you are awesome support. I see the requestTime() function call in the sketch, but where in MyController do I add the node code?

        void receiveTime(unsigned long _timestamp){
           // do actions with received time
        }
        
        jkandasaJ 1 Reply Last reply Reply Quote 0
        • EmenikeE Offline
          Emenike
          last edited by

          I have created the UID Tags... See below, did I do it right?UID Tags.png

          I then tried to create the JS script as described in your old reference you supplied... but I got an error.

          RunQuery Error.png

          What are I doing wrong?

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

            @Emenike

            I see the requestTime() function call in the sketch, but where in MyController do I add the node code?

            This code needs to be added to your MySensors node sketch, the example in your sprinkler sketch.
            Nothing to do with MyController to receive timestamp.

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

              @Emenike said in Frustrated Newbie - Help with Nodes and Sensors:

              I then tried to create the JS script as described in your old reference you supplied... but I got an error.

              Did you modify the script? If yes, can you post your script?

              If not, you have to create all the UID, valve-status is not available in your UID's list also Value 1 is different then value01

              1 Reply Last reply Reply Quote 0
              • EmenikeE Offline
                Emenike
                last edited by

                Hello @jkandasa
                I have been out of town, haven't touched MYC for a while. Just popped intoday and tried my hands on the script. Ran it after creating the Operation and the Timmer to trigger and run it. But it wont tun. I get an error ```

                {
                  "errorMessage": "TypeError: Cannot get property \"status\" of null in <eval> at line number 8"
                }
                

                Here is the JS script that I edited for 8 valves

                var myImports = new JavaImporter(java.io, java.lang, java.util);
                
                with(myImports) {
                  
                  var LoopThroughValves = mcApi.variable().get("Status");
                
                  //Check already running?
                  if(LoopThroughValves.status !== 'running'){
                
                    //Update as running
                    valveStatus.value = "running";
                    mcApi.variable().update(valveStatus);
                    mcApi.logger().debug("Loop Through Valve Script Triggered...");
                    
                    var masterValve = mcApi.uidTag(0).getByUid("All Zones").getResource();
                    var valve01 = mcApi.uidTag().getByUid("Zone 1").getResource();
                    var valve02 = mcApi.uidTag().getByUid("Zone 2").getResource();
                    var valve03 = mcApi.uidTag().getByUid("Zone 3").getResource();
                    var valve04 = mcApi.uidTag().getByUid("Zone 4").getResource();
                    var valve05 = mcApi.uidTag().getByUid("Zone 5").getResource();
                    var valve06 = mcApi.uidTag().getByUid("Zone 6").getResource();
                    var valve07 = mcApi.uidTag().getByUid("Zone 7").getResource();
                    var valve08 = mcApi.uidTag().getByUid("Zone 8").getResource();
                
                    var delayTime = 1000 * 60 * 10; //10 minutes
                  
                    //Turn ON master valve and Valve01
                    masterValve.value = "1"; //Update master valve ON state
                    mcApi.sensor().sendPayload(masterValve); //sensd state
                    valve01.value = "1"; //Update valve01 ON state
                    mcApi.sensor().sendPayload(valve01); //sensd state
                      
                    //Update valve01 is running
                    valveStatus.value2 = "value01";
                    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 = "value02";
                    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 = "value03";
                    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.value3 = "value04";
                    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.value4 = "value05";
                    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.value5 = "value06";
                    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 valve06 is running
                    valveStatus.value6 = "value07";
                    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 valve07 is running
                    valveStatus.value7 = "value08";
                    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("Loop Through Valve Script Completed...");
                  }else{
                    mcApi.logger().warn("Loop Through Valve Script is already running...");
                  }
                }
                
                1 Reply Last reply Reply Quote 0
                • EmenikeE Offline
                  Emenike
                  last edited by

                  What am I doing wrong? I am posting the Nodes and Sensors just incase... Sensors Script.png

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

                    @Emenike Can you post your UID Tags and Variables repositorypage?

                    1 Reply Last reply Reply Quote 0
                    • EmenikeE Offline
                      Emenike
                      last edited by

                      Sorry @jkandasa, I have been on the move travelled for the Christmas Holiday. so I am away from my nodes and sensors. But I have the MYC on my laptop. so here are the data you requested for.
                      UID2.png

                      and the Variables - Variable Repisotory.png

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

                        @Emenike I do not find a variable Status in your variable repository screenshot, But you are trying to access it,

                          var LoopThroughValves = mcApi.variable().get("Status");
                        
                        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