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. !TSM:FPAR:NO REPLY

!TSM:FPAR:NO REPLY

Scheduled Pinned Locked Moved Troubleshooting
13 Posts 6 Posters 6.1k Views 4 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.
  • ร Offline
    ร Offline
    รอเรือ
    wrote on last edited by
    #4

    My problem was caused by the fact that the radio was inserted into a socket. The 4.7uF stabilizing capacitor was put on the main board side of the socket. Moving the capacitor to the radio board or just soldering the radio to the main board (without using a socket) solved the problem. So, don't use a socket between the radio and the stabilizing capacitor.

    Another interesting thing is that by putting a finger onto the antenna also solved the problem. I could use that method for testing all my radios (using the socket) before permanently soldering them onto the main board.

    R 1 Reply Last reply
    1
    • ร รอเรือ

      My problem was caused by the fact that the radio was inserted into a socket. The 4.7uF stabilizing capacitor was put on the main board side of the socket. Moving the capacitor to the radio board or just soldering the radio to the main board (without using a socket) solved the problem. So, don't use a socket between the radio and the stabilizing capacitor.

      Another interesting thing is that by putting a finger onto the antenna also solved the problem. I could use that method for testing all my radios (using the socket) before permanently soldering them onto the main board.

      R Offline
      R Offline
      Reza
      wrote on last edited by Reza
      #5

      @รอเรือ
      use a 100uf capacitor for radio and use

      #define MY_RF24_PA_LEVEL RF24_PA_HIGH
      

      for gateway and nodes.
      this is not excellent but work better with little error

      1 Reply Last reply
      1
      • W Offline
        W Offline
        wokwon
        wrote on last edited by
        #6

        I had the same problem.

        For some reason I'd connected NRF_CE to Pin D4 instead of D9.

        Simply putting #define MY_RF24_CE_PIN 4 made all the problems go away but I lost a couple of days figuring that out. I assumed the radio was connected fine as it was talking to the gateway, it would just not ACK messages.

        The gateway would show:

        7222879 !TSF:MSG:SEND,0-0-6-6,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0
        

        (Running 2.2.0.rc2)

        1 Reply Last reply
        1
        • alowhumA Offline
          alowhumA Offline
          alowhum
          Plugin Developer
          wrote on last edited by alowhum
          #7

          I fixed it by adding:

          #define MY_NODE_ID 11
          #define MY_PARENT_NODE_ID 0
          #define MY_PARENT_NODE_IS_STATIC
          

          I had been noticing that the gateway was overwriting old nodes that hadn't connected for a while. Oddly, I can see the following ID's in Domoticz:

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          123

          ร 1 Reply Last reply
          1
          • alowhumA Offline
            alowhumA Offline
            alowhum
            Plugin Developer
            wrote on last edited by
            #8

            And then fixed it some more by clearing the eeprom of my nodes. There's special sketch for that under examples.

            1 Reply Last reply
            0
            • alowhumA alowhum

              I fixed it by adding:

              #define MY_NODE_ID 11
              #define MY_PARENT_NODE_ID 0
              #define MY_PARENT_NODE_IS_STATIC
              

              I had been noticing that the gateway was overwriting old nodes that hadn't connected for a while. Oddly, I can see the following ID's in Domoticz:

              1
              2
              3
              4
              5
              6
              7
              8
              9
              10
              123

              ร Offline
              ร Offline
              รอเรือ
              wrote on last edited by รอเรือ
              #9

              @alowhum Thanks for that solution.

              This is an old topic but I recently started to have these problems again.

              From the debug output:

              !TSM:FPAR:NO REPLY
              

              I've tried so many different capacitors without success. The funny thing is that if I touch the antenna, communication starts to work.

              Then I tried

              #define MY_PARENT_NODE_ID 0
              #define MY_PARENT_NODE_IS_STATIC
              

              And now it works. I suspect this is not a case of bad radio clones. It's something else. That's my guess.

              I use MySensors 2.3.0 on my node and on my gateway. I also have a repeater node, I believe it has MySensors version 2.2.0. (Arduino 1.8.5)

              You guys who know a lot, does this sound like that I've got a problem with my repeater node? Do you have any suggestions how I can find out what's the cause of the issue?

              Thanks!

              EDIT: One day after: The solution above stopped to work for some reason. I sound like an idiot, don't I? I have been working many hours trying to figure out what's the cause. Today nothing seemed to work (If touching the antenna it works but I can't do that all the time.) Anyway, I desoldered the radio and put a new one in. No change. I removed the power regulator and fed the radio with 3v battery, no change. I desoldered the radio again and put a socket so I can switch radio easily. I measured that the socket cnnections on the PCB works. Suddenly it works quite well with most radios that I've tried. I get a few NACK occasionally on some of the radios. Soldering additional capacitors on top of the radio doesn't seem to improve anything. It works quite well now but I can't accept that the socket is the solution that makes the radios work.

              1 Reply Last reply
              0
              • M Offline
                M Offline
                Michał Kozak
                wrote on last edited by
                #10

                Looks like I stared facing simillar issues

                Logs from node (assembled on NewbiPCB) with 100uF cap.

                111382 !TSM:FPAR:NO REPLY
                111384 TSM:FPAR
                111421 TSF:MSG:SEND,4-4-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                113430 !TSM:FPAR:NO REPLY
                113432 TSM:FPAR
                113469 TSF:MSG:SEND,4-4-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                115478 !TSM:FPAR:NO REPLY
                115480 TSM:FPAR
                115517 TSF:MSG:SEND,4-4-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
                117526 !TSM:FPAR:FAIL
                117528 TSM:FAIL:CNT=7
                117530 TSM:FAIL:DIS
                117532 TSF:TDI:TSL
                

                Gateway

                Sep 29 21:30:17 DEBUG !TSF:MSG:SEND,0-0-4-4,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0
                Sep 29 21:30:18 DEBUG TSF:MSG:READ,4-4-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                Sep 29 21:30:18 DEBUG TSF:MSG:BC
                Sep 29 21:30:18 DEBUG TSF:MSG:FPAR REQ,ID=4
                Sep 29 21:30:18 DEBUG TSF:CKU:OK,FCTRL
                Sep 29 21:30:18 DEBUG TSF:MSG:GWL OK
                Sep 29 21:30:19 DEBUG !TSF:MSG:SEND,0-0-4-4,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0
                Sep 29 21:30:20 DEBUG TSF:MSG:READ,4-4-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                Sep 29 21:30:20 DEBUG TSF:MSG:BC
                Sep 29 21:30:20 DEBUG TSF:MSG:FPAR REQ,ID=4
                Sep 29 21:30:20 DEBUG TSF:CKU:OK,FCTRL
                Sep 29 21:30:20 DEBUG TSF:MSG:GWL OK
                Sep 29 21:30:21 DEBUG !TSF:MSG:SEND,0-0-4-4,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0
                Sep 29 21:30:22 DEBUG TSF:MSG:READ,4-4-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                Sep 29 21:30:22 DEBUG TSF:MSG:BC
                Sep 29 21:30:22 DEBUG TSF:MSG:FPAR REQ,ID=4
                Sep 29 21:30:22 DEBUG TSF:CKU:OK,FCTRL
                Sep 29 21:30:22 DEBUG TSF:MSG:GWL OK
                Sep 29 21:30:23 DEBUG !TSF:MSG:SEND,0-0-4-4,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0
                

                Today I'm on development branch. I switched from 2.3.0 which had simillar issues hoping the problem will be resolved.

                My sketch which isn't clean because I'm experimenting, trying to find solution

                #define MY_DEBUG
                //#define MY_PASSIVE_NODE
                #define MY_TRANSPORT_WAIT_READY_MS 1
                #define MY_RADIO_NRF24
                #define MY_NODE_ID 4
                //#define MY_PARENT_NODE_ID 0
                //#define MY_PARENT_NODE_IS_STATIC
                //#define MY_RF24_PA_LEVEL RF24_PA_MAX
                
                #include <MySensors.h>
                // MYSENSORS_LIBRARY_VERSION
                
                // https://github.com/finitespace/BME280
                #include <BME280I2C.h>
                
                typedef struct BatteryStatus {
                  float voltage;
                  int level;
                
                  BatteryStatus() {
                    voltage = 0;
                    level = 0;
                  }
                } BatteryStatus;
                
                typedef struct Weather {
                  float temperature;
                  float humidity;
                  float baro;
                
                  Weather() {
                    temperature = -127.0;
                    humidity = -127.0;
                    baro = -127.0;
                  }
                } Weather;
                
                const uint32_t SLEEP_TIME = 15*60*1000ul;
                const bool DEBUG = true;
                const float VBAT_FULL = 2.8;
                const float VBAT_EMPTY = 2.0;
                const byte BATTERY_VOLTAGE_SENSOR_ID = 3;
                const byte TEMPERATURE_SENSOR_ID = 1;
                const byte HUMIDITY_SENSOR_ID = 2;
                const byte BARO_SENSOR_ID = 4;
                
                // current sensors readings
                BatteryStatus batteryStatus;
                Weather weather;
                
                // define mysensors messages
                MyMessage vbatMsg(BATTERY_VOLTAGE_SENSOR_ID, V_VOLTAGE);
                MyMessage temperatureMsg(TEMPERATURE_SENSOR_ID, V_TEMP);
                MyMessage humidityMsg(HUMIDITY_SENSOR_ID, V_HUM);
                MyMessage baroMsg(BARO_SENSOR_ID, V_PRESSURE);
                
                // configure BME280 sensor
                BME280I2C::Settings settings(
                   BME280::OSR_X1,
                   BME280::OSR_X1,
                   BME280::OSR_X1,
                   BME280::Mode_Forced,            // Forced sample.  After taking the measurement the chip goes back to sleep.
                   BME280::StandbyTime_1000ms,
                   BME280::Filter_Off,
                   BME280::SpiEnable_False,
                   0x76                            // I2C address. I2C specific.
                );
                
                BME280I2C bme(settings);
                BME280::TempUnit temperatureUnit(BME280::TempUnit_Celsius);
                BME280::PresUnit baroUnit(BME280::PresUnit_hPa);
                
                void readBatteryStatus(BatteryStatus& batteryStatus) {
                  int val = analogRead(A0);
                  float voltage  = val * 0.0033464521;
                  int level;
                  if (voltage > VBAT_FULL) {
                    level = 100;
                  } else if (voltage < VBAT_EMPTY) {
                    level = 0;
                  } else {
                    level = (int) ((voltage - VBAT_EMPTY) * 100.0 / (VBAT_FULL - VBAT_EMPTY));
                  }
                  if (DEBUG) {
                    Serial.print("readBatteryStatus: ");
                    Serial.print("val=");
                    Serial.print(val);
                    Serial.print(", level=");
                    Serial.print(level);
                    Serial.print("%, ");
                    Serial.print("voltage=");
                    Serial.print(voltage);
                    Serial.print("V");
                    Serial.println();
                  }
                  batteryStatus.voltage = voltage;
                  batteryStatus.level = level;
                }
                
                void readWeather(Weather& weather) {
                  bme.read(weather.baro, weather.temperature, weather.humidity, temperatureUnit, baroUnit);
                
                  if (DEBUG) {
                    Serial.print("readWeather: ");
                    Serial.print("temperature=");
                    Serial.print(weather.temperature);
                    Serial.print("C");
                    Serial.print(", humidity=");
                    Serial.print(weather.humidity);
                    Serial.print("%");
                    Serial.print(", baro=");
                    Serial.print(weather.baro);
                    Serial.println("hPa");
                  }
                }
                
                void send(Weather& weather) {
                  //send_hard(temperatureMsg.set(weather.temperature, 1));
                  //send_hard(humidityMsg.set(weather.humidity, 1));
                  //send_hard(baroMsg.set(weather.baro, 1));
                }
                
                void send(BatteryStatus& batteryStatus) {
                  //send_hard(vbatMsg.set(batteryStatus.voltage, 2));
                  sendBatteryLevel(batteryStatus.level);
                }
                
                void send_hard(MyMessage& msg) {
                  int retry = 5;
                  while (retry--) {
                    if (send(msg)) {
                      return;
                    }
                    Serial.println("RETRY");
                    wait(50); // TODO: Add some random value to send
                  }
                }
                
                void setup() {
                  // configure analog pin and do the first read
                  // looks like first read always returns MAX value,
                  // subsequent reads seems to be accurate
                  analogReference(INTERNAL);
                  analogRead(A0);
                
                  int bmeRetry = 10;
                  while(!bme.begin() && bmeRetry > 0)
                  {
                    Serial.println("Could not find BME280I2C sensor!");
                    delay(1000);
                    bmeRetry--;
                  }
                }
                
                void presentation() {
                  sendSketchInfo("Weather", "1.0");
                  present(BATTERY_VOLTAGE_SENSOR_ID, S_MULTIMETER, "BAT/VOLTAGE");
                  present(BARO_SENSOR_ID, S_BARO, "BARO");
                  present(TEMPERATURE_SENSOR_ID, S_TEMP, "TEMPERATURE");
                  present(HUMIDITY_SENSOR_ID, S_HUM, "HUMIDITY");
                  Serial.println("mmmmmmm");
                }
                
                void loop() {
                  readWeather(weather);
                  send(weather);
                
                  readBatteryStatus(batteryStatus);
                  send(batteryStatus);
                
                  if (DEBUG) {
                    Serial.print("batteryStatus.level=");
                    Serial.print(batteryStatus.level);
                    Serial.print("%, batteryStatus.voltage=");
                    Serial.print(batteryStatus.voltage);
                    Serial.println("V");
                    Serial.print("weather: ");
                    Serial.print("temperature=");
                    Serial.print(weather.temperature);
                    Serial.print("C");
                    Serial.print(", humidity=");
                    Serial.print(weather.humidity);
                    Serial.print("%");
                    Serial.print(", baro=");
                    Serial.print(weather.baro);
                    Serial.println("hPa");
                    Serial.println();
                  }
                
                  if (DEBUG) {
                    wait(10*1000ul);
                  } else {
                    wait(SLEEP_TIME);
                  }
                }
                
                1 Reply Last reply
                0
                • alowhumA Offline
                  alowhumA Offline
                  alowhum
                  Plugin Developer
                  wrote on last edited by
                  #11

                  Isn't this a bit rigorous? This makes it skip trying to make a connection after 1 millisecond?

                  #define MY_TRANSPORT_WAIT_READY_MS 1
                  
                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Michał Kozak
                    wrote on last edited by
                    #12

                    @alowhum said in !TSM:FPAR:NO REPLY:

                    MY_TRANSPORT_WAIT_READY_MS

                    I must admit that now I'm in "experimenting mode" trying every idea and see whether it helps.
                    Maybe you are right but the default is 0ms (see MyConfig.h)

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      Michał Kozak
                      wrote on last edited by
                      #13

                      Hmmm.... today I managed to connect this node to gateway. I just rebooted gateway...

                      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