Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Announcements
  3. 💬 Building a Raspberry Pi Gateway

💬 Building a Raspberry Pi Gateway

Scheduled Pinned Locked Moved Announcements
1.1k Posts 173 Posters 428.6k Views 131 Watching
  • 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.
  • pepsonP pepson
    Dec 27 21:12:27 domoticz kernel: [    2.675918] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
    Dec 27 21:12:27 domoticz kernel: [    3.109172] gpiomem-bcm2835 3f200000.gpiomem: Initialised: Registers at 0x3f200000
    Dec 27 21:12:27 domoticz kernel: [    3.407342] brcmfmac: F1 signature read @0x18000000=0x1541a9a6
    Dec 27 21:12:27 domoticz kernel: [    3.413382] usbcore: registered new interface driver brcmfmac
    Dec 27 21:12:27 domoticz kernel: [    3.601930] brcmfmac: Firmware version = wl0: Aug  7 2017 00:46:29 version 7.45.41.46 (r666254 CY) FWID 01-f8a78378
    Dec 27 21:12:27 domoticz kernel: [    3.602685] brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 7.11.15 Compiler: 1.24.2 ClmImport: 1.24.1 Creation: 2014-05-26 10:53:55 Inc Data: 9.10.41 Inc Compiler: 1.29.4 Inc ClmImport: 1.36.3 Creation: 2017-08-07 00:37:47 
    Dec 27 21:12:27 domoticz avahi-daemon[327]: Successfully called chroot().
    Dec 27 21:12:27 domoticz avahi-daemon[327]: Successfully dropped remaining capabilities.
    Dec 27 21:12:27 domoticz avahi-daemon[327]: No service file found in /etc/avahi/services.
    Dec 27 21:12:27 domoticz systemd[1]: Started Avahi mDNS/DNS-SD Stack.
    Dec 27 21:12:27 domoticz systemd[1]: Reached target System Time Synchronized.
    Dec 27 21:12:27 domoticz avahi-daemon[327]: Network interface enumeration completed.
    Dec 27 21:12:27 domoticz avahi-daemon[327]: Server startup complete. Host name is domoticz.local. Local service cookie is 87145466.
    Dec 27 21:12:27 domoticz systemd[1]: apt-daily.timer: Adding 5h 31min 57.980339s random time.
    Dec 27 21:12:27 domoticz systemd[1]: Started Daily apt download activities.
    Dec 27 21:12:27 domoticz systemd[1]: apt-daily-upgrade.timer: Adding 2min 40.737204s random time.
    Dec 27 21:12:27 domoticz systemd[1]: Started Daily apt upgrade and clean activities.
    Dec 27 21:12:27 domoticz systemd[1]: Reached target Timers.
    Dec 27 21:12:27 domoticz systemd[1]: Started triggerhappy global hotkey daemon.
    Dec 27 21:12:27 domoticz systemd[1]: Started System Logging Service.
    Dec 27 21:12:27 domoticz systemd[1]: Started Save/Restore Sound Card State.
    Dec 27 21:12:27 domoticz dhcpcd[339]: wlan0: starting wpa_supplicant
    Dec 27 21:12:27 domoticz dhcpcd-run-hooks[374]: wlan0: starting wpa_supplicant
    Dec 27 21:12:27 domoticz systemd[1]: Started Login Service.
    Dec 27 21:12:27 domoticz dphys-swapfile[329]: Starting dphys-swapfile swapfile setup ...
    Dec 27 21:12:27 domoticz raspi-config[330]: Checking if shift key is held down:Error opening '/dev/input/event*': No such file or directory
    Dec 27 21:12:27 domoticz raspi-config[330]:  No. Switching to ondemand scaling governor.
    Dec 27 21:12:27 domoticz systemd[1]: Started LSB: Switch to ondemand cpu governor (unless shift key is pressed).
    Dec 27 21:12:27 domoticz OWFS[375]: DEFAULT: owlib.c:(208) Cannot open USB bus master
    Dec 27 21:12:27 domoticz OWFS[375]: DEFAULT: owlib.c:(52) No valid 1-wire buses found
    Dec 27 21:12:27 domoticz systemd[1]: start1wire.service: Control process exited, code=exited status=1
    Dec 27 21:12:27 domoticz systemd[1]: Failed to start LSB: Start OWFS at boot time.
    Dec 27 21:12:27 domoticz systemd[1]: start1wire.service: Unit entered failed state.
    Dec 27 21:12:27 domoticz systemd[1]: start1wire.service: Failed with result 'exit-code'.
    Dec 27 21:12:27 domoticz dphys-swapfile[329]: want /var/swap=100MByte, checking existing: keeping it
    Dec 27 21:12:27 domoticz kernel: [    4.979888] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
    Dec 27 21:12:27 domoticz kernel: [    4.979897] brcmfmac: power management disabled
    Dec 27 21:12:27 domoticz kernel: [    4.987898] Adding 102396k swap on /var/swap.  Priority:-1 extents:1 across:102396k SSFS
    Dec 27 21:12:27 domoticz dphys-swapfile[329]: done.
    Dec 27 21:12:27 domoticz systemd[1]: Started LSB: Autogenerate and use a swap file.
    Dec 27 21:12:27 domoticz dhcpcd[339]: eth0: waiting for carrier
    Dec 27 21:12:27 domoticz dhcpcd[339]: wlan0: waiting for carrier
    Dec 27 21:12:27 domoticz dhcpcd[339]: wlan0: carrier acquired
    Dec 27 21:12:27 domoticz kernel: [    5.321930] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
    Dec 27 21:12:27 domoticz kernel: [    5.322223] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    Dec 27 21:12:27 domoticz dhcpcd[339]: DUID 00:01:00:01:21:b0:d9:d9:b8:27:eb:81:d4:7f
    Dec 27 21:12:27 domoticz dhcpcd[339]: wlan0: IAID eb:81:d4:7f
    Dec 27 21:12:27 domoticz dhcpcd[339]: wlan0: adding address fe80::6bd:3cc7:2b64:c842
    Dec 27 21:12:27 domoticz dhcpcd[339]: wlan0: carrier lost
    Dec 27 21:12:28 domoticz dhcpcd[339]: wlan0: deleting address fe80::6bd:3cc7:2b64:c842
    Dec 27 21:12:29 domoticz dhcpcd[339]: eth0: carrier acquired
    Dec 27 21:12:29 domoticz kernel: [    6.725223] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    Dec 27 21:12:29 domoticz kernel: [    6.726375] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
    Dec 27 21:12:29 domoticz dhcpcd[339]: eth0: IAID eb:d4:81:2a
    Dec 27 21:12:29 domoticz dhcpcd[339]: eth0: adding address fe80::7a80:6e8f:27f0:4005
    Dec 27 21:12:29 domoticz dhcpcd[339]: eth0: probing address 192.168.13.5/24
    Dec 27 21:12:29 domoticz dhcpcd[339]: eth0: soliciting an IPv6 router
    Dec 27 21:12:30 domoticz avahi-daemon[327]: Joining mDNS multicast group on interface eth0.IPv6 with address fe80::7a80:6e8f:27f0:4005.
    Dec 27 21:12:30 domoticz avahi-daemon[327]: New relevant interface eth0.IPv6 for mDNS.
    Dec 27 21:12:30 domoticz avahi-daemon[327]: Registering new address record for fe80::7a80:6e8f:27f0:4005 on eth0.*.
    Dec 27 21:12:34 domoticz dhcpcd[339]: eth0: using static address 192.168.13.5/24
    Dec 27 21:12:34 domoticz dhcpcd[339]: eth0: adding route to 192.168.13.0/24
    Dec 27 21:12:34 domoticz dhcpcd[339]: eth0: adding default route via 192.168.13.1
    Dec 27 21:12:34 domoticz avahi-daemon[327]: Joining mDNS multicast group on interface eth0.IPv4 with address 192.168.13.5.
    Dec 27 21:12:34 domoticz avahi-daemon[327]: New relevant interface eth0.IPv4 for mDNS.
    Dec 27 21:12:34 domoticz avahi-daemon[327]: Registering new address record for 192.168.13.5 on eth0.IPv4.
    Dec 27 21:12:34 domoticz dhcpcd[339]: forked to background, child pid 470
    Dec 27 21:12:34 domoticz systemd[1]: Started dhcpcd on all interfaces.
    Dec 27 21:12:34 domoticz systemd[1]: Reached target Network.
    Dec 27 21:12:34 domoticz systemd[1]: Reached target Network is Online.
    Dec 27 21:12:34 domoticz systemd[1]: Starting LSB: Home Automation System...
    Dec 27 21:12:34 domoticz systemd[1]: Starting /etc/rc.local Compatibility...
    Dec 27 21:12:34 domoticz systemd[1]: Starting Permit User Sessions...
    Dec 27 21:12:34 domoticz systemd[1]: Starting OpenBSD Secure Shell server...
    Dec 27 21:12:34 domoticz systemd[1]: Started /etc/rc.local Compatibility.
    Dec 27 21:12:34 domoticz systemd[1]: Started Permit User Sessions.
    Dec 27 21:12:34 domoticz systemd[1]: Starting Hold until boot process finishes up...
    Dec 27 21:12:34 domoticz systemd[1]: Starting Terminate Plymouth Boot Screen...
    Dec 27 21:12:34 domoticz systemd[1]: Received SIGRTMIN+21 from PID 190 (plymouthd).
    Dec 27 21:12:34 domoticz systemd[1]: Started Hold until boot process finishes up.
    Dec 27 21:12:34 domoticz systemd[1]: Started Terminate Plymouth Boot Screen.
    Dec 27 21:12:34 domoticz systemd[1]: Started Getty on tty1.
    Dec 27 21:12:34 domoticz systemd[1]: Reached target Login Prompts.
    Dec 27 21:12:34 domoticz systemd[1]: Started OpenBSD Secure Shell server.
    Dec 27 21:12:35 domoticz domoticz.sh[471]: 2017-12-27 21:12:35.467  Domoticz V3.8796 (c)2012-2017 GizMoCuz
    Dec 27 21:12:35 domoticz domoticz.sh[471]: 2017-12-27 21:12:35.467  Build Hash: 2d99bbbc, Date: 2017-12-24 07:06:53
    Dec 27 21:12:35 domoticz domoticz.sh[471]: 2017-12-27 21:12:35.468  Startup Path: /home/pi/domoticz/
    Dec 27 21:12:35 domoticz domoticz.sh[471]: domoticz: Domoticz is starting up....
    Dec 27 21:12:35 domoticz domoticz: Domoticz is starting up....
    Dec 27 21:12:35 domoticz domoticz: Domoticz running...
    Dec 27 21:12:35 domoticz systemd[1]: Started LSB: Home Automation System.
    Dec 27 21:12:35 domoticz systemd[1]: Reached target Multi-User System.
    Dec 27 21:12:35 domoticz systemd[1]: Reached target Graphical Interface.
    Dec 27 21:12:35 domoticz systemd[1]: Starting Update UTMP about System Runlevel Changes...
    Dec 27 21:12:35 domoticz systemd[1]: Started Update UTMP about System Runlevel Changes.
    Dec 27 21:12:35 domoticz systemd[1]: Startup finished in 1.510s (kernel) + 11.498s (userspace) = 13.009s.
    Dec 27 21:12:38 domoticz kernel: [   15.710546] uart-pl011 3f201000.serial: no DMA platform data
    Dec 27 21:12:42 domoticz dhcpcd[470]: eth0: no IPv6 Routers available
    Dec 27 21:12:53 domoticz systemd[1]: Created slice User Slice of pi.
    Dec 27 21:12:53 domoticz systemd[1]: Starting User Manager for UID 1000...
    Dec 27 21:12:53 domoticz systemd[1]: Started Session c1 of user pi.
    Dec 27 21:12:53 domoticz systemd[535]: Listening on GnuPG cryptographic agent and passphrase cache (restricted).
    Dec 27 21:12:53 domoticz systemd[535]: Listening on GnuPG cryptographic agent and passphrase cache.
    Dec 27 21:12:53 domoticz systemd[535]: Listening on GnuPG cryptographic agent (access for web browsers).
    Dec 27 21:12:53 domoticz systemd[535]: Reached target Paths.
    Dec 27 21:12:53 domoticz systemd[535]: Listening on GnuPG cryptographic agent (ssh-agent emulation).
    Dec 27 21:12:53 domoticz systemd[535]: Reached target Sockets.
    Dec 27 21:12:53 domoticz systemd[535]: Reached target Timers.
    Dec 27 21:12:53 domoticz systemd[535]: Reached target Basic System.
    Dec 27 21:12:53 domoticz systemd[535]: Reached target Default.
    Dec 27 21:12:53 domoticz systemd[535]: Startup finished in 48ms.
    Dec 27 21:12:53 domoticz systemd[1]: Started User Manager for UID 1000.
    Dec 27 21:13:03 domoticz systemd[535]: Time has been changed
    Dec 27 21:13:03 domoticz systemd[1]: Time has been changed
    Dec 27 21:13:03 domoticz systemd-timesyncd[285]: Synchronized to time server 195.189.85.132:123 (2.debian.pool.ntp.org).
    Dec 27 21:13:03 domoticz systemd[1]: apt-daily.timer: Adding 8h 6min 59.681187s random time.
    Dec 27 21:13:03 domoticz systemd[1]: apt-daily-upgrade.timer: Adding 32min 42.364143s random time.```
    mfalkviddM Offline
    mfalkviddM Offline
    mfalkvidd
    Mod
    wrote on last edited by
    #708

    @pepson ok, so mysgw does at least log to syslog, as seen here

    Dec 27 21:12:27 domoticz mysgw: Starting gateway...
    Dec 27 21:12:27 domoticz mysgw: Protocol version - 2.2.0-rc.2
    

    but nothing else. I expected there to be more information, but maybe I'm just not familiar enough with the raspberry pi gateway.

    1 Reply Last reply
    0
    • pepsonP Offline
      pepsonP Offline
      pepson
      wrote on last edited by
      #709

      Yes but only one time read and then start the problem.

      1 Reply Last reply
      0
      • gohanG Offline
        gohanG Offline
        gohan
        Mod
        wrote on last edited by
        #710

        Can you try building the ethernet gateway instead?

        1 Reply Last reply
        0
        • pepsonP Offline
          pepsonP Offline
          pepson
          wrote on last edited by
          #711

          Ethernet work ok. But i better want serial and found bug and solution why not working serial...

          1 Reply Last reply
          0
          • gohanG Offline
            gohanG Offline
            gohan
            Mod
            wrote on last edited by
            #712

            I just wanted to make sure at least it was working OK as ethernet.

            1 Reply Last reply
            0
            • pepsonP Offline
              pepsonP Offline
              pepson
              wrote on last edited by
              #713

              Problem is only on serial...

              1 Reply Last reply
              0
              • pepsonP Offline
                pepsonP Offline
                pepson
                wrote on last edited by
                #714

                Please help...

                zboblamontZ 1 Reply Last reply
                0
                • pepsonP pepson

                  Please help...

                  zboblamontZ Offline
                  zboblamontZ Offline
                  zboblamont
                  wrote on last edited by
                  #715

                  @pepson Just a suggestion, but are you sure the Pi3 is looking at ttyUSB1, ie have you confirmed this is the Gateway serial connection ?
                  I am using direct serial connection to the pi3 GPIO as ttySO with Domoticz, but when I tried a USB Gateway at one point, the connection was NOT working using the expected ttyUSB quoted. I had to check the tty connections via Putty to establish the actual link...

                  1 Reply Last reply
                  1
                  • pepsonP Offline
                    pepsonP Offline
                    pepson
                    wrote on last edited by
                    #716

                    But can you give me commend to build it as you use ttySO ?

                    1 Reply Last reply
                    0
                    • pepsonP Offline
                      pepsonP Offline
                      pepson
                      wrote on last edited by
                      #717

                      I build it as ttySO
                      ./configure --my-transport=rfm69 --my-rfm69-frequency=868 --my-is-rfm69hw --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttySO

                      and i have and info:

                      2017-12-28 15:40:21.822 MySensors: Using serial port: /dev/ttyS0
                      2017-12-28 15:40:21.832 Error: MySensors: Error opening serial port!

                      1 Reply Last reply
                      0
                      • pepsonP Offline
                        pepsonP Offline
                        pepson
                        wrote on last edited by
                        #718

                        Then build as /dev/serial0 and the same problem. This is show in log Domoticz. One read version and port closed.

                        2017-12-28 15:48:14.418 MySensors: Using serial port: /dev/serial0
                        2017-12-28 15:48:14.418 MySensors: Gateway Version: 2.2.0-rc.2
                        2017-12-28 15:48:14.418 Error: Serial Port closed!... Error: End of file
                        2017-12-28 15:48:15.418 MySensors: retrying in 30 seconds...

                        mfalkviddM 1 Reply Last reply
                        0
                        • pepsonP pepson

                          Then build as /dev/serial0 and the same problem. This is show in log Domoticz. One read version and port closed.

                          2017-12-28 15:48:14.418 MySensors: Using serial port: /dev/serial0
                          2017-12-28 15:48:14.418 MySensors: Gateway Version: 2.2.0-rc.2
                          2017-12-28 15:48:14.418 Error: Serial Port closed!... Error: End of file
                          2017-12-28 15:48:15.418 MySensors: retrying in 30 seconds...

                          mfalkviddM Offline
                          mfalkviddM Offline
                          mfalkvidd
                          Mod
                          wrote on last edited by
                          #719

                          @pepson could you post your hardware settings in Domoticz? This is what works for me:
                          0_1514474366659_66d2b11b-dcc4-46ec-83e3-767278ec3e1f-image.png

                          Could you also try building the gateway without rfm69 support, to check if the problem is generic or related to rfm69. Use this:

                          ./configure --my-transport=none --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttyUSB42
                          make && sudo ./bin/mysgw -d
                          
                          1 Reply Last reply
                          0
                          • pepsonP Offline
                            pepsonP Offline
                            pepson
                            wrote on last edited by
                            #720

                            Hello
                            Thanks for your help. I start from beginning build DOmoticz on my RPi3 with clean latest image. After run in Sudo raspi-config i enable SPI and Serial , then install DOmoticz and now all works OK. Then build Mysensor Gateway and all is ok with no error in Domoticz. Works on /dev/ttyUSB42

                            1 Reply Last reply
                            1
                            • pepsonP Offline
                              pepsonP Offline
                              pepson
                              wrote on last edited by
                              #721

                              But how i can build MySensors Gateway on serial with radio RFM69HW but on old version 2.1.1 ?

                              1 Reply Last reply
                              0
                              • pepsonP Offline
                                pepsonP Offline
                                pepson
                                wrote on last edited by
                                #722

                                And have next problem... i build sketch on version 2.2.0-rc2 but after write to Arduino Mini Pro he is not connected to my Gateway on RPI3.

                                This is sketch. What is wrong ?

                                /*
                                   Relay with button sketch
                                   modified to work with no uplink
                                   to gateway and try to maintain sync to controller
                                */
                                
                                
                                #define MY_DEBUG                               // Enable debug prints to serial monitor
                                
                                #define MY_RADIO_RFM69
                                #define MY_RFM69_FREQUENCY 868
                                #define MY_IS_RFM69HW
                                #define MY_RFM69_NEW_DRIVER
                                
                                //#define MY_NODE_ID 203                       // Node id defaults to AUTO (tries to fetch id from controller) 
                                
                                #define MY_TRANSPORT_WAIT_READY_MS 5000        //set how long to wait for transport ready in milliseconds
                                
                                #define MY_REPEATER_FEATURE                    // Enabled repeater feature for this node
                                
                                #include <MySensors.h>
                                #include <Bounce2.h>
                                
                                #define RELAY_PIN  5      // Arduino Digital I/O pin number for relay 
                                #define BUTTON_PIN  3     // Arduino Digital I/O pin number for button 
                                #define CHILD_ID 1        // Id of the sensor child
                                #define RELAY_ON 1
                                #define RELAY_OFF 0
                                
                                Bounce debouncer = Bounce();
                                int oldValue = 0;
                                bool uplinkAvailable = true;
                                bool state = false;
                                bool requestState;
                                bool firstStart = true;
                                unsigned long uplinkCheckTime ;                // holder for uplink checks
                                unsigned long uplinkCheckPeriod = 30*1000;     // time between checks for uplink in milliseconds
                                unsigned long returnWait = 1000;               // how long to wait for return from controller in milliseconds.. adjust as needed
                                unsigned long oldTime = 0;
                                unsigned long newTime = 0;
                                MyMessage msg(CHILD_ID, V_STATUS);
                                
                                void setup(){
                                  pinMode(BUTTON_PIN, INPUT_PULLUP);           // Setup the button pin, Activate internal pull-up
                                  
                                  debouncer.attach(BUTTON_PIN);                // After setting up the button, setup debouncer
                                  debouncer.interval(5);
                                
                                  pinMode(RELAY_PIN, OUTPUT);                 // set relay pin in output mode
                                  digitalWrite(RELAY_PIN, RELAY_OFF);         // Make sure relay is off when starting up
                                }
                                
                                void presentation()  {
                                  // Send the sketch version information to the gateway and Controller
                                  sendSketchInfo("1xRelay & Button", "2.2.0-rc2");
                                
                                  // Register all sensors to gw (they will be created as child devices)
                                  present(CHILD_ID, S_BINARY);
                                }
                                
                                
                                void loop(){
                                  if (firstStart) {                            // this code is only run once at startup
                                    Serial.println("First run started");
                                    requestTime();                             // get time from controller
                                    wait (returnWait);                         // delay to allow time to return
                                    if (oldTime == 0){                         // check to see if there was a return from the time request
                                      Serial.println("uplink not available");
                                      uplinkAvailable = false;                 // no uplink established
                                      uplinkCheckTime = millis();
                                    }
                                     else{
                                      Serial.println("uplink available");
                                      request( CHILD_ID, V_STATUS);            // get status of switch on controller
                                      wait (returnWait);                       //wait needed to allow request to return from controller
                                      Serial.print("controller state --- ");
                                      Serial.println(requestState);
                                      if (requestState != state) {             // check that controller is corectly showing the current relay state
                                        send(msg.set(state), false);           // notify controller of current state
                                      } 
                                     }   
                                  firstStart = false;                                          // set firstStart flag false to prevent code from running again
                                 }
                                
                                  debouncer.update();
                                  int value = debouncer.read();                               // Get the update value
                                  if (value != oldValue && value == 0) {                      // check for new button push
                                    state =  !state;                                          // Toggle the state
                                    digitalWrite(RELAY_PIN, state ? RELAY_ON : RELAY_OFF);    // switch the relay to the new state
                                    requestTime();
                                    wait (returnWait);                                               // delay to allow time to return
                                    if (oldTime != newTime){                                  // if times are different then uplink is available
                                      send(msg.set(state), false);
                                      oldTime = newTime;
                                    }
                                    else{                                                    // if times are the same no uplink is available
                                     Serial.println("uplink not available");
                                      uplinkAvailable = false;                                // no uplink available, set flag false
                                      uplinkCheckTime = millis();                             // start the timer from now
                                    }
                                
                                  }
                                  oldValue = value;
                                 
                                  if (!uplinkAvailable && (millis() - uplinkCheckTime > uplinkCheckPeriod) ) {       // test to see if function should be called
                                    uplinkCheck();                                                                  // call uplink checking function
                                  }
                                
                                }
                                
                                /*-------------------start of functions--------------------------*/
                                
                                void receive(const MyMessage &message) {
                                  if (message.type == V_STATUS) {                                   // check to see if incoming message is for a switch
                                    switch (message.getCommand()) {                                 // message.getCommand will give us the command type of the incomming message
                                      case C_SET:                                                   //message is a set command  from controller to update relay state
                                        state = message.getBool();                                  // get the new state
                                        digitalWrite(RELAY_PIN, state ? RELAY_ON : RELAY_OFF);      // switch relay to new state
                                        uplinkAvailable = true;                                     //  uplink established
                                        /*---- Write some debug info----*/
                                        Serial.print("Incoming change for sensor:");
                                        Serial.print(message.sensor);
                                        Serial.print(", New status: ");
                                        Serial.println(message.getBool());
                                        break;
                                      case C_REQ:                                               // message is a returning request from controller
                                        requestState = message.getBool();                       // update requestState with returning state
                                        break;
                                    }
                                  }
                                }
                                
                                void uplinkCheck() {
                                    requestTime();
                                    wait (returnWait);                       // wait for time return.. this may need to be varied for your system
                                   if (oldTime != newTime){
                                     Serial.println("uplink re-established");
                                     request( CHILD_ID, V_STATUS);
                                     wait (returnWait);                        //wait needed to allow request to return from controller
                                    if (requestState != state) {              // check that controller is corectly showing the current relay state
                                      send(msg.set(state), false);            // notify controller of current state no ack
                                      uplinkAvailable = true;                 //  uplink established
                                      oldTime = newTime;
                                    }
                                  }
                                  uplinkCheckTime = millis();                // reset the checktime
                                  Serial.println("uplinkchecktime reset");
                                }
                                
                                
                                void receiveTime(unsigned long time)
                                {
                                  if (firstStart){
                                    oldTime = time;
                                    newTime = time;
                                  }
                                  else{
                                  newTime = time;
                                }
                                  Serial.print("time received---- " );
                                  Serial.println(time);
                                }```
                                zboblamontZ 1 Reply Last reply
                                0
                                • pepsonP pepson

                                  And have next problem... i build sketch on version 2.2.0-rc2 but after write to Arduino Mini Pro he is not connected to my Gateway on RPI3.

                                  This is sketch. What is wrong ?

                                  /*
                                     Relay with button sketch
                                     modified to work with no uplink
                                     to gateway and try to maintain sync to controller
                                  */
                                  
                                  
                                  #define MY_DEBUG                               // Enable debug prints to serial monitor
                                  
                                  #define MY_RADIO_RFM69
                                  #define MY_RFM69_FREQUENCY 868
                                  #define MY_IS_RFM69HW
                                  #define MY_RFM69_NEW_DRIVER
                                  
                                  //#define MY_NODE_ID 203                       // Node id defaults to AUTO (tries to fetch id from controller) 
                                  
                                  #define MY_TRANSPORT_WAIT_READY_MS 5000        //set how long to wait for transport ready in milliseconds
                                  
                                  #define MY_REPEATER_FEATURE                    // Enabled repeater feature for this node
                                  
                                  #include <MySensors.h>
                                  #include <Bounce2.h>
                                  
                                  #define RELAY_PIN  5      // Arduino Digital I/O pin number for relay 
                                  #define BUTTON_PIN  3     // Arduino Digital I/O pin number for button 
                                  #define CHILD_ID 1        // Id of the sensor child
                                  #define RELAY_ON 1
                                  #define RELAY_OFF 0
                                  
                                  Bounce debouncer = Bounce();
                                  int oldValue = 0;
                                  bool uplinkAvailable = true;
                                  bool state = false;
                                  bool requestState;
                                  bool firstStart = true;
                                  unsigned long uplinkCheckTime ;                // holder for uplink checks
                                  unsigned long uplinkCheckPeriod = 30*1000;     // time between checks for uplink in milliseconds
                                  unsigned long returnWait = 1000;               // how long to wait for return from controller in milliseconds.. adjust as needed
                                  unsigned long oldTime = 0;
                                  unsigned long newTime = 0;
                                  MyMessage msg(CHILD_ID, V_STATUS);
                                  
                                  void setup(){
                                    pinMode(BUTTON_PIN, INPUT_PULLUP);           // Setup the button pin, Activate internal pull-up
                                    
                                    debouncer.attach(BUTTON_PIN);                // After setting up the button, setup debouncer
                                    debouncer.interval(5);
                                  
                                    pinMode(RELAY_PIN, OUTPUT);                 // set relay pin in output mode
                                    digitalWrite(RELAY_PIN, RELAY_OFF);         // Make sure relay is off when starting up
                                  }
                                  
                                  void presentation()  {
                                    // Send the sketch version information to the gateway and Controller
                                    sendSketchInfo("1xRelay & Button", "2.2.0-rc2");
                                  
                                    // Register all sensors to gw (they will be created as child devices)
                                    present(CHILD_ID, S_BINARY);
                                  }
                                  
                                  
                                  void loop(){
                                    if (firstStart) {                            // this code is only run once at startup
                                      Serial.println("First run started");
                                      requestTime();                             // get time from controller
                                      wait (returnWait);                         // delay to allow time to return
                                      if (oldTime == 0){                         // check to see if there was a return from the time request
                                        Serial.println("uplink not available");
                                        uplinkAvailable = false;                 // no uplink established
                                        uplinkCheckTime = millis();
                                      }
                                       else{
                                        Serial.println("uplink available");
                                        request( CHILD_ID, V_STATUS);            // get status of switch on controller
                                        wait (returnWait);                       //wait needed to allow request to return from controller
                                        Serial.print("controller state --- ");
                                        Serial.println(requestState);
                                        if (requestState != state) {             // check that controller is corectly showing the current relay state
                                          send(msg.set(state), false);           // notify controller of current state
                                        } 
                                       }   
                                    firstStart = false;                                          // set firstStart flag false to prevent code from running again
                                   }
                                  
                                    debouncer.update();
                                    int value = debouncer.read();                               // Get the update value
                                    if (value != oldValue && value == 0) {                      // check for new button push
                                      state =  !state;                                          // Toggle the state
                                      digitalWrite(RELAY_PIN, state ? RELAY_ON : RELAY_OFF);    // switch the relay to the new state
                                      requestTime();
                                      wait (returnWait);                                               // delay to allow time to return
                                      if (oldTime != newTime){                                  // if times are different then uplink is available
                                        send(msg.set(state), false);
                                        oldTime = newTime;
                                      }
                                      else{                                                    // if times are the same no uplink is available
                                       Serial.println("uplink not available");
                                        uplinkAvailable = false;                                // no uplink available, set flag false
                                        uplinkCheckTime = millis();                             // start the timer from now
                                      }
                                  
                                    }
                                    oldValue = value;
                                   
                                    if (!uplinkAvailable && (millis() - uplinkCheckTime > uplinkCheckPeriod) ) {       // test to see if function should be called
                                      uplinkCheck();                                                                  // call uplink checking function
                                    }
                                  
                                  }
                                  
                                  /*-------------------start of functions--------------------------*/
                                  
                                  void receive(const MyMessage &message) {
                                    if (message.type == V_STATUS) {                                   // check to see if incoming message is for a switch
                                      switch (message.getCommand()) {                                 // message.getCommand will give us the command type of the incomming message
                                        case C_SET:                                                   //message is a set command  from controller to update relay state
                                          state = message.getBool();                                  // get the new state
                                          digitalWrite(RELAY_PIN, state ? RELAY_ON : RELAY_OFF);      // switch relay to new state
                                          uplinkAvailable = true;                                     //  uplink established
                                          /*---- Write some debug info----*/
                                          Serial.print("Incoming change for sensor:");
                                          Serial.print(message.sensor);
                                          Serial.print(", New status: ");
                                          Serial.println(message.getBool());
                                          break;
                                        case C_REQ:                                               // message is a returning request from controller
                                          requestState = message.getBool();                       // update requestState with returning state
                                          break;
                                      }
                                    }
                                  }
                                  
                                  void uplinkCheck() {
                                      requestTime();
                                      wait (returnWait);                       // wait for time return.. this may need to be varied for your system
                                     if (oldTime != newTime){
                                       Serial.println("uplink re-established");
                                       request( CHILD_ID, V_STATUS);
                                       wait (returnWait);                        //wait needed to allow request to return from controller
                                      if (requestState != state) {              // check that controller is corectly showing the current relay state
                                        send(msg.set(state), false);            // notify controller of current state no ack
                                        uplinkAvailable = true;                 //  uplink established
                                        oldTime = newTime;
                                      }
                                    }
                                    uplinkCheckTime = millis();                // reset the checktime
                                    Serial.println("uplinkchecktime reset");
                                  }
                                  
                                  
                                  void receiveTime(unsigned long time)
                                  {
                                    if (firstStart){
                                      oldTime = time;
                                      newTime = time;
                                    }
                                    else{
                                    newTime = time;
                                  }
                                    Serial.print("time received---- " );
                                    Serial.println(time);
                                  }```
                                  zboblamontZ Offline
                                  zboblamontZ Offline
                                  zboblamont
                                  wrote on last edited by
                                  #723

                                  @pepson Try walking in little steps trying each stage rather than running into new walls then expressing surprise at broken nose, no offence intended ;)
                                  Gateway and nodes, same platform, same version..... Otherwise they are speaking Chinese and Swedish hoping for somebody to explain the meaning of fubar...

                                  1 Reply Last reply
                                  1
                                  • pepsonP Offline
                                    pepsonP Offline
                                    pepson
                                    wrote on last edited by pepson
                                    #724

                                    I use the same version now 2.2.0-rc2 but when i programmed sketch to node it not connection to Gateway... That i want come back to version 2.1.1 gateway but i dont know how ? Or resolved problem Node 2.2.0-rc2 i stay on this.

                                    But when run debug gateway show this:

                                    
                                    pi@domoticz:~/MySensors $ sudo ./bin/mysgw -d
                                    mysgw: Starting gateway...
                                    mysgw: Protocol version - 2.2.0-rc.2
                                    mysgw: MCO:BGN:INIT GW,CP=RPNGL---,VER=2.2.0-rc.2
                                    mysgw: TSF:LRT:OK
                                    mysgw: TSM:INIT
                                    mysgw: TSF:WUR:MS=0
                                    mysgw: TSM:INIT:TSP OK
                                    mysgw: TSM:INIT:GW MODE
                                    mysgw: TSM:READY:ID=0,PAR=0,DIS=0
                                    mysgw: MCO:REG:NOT NEEDED
                                    mysgw: MCO:BGN:STP
                                    mysgw: MCO:BGN:INIT OK,TSP=1
                                    mysgw: !TSF:SAN:FAIL
                                    mysgw: TSM:FAIL:CNT=1
                                    mysgw: TSM:FAIL:DIS
                                    mysgw: TSF:TDI:TSL
                                    mysgw: TSM:FAIL:RE-INIT
                                    mysgw: TSM:INIT
                                    mysgw: TSM:INIT:TSP OK
                                    mysgw: TSM:INIT:GW MODE
                                    

                                    This is sketch 2.2.0-rc2

                                    /*
                                       Relay with button sketch
                                       modified to work with no uplink
                                       to gateway and try to maintain sync to controller
                                    */
                                    
                                    
                                    #define MY_DEBUG                               // Enable debug prints to serial monitor
                                    
                                    #define MY_RADIO_RFM69
                                    #define RFM69_868MHZ
                                    #define MY_IS_RFM69HW
                                    #define MY_RFM69_NEW_DRIVER
                                    
                                    //#define MY_NODE_ID 203                       // Node id defaults to AUTO (tries to fetch id from controller) 
                                    
                                    #define MY_TRANSPORT_WAIT_READY_MS 5000        //set how long to wait for transport ready in milliseconds
                                    
                                    #define MY_REPEATER_FEATURE                    // Enabled repeater feature for this node
                                    
                                    #include <MySensors.h>
                                    #include <Bounce2.h>
                                    
                                    #define RELAY_PIN  5      // Arduino Digital I/O pin number for relay 
                                    #define BUTTON_PIN  3     // Arduino Digital I/O pin number for button 
                                    #define CHILD_ID 1        // Id of the sensor child
                                    #define RELAY_ON 1
                                    #define RELAY_OFF 0
                                    
                                    Bounce debouncer = Bounce();
                                    int oldValue = 0;
                                    bool uplinkAvailable = true;
                                    bool state = false;
                                    bool requestState;
                                    bool firstStart = true;
                                    unsigned long uplinkCheckTime ;                // holder for uplink checks
                                    unsigned long uplinkCheckPeriod = 30*1000;     // time between checks for uplink in milliseconds
                                    unsigned long returnWait = 1000;               // how long to wait for return from controller in milliseconds.. adjust as needed
                                    unsigned long oldTime = 0;
                                    unsigned long newTime = 0;
                                    MyMessage msg(CHILD_ID, V_STATUS);
                                    
                                    void setup(){
                                      pinMode(BUTTON_PIN, INPUT_PULLUP);           // Setup the button pin, Activate internal pull-up
                                      
                                      debouncer.attach(BUTTON_PIN);                // After setting up the button, setup debouncer
                                      debouncer.interval(5);
                                    
                                      pinMode(RELAY_PIN, OUTPUT);                 // set relay pin in output mode
                                      digitalWrite(RELAY_PIN, RELAY_OFF);         // Make sure relay is off when starting up
                                    }
                                    
                                    void presentation()  {
                                      // Send the sketch version information to the gateway and Controller
                                      sendSketchInfo("1xRelay & Button", "2.2.0-rc2");
                                    
                                      // Register all sensors to gw (they will be created as child devices)
                                      present(CHILD_ID, S_BINARY);
                                    }
                                    
                                    
                                    void loop(){
                                      if (firstStart) {                            // this code is only run once at startup
                                        Serial.println("First run started");
                                        requestTime();                             // get time from controller
                                        wait (returnWait);                         // delay to allow time to return
                                        if (oldTime == 0){                         // check to see if there was a return from the time request
                                          Serial.println("uplink not available");
                                          uplinkAvailable = false;                 // no uplink established
                                          uplinkCheckTime = millis();
                                        }
                                         else{
                                          Serial.println("uplink available");
                                          request( CHILD_ID, V_STATUS);            // get status of switch on controller
                                          wait (returnWait);                       //wait needed to allow request to return from controller
                                          Serial.print("controller state --- ");
                                          Serial.println(requestState);
                                          if (requestState != state) {             // check that controller is corectly showing the current relay state
                                            send(msg.set(state), false);           // notify controller of current state
                                          } 
                                         }   
                                      firstStart = false;                                          // set firstStart flag false to prevent code from running again
                                     }
                                    
                                      debouncer.update();
                                      int value = debouncer.read();                               // Get the update value
                                      if (value != oldValue && value == 0) {                      // check for new button push
                                        state =  !state;                                          // Toggle the state
                                        digitalWrite(RELAY_PIN, state ? RELAY_ON : RELAY_OFF);    // switch the relay to the new state
                                        requestTime();
                                        wait (returnWait);                                               // delay to allow time to return
                                        if (oldTime != newTime){                                  // if times are different then uplink is available
                                          send(msg.set(state), false);
                                          oldTime = newTime;
                                        }
                                        else{                                                    // if times are the same no uplink is available
                                         Serial.println("uplink not available");
                                          uplinkAvailable = false;                                // no uplink available, set flag false
                                          uplinkCheckTime = millis();                             // start the timer from now
                                        }
                                    
                                      }
                                      oldValue = value;
                                     
                                      if (!uplinkAvailable && (millis() - uplinkCheckTime > uplinkCheckPeriod) ) {       // test to see if function should be called
                                        uplinkCheck();                                                                  // call uplink checking function
                                      }
                                    
                                    }
                                    
                                    /*-------------------start of functions--------------------------*/
                                    
                                    void receive(const MyMessage &message) {
                                      if (message.type == V_STATUS) {                                   // check to see if incoming message is for a switch
                                        switch (message.getCommand()) {                                 // message.getCommand will give us the command type of the incomming message
                                          case C_SET:                                                   //message is a set command  from controller to update relay state
                                            state = message.getBool();                                  // get the new state
                                            digitalWrite(RELAY_PIN, state ? RELAY_ON : RELAY_OFF);      // switch relay to new state
                                            uplinkAvailable = true;                                     //  uplink established
                                            /*---- Write some debug info----*/
                                            Serial.print("Incoming change for sensor:");
                                            Serial.print(message.sensor);
                                            Serial.print(", New status: ");
                                            Serial.println(message.getBool());
                                            break;
                                          case C_REQ:                                               // message is a returning request from controller
                                            requestState = message.getBool();                       // update requestState with returning state
                                            break;
                                        }
                                      }
                                    }
                                    
                                    void uplinkCheck() {
                                        requestTime();
                                        wait (returnWait);                       // wait for time return.. this may need to be varied for your system
                                       if (oldTime != newTime){
                                         Serial.println("uplink re-established");
                                         request( CHILD_ID, V_STATUS);
                                         wait (returnWait);                        //wait needed to allow request to return from controller
                                        if (requestState != state) {              // check that controller is corectly showing the current relay state
                                          send(msg.set(state), false);            // notify controller of current state no ack
                                          uplinkAvailable = true;                 //  uplink established
                                          oldTime = newTime;
                                        }
                                      }
                                      uplinkCheckTime = millis();                // reset the checktime
                                      Serial.println("uplinkchecktime reset");
                                    }
                                    
                                    
                                    void receiveTime(unsigned long time)
                                    {
                                      if (firstStart){
                                        oldTime = time;
                                        newTime = time;
                                      }
                                      else{
                                      newTime = time;
                                    }
                                      Serial.print("time received---- " );
                                      Serial.println(time);
                                    }```
                                    zboblamontZ 1 Reply Last reply
                                    0
                                    • pepsonP pepson

                                      I use the same version now 2.2.0-rc2 but when i programmed sketch to node it not connection to Gateway... That i want come back to version 2.1.1 gateway but i dont know how ? Or resolved problem Node 2.2.0-rc2 i stay on this.

                                      But when run debug gateway show this:

                                      
                                      pi@domoticz:~/MySensors $ sudo ./bin/mysgw -d
                                      mysgw: Starting gateway...
                                      mysgw: Protocol version - 2.2.0-rc.2
                                      mysgw: MCO:BGN:INIT GW,CP=RPNGL---,VER=2.2.0-rc.2
                                      mysgw: TSF:LRT:OK
                                      mysgw: TSM:INIT
                                      mysgw: TSF:WUR:MS=0
                                      mysgw: TSM:INIT:TSP OK
                                      mysgw: TSM:INIT:GW MODE
                                      mysgw: TSM:READY:ID=0,PAR=0,DIS=0
                                      mysgw: MCO:REG:NOT NEEDED
                                      mysgw: MCO:BGN:STP
                                      mysgw: MCO:BGN:INIT OK,TSP=1
                                      mysgw: !TSF:SAN:FAIL
                                      mysgw: TSM:FAIL:CNT=1
                                      mysgw: TSM:FAIL:DIS
                                      mysgw: TSF:TDI:TSL
                                      mysgw: TSM:FAIL:RE-INIT
                                      mysgw: TSM:INIT
                                      mysgw: TSM:INIT:TSP OK
                                      mysgw: TSM:INIT:GW MODE
                                      

                                      This is sketch 2.2.0-rc2

                                      /*
                                         Relay with button sketch
                                         modified to work with no uplink
                                         to gateway and try to maintain sync to controller
                                      */
                                      
                                      
                                      #define MY_DEBUG                               // Enable debug prints to serial monitor
                                      
                                      #define MY_RADIO_RFM69
                                      #define RFM69_868MHZ
                                      #define MY_IS_RFM69HW
                                      #define MY_RFM69_NEW_DRIVER
                                      
                                      //#define MY_NODE_ID 203                       // Node id defaults to AUTO (tries to fetch id from controller) 
                                      
                                      #define MY_TRANSPORT_WAIT_READY_MS 5000        //set how long to wait for transport ready in milliseconds
                                      
                                      #define MY_REPEATER_FEATURE                    // Enabled repeater feature for this node
                                      
                                      #include <MySensors.h>
                                      #include <Bounce2.h>
                                      
                                      #define RELAY_PIN  5      // Arduino Digital I/O pin number for relay 
                                      #define BUTTON_PIN  3     // Arduino Digital I/O pin number for button 
                                      #define CHILD_ID 1        // Id of the sensor child
                                      #define RELAY_ON 1
                                      #define RELAY_OFF 0
                                      
                                      Bounce debouncer = Bounce();
                                      int oldValue = 0;
                                      bool uplinkAvailable = true;
                                      bool state = false;
                                      bool requestState;
                                      bool firstStart = true;
                                      unsigned long uplinkCheckTime ;                // holder for uplink checks
                                      unsigned long uplinkCheckPeriod = 30*1000;     // time between checks for uplink in milliseconds
                                      unsigned long returnWait = 1000;               // how long to wait for return from controller in milliseconds.. adjust as needed
                                      unsigned long oldTime = 0;
                                      unsigned long newTime = 0;
                                      MyMessage msg(CHILD_ID, V_STATUS);
                                      
                                      void setup(){
                                        pinMode(BUTTON_PIN, INPUT_PULLUP);           // Setup the button pin, Activate internal pull-up
                                        
                                        debouncer.attach(BUTTON_PIN);                // After setting up the button, setup debouncer
                                        debouncer.interval(5);
                                      
                                        pinMode(RELAY_PIN, OUTPUT);                 // set relay pin in output mode
                                        digitalWrite(RELAY_PIN, RELAY_OFF);         // Make sure relay is off when starting up
                                      }
                                      
                                      void presentation()  {
                                        // Send the sketch version information to the gateway and Controller
                                        sendSketchInfo("1xRelay & Button", "2.2.0-rc2");
                                      
                                        // Register all sensors to gw (they will be created as child devices)
                                        present(CHILD_ID, S_BINARY);
                                      }
                                      
                                      
                                      void loop(){
                                        if (firstStart) {                            // this code is only run once at startup
                                          Serial.println("First run started");
                                          requestTime();                             // get time from controller
                                          wait (returnWait);                         // delay to allow time to return
                                          if (oldTime == 0){                         // check to see if there was a return from the time request
                                            Serial.println("uplink not available");
                                            uplinkAvailable = false;                 // no uplink established
                                            uplinkCheckTime = millis();
                                          }
                                           else{
                                            Serial.println("uplink available");
                                            request( CHILD_ID, V_STATUS);            // get status of switch on controller
                                            wait (returnWait);                       //wait needed to allow request to return from controller
                                            Serial.print("controller state --- ");
                                            Serial.println(requestState);
                                            if (requestState != state) {             // check that controller is corectly showing the current relay state
                                              send(msg.set(state), false);           // notify controller of current state
                                            } 
                                           }   
                                        firstStart = false;                                          // set firstStart flag false to prevent code from running again
                                       }
                                      
                                        debouncer.update();
                                        int value = debouncer.read();                               // Get the update value
                                        if (value != oldValue && value == 0) {                      // check for new button push
                                          state =  !state;                                          // Toggle the state
                                          digitalWrite(RELAY_PIN, state ? RELAY_ON : RELAY_OFF);    // switch the relay to the new state
                                          requestTime();
                                          wait (returnWait);                                               // delay to allow time to return
                                          if (oldTime != newTime){                                  // if times are different then uplink is available
                                            send(msg.set(state), false);
                                            oldTime = newTime;
                                          }
                                          else{                                                    // if times are the same no uplink is available
                                           Serial.println("uplink not available");
                                            uplinkAvailable = false;                                // no uplink available, set flag false
                                            uplinkCheckTime = millis();                             // start the timer from now
                                          }
                                      
                                        }
                                        oldValue = value;
                                       
                                        if (!uplinkAvailable && (millis() - uplinkCheckTime > uplinkCheckPeriod) ) {       // test to see if function should be called
                                          uplinkCheck();                                                                  // call uplink checking function
                                        }
                                      
                                      }
                                      
                                      /*-------------------start of functions--------------------------*/
                                      
                                      void receive(const MyMessage &message) {
                                        if (message.type == V_STATUS) {                                   // check to see if incoming message is for a switch
                                          switch (message.getCommand()) {                                 // message.getCommand will give us the command type of the incomming message
                                            case C_SET:                                                   //message is a set command  from controller to update relay state
                                              state = message.getBool();                                  // get the new state
                                              digitalWrite(RELAY_PIN, state ? RELAY_ON : RELAY_OFF);      // switch relay to new state
                                              uplinkAvailable = true;                                     //  uplink established
                                              /*---- Write some debug info----*/
                                              Serial.print("Incoming change for sensor:");
                                              Serial.print(message.sensor);
                                              Serial.print(", New status: ");
                                              Serial.println(message.getBool());
                                              break;
                                            case C_REQ:                                               // message is a returning request from controller
                                              requestState = message.getBool();                       // update requestState with returning state
                                              break;
                                          }
                                        }
                                      }
                                      
                                      void uplinkCheck() {
                                          requestTime();
                                          wait (returnWait);                       // wait for time return.. this may need to be varied for your system
                                         if (oldTime != newTime){
                                           Serial.println("uplink re-established");
                                           request( CHILD_ID, V_STATUS);
                                           wait (returnWait);                        //wait needed to allow request to return from controller
                                          if (requestState != state) {              // check that controller is corectly showing the current relay state
                                            send(msg.set(state), false);            // notify controller of current state no ack
                                            uplinkAvailable = true;                 //  uplink established
                                            oldTime = newTime;
                                          }
                                        }
                                        uplinkCheckTime = millis();                // reset the checktime
                                        Serial.println("uplinkchecktime reset");
                                      }
                                      
                                      
                                      void receiveTime(unsigned long time)
                                      {
                                        if (firstStart){
                                          oldTime = time;
                                          newTime = time;
                                        }
                                        else{
                                        newTime = time;
                                      }
                                        Serial.print("time received---- " );
                                        Serial.println(time);
                                      }```
                                      zboblamontZ Offline
                                      zboblamontZ Offline
                                      zboblamont
                                      wrote on last edited by
                                      #725

                                      @pepson Let's try the baby steps I referred to earlier.

                                      The current stable version of MySensors is 2.1. Those using 2.2 tend to be experienced people versed in programming and experimenting and problem solving, hence it is not an official release.... yet you are using it and asking for solutions... Hello ?

                                      I am and have been for the last few months using a Pro-Mini with RFM69 as nodes and gateway using 2.1 attached to a Pi3 running Domoticz.... No problems, but slowly coming to understand most of what I am doing...

                                      I am still on baby steps, I don't mind at all, it works.....

                                      1 Reply Last reply
                                      0
                                      • pepsonP Offline
                                        pepsonP Offline
                                        pepson
                                        wrote on last edited by
                                        #726

                                        Ok but i dont know how build Gateway on version 2.1.1 because when i do step by step as show on mysensors.org it default build me version gateway 2.2.0-rc2

                                        zboblamontZ 1 Reply Last reply
                                        0
                                        • pepsonP pepson

                                          Ok but i dont know how build Gateway on version 2.1.1 because when i do step by step as show on mysensors.org it default build me version gateway 2.2.0-rc2

                                          zboblamontZ Offline
                                          zboblamontZ Offline
                                          zboblamont
                                          wrote on last edited by
                                          #727

                                          @pepson As in this page? 2.1.1 - Latest Release ?
                                          https://www.mysensors.org/download

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          21

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.1k

                                          Posts


                                          Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • MySensors
                                          • OpenHardware.io
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular