@mfalkvidd hmm, that’s a nice suggestion... I don’t have motion sensors where they are but maybe I can integrate it on the actual node...
Will give it some thought.
Thanks! :D
@mfalkvidd hmm, that’s a nice suggestion... I don’t have motion sensors where they are but maybe I can integrate it on the actual node...
Will give it some thought.
Thanks! :D

Hi everyone.
I've introduced a small 0.96" OLED display (based on the SSD1306) on the temperature and humidity node, so you can read directly the values as you enter the house compartment (as you can see above).
Since i dont know the reliability of this kind of displays and they are a bit bright (of if they have some kind of burn-in issue), im asking you guys for some ideas to turn it off and back on, maybe taking into account info got from the controller (and even display other info).
Im using the u8g2 display library wich has the instruction "setContrast", but these displays dont support contrast control. It seems the only way is to turn it off with the instruction "setPowerSave".
I was thinking of displaying the current date also and maybe turn it off at night. For this i was thinking of using the "requestTime()" command…
What do you guys think?
Here is my code so you can take a look and use on your own projects:
// Enable debug prints
//#define MY_DEBUG
#define MY_RADIO_RFM69
#define MY_IS_RFM69HW
#define MY_RFM69_NEW_DRIVER
#define MY_RFM69_FREQUENCY RFM69_433MHZ
#define MY_NODE_ID 15
// #define MY_REPEATER_FEATURE
#include <SPI.h>
#include <MySensors.h>
#include <DHT.h>
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, A5, A4); // U8G2 Constructor (A5 - Clock SCL ; A4 - Data SDA)
// Set this to the pin you connected the DHT's data pin to
#define DHT_DATA_PIN 3
// Set this offset if the sensor has a permanent small offset to the real temperatures.
// In Celsius degrees (as measured by the device)
#define SENSOR_TEMP_OFFSET 0
// Sleep time between sensor updates (in milliseconds)
// Must be >1000ms for DHT22 and >2000ms for DHT11
static const uint64_t UPDATE_INTERVAL = 60000;
// Force sending an update of the temperature after n sensor reads, so a controller showing the
// timestamp of the last update doesn't show something like 3 hours in the unlikely case, that
// the value didn't change since;
// i.e. the sensor would force sending an update every UPDATE_INTERVAL*FORCE_UPDATE_N_READS [ms]
static const uint8_t FORCE_UPDATE_N_READS = 10;
#define CHILD_ID_HUM 0
#define CHILD_ID_TEMP 1
float lastTemp;
float lastHum;
uint8_t nNoUpdatesTemp;
uint8_t nNoUpdatesHum;
bool metric = true;
MyMessage msgHum(CHILD_ID_HUM, V_HUM);
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
DHT dht;
void before(){
u8g2.begin();
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_helvR14_tf);
u8g2.drawStr(38,15,"OLED");
u8g2.drawStr(15,35,"Temp+Hum");
u8g2.drawStr(46,60,"v1.2");
} while ( u8g2.nextPage() );
delay(3000);
u8g2.clear();
u8g2.firstPage();
do {
u8g2.drawStr(3, 32, "Connecting...");
} while ( u8g2.nextPage() );
}
void presentation()
{
// Send the sketch version information to the gateway
sendSketchInfo("TEMPHUM_OLED", "1.2");
// Register all sensors to gw (they will be created as child devices)
present(CHILD_ID_HUM, S_HUM);
present(CHILD_ID_TEMP, S_TEMP);
metric = getControllerConfig().isMetric;
}
void setup()
{
u8g2.clear();
dht.setup(DHT_DATA_PIN); // set data pin of DHT sensor
if (UPDATE_INTERVAL <= dht.getMinimumSamplingPeriod()) {
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_haxrcorp4089_tr); // 7 PIXEL HIGHT
u8g2.drawStr(1,12,"WARNING: UPDATE_INTERVAL");
u8g2.drawStr(1,24,"is smaller than supported by");
u8g2.drawStr(1,36,"the sensor!");
} while ( u8g2.nextPage() );
delay(4000);
}
// Sleep for the time of the minimum sampling period to give the sensor time to power up
// (otherwise, timeout errors might occure for the first reading)
sleep(dht.getMinimumSamplingPeriod());
}
void loop()
{
while (transportCheckUplink() == false){
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_helvR14_tf); // 14 px height
u8g2.drawStr(3, 32, "Disconnected!");
} while ( u8g2.nextPage() );
}
// Force reading sensor, so it works also after sleep()
dht.readSensor(true);
// Get temperature from DHT library
float temperature = dht.getTemperature();
if (isnan(temperature)) {
Serial.println("Failed reading temperature from DHT!");
} else if (temperature != lastTemp || nNoUpdatesTemp == FORCE_UPDATE_N_READS) {
// Only send temperature if it changed since the last measurement or if we didn't send an update for n times
lastTemp = temperature;
// apply the offset before converting to something different than Celsius degrees
temperature += SENSOR_TEMP_OFFSET;
if (!metric) {
temperature = dht.toFahrenheit(temperature);
}
// Reset no updates counter
nNoUpdatesTemp = 0;
send(msgTemp.set(temperature, 1));
#ifdef MY_DEBUG
Serial.print("T: ");
Serial.println(temperature);
#endif
} else {
// Increase no update counter if the temperature stayed the same
nNoUpdatesTemp++;
}
// Get humidity from DHT library
float humidity = dht.getHumidity();
if (isnan(humidity)) {
Serial.println("Failed reading humidity from DHT");
} else if (humidity != lastHum || nNoUpdatesHum == FORCE_UPDATE_N_READS) {
// Only send humidity if it changed since the last measurement or if we didn't send an update for n times
lastHum = humidity;
// Reset no updates counter
nNoUpdatesHum = 0;
send(msgHum.set(humidity, 1));
#ifdef MY_DEBUG
Serial.print("H: ");
Serial.println(humidity);
#endif
} else {
// Increase no update counter if the humidity stayed the same
nNoUpdatesHum++;
}
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_fub30_tn);
u8g2.setCursor(2, 35);
u8g2.print(temperature, 1);
u8g2.setFont(u8g2_font_inb16_mf);
u8g2.drawGlyph(88, 35, 0x00b0); // degree
u8g2.drawStr(100, 35, "C");
u8g2.setCursor(70, 60);
u8g2.print(humidity, 0);
u8g2.drawStr(100, 60, "%");
u8g2.setFont(u8g2_font_open_iconic_thing_2x_t); // 16 pix height
u8g2.drawGlyph(45, 60, 0x0048); // drop
} while ( u8g2.nextPage() );
// Sleep for a while to save energy
wait(UPDATE_INTERVAL); // POWERED NODE
}
Be advised that this code is almost near the memory capacity of the Nano 328P... :P
Hi everyone,
I'm starting to setup an additional network for my nodes that are very far away from the gateway, using the RFM69HW 433 MHz variety. So ive built another serial gateway using an Uno and a RFM69 module (with the appropriate level converters on the NSS, MOSI and SCK lines) and DI00 pin at the D2 uno pin. The gateway log doesnt report any error and starts up ok.
I had a communication problem with a simple temp+hum node. The node started up ok but it failed to communicate with the gateway. I then forced a node ID to the sensor node and oddly it worked…
Other thing i noticed is that im not getting internal messages delivered to the gateway, only sensor values defined by MyMessage and which are presented.
The sketch info sent with "sendSketchInfo" doesnt show on Domoticz side, neither does battery levels sent with "sendBatteryLevel". If i just change the radio to a NRF24 with the same sketch code, everything works…
I wonder if this has anything to do with Ack collision discussed here ? It seems the fix suggested didnt get implemented yet…
Its odd that it seems that only some info gets transmitted with the RFM69 and all of them with the NRF24...
Thanks for any insights.
@m3nt4lll Try to assign a fixed node ID to your sensors nodes with the line:
#define MY_NODE_ID 12
Change the number to what you like.
I also had the same problem with a serial gateway with RFM69 and a simple temp+hum node. They did startup ok but no communication between them.
I then assigned a node ID to the sensor node and oddly it worked…
Other thing i noticed is that im not getting internal messages delivered to the gateway, only sensor values defined by MyMessage and presented.
The sketch info sent with sendSketchInfo doesnt show on Domoticz side, neither does battery levels sent with sendBatteryLevel. If i just change the radio to a NRF24 with the same sketch code, everything works…
@m3nt4lll If you get communication, see if you have this problem too.
I wonder if this has anything to do with Ack collision discussed here ? It seems the fix suggested by @Koresh didt get implemented yet…
Any ideias guys?
@alowhum Good find!
My latest "speedy" design: a small case for an Arduino Nano and a NRF24 module used as a Repeater.
Get it at Thingiverse

@tekka Here it is: REPEATER LOG
It seems to be working ok but there are still some NACKs on the log. Radio issues perhaps? Neverthless, im not getting the node dropouts i got with the 2.3.0 version...
@tekka i didnt save the log from the Repeater but if it helps i'm going to collect it. As for the Repeater sketch, its the default:
// Enable debug prints to serial monitor
//#define MY_DEBUG
// Enable and select radio type attached
#define MY_RADIO_NRF24
//#define MY_RADIO_NRF5_ESB
//#define MY_RADIO_RFM69
//#define MY_RADIO_RFM95
#define MY_NODE_ID 51 // FIXED NODE ID
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
#define MY_RF24_CHANNEL 1
#define MY_RF24_PA_LEVEL RF24_PA_HIGH
// Enabled repeater feature for this node
#define MY_REPEATER_FEATURE
#include <MySensors.h>
void setup()
{
}
void presentation()
{
//Send the sensor node sketch version information to the gateway
sendSketchInfo("Repeater Node", "1.0");
}
void loop()
{
}```
@tekka Well, im running your beta code and like @itbeyond it seems to be working for 24h now. Uploaded the new compiles with the lib from the RF24Fix branch to all the nodes, gateway and repeater and it seems the drops stopped.
Built a couple of Relay nodes, one of which is connected to the repeater and they also seem to be working correctly.
Im linking the ZIP to the node log file with the RF24 verbose debug (its a tad big), if you want to take a look:
And this is my TEMP+HUM node sketch:
// Enable debug prints
//#define MY_DEBUG
//#define MY_DEBUG_VERBOSE_RF24
// Enable and select radio type attached
#define MY_RADIO_NRF24
//#define MY_RADIO_RFM69
//#define MY_RS485
#define MY_RF24_CHANNEL 1 //////////////
#define MY_RF24_PA_LEVEL RF24_PA_HIGH
// ONLY IF USING FIXED ID REPEATER
//#define MY_PARENT_NODE_ID 0 // REPEATER NODE ID
//#define MY_PARENT_NODE_IS_STATIC // this will force your node to use only the repeater
// #define MY_REPEATER_FEATURE
#include <SPI.h>
#include <MySensors.h>
#include <DHT.h>
#include <U8g2lib.h> //////////////////////
#include <Wire.h> /////////////////////////
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, A5, A4); // U8G2 Constructor (A5 - Clock SCL ; A4 - Data SDA)
#define DHT_DATA_PIN 3
#define SENSOR_TEMP_OFFSET 0
static const uint64_t UPDATE_INTERVAL = 60000;
static const uint8_t FORCE_UPDATE_N_READS = 10;
#define CHILD_ID_HUM 0
#define CHILD_ID_TEMP 1
float lastTemp;
float lastHum;
uint8_t nNoUpdatesTemp;
uint8_t nNoUpdatesHum;
bool metric = true;
MyMessage msgHum(CHILD_ID_HUM, V_HUM);
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
DHT dht;
void before(){
u8g2.begin();
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_helvR14_tf);
u8g2.drawStr(38,15,"OLED");
u8g2.drawStr(15,35,"Temp+Hum");
u8g2.drawStr(46,60,"v1.2");
} while ( u8g2.nextPage() );
delay(3000);
u8g2.clear();
u8g2.firstPage();
do {
u8g2.drawStr(3, 32, "Connecting...");
} while ( u8g2.nextPage() );
}
void presentation()
{
// Send the sketch version information to the gateway
sendSketchInfo("TEMPHUM_OLED", "1.2");
// Register all sensors to gw (they will be created as child devices)
present(CHILD_ID_HUM, S_HUM);
present(CHILD_ID_TEMP, S_TEMP);
metric = getControllerConfig().isMetric;
}
void setup()
{
u8g2.clear();
dht.setup(DHT_DATA_PIN); // set data pin of DHT sensor
if (UPDATE_INTERVAL <= dht.getMinimumSamplingPeriod()) {
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_haxrcorp4089_tr); // 7 PIXEL HIGHT
u8g2.drawStr(1,12,"WARNING: UPDATE_INTERVAL");
u8g2.drawStr(1,24,"is smaller than supported by");
u8g2.drawStr(1,36,"the sensor!");
} while ( u8g2.nextPage() );
delay(4000);
}
sleep(dht.getMinimumSamplingPeriod());
}
void loop()
{
while (transportCheckUplink() == false){
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_helvR14_tf); // 14 px height
u8g2.drawStr(3, 32, "Disconnected!");
} while ( u8g2.nextPage() );
}
dht.readSensor(true);
float temperature = dht.getTemperature();
if (isnan(temperature)) {
Serial.println("Failed reading temperature from DHT!");
} else if (temperature != lastTemp || nNoUpdatesTemp == FORCE_UPDATE_N_READS) {
// Only send temperature if it changed since the last measurement or if we didn't send an update for n times
lastTemp = temperature;
// apply the offset before converting to something different than Celsius degrees
temperature += SENSOR_TEMP_OFFSET;
if (!metric) {
temperature = dht.toFahrenheit(temperature);
}
// Reset no updates counter
nNoUpdatesTemp = 0;
send(msgTemp.set(temperature, 1));
#ifdef MY_DEBUG
Serial.print("T: ");
Serial.println(temperature);
#endif
} else {
// Increase no update counter if the temperature stayed the same
nNoUpdatesTemp++;
}
// Get humidity from DHT library
float humidity = dht.getHumidity();
if (isnan(humidity)) {
Serial.println("Failed reading humidity from DHT");
} else if (humidity != lastHum || nNoUpdatesHum == FORCE_UPDATE_N_READS) {
// Only send humidity if it changed since the last measurement or if we didn't send an update for n times
lastHum = humidity;
// Reset no updates counter
nNoUpdatesHum = 0;
send(msgHum.set(humidity, 1));
#ifdef MY_DEBUG
Serial.print("H: ");
Serial.println(humidity);
#endif
} else {
// Increase no update counter if the humidity stayed the same
nNoUpdatesHum++;
}
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_fub30_tn);
u8g2.setCursor(2, 35);
u8g2.print(temperature, 1);
u8g2.setFont(u8g2_font_inb16_mf);
u8g2.drawGlyph(88, 35, 0x00b0); // degree
u8g2.drawStr(100, 35, "C");
u8g2.setCursor(70, 60);
u8g2.print(humidity, 0);
u8g2.drawStr(100, 60, "%");
u8g2.setFont(u8g2_font_open_iconic_thing_2x_t); // 16 pix height
u8g2.drawGlyph(45, 60, 0x0048); // drop
} while ( u8g2.nextPage() );
// Sleep for a while to save energy
//sleep(UPDATE_INTERVAL);
delay(UPDATE_INTERVAL); // POWERED NODE
}
@itbeyond can you please post the initial code defines for your repeater and a node that connects to it? To see if I’m doing something wrong...
In the meantime I’m going to get the debug log and sketch code for my node.
@tekka the debug log (MY_DEBUG)/sketch from the node that gets disconnected or the repeater?
@tekka well, unfortunately i had the same problem. The far away node connected to the Repeater but after aprox 1h working ok, it stopped being updated at Domoticz with transportCheckUplink() false.
You changed a timing setting, right? With the normal version the node stopped being updated at about 15-16 min and now it changed to about 1 hour…
I have a node connected directly to the gateway with the nrf24L01+ PA+LNA working without problems, so it seems to be some kind of problem with the Repeater code and timings...
@itbeyond Nice! Will test it today and post my results.
@tekka using normal NRF24's on the nodes and a nrf24L01+ PA+LNA on the gateway.
@tekka ok, will test your version tomorrow and collect the node log. Do i need to upload your version to the node, repeater and gateway?
@itbeyond im running 2.3 on gateway, nodes and repeater… Im glad someone showed up with the same issue. The behaviour is similar: everything is ok and, in my case, it starts to "NACK" after around 16 min… Seems to be a software problem then and not the "popular" NRF24 reception issues. What radios are you using? NRF24's?
I know about the power requirements, but only the gateway is amplified. The repeater i was testing was a normal nano with a NRF24 powered by an original LG USB charger. Thats not the point with this issue.
What im saying is that seems the repeater stops to relay messages after about 16 minutes and with an almost direct line of sight to the gateway… If i remove the repeater, the node that is about 2 meters further apart from where the repeater was, still gets signal directly from the gateway and it works normally.
If i put the repeater in between, about 16 minutes later one of the values (temp or hum) doesnt get through to the gateway.
Ive tested different radios, nanos and power supplies but it seems to be a software issue or somekind of interference… I'll have to equate if i put up more gateways with NRF24's or completely ditch them. They seem not to worth all this hassle even if they are cheaper...
Ive been digging around the node logs and i got this after a while:
964875 !TSF:MSG:PONG RECV,INACTIVE
964878 TSF:PNG:SEND,TO=0
964882 TSF:MSG:SEND,3-3-51-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
964917 TSF:MSG:READ,0-51-3,s=255,c=3,t=25,pt=1,l=1,sg=0:2
964922 TSF:MSG:PONG RECV,HP=2
964925 TSF:CKU:OK
964969 !TSF:MSG:SEND,3-3-51-0,s=0,c=1,t=1,pt=7,l=5,sg=0,ft=0,st=NACK:48.7
A bunch of NACK errors and "!TSF:MSG:PONG RECV,INACTIVE". I dont understand why this doesnt happen at the beginning and only after a while (about 16 minutes in this case) and i also dont know if the lack of radio acknowledge is from the repeater to the node or the repeater to the gateway…
Ive now moved the repeater more closer to the gateway but im still getting:
!TSF:MSG:SEND,3-3-51-0,s=1,c=1,t=0,pt=7,l=5,sg=0,ft=0,st=NACK:26.1
Oddly, again after 16 minutes… Im at a loss...
@sundberg84 well, the repeater doesnt "hang" on the literal sense. Here is the initial log from it with the initialization and the acknowledge of one of the nodes:
16 MCO:BGN:INIT REPEATER,CP=RNNRA---,VER=2.3.0
26 TSM:INIT
27 TSF:WUR:MS=0
34 TSM:INIT:TSP OK
35 TSM:INIT:STATID=51
37 TSF:SID:OK,ID=51
39 TSM:FPAR
40 TSM:FPAR:STATP=0
43 TSM:ID
44 TSM:ID:OK
45 TSM:UPL
48 TSF:MSG:SEND,51-51-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
59 TSF:MSG:READ,0-0-51,s=255,c=3,t=25,pt=1,l=1,sg=0:1
64 TSF:MSG:PONG RECV,HP=1
66 TSM:UPL:OK
68 TSM:READY:ID=51,PAR=0,DIS=1
97 TSF:MSG:SEND,51-51-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
114 TSF:MSG:READ,0-0-51,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
147 TSF:MSG:SEND,51-51-0-0,s=255,c=0,t=18,pt=0,l=5,sg=0,ft=0,st=OK:2.3.0
155 TSF:MSG:SEND,51-51-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
175 TSF:MSG:READ,0-0-51,s=255,c=3,t=6,pt=0,l=1,sg=0:M
212 TSF:MSG:SEND,51-51-0-0,s=255,c=3,t=11,pt=0,l=13,sg=0,ft=0,st=OK:Repeater Node
222 TSF:MSG:SEND,51-51-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:1.0
228 MCO:REG:REQ
232 TSF:MSG:SEND,51-51-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
242 TSF:MSG:READ,0-0-51,s=255,c=3,t=27,pt=1,l=1,sg=0:1
247 MCO:PIM:NODE REG=1
249 MCO:BGN:STP
251 MCO:BGN:INIT OK,TSP=1
22758 TSF:MSG:READ,2-2-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1
22763 TSF:MSG:REL MSG
22765 TSF:MSG:REL PxNG,HP=1
22770 TSF:MSG:SEND,2-51-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:2
22781 TSF:MSG:READ,0-0-2,s=255,c=3,t=25,pt=1,l=1,sg=0:1
22787 TSF:MSG:REL MSG
22789 TSF:MSG:REL PxNG,HP=1
22793 TSF:MSG:SEND,0-51-2-2,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=OK:2
22799 TSF:MSG:READ,2-2-0,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
22805 TSF:MSG:REL MSG
22817 TSF:MSG:SEND,2-51-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
22824 TSF:MSG:READ,0-0-2,s=255,c=3,t=25,pt=1,l=1,sg=0:1
22830 TSF:MSG:REL MSG
22832 TSF:MSG:REL PxNG,HP=1
22857 TSF:MSG:SEND,0-51-2-2,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=OK:2
22864 TSF:MSG:READ,0-0-2,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
22870 TSF:MSG:REL MSG
22874 TSF:MSG:SEND,0-51-2-2,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
22880 TSF:MSG:READ,0-0-2,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
22885 TSF:MSG:REL MSG
22889 TSF:MSG:SEND,0-51-2-2,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
22896 TSF:MSG:READ,2-2-0,s=255,c=0,t=17,pt=0,l=5,sg=0:2.3.0
22901 TSF:MSG:REL MSG
22905 TSF:MSG:SEND,2-51-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.3.0
22913 TSF:MSG:READ,2-2-0,s=255,c=3,t=6,pt=1,l=1,sg=0:51
22918 TSF:MSG:REL MSG
22921 TSF:MSG:SEND,2-51-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:51
22936 TSF:MSG:READ,0-0-2,s=255,c=3,t=6,pt=0,l=1,sg=0:M
22941 TSF:MSG:REL MSG
22979 !TSF:MSG:SEND,0-51-2-2,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=NACK:M
22986 TSF:MSG:READ,2-2-0,s=255,c=3,t=11,pt=0,l=12,sg=0:TEMPHUM_OLED
22992 TSF:MSG:REL MSG
23035 !TSF:MSG:SEND,2-51-0-0,s=255,c=3,t=11,pt=0,l=12,sg=0,ft=0,st=NACK:TEMPHUM_OLED
23044 TSF:MSG:READ,2-2-0,s=255,c=3,t=12,pt=0,l=3,sg=0:1.2
23049 TSF:MSG:REL MSG
23053 TSF:MSG:SEND,2-51-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=1,st=OK:1.2
23059 TSF:MSG:READ,2-2-0,s=0,c=0,t=7,pt=0,l=0,sg=0:
23064 TSF:MSG:REL MSG
23067 TSF:MSG:SEND,2-51-0-0,s=0,c=0,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
23073 TSF:MSG:READ,2-2-0,s=1,c=0,t=6,pt=0,l=0,sg=0:
23078 TSF:MSG:REL MSG
23083 TSF:MSG:SEND,2-51-0-0,s=1,c=0,t=6,pt=0,l=0,sg=0,ft=0,st=OK:
25023 TSF:MSG:READ,2-2-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2
25028 TSF:MSG:REL MSG
25032 TSF:MSG:SEND,2-51-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
25039 TSF:MSG:READ,0-0-2,s=255,c=3,t=27,pt=1,l=1,sg=0:1
25044 TSF:MSG:REL MSG
25074 TSF:MSG:SEND,0-51-2-2,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=OK:1
27297 TSF:MSG:READ,2-2-0,s=1,c=1,t=0,pt=7,l=5,sg=0:25.8
27302 TSF:MSG:REL MSG
27307 TSF:MSG:SEND,2-51-0-0,s=1,c=1,t=0,pt=7,l=5,sg=0,ft=0,st=OK:25.8
27314 TSF:MSG:READ,2-2-0,s=0,c=1,t=1,pt=7,l=5,sg=0:50.2
When the nodes give the "disconnected" signal, the log from the repeater gives this block over and over:
11917643 TSF:MSG:REL MSG
11917645 TSF:MSG:REL PxNG,HP=1
11917649 TSF:MSG:SEND,2-51-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:2
11919709 TSF:MSG:READ,2-2-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1
I cant see anything on the log that the repeater lost connection to the gateway so i guess its not a radio problem. But answering your question, when i collected the log, the repeater (arduino nano) was connected/powered via a USB 3.0 port and the NRF was power by the 3v3 pin.
Im now collection the log from one of the nodes to see what it gives.
Thanks!