• header.categories
    • header.recent
    • header.tags
    • header.popular
    • register
    • login

    Frustrated Newbie - Help with Nodes and Sensors

    scheduled pinned locked moved Troubleshooting
    46 posts 4 posters 14.8k views 2 watching
    loading-more-posts
    • oldest-to-newest
    • newest-to-oldest
    • most-votes
    reply
    • reply-as-topic
    guest-login-reply
    deleted-message
    • T offline
      Tag MOD @Emenike
      global:last-edited-by,

      @emenike

      Make sure that the same baudrate is used in the gateway sketch and mycontroller.....

      EmenikeE one-reply-to-this-post last-reply-time reply quote 0
      • EmenikeE offline
        Emenike @Tag
        global:last-edited-by,

        @tag
        😭 but that was exactly how it was until you said to change 38400 …. but it connected alright after | changed to 38400 and brought the node next to the laptop.

        T one-reply-to-this-post last-reply-time reply quote 0
        • skywatchS offline
          skywatch @Emenike
          global:last-edited-by,

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

          @skywatch Thanks @skywatch

          Please note that I am using a Nano for my gate way...
          I thought the baud rate should be the same for Arduino and the Putty sniffer, I will revert to "38400"...

          That part of the gateway sketch is an 'If' statement. It just tells the compilier that 'if' the board is a 3.3v 8MHz type, then reduce the baud rate to match. 8MHz boards are not reliable at 115200.

          one-reply-to-this-post last-reply-time reply quote 0
          • T offline
            Tag MOD @Emenike
            global:last-edited-by,

            @emenike

            Okay so if I understand correctly, all works if the nodes are basically next to each other... is that correct?

            EmenikeE one-reply-to-this-post last-reply-time reply quote 0
            • EmenikeE offline
              Emenike @Tag
              global:last-edited-by,

              @tag Yes! All works well when they are next to each other on the same desk.
              I have reverted the default baud rate and all is well. I have gone ahead to create Triggers and Conditions, Schedules, Actions, etc. But I somehow can not seem to tie all up to do what I want.

              I want to do a whole lot of things, but lets start with the first one. I need to pull in time and date from the controller to my node. How do I do this? Can I have a simple example that shows the steps or syntax and I will try to do other stuff. The Mysensors node uses a project that pulls data from Weather Underground, which I learnt has stopped its free weather information services. I have researched the topic and found a likely alternative in Open Weather Service) . Is anyone using Open Weather? https://openweathermap.org/current)

              1. I need to create Actions (or triggers that target all 8 objects from my node and set them all "on".
              2. I need to create another action trigger that targets all 8 objects and sets them to "off"
              3. 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.
              jkandasaJ one-reply-to-this-post last-reply-time reply quote 0
              • jkandasaJ offline
                jkandasa @Emenike
                global: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 one-reply-to-this-post last-reply-time reply quote 0
                • EmenikeE offline
                  Emenike @jkandasa
                  global: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 one-reply-to-this-post last-reply-time reply quote 0
                  • EmenikeE offline
                    Emenike
                    global: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 one-reply-to-this-post last-reply-time reply quote 0
                    • jkandasaJ offline
                      jkandasa @Emenike
                      global: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.

                      one-reply-to-this-post last-reply-time reply quote 0
                      • jkandasaJ offline
                        jkandasa @Emenike
                        global: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

                        one-reply-to-this-post last-reply-time reply quote 0
                        • EmenikeE offline
                          Emenike
                          global: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...");
                            }
                          }
                          
                          one-reply-to-this-post last-reply-time reply quote 0
                          • EmenikeE offline
                            Emenike
                            global:last-edited-by,

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

                            jkandasaJ one-reply-to-this-post last-reply-time reply quote 0
                            • jkandasaJ offline
                              jkandasa @Emenike
                              global:last-edited-by,

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

                              one-reply-to-this-post last-reply-time reply quote 0
                              • EmenikeE offline
                                Emenike
                                global: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 one-reply-to-this-post last-reply-time reply quote 0
                                • jkandasaJ offline
                                  jkandasa @Emenike
                                  global: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");
                                  
                                  one-reply-to-this-post last-reply-time reply quote 0
                                  • first-post
                                    last-post

                                  0

                                  online

                                  644

                                  users

                                  532

                                  topics

                                  3.4k

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