New 2.2.0 Signal report function
-
How can I implement the new 2.2.0 function
#define MY_SIGNAL_REPORT_ENABLED
Should it be defined in the node and/or the gateway?
Can it be used with NRF24?
How is the RSSI value reported?
Could not find a writeup on this new function.
-
https://forum.mysensors.org/topic/7822/portable-rfm69-signal-scanner/6
It works only for RFM69 and I didn't need to add the define you mentioned
-
I tried to send RSSI with nRF and it seemed to work, I could get a value that was changing if I moved away from Gateway.
i was using this variable, transportGetSignalReport(SR_TX_RSSI)
so to send the RSSI create a Child, I think you can pick anyone that can handle value from 0-1024 then use below message to send the value
send(RSSIMsg.set(transportGetSignalReport(SR_TX_RSSI)));
I am using Domoticz as Controller
-
I'll give it a try
-
I just now found some other maybe interested variables
transportGetReceivingRSSI()
transportGetSendingRSSI()
transportGetReceivingSNR()
transportGetSendingSNR()
transportGetTxPowerLevel()
transportGetTxPowerPercent()
transportInternalToRSSI(_transportSM.uplinkQualityRSSI)i have not tested anyone of them, but it seems that "transportGetSendingRSSI()" will give same result as "transportGetSignalReport(SR_TX_RSSI)"
so the message may look like this insteadsend(RSSIMsg.set(transportGetSendingRSSI()));
-
It's similar to the signal scanner code I used but I did not know it was working on nrf24
-
Very useful new feature.
I learned a lesson: I'll be using the nrf24 without booster from now on. Much better range and commmunication.output from nrf24 with radio set to LOW:
-256 :transportGetReceivingRSSI()
-29 :transportGetSendingRSSI()
-256 :transportGetReceivingSNR()
-256 :transportGetSendingSNR()
-12 :transportGetTxPowerLevel()
25 :transportGetTxPowerPercent()
0 :transportInternalToRSSI(_transportSM.uplinkQualityRSSI)
-
How did you make the tests?
-
I added this to my sketch and observed serial output:
Serial.print(transportGetReceivingRSSI()); Serial.println(" :transportGetReceivingRSSI()");
Serial.print(transportGetSendingRSSI()); Serial.println(" :transportGetSendingRSSI()");
Serial.print(transportGetReceivingSNR()); Serial.println(" :transportGetReceivingSNR()");
Serial.print(transportGetSendingSNR()); Serial.println(" :transportGetSendingSNR()");
Serial.print(transportGetTxPowerLevel()); Serial.println(" :transportGetTxPowerLevel()");
Serial.print(transportGetTxPowerPercent()); Serial.println(" :transportGetTxPowerPercent()");
Serial.print(transportInternalToRSSI(_transportSM.uplinkQualityRSSI));Serial.println(" :transportInternalToRSSI(_transportSM.uplinkQualityRSSI)");I don't know if it's a valid way to check the values.
-
Hi,
the NRF24l01 doesn't have a RSSI function as reported in Nordic datasheet, so how can the signal report work?
thanks
-
@jumping it doesn't
int16_t transportGetReceivingRSSI(void) { // not available, only bool RPD return INVALID_RSSI; } int16_t transportGetSendingSNR(void) { return INVALID_SNR; } int16_t transportGetReceivingSNR(void) { return INVALID_SNR; }
#define INVALID_SNR ((int16_t)-256) //!< INVALID_SNR #define INVALID_RSSI ((int16_t)-256) //!< INVALID_RSSI #define INVALID_PERCENT ((int16_t)-100) //!< INVALID_PERCENT #define INVALID_LEVEL ((int16_t)-256) //!< INVALID_LEVEL
-
@mfalkvidd thanks for your answer, can you tell me what is the RF24_getSendingRSSI?
int16_t transportGetSendingRSSI(void) { return RF24_getSendingRSSI(); }
-
@jumping github has a great search function if you want to get the answer quicker next time.
Implementation: https://github.com/mysensors/MySensors/blob/345d6d7d119f5d2446c7d6a41e6f749e6ca8741c/drivers/RF24/RF24.cpp#L401
-
thanks, next time I will use the github search function