Hello,
Why my node never sleep when Gateway is down and i use sleep(0) ?
if i do sleep(20000) my node will sleep after 10 seconds but when i do sleep(0) my node will never sleep. But i was expected it sleep after 10 seconds also.
Is it a bug ?
Hello,
Why my node never sleep when Gateway is down and i use sleep(0) ?
if i do sleep(20000) my node will sleep after 10 seconds but when i do sleep(0) my node will never sleep. But i was expected it sleep after 10 seconds also.
Is it a bug ?
@mfalkvidd said in Filter node:
@Snyfir if they can't work anyway, why do you want to filter them?
I don't want that repeaters without battery are used by security nodes (door status, PIR...). Because if the power of the house is down, security nodes while not works during a moment.
That's why i want repeaters without battery to reject security nodes
@mfalkvidd said in Filter node:
@Snyfir thanks for explaining. How come you want the B sensors to be disabled when the power is off? Why can’t they be allowed to continue working?
I don't want the B sensors to be disable when the power is off. It's juste because sensors B is not on battery and if the power of the house is off, sensors B can't works
I understand what you said. For further project I wild I think used two channels.
But right now, I don’t want to change the hardware. If nobody can tell me if the solution i propose in post 2 works, I will try it.
I want to have a network (A) which will not stop working when the power of the house is down. Because I have door sensor for the alarm of the house.
And I want another network (B) which can be down when the power is off because it is not for security (temperature, humidity sensor…). This network needs to used the repeater of the network A also.
That’s why I want nodes of network (A) use only repeaters of network (A), and nodes of network (B) use repeaters of networks (A) and (B)
Thank you for your answer @BearWithBeard.
I don't want to use this solution because it will stuck my nodes to use only the same parent and i don't want because i have several repeaters, and my nodes are likely to move from room to another room.
Something like that can works ?
MyTransport.cpp::transportProcessMessage(void)
} else if (destination == BROADCAST_ADDRESS) {
TRANSPORT_DEBUG(PSTR("TSF:MSG:BC\n")); // broadcast msg
if (command == C_INTERNAL) {
if (isTransportReady()) {
// only reply if node is fully operational
if (type == I_FIND_PARENT_REQUEST) {
#if defined(MY_REPEATER_FEATURE)
#if defined(MY_REPEATER_FEATURE_WITHOUT_BATTERY)
if (sender < 100) {
return;
}
#endif
if (sender != _transportConfig.parentNodeId) { // no circular reference
TRANSPORT_DEBUG(PSTR("TSF:MSG:FPAR REQ,ID=%" PRIu8 "\n"), sender); // FPAR: find parent request
// check if uplink functional - node can only be parent node if link to GW functional
// this also prevents circular references in case GW ooo
if (transportCheckUplink()) {
_transportSM.lastUplinkCheck = hwMillis();
TRANSPORT_DEBUG(PSTR("TSF:MSG:GWL OK\n")); // GW uplink ok
// random delay minimizes collisions
delay(hwMillis() & 0x3ff);
(void)transportRouteMessage(build(_msgTmp, sender, NODE_SENSOR_ID, C_INTERNAL,
I_FIND_PARENT_RESPONSE).set(_transportConfig.distanceGW));
} else {
TRANSPORT_DEBUG(PSTR("!TSF:MSG:GWL FAIL\n")); // GW uplink fail, do not respond to parent request
}
}
#endif
return; // no further processing required, do not forward
}
} // isTransportReady
Hello,
I have two nodes repeater with battery and one node repeater without battery.
Instead of all node can pass throw all repeater nodes, i want for some particular node to pass throw only by repeater with battery.
Is it possible to do it, without modify a lot of code of MySensors ?
I was thinking to filter by node ID. For example, if a node as an ID below 100, the repeater without battery will not respond to I_FIND_PARENT message. So, the node will not use the repeater without battery. Is it a good approach?
Hello,
Is there a function to wait for a software ack after a send.
I know i can do it in the receive function but i wondering if i can do it with wait function like so:
bool success = wait(300, C_INTERNAL, I_ACK);
thank you for your help
@snyfir
with this fix, everything work fine :smiley:
When reception is not working, the status register value is 0x40, so RX_DR stay set.
I think the clear of RX_DR is not working very well. i will try to add
RF24_setStatus(_BV(RF24_RX_DR))
at the end of RF24_irqHandler function
I have an arduino pro mini 5V connected to an nrf24l01+
my code is
#define MY_DEBUG
#define MY_RADIO_RF24
#define MY_RX_MESSAGE_BUFFER_FEATURE
#define MY_RF24_IRQ_PIN (2)
#define MY_REPEATER_FEATURE
#include <MySensors.h>
MyMessage msg(0, V_CUSTOM);
void setup()
{
}
void presentation()
{
sendSketchInfo("Test", "1.0");
present(0, S_CUSTOM);
}
void loop()
{
}
void receive(const MyMessage &myMsg)
{
if (myMsg.type == V_CUSTOM && myMsg.sensor == 0) {
send(msg.set(F("pong")));
}
}
i send every minute a message to the node. But after some time the node is not responding.
When i check the IRQ pin in the arduino (pin 2) and the nrf24l01+, this one is low. It means the nrf24l01+ has been received the last message but the interrupt has not been trigger.
How can i fix this issue ? do you have a clue ?
Thank you for your help
@mfalkvidd
I want to use a switching regulator ta avoid too lost of current and heat (12v to 3.3V). A LC filter can solve my issue ?
Yes two first modules are switching regulator an the third is linear.
Nrf24l01+ are not compatible with switching regulator ?
Hello everybody,
When i powered nrf24l01+ with this module or this one the nrf24l01+ is not working (unable to send / received).
But if i use https://www.ebay.com/itm/200960749614 the same nrf24l01+ works perfectly.
All regulator deliver 3.3V so i don't know why it doesn't work. The input DC is 12V for all
Do you have a clue ?
Thank you for your help.
Hello @Mathea90, i have exactly the same issue. Do you find something to fix this issue?
@yveaux said in Gateway with signing = low memory:
#define MY_RX_MESSAGE_BUFFER_SIZE (10)
thank you @Yveaux et @mfalkvidd
I had the same result but when i add the two lines:
#define MY_RX_MESSAGE_BUFFER_FEATURE
#define MY_RF24_IRQ_PIN (2)
i have
Sketch uses 16296 bytes (50%) of program storage space. Maximum is 32256 bytes.
Global variables use 1693 bytes (82%) of dynamic memory, leaving 355 bytes for local variables. Maximum is 2048 bytes.
Low memory available, stability problems may occur.
A gateway without MY_RX_MESSAGE_BUFFER_FEATURE defined, can be problematic non ?
@mfalkvidd
So my only solution is to use an arduino with more memory ? do you have an exemple of arduino board i can use ?
@mfalkvidd said in Gateway with signing = low memory:
@snyfir use hardware signing or use an Arduino with more memory.
MY_SIGNING_ATSHA204 is not hardware signing ? i have connected an ATSHA204 to the arduino pin.