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. Troubleshooting
  3. [SOLVED] Ethernet MQTT Gateway Slow to connect

[SOLVED] Ethernet MQTT Gateway Slow to connect

Scheduled Pinned Locked Moved Troubleshooting
11 Posts 5 Posters 1.5k Views 5 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.
  • G Offline
    G Offline
    Guillermo Schimmel
    wrote on last edited by Yveaux
    #1

    Hi guys.

    I'm using an Arduino Uno + 5100 based MQTT Gateway.

    It's working great with sensors and mqtt but I have a couple if issues that may be related.

    1. It is very slow to connect to the ethernet switch

    2. won't send registration nor info about local sensors.

    Power supply is ok, external regulated 5V + 3v3 reg for nrf. All OK's on the radio front.

    Take a look at the startup log:

     MCO:BGN:INIT GW,CP=RNNGA---,REL=255,VER=2.3.1
    4 TSM:INIT
    5 TSF:WUR:MS=0
    11 TSM:INIT:TSP OK
    13 TSM:INIT:GW MODE
    15 TSM:READY:ID=0,PAR=0,DIS=0
    17 MCO:REG:NOT NEEDED
    580 GWT:TPC:IP=192.168.1.200
    1583 MCO:BGN:STP
    1585 MCO:BGN:INIT OK,TSP=1
    1587 GWT:TPC:IP=192.168.1.200
    2590 GWT:RMQ:MQTT RECONNECT
    3594 TSM:READY:NWD REQ
    3631 TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:
    3638 TSF:MSG:READ,11-11-0,s=255,c=3,t=21,pt=1,l=1,sg=0:0
    3645 GWT:TPC:IP=192.168.1.200
    4647 GWT:RMQ:MQTT RECONNECT
    5652 TSF:MSG:READ,0-11-255,s=255,c=3,t=20,pt=0,l=0,sg=0:
    5657 TSF:MSG:BC
    5659 TSF:MSG:READ,2-2-0,s=255,c=3,t=21,pt=1,l=1,sg=0:0
    5664 TSF:MSG:READ,0-2-255,s=255,c=3,t=20,pt=0,l=0,sg=0:
    5669 TSF:MSG:BC
    5671 GWT:TPC:IP=192.168.1.200
    6674 GWT:RMQ:MQTT RECONNECT
    7678 GWT:TPC:IP=192.168.1.200
    8681 GWT:RMQ:MQTT RECONNECT
    9687 GWT:TPC:IP=192.168.1.200
    10690 GWT:RMQ:MQTT RECONNECT
    11695 GWT:TPC:IP=192.168.1.200
    12697 GWT:RMQ:MQTT RECONNECT
    13702 GWT:TPC:IP=192.168.1.200
    14704 GWT:RMQ:MQTT RECONNECT
    15710 GWT:TPC:IP=192.168.1.200
    16713 GWT:RMQ:MQTT RECONNECT
    17717 GWT:TPC:IP=192.168.1.200
    18720 GWT:RMQ:MQTT RECONNECT
    19725 GWT:TPC:IP=192.168.1.200
    20727 GWT:RMQ:MQTT RECONNECT
    21733 GWT:TPC:IP=192.168.1.200
    22736 GWT:RMQ:MQTT RECONNECT
    23741 GWT:TPC:IP=192.168.1.200
    24743 GWT:RMQ:MQTT RECONNECT
    25749 GWT:TPC:IP=192.168.1.200
    26752 GWT:RMQ:MQTT RECONNECT
    27758 GWT:TPC:IP=192.168.1.200
    28762 GWT:RMQ:MQTT RECONNECT
    29767 GWT:TPC:IP=192.168.1.200
    30770 GWT:RMQ:MQTT RECONNECT
    30777 GWT:RMQ:MQTT CONNECTED
    

    Only then, it starts working ok.

    When in that MQTT Reconnect, it is not responding any pings. As soon as it gets the ethernet connection running, it connects to the broker at the first attempt.

    It is directly connected to a Cisco switch. I tried everything, auto/auto, 10/full, 100/full. Any ethernet combo it's the same.

    This is the complete sketch:

    // Enable debug prints to serial monitor
    #define MY_DEBUG
    
    // Enables and select radio type (if attached)
    #define MY_RADIO_RF24
    #define MY_RF24_CHANNEL 110
    // modulo con amplificador, por ahi recomiendan bajarle la potencia (?)
    #define MY_RF24_PA_LEVEL RF24_PA_LOW
    
    #define MY_GATEWAY_MQTT_CLIENT
    
    // Set this node's subscribe and publish topic prefix
    #define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
    #define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
    
    // Set MQTT client id
    #define MY_MQTT_CLIENT_ID "mysensors-1"
    
    // W5100 Ethernet module SPI enable (optional if using a shield/module that manages SPI_EN signal)
    // descomentó guille
    //#define MY_W5100_SPI_EN 4
    
    // Enable Soft SPI for NRF radio (note different radio wiring is required)
    // The W5100 ethernet module seems to have a hard time co-operate with
    // radio on the same spi bus.
    #if !defined(MY_W5100_SPI_EN) && !defined(ARDUINO_ARCH_SAMD)
    #define MY_SOFTSPI
    #define MY_SOFT_SPI_SCK_PIN 14
    #define MY_SOFT_SPI_MISO_PIN 16
    #define MY_SOFT_SPI_MOSI_PIN 15
    #endif
    
    // When W5100 is connected we have to move CE/CSN pins for NRF radio
    #ifndef MY_RF24_CE_PIN
    #define MY_RF24_CE_PIN 5
    #endif
    #ifndef MY_RF24_CS_PIN
    #define MY_RF24_CS_PIN 6
    #endif
    
    // Enable these if your MQTT broker requires username/password
    //#define MY_MQTT_USER "username"
    //#define MY_MQTT_PASSWORD "password"
    
    // Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP)
    #define MY_IP_ADDRESS 192,168,1,200
    
    // If using static ip you can define Gateway and Subnet address as well
    #define MY_IP_GATEWAY_ADDRESS 192,168,1,1
    #define MY_IP_SUBNET_ADDRESS 255,255,255,0
    
    // MQTT broker ip address or url. Define one or the other.
    //#define MY_CONTROLLER_URL_ADDRESS "m20.cloudmqtt.com"
    #define MY_CONTROLLER_IP_ADDRESS 192, 168, 1,2
    
    // The MQTT broker port to to open
    #define MY_PORT 8884
    
    /*
      // Enable inclusion mode
      #define MY_INCLUSION_MODE_FEATURE
      // Enable Inclusion mode button on gateway
      //#define MY_INCLUSION_BUTTON_FEATURE
      // Set inclusion mode duration (in seconds)
      #define MY_INCLUSION_MODE_DURATION 60
      // Digital pin used for inclusion mode button
      //#define MY_INCLUSION_MODE_BUTTON_PIN  3
    
      // Set blinking period
      #define MY_DEFAULT_LED_BLINK_PERIOD 300
    
      // Flash leds on rx/tx/err
      // Uncomment to override default HW configurations
      //#define MY_DEFAULT_ERR_LED_PIN 16  // Error led pin
      //#define MY_DEFAULT_RX_LED_PIN  16  // Receive led pin
      //#define MY_DEFAULT_TX_LED_PIN  16  // the PCB, on board LED
    */
    
    #include <Ethernet.h>
    #include <MySensors.h>
    
    // Temperatura
    #include <SPI.h>
    #include <DallasTemperature.h>
    #include <OneWire.h>
    #define COMPARE_TEMP 1 // Send temperature only if changed? 1 = Yes 0 = No
    
    #define ONE_WIRE_BUS 2 // Pin where dallase sensor is connected 
    #define MAX_ATTACHED_DS18B20 16
    OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
    DallasTemperature sensors(&oneWire); // Pass the oneWire reference to Dallas Temperature. 
    float lastTemperature[MAX_ATTACHED_DS18B20];
    int numSensors=0;
    // Initialize temperature message
    MyMessage msg(0,V_TEMP);
    
    //
    
    
    void setup()
    {
      // Setup locally attached sensors
      // temperatura
        sensors.setWaitForConversion(false);
    
    }
    
    void presentation()
    {
        // Present locally attached sensors here
        sendSketchInfo("Gateway node with temp", "1.0");
    
       // Fetch the number of attached temperature sensors  
      numSensors = sensors.getDeviceCount();
         present(1, S_TEMP);
    
    }
    
    void loop()
    {
      // Send locally attached sensors data here
    
    // Fetch temperatures from Dallas sensors
      sensors.requestTemperatures();
    
      // query conversion time and sleep until conversion completed
      int16_t conversionTime = sensors.millisToWaitForConversion(sensors.getResolution());
      // sleep() call can be replaced by wait() call if node need to process incoming messages (or if node is repeater)
      wait(conversionTime);
    
      // Read temperatures and send them to controller 
      for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {
    
        // Fetch and round temperature to one decimal
        float temperature = static_cast<float>(static_cast<int>((getControllerConfig().isMetric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) / 10.;
    
    
      Serial.println(temperature);
    
        // Only send data if temperature has changed and no error
        #if COMPARE_TEMP == 1
        if (lastTemperature[i] != temperature && temperature != -127.00 && temperature != 85.00) {
        #else
        if (temperature != -127.00 && temperature != 85.00) {
        #endif
    
          // Send in the new temperature
          send(msg.setSensor(i).set(temperature,1));
          // Save new temperatures for next compare
          lastTemperature[i]=temperature;
        }
      }
    
    // Estudiar un poco esto. Le pongo algo para que no esté midiendo
    // permanentemente
      wait(1000);
      
    }
    

    I'm on 2.3.1

    The main issue here is the failure to use local sensors, but a faster startup time would also be great.

    Thanks in advance for any tip.

    Guillermo

    YveauxY 1 Reply Last reply
    0
    • electrikE Offline
      electrikE Offline
      electrik
      wrote on last edited by
      #2

      I'm not using a wired connection, but had many connection issues also. It took long time before the gateway was up, MQTT connections dropped.

      Then I replaced my router (the one delivered by the cable supplier) and I have no issues anymore. So that could be worth a try.

      G 1 Reply Last reply
      1
      • G Guillermo Schimmel

        Hi guys.

        I'm using an Arduino Uno + 5100 based MQTT Gateway.

        It's working great with sensors and mqtt but I have a couple if issues that may be related.

        1. It is very slow to connect to the ethernet switch

        2. won't send registration nor info about local sensors.

        Power supply is ok, external regulated 5V + 3v3 reg for nrf. All OK's on the radio front.

        Take a look at the startup log:

         MCO:BGN:INIT GW,CP=RNNGA---,REL=255,VER=2.3.1
        4 TSM:INIT
        5 TSF:WUR:MS=0
        11 TSM:INIT:TSP OK
        13 TSM:INIT:GW MODE
        15 TSM:READY:ID=0,PAR=0,DIS=0
        17 MCO:REG:NOT NEEDED
        580 GWT:TPC:IP=192.168.1.200
        1583 MCO:BGN:STP
        1585 MCO:BGN:INIT OK,TSP=1
        1587 GWT:TPC:IP=192.168.1.200
        2590 GWT:RMQ:MQTT RECONNECT
        3594 TSM:READY:NWD REQ
        3631 TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:
        3638 TSF:MSG:READ,11-11-0,s=255,c=3,t=21,pt=1,l=1,sg=0:0
        3645 GWT:TPC:IP=192.168.1.200
        4647 GWT:RMQ:MQTT RECONNECT
        5652 TSF:MSG:READ,0-11-255,s=255,c=3,t=20,pt=0,l=0,sg=0:
        5657 TSF:MSG:BC
        5659 TSF:MSG:READ,2-2-0,s=255,c=3,t=21,pt=1,l=1,sg=0:0
        5664 TSF:MSG:READ,0-2-255,s=255,c=3,t=20,pt=0,l=0,sg=0:
        5669 TSF:MSG:BC
        5671 GWT:TPC:IP=192.168.1.200
        6674 GWT:RMQ:MQTT RECONNECT
        7678 GWT:TPC:IP=192.168.1.200
        8681 GWT:RMQ:MQTT RECONNECT
        9687 GWT:TPC:IP=192.168.1.200
        10690 GWT:RMQ:MQTT RECONNECT
        11695 GWT:TPC:IP=192.168.1.200
        12697 GWT:RMQ:MQTT RECONNECT
        13702 GWT:TPC:IP=192.168.1.200
        14704 GWT:RMQ:MQTT RECONNECT
        15710 GWT:TPC:IP=192.168.1.200
        16713 GWT:RMQ:MQTT RECONNECT
        17717 GWT:TPC:IP=192.168.1.200
        18720 GWT:RMQ:MQTT RECONNECT
        19725 GWT:TPC:IP=192.168.1.200
        20727 GWT:RMQ:MQTT RECONNECT
        21733 GWT:TPC:IP=192.168.1.200
        22736 GWT:RMQ:MQTT RECONNECT
        23741 GWT:TPC:IP=192.168.1.200
        24743 GWT:RMQ:MQTT RECONNECT
        25749 GWT:TPC:IP=192.168.1.200
        26752 GWT:RMQ:MQTT RECONNECT
        27758 GWT:TPC:IP=192.168.1.200
        28762 GWT:RMQ:MQTT RECONNECT
        29767 GWT:TPC:IP=192.168.1.200
        30770 GWT:RMQ:MQTT RECONNECT
        30777 GWT:RMQ:MQTT CONNECTED
        

        Only then, it starts working ok.

        When in that MQTT Reconnect, it is not responding any pings. As soon as it gets the ethernet connection running, it connects to the broker at the first attempt.

        It is directly connected to a Cisco switch. I tried everything, auto/auto, 10/full, 100/full. Any ethernet combo it's the same.

        This is the complete sketch:

        // Enable debug prints to serial monitor
        #define MY_DEBUG
        
        // Enables and select radio type (if attached)
        #define MY_RADIO_RF24
        #define MY_RF24_CHANNEL 110
        // modulo con amplificador, por ahi recomiendan bajarle la potencia (?)
        #define MY_RF24_PA_LEVEL RF24_PA_LOW
        
        #define MY_GATEWAY_MQTT_CLIENT
        
        // Set this node's subscribe and publish topic prefix
        #define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
        #define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
        
        // Set MQTT client id
        #define MY_MQTT_CLIENT_ID "mysensors-1"
        
        // W5100 Ethernet module SPI enable (optional if using a shield/module that manages SPI_EN signal)
        // descomentó guille
        //#define MY_W5100_SPI_EN 4
        
        // Enable Soft SPI for NRF radio (note different radio wiring is required)
        // The W5100 ethernet module seems to have a hard time co-operate with
        // radio on the same spi bus.
        #if !defined(MY_W5100_SPI_EN) && !defined(ARDUINO_ARCH_SAMD)
        #define MY_SOFTSPI
        #define MY_SOFT_SPI_SCK_PIN 14
        #define MY_SOFT_SPI_MISO_PIN 16
        #define MY_SOFT_SPI_MOSI_PIN 15
        #endif
        
        // When W5100 is connected we have to move CE/CSN pins for NRF radio
        #ifndef MY_RF24_CE_PIN
        #define MY_RF24_CE_PIN 5
        #endif
        #ifndef MY_RF24_CS_PIN
        #define MY_RF24_CS_PIN 6
        #endif
        
        // Enable these if your MQTT broker requires username/password
        //#define MY_MQTT_USER "username"
        //#define MY_MQTT_PASSWORD "password"
        
        // Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP)
        #define MY_IP_ADDRESS 192,168,1,200
        
        // If using static ip you can define Gateway and Subnet address as well
        #define MY_IP_GATEWAY_ADDRESS 192,168,1,1
        #define MY_IP_SUBNET_ADDRESS 255,255,255,0
        
        // MQTT broker ip address or url. Define one or the other.
        //#define MY_CONTROLLER_URL_ADDRESS "m20.cloudmqtt.com"
        #define MY_CONTROLLER_IP_ADDRESS 192, 168, 1,2
        
        // The MQTT broker port to to open
        #define MY_PORT 8884
        
        /*
          // Enable inclusion mode
          #define MY_INCLUSION_MODE_FEATURE
          // Enable Inclusion mode button on gateway
          //#define MY_INCLUSION_BUTTON_FEATURE
          // Set inclusion mode duration (in seconds)
          #define MY_INCLUSION_MODE_DURATION 60
          // Digital pin used for inclusion mode button
          //#define MY_INCLUSION_MODE_BUTTON_PIN  3
        
          // Set blinking period
          #define MY_DEFAULT_LED_BLINK_PERIOD 300
        
          // Flash leds on rx/tx/err
          // Uncomment to override default HW configurations
          //#define MY_DEFAULT_ERR_LED_PIN 16  // Error led pin
          //#define MY_DEFAULT_RX_LED_PIN  16  // Receive led pin
          //#define MY_DEFAULT_TX_LED_PIN  16  // the PCB, on board LED
        */
        
        #include <Ethernet.h>
        #include <MySensors.h>
        
        // Temperatura
        #include <SPI.h>
        #include <DallasTemperature.h>
        #include <OneWire.h>
        #define COMPARE_TEMP 1 // Send temperature only if changed? 1 = Yes 0 = No
        
        #define ONE_WIRE_BUS 2 // Pin where dallase sensor is connected 
        #define MAX_ATTACHED_DS18B20 16
        OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
        DallasTemperature sensors(&oneWire); // Pass the oneWire reference to Dallas Temperature. 
        float lastTemperature[MAX_ATTACHED_DS18B20];
        int numSensors=0;
        // Initialize temperature message
        MyMessage msg(0,V_TEMP);
        
        //
        
        
        void setup()
        {
          // Setup locally attached sensors
          // temperatura
            sensors.setWaitForConversion(false);
        
        }
        
        void presentation()
        {
            // Present locally attached sensors here
            sendSketchInfo("Gateway node with temp", "1.0");
        
           // Fetch the number of attached temperature sensors  
          numSensors = sensors.getDeviceCount();
             present(1, S_TEMP);
        
        }
        
        void loop()
        {
          // Send locally attached sensors data here
        
        // Fetch temperatures from Dallas sensors
          sensors.requestTemperatures();
        
          // query conversion time and sleep until conversion completed
          int16_t conversionTime = sensors.millisToWaitForConversion(sensors.getResolution());
          // sleep() call can be replaced by wait() call if node need to process incoming messages (or if node is repeater)
          wait(conversionTime);
        
          // Read temperatures and send them to controller 
          for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {
        
            // Fetch and round temperature to one decimal
            float temperature = static_cast<float>(static_cast<int>((getControllerConfig().isMetric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) / 10.;
        
        
          Serial.println(temperature);
        
            // Only send data if temperature has changed and no error
            #if COMPARE_TEMP == 1
            if (lastTemperature[i] != temperature && temperature != -127.00 && temperature != 85.00) {
            #else
            if (temperature != -127.00 && temperature != 85.00) {
            #endif
        
              // Send in the new temperature
              send(msg.setSensor(i).set(temperature,1));
              // Save new temperatures for next compare
              lastTemperature[i]=temperature;
            }
          }
        
        // Estudiar un poco esto. Le pongo algo para que no esté midiendo
        // permanentemente
          wait(1000);
          
        }
        

        I'm on 2.3.1

        The main issue here is the failure to use local sensors, but a faster startup time would also be great.

        Thanks in advance for any tip.

        Guillermo

        YveauxY Offline
        YveauxY Offline
        Yveaux
        Mod
        wrote on last edited by
        #3

        @guillermo-schimmel shot in the dark: make sure your Mac ID is unique on your network, or switches will get very confused

        http://yveaux.blogspot.nl

        G 1 Reply Last reply
        1
        • electrikE electrik

          I'm not using a wired connection, but had many connection issues also. It took long time before the gateway was up, MQTT connections dropped.

          Then I replaced my router (the one delivered by the cable supplier) and I have no issues anymore. So that could be worth a try.

          G Offline
          G Offline
          Guillermo Schimmel
          wrote on last edited by
          #4

          @electrik said in Ethernet MQTT Gateway Slow to connect:

          I'm not using a wired connection, but had many connection issues also. It took long time before the gateway was up, MQTT connections dropped.

          Then I replaced my router (the one delivered by the cable supplier) and I have no issues anymore. So that could be worth a try.

          Thanks for the help. I'm on a wired connection. And the network element are of great quality. I think there is a delay in ethernet.connect() but can't find it.

          mfalkviddM 1 Reply Last reply
          0
          • G Guillermo Schimmel

            @electrik said in Ethernet MQTT Gateway Slow to connect:

            I'm not using a wired connection, but had many connection issues also. It took long time before the gateway was up, MQTT connections dropped.

            Then I replaced my router (the one delivered by the cable supplier) and I have no issues anymore. So that could be worth a try.

            Thanks for the help. I'm on a wired connection. And the network element are of great quality. I think there is a delay in ethernet.connect() but can't find it.

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

            @guillermo-schimmel wouldn't it be a bit surprising if there is a delay that is only active on your system?

            G 1 Reply Last reply
            0
            • YveauxY Yveaux

              @guillermo-schimmel shot in the dark: make sure your Mac ID is unique on your network, or switches will get very confused

              G Offline
              G Offline
              Guillermo Schimmel
              wrote on last edited by
              #6

              @yveaux said in Ethernet MQTT Gateway Slow to connect:

              @guillermo-schimmel shot in the dark: make sure your Mac ID is unique on your network, or switches will get very confused

              Thank you for the suggestion. This is one of the lines I'm investigating.

                192.168.1.200         de-ad-be-ef-fe-ed     dynamic
              

              At the moment it seems to be some standard arduino joke, but at least is unique in the network.

              1 Reply Last reply
              0
              • mfalkviddM mfalkvidd

                @guillermo-schimmel wouldn't it be a bit surprising if there is a delay that is only active on your system?

                G Offline
                G Offline
                Guillermo Schimmel
                wrote on last edited by
                #7

                @mfalkvidd said in Ethernet MQTT Gateway Slow to connect:

                @guillermo-schimmel wouldn't it be a bit surprising if there is a delay that is only active on your system?

                Sure. I'm not meaning that. Sometimes not being an english speaker is tough.

                I mean that some combination of settings that I may have done (wrongly?) perhaps generated that delay.

                mfalkviddM 1 Reply Last reply
                1
                • G Guillermo Schimmel

                  @mfalkvidd said in Ethernet MQTT Gateway Slow to connect:

                  @guillermo-schimmel wouldn't it be a bit surprising if there is a delay that is only active on your system?

                  Sure. I'm not meaning that. Sometimes not being an english speaker is tough.

                  I mean that some combination of settings that I may have done (wrongly?) perhaps generated that delay.

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

                  @guillermo-schimmel I see. Thanks for explaining.

                  Which ethernet implementation are you using? (depends on which libraries are installed in your IDE)
                  To check, turn on "Show verbose output" in Arduino IDE preferences. Then compile the sketch. At the end, something like this will be shown:

                  Using library Ethernet at version 2.0.0 in folder: C:\Program Files (x86)\Arduino\libraries\Ethernet 
                  Using library MySensors at version 2.3.2-alpha in folder: R:\Documents\Arduino\libraries\MySensors 
                  Using library SPI at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI 
                  

                  In my implementation, there is a 560ms delay at init, in src/utility/w5100.cpp. It should only happen once though, so it should not be responsible for a 30 second delay. You could uncomment the Serial.println to verify.

                  // Many Ethernet shields have a CAT811 or similar reset chip
                  // connected to W5100 or W5200 chips.  The W5200 will not work at
                  // all, and may even drive its MISO pin, until given an active low
                  // reset pulse!  The CAT811 has a 240 ms typical pulse length, and
                  // a 400 ms worst case maximum pulse length.  MAX811 has a worst
                  // case maximum 560 ms pulse length.  This delay is meant to wait
                  // until the reset pulse is ended.  If your hardware has a shorter
                  // reset time, this can be edited or removed.
                  delay(560);
                  //Serial.println("w5100 init");
                  

                  There are quite a few Serial.println in this file. Activating them all for debugging purposes might be useful.

                  There are 50ms delays in src/Dhcp.cpp and src/Dns.cpp but since you're using fixed IP and no domain names, they should not be used. You could add Serial.println statements before/after them to verify.

                  G 1 Reply Last reply
                  0
                  • mfalkviddM mfalkvidd

                    @guillermo-schimmel I see. Thanks for explaining.

                    Which ethernet implementation are you using? (depends on which libraries are installed in your IDE)
                    To check, turn on "Show verbose output" in Arduino IDE preferences. Then compile the sketch. At the end, something like this will be shown:

                    Using library Ethernet at version 2.0.0 in folder: C:\Program Files (x86)\Arduino\libraries\Ethernet 
                    Using library MySensors at version 2.3.2-alpha in folder: R:\Documents\Arduino\libraries\MySensors 
                    Using library SPI at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI 
                    

                    In my implementation, there is a 560ms delay at init, in src/utility/w5100.cpp. It should only happen once though, so it should not be responsible for a 30 second delay. You could uncomment the Serial.println to verify.

                    // Many Ethernet shields have a CAT811 or similar reset chip
                    // connected to W5100 or W5200 chips.  The W5200 will not work at
                    // all, and may even drive its MISO pin, until given an active low
                    // reset pulse!  The CAT811 has a 240 ms typical pulse length, and
                    // a 400 ms worst case maximum pulse length.  MAX811 has a worst
                    // case maximum 560 ms pulse length.  This delay is meant to wait
                    // until the reset pulse is ended.  If your hardware has a shorter
                    // reset time, this can be edited or removed.
                    delay(560);
                    //Serial.println("w5100 init");
                    

                    There are quite a few Serial.println in this file. Activating them all for debugging purposes might be useful.

                    There are 50ms delays in src/Dhcp.cpp and src/Dns.cpp but since you're using fixed IP and no domain names, they should not be used. You could add Serial.println statements before/after them to verify.

                    G Offline
                    G Offline
                    Guillermo Schimmel
                    wrote on last edited by
                    #9

                    @mfalkvidd Thanks for the tips

                    I did all that

                    0 MCO:BGN:INIT GW,CP=RNNGA---,REL=255,VER=2.3.1
                    4 TSM:INIT
                    5 TSF:WUR:MS=0
                    11 TSM:INIT:TSP OK
                    13 TSM:INIT:GW MODE
                    15 TSM:READY:ID=0,PAR=0,DIS=0
                    17 MCO:REG:NOT NEEDED
                    w5100 init
                    w5100.cpp: detect W5200 chip
                    Wiznet soft reset
                    mr=0
                    w5100.cpp: detect W5500 chip
                    Wiznet soft reset
                    mr=0
                    w5100.cpp: detect W5100 chip
                    Wiznet soft reset
                    mr=0
                    chip is W5100
                    590 GWT:TPC:IP=192.168.1.200
                    1598 MCO:BGN:STP
                    1600 MCO:BGN:INIT OK,TSP=1
                    1603 GWT:TPC:IP=192.168.1.200
                    2606 GWT:RMQ:MQTT RECONNECT
                    3610 TSM:READY:NWD REQ
                    3647 TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:
                    3656 GWT:TPC:IP=192.168.1.200
                    4660 GWT:RMQ:MQTT RECONNECT
                    5664 TSF:MSG:READ,2-2-0,s=255,c=3,t=21,pt=1,l=1,sg=0:0
                    5669 TSF:MSG:READ,0-2-255,s=255,c=3,t=20,pt=0,l=0,sg=0:
                    5675 TSF:MSG:BC
                    5677 TSF:MSG:READ,11-11-0,s=255,c=3,t=21,pt=1,l=1,sg=0:0
                    New temp:
                    29.19
                    5709 GWT:TPC:IP=192.168.1.200
                    6713 GWT:RMQ:MQTT RECONNECT
                    7717 TSF:MSG:READ,10-2-0,s=1,c=1,t=13,pt=2,l=2,sg=0:48
                    7723 GWT:TPC:IP=192.168.1.200
                    8726 GWT:RMQ:MQTT RECONNECT
                    9732 GWT:TPC:IP=192.168.1.200
                    10735 GWT:RMQ:MQTT RECONNECT
                    11766 GWT:TPC:IP=192.168.1.200
                    12769 GWT:RMQ:MQTT RECONNECT
                    13774 GWT:TPC:IP=192.168.1.200
                    14777 GWT:RMQ:MQTT RECONNECT
                    15783 GWT:TPC:IP=192.168.1.200
                    16786 GWT:RMQ:MQTT RECONNECT
                    17819 GWT:TPC:IP=192.168.1.200
                    18822 GWT:RMQ:MQTT RECONNECT
                    19827 TSF:MSG:READ,10-2-0,s=1,c=1,t=13,pt=2,l=2,sg=0:47
                    19832 TSF:MSG:READ,10-2-0,s=2,c=1,t=0,pt=7,l=5,sg=0:27.62
                    19837 GWT:TPC:IP=192.168.1.200
                    20841 GWT:RMQ:MQTT RECONNECT
                    21849 GWT:TPC:IP=192.168.1.200
                    22851 GWT:RMQ:MQTT RECONNECT
                    23882 GWT:TPC:IP=192.168.1.200
                    24885 GWT:RMQ:MQTT RECONNECT
                    25890 GWT:TPC:IP=192.168.1.200
                    26894 GWT:RMQ:MQTT RECONNECT
                    27901 GWT:TPC:IP=192.168.1.200
                    28904 GWT:RMQ:MQTT RECONNECT
                    29910 TSF:MSG:READ,1-1-0,s=1,c=1,t=1,pt=7,l=5,sg=0:62.6
                    29941 GWT:TPC:IP=192.168.1.200
                    30945 GWT:RMQ:MQTT RECONNECT
                    31160 GWT:RMQ:MQTT CONNECTED
                    

                    It seems to detect quickly the w5100 and then the delay is elsewhere.

                    I will try to do the same on some other modules. Perhaps the speed and duplex negotiation.

                    G 1 Reply Last reply
                    0
                    • G Guillermo Schimmel

                      @mfalkvidd Thanks for the tips

                      I did all that

                      0 MCO:BGN:INIT GW,CP=RNNGA---,REL=255,VER=2.3.1
                      4 TSM:INIT
                      5 TSF:WUR:MS=0
                      11 TSM:INIT:TSP OK
                      13 TSM:INIT:GW MODE
                      15 TSM:READY:ID=0,PAR=0,DIS=0
                      17 MCO:REG:NOT NEEDED
                      w5100 init
                      w5100.cpp: detect W5200 chip
                      Wiznet soft reset
                      mr=0
                      w5100.cpp: detect W5500 chip
                      Wiznet soft reset
                      mr=0
                      w5100.cpp: detect W5100 chip
                      Wiznet soft reset
                      mr=0
                      chip is W5100
                      590 GWT:TPC:IP=192.168.1.200
                      1598 MCO:BGN:STP
                      1600 MCO:BGN:INIT OK,TSP=1
                      1603 GWT:TPC:IP=192.168.1.200
                      2606 GWT:RMQ:MQTT RECONNECT
                      3610 TSM:READY:NWD REQ
                      3647 TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:
                      3656 GWT:TPC:IP=192.168.1.200
                      4660 GWT:RMQ:MQTT RECONNECT
                      5664 TSF:MSG:READ,2-2-0,s=255,c=3,t=21,pt=1,l=1,sg=0:0
                      5669 TSF:MSG:READ,0-2-255,s=255,c=3,t=20,pt=0,l=0,sg=0:
                      5675 TSF:MSG:BC
                      5677 TSF:MSG:READ,11-11-0,s=255,c=3,t=21,pt=1,l=1,sg=0:0
                      New temp:
                      29.19
                      5709 GWT:TPC:IP=192.168.1.200
                      6713 GWT:RMQ:MQTT RECONNECT
                      7717 TSF:MSG:READ,10-2-0,s=1,c=1,t=13,pt=2,l=2,sg=0:48
                      7723 GWT:TPC:IP=192.168.1.200
                      8726 GWT:RMQ:MQTT RECONNECT
                      9732 GWT:TPC:IP=192.168.1.200
                      10735 GWT:RMQ:MQTT RECONNECT
                      11766 GWT:TPC:IP=192.168.1.200
                      12769 GWT:RMQ:MQTT RECONNECT
                      13774 GWT:TPC:IP=192.168.1.200
                      14777 GWT:RMQ:MQTT RECONNECT
                      15783 GWT:TPC:IP=192.168.1.200
                      16786 GWT:RMQ:MQTT RECONNECT
                      17819 GWT:TPC:IP=192.168.1.200
                      18822 GWT:RMQ:MQTT RECONNECT
                      19827 TSF:MSG:READ,10-2-0,s=1,c=1,t=13,pt=2,l=2,sg=0:47
                      19832 TSF:MSG:READ,10-2-0,s=2,c=1,t=0,pt=7,l=5,sg=0:27.62
                      19837 GWT:TPC:IP=192.168.1.200
                      20841 GWT:RMQ:MQTT RECONNECT
                      21849 GWT:TPC:IP=192.168.1.200
                      22851 GWT:RMQ:MQTT RECONNECT
                      23882 GWT:TPC:IP=192.168.1.200
                      24885 GWT:RMQ:MQTT RECONNECT
                      25890 GWT:TPC:IP=192.168.1.200
                      26894 GWT:RMQ:MQTT RECONNECT
                      27901 GWT:TPC:IP=192.168.1.200
                      28904 GWT:RMQ:MQTT RECONNECT
                      29910 TSF:MSG:READ,1-1-0,s=1,c=1,t=1,pt=7,l=5,sg=0:62.6
                      29941 GWT:TPC:IP=192.168.1.200
                      30945 GWT:RMQ:MQTT RECONNECT
                      31160 GWT:RMQ:MQTT CONNECTED
                      

                      It seems to detect quickly the w5100 and then the delay is elsewhere.

                      I will try to do the same on some other modules. Perhaps the speed and duplex negotiation.

                      G Offline
                      G Offline
                      Guillermo Schimmel
                      wrote on last edited by
                      #10

                      @guillermo-schimmel Well, solved.

                      Good brands not means good quality.

                      Replaced my Cisco switch for a unbranded one:

                      0 MCO:BGN:INIT GW,CP=RNNGA---,REL=255,VER=2.3.1
                      4 TSM:INIT
                      5 TSF:WUR:MS=0
                      11 TSM:INIT:TSP OK
                      13 TSM:INIT:GW MODE
                      15 TSM:READY:ID=0,PAR=0,DIS=0
                      17 MCO:REG:NOT NEEDED
                      w5100 init
                      w5100.cpp: detect W5200 chip
                      Wiznet soft reset
                      mr=0
                      w5100.cpp: detect W5500 chip
                      Wiznet soft reset
                      mr=0
                      w5100.cpp: detect W5100 chip
                      Wiznet soft reset
                      mr=0
                      chip is W5100
                      590 GWT:TPC:IP=192.168.1.200
                      1598 MCO:BGN:STP
                      1600 MCO:BGN:INIT OK,TSP=1
                      1603 GWT:TPC:IP=192.168.1.200
                      2606 GWT:RMQ:MQTT RECONNECT
                      2615 GWT:RMQ:MQTT CONNECTED
                      

                      Connected at the first attempt.

                      Thank you guys a lot for your time.

                      1 Reply Last reply
                      1
                      • L Offline
                        L Offline
                        linkinpio
                        wrote on last edited by
                        #11

                        Hi @Guillermo-Schimmel,
                        I know it's closed but just noticed this issue, you most probably had STP (Spanning Tree Protocol) enabled on that port, which is normal for ent switch, and while it waits for a loop it blocks trafic from that port.
                        Disabling that feature should solve this problem.

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


                        14

                        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