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. Controllers
  3. Home Assistant
  4. Motion Sensor not presenting to RS485 Gateway / TSM:FPAR:NO REPLY

Motion Sensor not presenting to RS485 Gateway / TSM:FPAR:NO REPLY

Scheduled Pinned Locked Moved Home Assistant
12 Posts 4 Posters 124 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.
  • M mrhutchinsonmn

    Hardware: Arduino nano boards+ RS485 devices with separate 5 volt power supply

    I am trying to set up my 1st Rs485 gateway motion sensor on Home Assistant, per the following tutorial:
    https://www.mysensors.org/build/rs485

    The motion sensor is not presenting itself to the gateway, so I did some digging and found this thread on the subject:

    https://forum.mysensors.org/topic/11048/mqtt-ethernet-gateway-with-wired-rs485-network.

    I have things wired up as per this pic provided in the tutorial

    Although I am not using mqtt, everything seemed to be pertinent but I was still unable to get communication between the sensor and gateway.

    Ha logs show the gateway seems to be happy:

    [mysensors] Connected to Serial<id=0x7f2fd0c2f518, open=True>(port='/dev/ttyUSB0', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=0, xonxoff=False, rtscts=False, dsrdtr=False)
    2020-10-05 13:17:05 INFO (MainThread) [mysensors] Connected to <_SelectorSocketTransport fd=25 read=idle write=<idle, bufsize=0>>
    p:Gateway startup complete.
    

    However serial monitor for the motion sensor shows the following:

    
    |  \/  |_   _/ ___|  ___ _ __  ___  ___  _ __ ___
    | |\/| | | | \___ \ / _ \ `_ \/ __|/ _ \| `__/ __|
    | |  | | |_| |___| |  __/ | | \__ \  _  | |  \__ \
    |_|  |_|\__, |____/ \___|_| |_|___/\___/|_|  |___/
            |___/                      2.3.2
    
    16 MCO:BGN:INIT NODE,CP=RSNNA---,FQ=16,REL=255,VER=2.3.2
    26 TSM:INIT
    28 TSF:WUR:MS=0
    29 TSM:INIT:TSP OK
    31 TSM:FPAR
    33 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    2041 !TSM:FPAR:NO REPLY
    2043 TSM:FPAR
    2045 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    4054 !TSM:FPAR:NO REPLY
    4056 TSM:FPAR
    4058 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    6066 !TSM:FPAR:NO REPLY
    6068 TSM:FPAR
    6070 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    8078 !TSM:FPAR:FAIL
    8079 TSM:FAIL:CNT=1
    8081 TSM:FAIL:DIS
    8083 TSF:TDI:TSL
    18085 TSM:FAIL:RE-INIT
    18087 TSM:INIT
    18088 TSM:INIT:TSP OK
    

    Gateway sketch:

    /**
    * The MySensors Arduino library handles the wireless radio link and protocol
    * between your home built sensors/actuators and HA controller of choice.
    * The sensors forms a self healing radio network with optional repeaters. Each
    * repeater and gateway builds a routing tables in EEPROM which keeps track of the
    * network topology allowing messages to be routed to nodes.
    *
    * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
    * Copyright (C) 2013-2019 Sensnology AB
    * Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
    *
    * Documentation: http://www.mysensors.org
    * Support Forum: http://forum.mysensors.org
    *
    * This program is free software; you can redistribute it and/or
    * modify it under the terms of the GNU General Public License
    * version 2 as published by the Free Software Foundation.
    *
    *******************************
    *
    * DESCRIPTION
    * The RS485 Gateway prints data received from sensors on the serial link.
    * The gateway accepts input on seral which will be sent out on
    * the RS485 link.
    *
    * Wire connections (OPTIONAL):
    * - Inclusion button should be connected between digital pin 3 and GND
    * - RX/TX/ERR leds need to be connected between +5V (anode) and digital pin 6/5/4 with resistor 270-330R in a series
    *
    * LEDs (OPTIONAL):
    * - RX (green) - blink fast on radio message received. In inclusion mode will blink fast only on presentation received
    * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly
    * - ERR (red) - fast blink on error during transmission error or receive crc error
    *
    * If your Arduino board has additional serial ports
    * you can use to connect the RS485 module.
    * Otherwise, the gateway uses AltSoftSerial to handle two serial
    * links on one Arduino. Use the following pins for RS485 link
    *
    *  Board          Transmit  Receive   PWM Unusable
    * -----          --------  -------   ------------
    * Teensy 3.0 & 3.1  21        20         22
    * Teensy 2.0         9        10       (none)
    * Teensy++ 2.0      25         4       26, 27
    * Arduino Uno        9         8         10
    * Arduino Leonardo   5        13       (none)
    * Arduino Mega      46        48       44, 45
    * Wiring-S           5         6          4
    * Sanguino          13        14         12
    *
    */
    
    // Enable debug prints to serial monitor
    #define MY_DEBUG
    
    // Enable RS485 transport layer
    #define MY_RS485
    
    // Define this to enables DE-pin management on defined pin
    #define MY_RS485_DE_PIN 2
    
    // Set RS485 baud rate to use
    #define MY_RS485_BAUD_RATE 115200
    
    // Enable this if RS485 is connected to a hardware serial port
    #define MY_RS485_HWSERIAL Serial
    
    // Enable serial gateway
    #define MY_GATEWAY_SERIAL
    
    
    // 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
    #define MY_DEFAULT_ERR_LED_PIN 4  // Error led pin
    #define MY_DEFAULT_RX_LED_PIN  5  // Receive led pin
    #define MY_DEFAULT_TX_LED_PIN  6  // the PCB, on board LED
    
    #include <MySensors.h>
    
    void setup()
    {
      // Setup locally attached sensors
    }
    
    void presentation()
    {
      // Present locally attached sensors
    }
    
    void loop()
    {
      // Send locally attached sensor data here
    }
    
    

    Motion detector Sketch:

    /*
     * The MySensors Arduino library handles the wireless radio link and protocol
     * between your home built sensors/actuators and HA controller of choice.
     * The sensors forms a self healing radio network with optional repeaters. Each
     * repeater and gateway builds a routing tables in EEPROM which keeps track of the
     * network topology allowing messages to be routed to nodes.
     *
     * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
     * Copyright (C) 2013-2019 Sensnology AB
     * Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
     *
     * Documentation: http://www.mysensors.org
     * Support Forum: http://forum.mysensors.org
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License
     * version 2 as published by the Free Software Foundation.
     *
     *******************************
     *
     * REVISION HISTORY
     * Version 1.0 - Henrik Ekblad
     *
     * DESCRIPTION
     * This is an example of sensors using RS485 as transport layer
     *
     * Motion Sensor example using HC-SR501
     * http://www.mysensors.org/build/motion
     *
     * If your Arduino board has additional serial ports
     * you can use to connect the RS485 module.
     * Otherwise, the transport uses AltSoftSerial to handle two serial
     * links on one Arduino. Use the following pins for RS485 link
     *
     *  Board          Transmit  Receive   PWM Unusable
     * -----          --------  -------   ------------
     * Teensy 3.0 & 3.1  21        20         22
     * Teensy 2.0         9        10       (none)
     * Teensy++ 2.0      25         4       26, 27
     * Arduino Uno        9         8         10
     * Arduino Leonardo   5        13       (none)
     * Arduino Mega      46        48       44, 45
     * Wiring-S           5         6          4
     * Sanguino          13        14         12 *
     *
     */
    
    // Enable debug prints to serial monitor
    #define MY_DEBUG
    
    // Enable RS485 transport layer
    #define MY_RS485
    
    // Define this to enables DE-pin management on defined pin
    #define MY_RS485_DE_PIN 2
    
    // Set RS485 baud rate to use
    #define MY_RS485_BAUD_RATE 115200
    
    // Enable this if RS485 is connected to a hardware serial port
    //#define MY_RS485_HWSERIAL Serial
    
    #include <MySensors.h>
    
    uint32_t SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
    #define DIGITAL_INPUT_SENSOR 3   // The digital input you attached your motion sensor.  (Only 2 and 3 generates interrupt!)
    #define MY_NODE_ID 123
    #define CHILD_ID 1   // Id of the sensor child
    
    // Initialize motion message
    MyMessage msg(CHILD_ID, V_TRIPPED);
    
    void setup()
    {
      pinMode(DIGITAL_INPUT_SENSOR, INPUT);      // sets the motion sensor digital pin as input
    }
    
    void presentation()
    {
      // Send the sketch version information to the gateway and Controller
      sendSketchInfo("Motion Sensor", "1.0");
    
      // Register all sensors to gw (they will be created as child devices)
      present(CHILD_ID, S_MOTION);
    }
    
    void loop()
    {
      // Read digital motion value
      bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH;
    
      Serial.println(tripped);
      send(msg.set(tripped?"1":"0"));  // Send tripped value to gw
    
      // Sleep until interrupt comes in on motion sensor. Send update every two minute.
      sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);
    }
    
    
    

    To rule out hardware failure, I followed this tutorial, and all works as expected:
    https://naylampmechatronics.com/blog/37_Comunicación-RS485-con-Arduino.html

    Transmitter sketch:

    const int ledPin =  13;  // Built-in LED
    const int EnTxPin =  2;  // HIGH:Transmitter, LOW:Receiver
    void setup() 
    { 
      Serial.begin(9600);
      Serial.setTimeout(100);  
      pinMode(ledPin, OUTPUT);
      pinMode(EnTxPin, OUTPUT);
      digitalWrite(ledPin, LOW); 
      digitalWrite(EnTxPin, HIGH); 
    } 
     
    void loop() 
    {   
      int rdata = analogRead(0); //data from potentiometer 
      int angle= map(rdata, 0, 1023, 0, 180); 
      
      //transmitter data packet
      Serial.print("I"); //initiate data packet
      Serial.print("S"); //code for servo
      Serial.print(angle); //servo angle data
      Serial.print("F"); //finish data packet
      delay(50); 
    
      //receiver data packet
      Serial.print("I"); //initiate data packet
      Serial.print("L"); //code for sensor
      Serial.print("F"); //finish data packet
      Serial.flush();    
      
      digitalWrite(EnTxPin, LOW); //RS485 as receiver
    
      if(Serial.find("i"))
      {
          int data=Serial.parseInt(); 
          if(Serial.read()=='f') //finish reading
           {
             onLED(data);            
          }
          
      }
      digitalWrite(EnTxPin, HIGH); //RS485 as transmitter
      
    } 
    
    void onLED(int data)
    {
      if(data>500)
         digitalWrite(ledPin, HIGH); 
      else
         digitalWrite(ledPin, LOW); 
    }
    

    Reciever sketch:

    #include <Servo.h>
    Servo myservo; 
    const int EnTxPin = 2;
    void setup () {
      Serial.begin (9600);
      myservo.attach (9); 
      pinMode(EnTxPin, OUTPUT );
      digitalWrite (EnTxPin, LOW );
    }
    
    void loop (){
      if ( Serial.available ()){
        if ( Serial.read () == 'I' ){
          char function = Serial.read ();
          if (function == 'S' ){
            int angle = Serial.parseInt ();
            if ( Serial.read () == 'F' ){
              if (angle <= 180) {
                myservo.write (angle);
              }
            }
          }
          else if (function == 'L' ){
            if ( Serial.read () == 'F' ){
              int val = analogRead (0);
              digitalWrite (EnTxPin, HIGH ); //enable to transmit
              Serial.print ( "i" ); 
              Serial.print (val); 
              Serial.println ( "f" ); 
              Serial.flush (); 
              digitalWrite (EnTxPin, LOW ); //enable to receive
            }
          }
        }
      }
      delay (10);
    }
    
    

    Any ideas about what might be causing the issue?

    M Offline
    M Offline
    mrhutchinsonmn
    wrote on last edited by
    #3

    @mrhutchinsonmn said in Motion Sensor not presenting to RS485 Gateway / TSM:FPAR:NO REPLY:

    9600

    Good catch.. That was an old version... both are set to 115200 after 9600 did not work

    M 1 Reply Last reply
    1
    • M mrhutchinsonmn

      @mrhutchinsonmn said in Motion Sensor not presenting to RS485 Gateway / TSM:FPAR:NO REPLY:

      9600

      Good catch.. That was an old version... both are set to 115200 after 9600 did not work

      M Offline
      M Offline
      mrhutchinsonmn
      wrote on last edited by
      #4

      @mrhutchinsonmn Might have confused the issue with my reply.. Neither 115200 nor 9600 baud rates resolve the communication issue.

      1 Reply Last reply
      0
      • mfalkviddM Offline
        mfalkviddM Offline
        mfalkvidd
        Mod
        wrote on last edited by
        #5

        The sketch uses MY_RS485_HWSERIAL but you say you have wired according to https://forum.mysensors.org/topic/11048/mqtt-ethernet-gateway-with-wired-rs485-network which uses pins 8 and 9?

        Pins 8 and 9 are not the hardware serial pins.

        M 1 Reply Last reply
        0
        • mfalkviddM mfalkvidd

          The sketch uses MY_RS485_HWSERIAL but you say you have wired according to https://forum.mysensors.org/topic/11048/mqtt-ethernet-gateway-with-wired-rs485-network which uses pins 8 and 9?

          Pins 8 and 9 are not the hardware serial pins.

          M Offline
          M Offline
          mrhutchinsonmn
          wrote on last edited by
          #6

          @mfalkvidd Ugh!!! Too many versions of the sketch :)... Had to switch between my laptop and pc because of sketch upload issues.... Must have grabbed an old sketch.. I HAD commented hwserial out earlier... Getting communication now but not a valid message, not enough values to unpack errors. I will dig into that tomorrow. Thank you!!!

          mfalkviddM 1 Reply Last reply
          1
          • M mrhutchinsonmn

            @mfalkvidd Ugh!!! Too many versions of the sketch :)... Had to switch between my laptop and pc because of sketch upload issues.... Must have grabbed an old sketch.. I HAD commented hwserial out earlier... Getting communication now but not a valid message, not enough values to unpack errors. I will dig into that tomorrow. Thank you!!!

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

            @mrhutchinsonmn I would try 9600 again. 115200 leaves very little room for interference and oscillator differences.

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mrhutchinsonmn
              wrote on last edited by
              #8

              Thank you for the advice!

              I started over, just to be sure I didn't have anymore mix ups, but still have not been able to get the RS485 motion sensor and RS485 gateway to talk.

              Hardware: Arduino Nanos+ RS485 modules.

              Wiring:
              RO = Pin 8 of Arduino
              DI = Pin 9 of Arduino
              A = A on other Nano
              B = B on other Nano
              DI= Pin 9 of Nano
              RO = Pin 8 of Nano
              DE & RE = Pin 2 of Nano
              VCC = External power source
              GND = External power source

              Current Gateway Sketch:

              /**
              * The MySensors Arduino library handles the wireless radio link and protocol
              * between your home built sensors/actuators and HA controller of choice.
              * The sensors forms a self healing radio network with optional repeaters. Each
              * repeater and gateway builds a routing tables in EEPROM which keeps track of the
              * network topology allowing messages to be routed to nodes.
              *
              * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
              * Copyright (C) 2013-2019 Sensnology AB
              * Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
              *
              * Documentation: http://www.mysensors.org
              * Support Forum: http://forum.mysensors.org
              *
              * This program is free software; you can redistribute it and/or
              * modify it under the terms of the GNU General Public License
              * version 2 as published by the Free Software Foundation.
              *
              *******************************
              *
              * DESCRIPTION
              * The RS485 Gateway prints data received from sensors on the serial link.
              * The gateway accepts input on seral which will be sent out on
              * the RS485 link.
              *
              * Wire connections (OPTIONAL):
              * - Inclusion button should be connected between digital pin 3 and GND
              * - RX/TX/ERR leds need to be connected between +5V (anode) and digital pin 6/5/4 with resistor 270-330R in a series
              *
              * LEDs (OPTIONAL):
              * - RX (green) - blink fast on radio message received. In inclusion mode will blink fast only on presentation received
              * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly
              * - ERR (red) - fast blink on error during transmission error or receive crc error
              *
              * If your Arduino board has additional serial ports
              * you can use to connect the RS485 module.
              * Otherwise, the gateway uses AltSoftSerial to handle two serial
              * links on one Arduino. Use the following pins for RS485 link
              *
              *  Board          Transmit  Receive   PWM Unusable
              * -----          --------  -------   ------------
              * Teensy 3.0 & 3.1  21        20         22
              * Teensy 2.0         9        10       (none)
              * Teensy++ 2.0      25         4       26, 27
              * Arduino Uno        9         8         10
              * Arduino Leonardo   5        13       (none)
              * Arduino Mega      46        48       44, 45
              * Wiring-S           5         6          4
              * Sanguino          13        14         12
              *
              */
              
              // Enable debug prints to serial monitor
              #define MY_DEBUG
              
              // Enable RS485 transport layer
              #define MY_RS485
              
              // Define this to enables DE-pin management on defined pin
              #define MY_RS485_DE_PIN 2
              
              // Set RS485 baud rate to use
              #define MY_RS485_BAUD_RATE 9600
              
              // Enable this if RS485 is connected to a hardware serial port
              //#define MY_RS485_HWSERIAL Serial
              
              // Enable serial gateway
              #define MY_GATEWAY_SERIAL
              
              
              // 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
              #define MY_DEFAULT_ERR_LED_PIN 4  // Error led pin
              #define MY_DEFAULT_RX_LED_PIN  5  // Receive led pin
              #define MY_DEFAULT_TX_LED_PIN  6  // the PCB, on board LED
              
              #include <MySensors.h>
              
              void setup()
              {
                // Setup locally attached sensors
              }
              
              void presentation()
              {
                // Present locally attached sensors
              }
              
              void loop()
              {
                // Send locally attached sensor data here
              }
              
              

              Current Motion Detector Sketch:

              /*
               * The MySensors Arduino library handles the wireless radio link and protocol
               * between your home built sensors/actuators and HA controller of choice.
               * The sensors forms a self healing radio network with optional repeaters. Each
               * repeater and gateway builds a routing tables in EEPROM which keeps track of the
               * network topology allowing messages to be routed to nodes.
               *
               * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
               * Copyright (C) 2013-2019 Sensnology AB
               * Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
               *
               * Documentation: http://www.mysensors.org
               * Support Forum: http://forum.mysensors.org
               *
               * This program is free software; you can redistribute it and/or
               * modify it under the terms of the GNU General Public License
               * version 2 as published by the Free Software Foundation.
               *
               *******************************
               *
               * REVISION HISTORY
               * Version 1.0 - Henrik Ekblad
               *
               * DESCRIPTION
               * This is an example of sensors using RS485 as transport layer
               *
               * Motion Sensor example using HC-SR501
               * http://www.mysensors.org/build/motion
               *
               * If your Arduino board has additional serial ports
               * you can use to connect the RS485 module.
               * Otherwise, the transport uses AltSoftSerial to handle two serial
               * links on one Arduino. Use the following pins for RS485 link
               *
               *  Board          Transmit  Receive   PWM Unusable
               * -----          --------  -------   ------------
               * Teensy 3.0 & 3.1  21        20         22
               * Teensy 2.0         9        10       (none)
               * Teensy++ 2.0      25         4       26, 27
               * Arduino Uno        9         8         10
               * Arduino Leonardo   5        13       (none)
               * Arduino Mega      46        48       44, 45
               * Wiring-S           5         6          4
               * Sanguino          13        14         12 *
               *
               */
              
              // Enable debug prints to serial monitor
              #define MY_DEBUG
              
              // Enable RS485 transport layer
              #define MY_RS485
              
              // Define this to enables DE-pin management on defined pin
              #define MY_RS485_DE_PIN 2
              
              // Set RS485 baud rate to use
              #define MY_RS485_BAUD_RATE 9600
              
              // Enable this if RS485 is connected to a hardware serial port
              //#define MY_RS485_HWSERIAL Serial1
              
              #include <MySensors.h>
              
              uint32_t SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
              #define DIGITAL_INPUT_SENSOR 3   // The digital input you attached your motion sensor.  (Only 2 and 3 generates interrupt!)
              #define MY_NODE_ID 12
              #define CHILD_ID 1   // Id of the sensor child
              
              // Initialize motion message
              MyMessage msg(CHILD_ID, V_TRIPPED);
              
              void setup()
              {
                pinMode(DIGITAL_INPUT_SENSOR, INPUT);      // sets the motion sensor digital pin as input
              }
              
              void presentation()
              {
                // Send the sketch version information to the gateway and Controller
                sendSketchInfo("Motion Sensor", "1.0");
              
                // Register all sensors to gw (they will be created as child devices)
                present(CHILD_ID, S_MOTION);
              }
              
              void loop()
              {
                // Read digital motion value
                bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH;
              
                Serial.println(tripped);
                send(msg.set(tripped?"1":"0"));  // Send tripped value to gw
              
                // Sleep until interrupt comes in on motion sensor. Send update every two minute.
                sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);
              }
              

              Commented the following out on the gateway, as per other forum users recommendations ( but made no difference)

              // 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
              

              Serial Monitor info:

              21257 TSM:FAIL:CNT=7
              321259 TSM:FAIL:DIS
              321261 TSF:TDI:TSL
              381263 TSM:FAIL:RE-INIT
              381265 TSM:INIT
              381266 TSM:INIT:TSP OK
              381268 TSM:FPAR
              381287 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
              383295 !TSM:FPAR:NO REPLY
              383297 TSM:FPAR
              383315 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
              385324 !TSM:FPAR:NO REPLY
              385326 TSM:FPAR
              385344 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
              387352 !TSM:FPAR:NO REPLY
              387354 TSM:FPAR
              387373 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
              389381 !TSM:FPAR:FAIL
              

              Ideas?

              rejoe2R 1 Reply Last reply
              0
              • M mrhutchinsonmn

                Thank you for the advice!

                I started over, just to be sure I didn't have anymore mix ups, but still have not been able to get the RS485 motion sensor and RS485 gateway to talk.

                Hardware: Arduino Nanos+ RS485 modules.

                Wiring:
                RO = Pin 8 of Arduino
                DI = Pin 9 of Arduino
                A = A on other Nano
                B = B on other Nano
                DI= Pin 9 of Nano
                RO = Pin 8 of Nano
                DE & RE = Pin 2 of Nano
                VCC = External power source
                GND = External power source

                Current Gateway Sketch:

                /**
                * The MySensors Arduino library handles the wireless radio link and protocol
                * between your home built sensors/actuators and HA controller of choice.
                * The sensors forms a self healing radio network with optional repeaters. Each
                * repeater and gateway builds a routing tables in EEPROM which keeps track of the
                * network topology allowing messages to be routed to nodes.
                *
                * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
                * Copyright (C) 2013-2019 Sensnology AB
                * Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
                *
                * Documentation: http://www.mysensors.org
                * Support Forum: http://forum.mysensors.org
                *
                * This program is free software; you can redistribute it and/or
                * modify it under the terms of the GNU General Public License
                * version 2 as published by the Free Software Foundation.
                *
                *******************************
                *
                * DESCRIPTION
                * The RS485 Gateway prints data received from sensors on the serial link.
                * The gateway accepts input on seral which will be sent out on
                * the RS485 link.
                *
                * Wire connections (OPTIONAL):
                * - Inclusion button should be connected between digital pin 3 and GND
                * - RX/TX/ERR leds need to be connected between +5V (anode) and digital pin 6/5/4 with resistor 270-330R in a series
                *
                * LEDs (OPTIONAL):
                * - RX (green) - blink fast on radio message received. In inclusion mode will blink fast only on presentation received
                * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly
                * - ERR (red) - fast blink on error during transmission error or receive crc error
                *
                * If your Arduino board has additional serial ports
                * you can use to connect the RS485 module.
                * Otherwise, the gateway uses AltSoftSerial to handle two serial
                * links on one Arduino. Use the following pins for RS485 link
                *
                *  Board          Transmit  Receive   PWM Unusable
                * -----          --------  -------   ------------
                * Teensy 3.0 & 3.1  21        20         22
                * Teensy 2.0         9        10       (none)
                * Teensy++ 2.0      25         4       26, 27
                * Arduino Uno        9         8         10
                * Arduino Leonardo   5        13       (none)
                * Arduino Mega      46        48       44, 45
                * Wiring-S           5         6          4
                * Sanguino          13        14         12
                *
                */
                
                // Enable debug prints to serial monitor
                #define MY_DEBUG
                
                // Enable RS485 transport layer
                #define MY_RS485
                
                // Define this to enables DE-pin management on defined pin
                #define MY_RS485_DE_PIN 2
                
                // Set RS485 baud rate to use
                #define MY_RS485_BAUD_RATE 9600
                
                // Enable this if RS485 is connected to a hardware serial port
                //#define MY_RS485_HWSERIAL Serial
                
                // Enable serial gateway
                #define MY_GATEWAY_SERIAL
                
                
                // 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
                #define MY_DEFAULT_ERR_LED_PIN 4  // Error led pin
                #define MY_DEFAULT_RX_LED_PIN  5  // Receive led pin
                #define MY_DEFAULT_TX_LED_PIN  6  // the PCB, on board LED
                
                #include <MySensors.h>
                
                void setup()
                {
                  // Setup locally attached sensors
                }
                
                void presentation()
                {
                  // Present locally attached sensors
                }
                
                void loop()
                {
                  // Send locally attached sensor data here
                }
                
                

                Current Motion Detector Sketch:

                /*
                 * The MySensors Arduino library handles the wireless radio link and protocol
                 * between your home built sensors/actuators and HA controller of choice.
                 * The sensors forms a self healing radio network with optional repeaters. Each
                 * repeater and gateway builds a routing tables in EEPROM which keeps track of the
                 * network topology allowing messages to be routed to nodes.
                 *
                 * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
                 * Copyright (C) 2013-2019 Sensnology AB
                 * Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
                 *
                 * Documentation: http://www.mysensors.org
                 * Support Forum: http://forum.mysensors.org
                 *
                 * This program is free software; you can redistribute it and/or
                 * modify it under the terms of the GNU General Public License
                 * version 2 as published by the Free Software Foundation.
                 *
                 *******************************
                 *
                 * REVISION HISTORY
                 * Version 1.0 - Henrik Ekblad
                 *
                 * DESCRIPTION
                 * This is an example of sensors using RS485 as transport layer
                 *
                 * Motion Sensor example using HC-SR501
                 * http://www.mysensors.org/build/motion
                 *
                 * If your Arduino board has additional serial ports
                 * you can use to connect the RS485 module.
                 * Otherwise, the transport uses AltSoftSerial to handle two serial
                 * links on one Arduino. Use the following pins for RS485 link
                 *
                 *  Board          Transmit  Receive   PWM Unusable
                 * -----          --------  -------   ------------
                 * Teensy 3.0 & 3.1  21        20         22
                 * Teensy 2.0         9        10       (none)
                 * Teensy++ 2.0      25         4       26, 27
                 * Arduino Uno        9         8         10
                 * Arduino Leonardo   5        13       (none)
                 * Arduino Mega      46        48       44, 45
                 * Wiring-S           5         6          4
                 * Sanguino          13        14         12 *
                 *
                 */
                
                // Enable debug prints to serial monitor
                #define MY_DEBUG
                
                // Enable RS485 transport layer
                #define MY_RS485
                
                // Define this to enables DE-pin management on defined pin
                #define MY_RS485_DE_PIN 2
                
                // Set RS485 baud rate to use
                #define MY_RS485_BAUD_RATE 9600
                
                // Enable this if RS485 is connected to a hardware serial port
                //#define MY_RS485_HWSERIAL Serial1
                
                #include <MySensors.h>
                
                uint32_t SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
                #define DIGITAL_INPUT_SENSOR 3   // The digital input you attached your motion sensor.  (Only 2 and 3 generates interrupt!)
                #define MY_NODE_ID 12
                #define CHILD_ID 1   // Id of the sensor child
                
                // Initialize motion message
                MyMessage msg(CHILD_ID, V_TRIPPED);
                
                void setup()
                {
                  pinMode(DIGITAL_INPUT_SENSOR, INPUT);      // sets the motion sensor digital pin as input
                }
                
                void presentation()
                {
                  // Send the sketch version information to the gateway and Controller
                  sendSketchInfo("Motion Sensor", "1.0");
                
                  // Register all sensors to gw (they will be created as child devices)
                  present(CHILD_ID, S_MOTION);
                }
                
                void loop()
                {
                  // Read digital motion value
                  bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH;
                
                  Serial.println(tripped);
                  send(msg.set(tripped?"1":"0"));  // Send tripped value to gw
                
                  // Sleep until interrupt comes in on motion sensor. Send update every two minute.
                  sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);
                }
                

                Commented the following out on the gateway, as per other forum users recommendations ( but made no difference)

                // 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
                

                Serial Monitor info:

                21257 TSM:FAIL:CNT=7
                321259 TSM:FAIL:DIS
                321261 TSF:TDI:TSL
                381263 TSM:FAIL:RE-INIT
                381265 TSM:INIT
                381266 TSM:INIT:TSP OK
                381268 TSM:FPAR
                381287 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                383295 !TSM:FPAR:NO REPLY
                383297 TSM:FPAR
                383315 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                385324 !TSM:FPAR:NO REPLY
                385326 TSM:FPAR
                385344 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                387352 !TSM:FPAR:NO REPLY
                387354 TSM:FPAR
                387373 ?TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                389381 !TSM:FPAR:FAIL
                

                Ideas?

                rejoe2R Offline
                rejoe2R Offline
                rejoe2
                wrote on last edited by
                #9

                @mrhutchinsonmn At RS485, it's obligatory to assign NodeIDs within your sketch.

                Controller: FHEM; MySensors: 2.3.1, RS485,nRF24,RFM69, serial Gateways

                M 1 Reply Last reply
                0
                • electrikE Offline
                  electrikE Offline
                  electrik
                  wrote on last edited by
                  #10

                  You should move the define for the node ID before you include mysensors.h

                  1 Reply Last reply
                  2
                  • rejoe2R rejoe2

                    @mrhutchinsonmn At RS485, it's obligatory to assign NodeIDs within your sketch.

                    M Offline
                    M Offline
                    mrhutchinsonmn
                    wrote on last edited by
                    #11

                    @rejoe2 In research, some stated it needed to be there if the sensor did not present itself. Followed @electrik advice and it now works. Thank you for your feedback!

                    M 1 Reply Last reply
                    0
                    • M mrhutchinsonmn

                      @rejoe2 In research, some stated it needed to be there if the sensor did not present itself. Followed @electrik advice and it now works. Thank you for your feedback!

                      M Offline
                      M Offline
                      mrhutchinsonmn
                      wrote on last edited by
                      #12

                      @electrik Yes... that worked!!! Moved node and child id above mysensors.h

                      Thank you!!!!

                      1 Reply Last reply
                      1
                      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